Skip to content

Commit

Permalink
[feat]支持net40
Browse files Browse the repository at this point in the history
  • Loading branch information
nnhy committed Jun 22, 2024
1 parent 6f87c71 commit 605d4ac
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 26 deletions.
7 changes: 5 additions & 2 deletions NewLife.Remoting/ApiClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
using NewLife.Net;
using NewLife.Remoting.Http;
using NewLife.Threading;
#if !NET40
using TaskEx = System.Threading.Tasks.Task;
#endif

namespace NewLife.Remoting;

Expand Down Expand Up @@ -186,7 +189,7 @@ public virtual void Close(String reason)
/// <param name="action">服务操作</param>
/// <param name="args">参数</param>
/// <returns></returns>
public virtual TResult? Invoke<TResult>(String action, Object? args = null) => Task.Run(() => InvokeAsync<TResult>(action, args)).Result;
public virtual TResult? Invoke<TResult>(String action, Object? args = null) => TaskEx.Run(() => InvokeAsync<TResult>(action, args)).Result;

/// <summary>单向发送。同步调用,不等待返回</summary>
/// <param name="action">服务操作</param>
Expand Down Expand Up @@ -380,7 +383,7 @@ private void Client_Received(Object? sender, ReceivedEventArgs e)
/// <summary>连接后自动登录</summary>
/// <param name="client">客户端</param>
/// <param name="force">强制登录</param>
protected virtual Task<Object?> OnLoginAsync(ISocketClient client, Boolean force) => Task.FromResult<Object?>(null);
protected virtual Task<Object?> OnLoginAsync(ISocketClient client, Boolean force) => TaskEx.FromResult<Object?>(null);

/// <summary>登录</summary>
/// <returns></returns>
Expand Down
1 change: 1 addition & 0 deletions NewLife.Remoting/ApiHttpServer.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using NewLife.Http;
using NewLife.Net;
using NewLife.Remoting.Http;
using HttpCodec = NewLife.Remoting.Http.HttpCodec;

namespace NewLife.Remoting;

Expand Down
1 change: 1 addition & 0 deletions NewLife.Remoting/ApiNetServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using NewLife.Messaging;
using NewLife.Net;
using NewLife.Remoting.Http;
using HttpCodec = NewLife.Remoting.Http.HttpCodec;

namespace NewLife.Remoting;

Expand Down
5 changes: 4 additions & 1 deletion NewLife.Remoting/Clients/WsChannel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
using NewLife.Net;
using NewLife.Remoting.Models;
using NewLife.Serialization;
#if !NET40
using TaskEx = System.Threading.Tasks.Task;
#endif

namespace NewLife.Remoting.Clients;

Expand Down Expand Up @@ -65,7 +68,7 @@ public virtual async Task ValidWebSocket(ApiHttpClient http)
_websocket = client;

_source = new CancellationTokenSource();
_ = Task.Run(() => DoPull(client, _source.Token));
_ = TaskEx.Run(() => DoPull(client, _source.Token));
}
}

Expand Down
8 changes: 4 additions & 4 deletions NewLife.Remoting/Http/HttpEncoder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -258,12 +258,12 @@ public virtual IMessage CreateResponse(IMessage msg, String action, Int32 code,
p = url.IndexOf('?');
if (p > 0)
{
message.Action = url[1..p];
message.Data = url[(p + 1)..].GetBytes();
message.Action = url.Substring(1, p - 1);
message.Data = url.Substring(p + 1).GetBytes();
}
else
{
message.Action = url[1..];
message.Action = url.Substring(1);
message.Data = http.Payload;
}
}
Expand All @@ -279,7 +279,7 @@ public virtual IMessage CreateResponse(IMessage msg, String action, Int32 code,
message.Action = uri.AbsolutePath;
message.Data = http.Payload;
}
if (message.Action.Length > 1) message.Action = message.Action[1..];
if (message.Action.Length > 1) message.Action = message.Action.Substring(1);
}

