private void OnResponse(Message msg) { RPCResponseContext responseCallback = null; bool isExist = m_responseCallbacks.TryGetValue(msg.RPCSession, out responseCallback); if (isExist) { responseCallback.Callback(responseCallback.Context, msg.Method, msg.Data, RPCError.OK); m_responseCallbacks.Remove(msg.RPCSession); } else { LoggerHelper.Info(m_serviceAddress, string.Format("Service:{0} session:{1} has not response", m_serviceAddress, msg.RPCSession)); } }
protected void Call(int destination, string method, byte[] param, SSContext context, RPCCallback cb) { if (m_totalServiceSession >= Int32.MaxValue) { m_totalServiceSession = 0; } int session = ++m_totalServiceSession; PushToService(destination, method, param, MessageType.ServiceRequest, session); RPCResponseContext responseCallback = new RPCResponseContext(); responseCallback.Context = context; responseCallback.Callback = cb; m_responseCallbacks.Add(session, responseCallback); }
private void OnError(Message msg) { NetProtocol instance = NetProtocol.GetInstance(); int tag = instance.GetTag("Error"); Error.response sprotoError = (Error.response)instance.Protocol.GenResponse(tag, msg.Data); RPCResponseContext responseCallback = null; bool isExist = m_responseCallbacks.TryGetValue(msg.RPCSession, out responseCallback); if (isExist) { responseCallback.Callback(responseCallback.Context, msg.Method, Encoding.ASCII.GetBytes(sprotoError.errorText), (RPCError)sprotoError.errorCode); m_responseCallbacks.Remove(msg.RPCSession); } else { LoggerHelper.Info(m_serviceAddress, string.Format("Service:{0} session:{1} get error:{2}; error text is {3}", m_serviceAddress, msg.RPCSession, sprotoError.errorCode, sprotoError.errorText)); } }