public T Invoke <T>(string action, Dictionary <string, object> parameters, object state) { using (var env = new ServiceExecutionEnv(_loggerFactory, _selector, _requestOptions)) { return((T)env.Execute(typeof(T), _desc, service => { var url = _desc.GetUrl(service, action); var ctx = new CobRequestContext { ServiceName = _desc.ServiceName, TargetAddress = service.Address, Parameters = parameters, ReturnType = typeof(T), Url = url }; //, Timeout = _desc.Timeout return _requestResolver.Get(_desc.Transport).DoRequest(ctx, state); })); } }
public override void OnBeforeRequest(CobRequestContext context) { //base.OnBeforeRequest(context); context.Extensions["author"] = Name; }
public override void OnBeforeRequest(CobRequestContext context) { //base.OnBeforeRequest(context); context.Parameters["t"] = DateTimeOffset.Now.ToUnixTimeMilliseconds().ToString(); context.Extensions["x-token"] = "token-abc"; }
//每个服务分配一个池 public ClientWebSocketPool GetOrCreate(CobRequestContext context) { return(_items.GetOrAdd(context.TargetAddress ?? new Uri(context.Url).AbsolutePath, k => new ClientWebSocketPool(_loggerFactory, context.TargetAddress ?? context.Url)));//按serviceName划池 }
public virtual void OnBeforeRequest(CobRequestContext context) { }