Example #1
0
        public void TestLife(float deltaTime)
        {
            List <uint> list = new List <uint>();

            foreach (uint num in this.seqMessageCollection.Keys)
            {
                ApolloMessage message = this.seqMessageCollection[num];
                if (message != null)
                {
                    message.Life -= deltaTime;
                    if (message.Life <= 0f)
                    {
                        list.Add(num);
                        if (message.Handler != null)
                        {
                            TalkerEventArgs e = new TalkerEventArgs(ApolloResult.Timeout)
                            {
                                Context  = message.Context,
                                Response = null
                            };
                            message.Handler(message.Request, e);
                        }
                    }
                }
            }
            foreach (uint num2 in list)
            {
                this.seqMessageCollection.Remove(num2);
            }
        }
Example #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));
        }
Example #3
0
 public void HandleMessage()
 {
     if (this.Handler != null)
     {
         TalkerEventArgs e = new TalkerEventArgs(this.Response, this.Context);
         this.Handler(this.Request, e);
     }
     else if (this.HandlerWithoutReceipt != null)
     {
         this.HandlerWithoutReceipt(this.Response);
     }
     else if (this.HandlerWithReceipt != null)
     {
         IPackable packable = null;
         this.HandlerWithReceipt(this.Response, ref packable);
         if (packable != null)
         {
             ADebug.Log("HandlerWithReceipt receipt:" + packable);
             if (this.Talker != null && packable != null)
             {
                 this.Talker.SendReceipt <NullResponse>(packable, this.AsyncFlag);
             }
             else
             {
                 ADebug.Log("HandlerWithReceipt without receipt");
             }
         }
     }
     else if (this.RawMessageHandler != null)
     {
         ADebug.Log(("RawMessageHandler raw data size:" + this.RawData != null) ? this.RawData.Length : 0);
         this.RawMessageHandler(new RawMessageEventArgs(this.RawData));
     }
     if (this.IsRequest)
     {
         ApolloMessageManager.Instance.RemoveMessage(this);
     }
 }
Example #4
0
        private bool popAndHandleApolloMessage()
        {
            if (this.apolloMessageCollections.Count == 0)
            {
                return(false);
            }
            ADebug.Log("popAndHandleApolloMessage: " + this.apolloMessageCollections.Count);
            ApolloMessage next = this.apolloMessageCollections.Next;

            if (next != null)
            {
                if (next.Handler != null)
                {
                    TalkerEventArgs e = new TalkerEventArgs(next.Response, next.Context);
                    next.Handler(next.Request, e);
                }
                if (next.HandlerWithoutReceipt != null)
                {
                    next.HandlerWithoutReceipt(next.Response);
                }
                if (next.HandlerWithReceipt != null)
                {
                    IPackable receipt = null;
                    next.HandlerWithReceipt(next.Response, ref receipt);
                    if (receipt != null)
                    {
                        ADebug.Log("HandlerWithReceipt receipt:" + receipt);
                        this.SendReceipt <NullResponse>(receipt, next.AsyncFlag);
                    }
                }
                if (next.IsRequest)
                {
                    ApolloMessageManager.Instance.RemoveMessage(next);
                }
            }
            return(true);
        }
        public void TestLife(float deltaTime)
        {
            List <uint> list = new List <uint>();

            using (Dictionary <uint, object> .KeyCollection.Enumerator enumerator = this.seqMessageCollection.Keys.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    uint          current       = enumerator.get_Current();
                    ApolloMessage apolloMessage = this.seqMessageCollection[current];
                    if (apolloMessage != null)
                    {
                        apolloMessage.Life -= deltaTime;
                        if (apolloMessage.Life <= 0f)
                        {
                            list.Add(current);
                            if (apolloMessage.Handler != null)
                            {
                                TalkerEventArgs talkerEventArgs = new TalkerEventArgs(ApolloResult.Timeout);
                                talkerEventArgs.Context  = apolloMessage.Context;
                                talkerEventArgs.Response = null;
                                apolloMessage.Handler(apolloMessage.Request, talkerEventArgs);
                            }
                        }
                    }
                }
            }
            using (List <uint> .Enumerator enumerator2 = list.GetEnumerator())
            {
                while (enumerator2.MoveNext())
                {
                    uint current2 = enumerator2.get_Current();
                    this.seqMessageCollection.Remove(current2);
                }
            }
        }