Skip to content

Commit

Permalink
ApiHttpClient已直接暴露Current
Browse files Browse the repository at this point in the history
  • Loading branch information
nnhy committed Jun 3, 2024
1 parent c706df9 commit b257bf0
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 28 deletions.
3 changes: 1 addition & 2 deletions NewLife.Remoting/Clients/ClientBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public abstract class ClientBase : DisposeBase, ICommandClient, IEventProvider,
/// <summary>收到命令时触发</summary>
public event EventHandler<CommandEventArgs>? Received;

/// <summary>命令前缀</summary>
/// <summary>命令前缀。默认Device/</summary>
public String Prefix { get; set; } = "Device/";

/// <summary>协议版本</summary>
Expand Down Expand Up @@ -84,7 +84,6 @@ protected override void Dispose(Boolean disposing)
/// <param name="args">参数</param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[return: MaybeNull]
public abstract Task<TResult> OnInvokeAsync<TResult>(String action, Object? args, CancellationToken cancellationToken);

/// <summary>远程调用拦截,支持重新登录</summary>
Expand Down
36 changes: 14 additions & 22 deletions NewLife.Remoting/Clients/HttpClientBase.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Diagnostics.CodeAnalysis;
using NewLife.Caching;
using NewLife.Caching;
using NewLife.Log;
using NewLife.Remoting.Models;
using NewLife.Serialization;
Expand All @@ -20,24 +19,32 @@ public class HttpClientBase : ClientBase
/// </summary>
public ApiHttpClient Client => _client;

private MyHttpClient _client = null!;
private ICache _cache = new MemoryCache();
private readonly ApiHttpClient _client;
private readonly ICache _cache = new MemoryCache();
#endregion

#region 构造
/// <summary>实例化</summary>
public HttpClientBase() : base()
{
_client = new MyHttpClient
_client = new ApiHttpClient
{
Client = this,
Log = XTrace.Log
};
}

/// <summary>实例化</summary>
/// <param name="urls"></param>
public HttpClientBase(String urls) : this()
public HttpClientBase(String urls) : this() => AddServices(urls);

/// <summary>新增服务点</summary>
/// <param name="name"></param>
/// <param name="url"></param>
public void AddService(String name, String url) => _client.Add(name, new Uri(url));

/// <summary>根据服务端地址列表新增服务点集合</summary>
/// <param name="urls"></param>
public void AddServices(String urls)
{
if (!urls.IsNullOrEmpty())
{
Expand All @@ -48,11 +55,6 @@ public HttpClientBase(String urls) : this()
}
}
}

/// <summary>新增服务点</summary>
/// <param name="name"></param>
/// <param name="url"></param>
public void AddService(String name, String url) => _client.Add(name, new Uri(url));
#endregion

#region 方法
Expand All @@ -61,7 +63,6 @@ public HttpClientBase(String urls) : this()
/// <param name="args">参数</param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[return: MaybeNull]
public override Task<TResult> OnInvokeAsync<TResult>(String action, Object? args, CancellationToken cancellationToken)
{
if (args == null || action.StartsWithIgnoreCase("Get") || action.Contains("/Get"))
Expand All @@ -70,15 +71,6 @@ public override Task<TResult> OnInvokeAsync<TResult>(String action, Object? args
return _client.PostAsync<TResult>(action, args);
}

class MyHttpClient : ApiHttpClient
{
public HttpClientBase Client { get; set; } = null!;

public Service? Current { get; private set; }

protected override Service GetService() => Current = base.GetService();
}

/// <summary>设置令牌。派生类可重定义逻辑</summary>
/// <param name="token"></param>
protected override void SetToken(String? token)
Expand Down
1 change: 0 additions & 1 deletion NewLife.Remoting/Clients/RpcClientBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ public RpcClientBase(String urls) : this()
/// <param name="args">参数</param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[return: MaybeNull]
public override async Task<TResult> OnInvokeAsync<TResult>(String action, Object? args, CancellationToken cancellationToken)
{
return await _client.InvokeAsync<TResult>(action, args, cancellationToken);
Expand Down
6 changes: 3 additions & 3 deletions Samples/IoTZero/Clients/HttpDevice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ public class HttpDevice : HttpClientBase
#region 构造
public HttpDevice() => Prefix = "Device/";

public HttpDevice(ClientSetting setting) : base(setting.Server)
public HttpDevice(ClientSetting setting) : this()
{
Prefix = "Device/";

_setting = setting;

ProductKey = setting.ProductKey;

AddServices(setting.Server);
}
#endregion

Expand Down

0 comments on commit b257bf0

Please sign in to comment.