Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
 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));
        }