示例#1
0
 public ApolloResult Send <TResp>(TalkerCommand command, IPackable request, TalkerMessageHandler <TResp> handler, object context, float timeout) where TResp : IUnpackable
 {
     return(this.Send <TResp>(TalkerMessageType.Request, command, request, handler, context, timeout));
 }
示例#2
0
        public ApolloResult Send <TResp>(TalkerMessageType type, TalkerCommand command, IPackable request, TalkerMessageHandler <TResp> handler, object context, float timeout) where TResp : IUnpackable
        {
            ApolloMessage apolloMessage = new ApolloMessage();

            apolloMessage.RespType = typeof(TResp);
            apolloMessage.Context  = context;
            apolloMessage.Life     = timeout;
            if (handler != null)
            {
                apolloMessage.Handler = delegate(object req, TalkerEventArgs loginInfo)
                {
                    if (handler != null)
                    {
                        TalkerEventArgs <TResp> talkerEventArgs = new TalkerEventArgs <TResp>(loginInfo.Result, loginInfo.ErrorMessage);
                        talkerEventArgs.Response = (TResp)((object)loginInfo.Response);
                        talkerEventArgs.Context  = loginInfo.Context;
                        handler(req, talkerEventArgs);
                    }
                };
            }
            return(this.Send(type, command, request, apolloMessage));
        }
示例#3
0
 public ApolloResult Send <TResp>(IPackable request, TalkerMessageHandler <TResp> handler, object context, float timeout) where TResp : IUnpackable
 {
     return(this.Send <TResp>(new TalkerCommand(TalkerCommand.CommandDomain.App, request), request, handler, context, timeout));
 }