return message;
Expand Down
10 changes: 5 additions & 5 deletions NewLife.Remoting/JsonEncoder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public virtual Packet Encode(String action, Int32? code, Packet? value)
public virtual IMessage CreateRequest(String action, Object? args)
{
// 二进制优先
var (pk, str) = EncodeValue(args);
var pk = EncodeValue(args, out var str);

if (Log != null && str.IsNullOrEmpty() && pk != null) str = $"[{pk?.Total}]";
WriteLog("{0}=>{1}", action, str);
Expand All @@ -114,7 +114,7 @@ public virtual IMessage CreateRequest(String action, Object? args)
public IMessage CreateResponse(IMessage msg, String action, Int32 code, Object? value)
{
// 编码响应数据包,二进制优先
var (pk, str) = EncodeValue(value);
var pk = EncodeValue(value, out var str);

if (Log != null && str.IsNullOrEmpty() && pk != null) str = $"[{pk?.Total}]";
WriteLog("{0}[{2:X2}]=>{1}", action, str, msg is DefaultMessage dm ? dm.Sequence : 0);
Expand All @@ -129,9 +129,9 @@ public IMessage CreateResponse(IMessage msg, String action, Int32 code, Object?
return rs;
}

internal (Packet?, String) EncodeValue(Object? value)
internal Packet? EncodeValue(Object? value, out String str)
{
var str = "";
str = "";
Packet? pk = null;

if (value != null)
Expand Down Expand Up @@ -160,6 +160,6 @@ public IMessage CreateResponse(IMessage msg, String action, Int32 code, Object?
}
}

return (pk, str);
return pk;
}
}
13 changes: 8 additions & 5 deletions NewLife.Remoting/NewLife.Remoting.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net45;net461;netstandard2.0;netstandard2.1;net5.0;net6.0;net7.0;net8.0</TargetFrameworks>
<TargetFrameworks>net40;net45;net461;netstandard2.0;netstandard2.1;net5.0;net6.0;net7.0;net8.0</TargetFrameworks>
<AssemblyTitle>协议通信库</AssemblyTitle>
<Description>提供高性能RPC客户端服务端,提供Http/WebSocket客户端服务端,提供应用级客户端</Description>
<Company>新生命开发团队</Company>
Expand Down Expand Up @@ -44,15 +44,18 @@
<Compile Remove="Models\TokenModel.cs" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0">
<ItemGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<PackageReference Include="NewLife.Core" Version="10.10.2024.601" />
<ItemGroup Condition="'$(TargetFramework)'!='net40'">
<PackageReference Include="NewLife.Core" Version="10.10.2024.0601" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net40'">
<PackageReference Include="NewLife.Core" Version="10.10.2024.0620-net40" />
</ItemGroup>

<ItemGroup>
Expand Down
6 changes: 4 additions & 2 deletions NewLife.Remoting/WsClient.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Net.WebSockets;
#if !NET40
using System.Net.WebSockets;
using NewLife.Collections;
using NewLife.Data;
using NewLife.Log;
Expand Down Expand Up @@ -442,4 +443,5 @@ private void DoWork(Object? state)
WriteLog(msg);
}
#endregion
}
}
#endif
14 changes: 7 additions & 7 deletions XUnitTest/JsonEncoderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -357,44 +357,44 @@ public void EncodeValue()

{
var value = new Packet(Rand.NextBytes(64));
var (pk, str) = encoder.EncodeValue(value);
var pk = encoder.EncodeValue(value, out var str);
Assert.Equal(value, pk);
Assert.Empty(str);
}
{
var value = Rand.NextBytes(64);
var (pk, str) = encoder.EncodeValue(value);
var pk = encoder.EncodeValue(value, out var str);
Assert.Equal(value.ToHex(), pk.ToHex(64));
Assert.Empty(str);
}
{
var value = new UserInfo2 { Name = "Stone", Age = 18 };
var (pk, str) = encoder.EncodeValue(value);
var pk = encoder.EncodeValue(value, out var str);
Assert.Equal(1 + value.Name.Length + 1, pk.Total);
Assert.Empty(str);
}
{
var value = DateTime.Now;
var (pk, str) = encoder.EncodeValue(value);
var pk = encoder.EncodeValue(value, out var str);
Assert.Equal(value.ToFullString(), pk.ToStr());
Assert.Equal(value.ToFullString(), str);
}
{
var value = 123.456d;
var (pk, str) = encoder.EncodeValue(value);
var pk = encoder.EncodeValue(value, out var str);
Assert.Equal(value.ToString(), pk.ToStr());
Assert.Equal(value.ToString(), str);
}
{
var value = new UserInfo { Name = "Stone", Age = 18 };
var (pk, str) = encoder.EncodeValue(value);
var pk = encoder.EncodeValue(value, out var str);
var json = value.ToJson();
Assert.Equal(json, pk.ToStr());
Assert.Equal(json, str);
}
{
var value = new Exception("this is an error");
var (pk, str) = encoder.EncodeValue(value);
var pk = encoder.EncodeValue(value, out var str);
Assert.Equal(value.Message, pk.ToStr());
Assert.Equal(value.Message, str);
}
Expand Down

0 comments on commit 605d4ac

Please sign in to comment.