public override async Task <bool> OnPush(IDataProtocol ps) { var more = ps as DefaultDataProtocol; switch ((EOps)more.Ops) { case EOps.Push: { var proto = PiSerializer.Deserialize <PushProto>(more.Data); // ¹ã²¥Àý×Ó return(await BroadcastAsync(new DefaultDataProtocol { Ops = (short)EOps.Push, Data = PiSerializer.Serialize(new PushProto { Message = ID + " : " + proto.Message }) })); } default: return(RpcResult.Failure); } }
public IDataProtocol GetProtocol(DataProtocolVersion dataProtocolVersion) { IDataProtocol protocol = _container.GetAllInstances <IDataProtocol>().SingleOrDefault(p => p.Version == dataProtocolVersion); if (protocol == null) { // this exception means error in implementation => If we have DataProtocolVersion enum value, we should have protocol class registered throw new InvalidOperationException($"No protocol {dataProtocolVersion} registered in container"); } return(protocol); }
public override async Task <bool> OnPush(IDataProtocol ps) { var more = ps as DefaultDataProtocol; switch ((EOps)more.Ops) { case EOps.Push: { var proto = PiSerializer.Deserialize <PushProto>(more.Data); return(true); } default: return(false); } }
public override async Task <RpcResult> OnRequest(IDataProtocol rq) { var more = rq as DefaultDataProtocol; switch ((EOps)more.Ops) { case EOps.Reqeust: { var proto = PiSerializer.Deserialize <RequestProto>(more.Data); return(RpcResult.MakeSuccess(new ResponseProto { Message = $"Response from server : {proto.Message}" })); } default: return(RpcResult.Failure); } }
public override Task <RpcResult> OnRequest(IDataProtocol rq) { return(base.OnRequest(rq)); }
/// <summary> /// handle push /// </summary> /// <param name="ps"></param> /// <returns></returns> public virtual Task <bool> OnPush(IDataProtocol ps) { return(Task.FromResult(false)); }
/// <summary> /// send a proto asynchronous /// </summary> /// <param name="proto"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> // public async Task<RpcResult> SendAsync<T>(T proto) where T : IDataProtocol // { // return await SessionDelegate.SendAsync(proto); // } /// <summary> /// handle request /// </summary> /// <param name="rq"></param> /// <returns></returns> public virtual Task <RpcResult> OnRequest(IDataProtocol rq) { return(Task.FromResult(RpcResult.Failure)); }