示例#1
0
        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));
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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));
            }
        }