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); } }
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)); }
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); } }
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); } } }