예제 #1
0
        ServerProcessing IServerChannelSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, out IMessage responseMsg, out ITransportHeaders responseHeaders, out Stream responseStream)
        {
            long   startTicks  = TimeUtil.NOW();
            string uri         = null;
            long   inputLength = 0L;

            if (requestStream != null && requestHeaders != null)
            {
                uri = requestHeaders["__RequestUri"].ToString();
            }
            ServerProcessing process = this.nextSink.ProcessMessage(sinkStack, requestMsg, requestHeaders, requestStream, out responseMsg, out responseHeaders, out responseStream);

            if (null != responseMsg)
            {
                object methodName = responseMsg.Properties["__MethodName"];
                if (uri != null && methodName != null)
                {
                    string cmdName = uri.ToString() + methodName.ToString();
                    CmdMonitor.RecordCmdDetail(cmdName, TimeUtil.NOW() - startTicks, inputLength, responseStream.Length, TCPProcessCmdResults.RESULT_OK);
                }
                else
                {
                    LogManager.WriteExceptionUseCache(string.Format("IServerChannelSink.ProcessMessage#uri={0},methodName={1}", uri, methodName));
                }
            }
            else
            {
                LogManager.WriteExceptionUseCache(string.Format("IServerChannelSink.ProcessMessage#uri={0},responseMsg=null", uri));
            }
            return(process);
        }
예제 #2
0
 public void BeforeSendReply(ref Message reply, object correlationState)
 {
     MessageInspector.cmdInfo cmd = (MessageInspector.cmdInfo)correlationState;
     if (null != cmd)
     {
         CmdMonitor.RecordCmdDetail(cmd.cmdName, TimeUtil.NOW() - cmd.receiveTicks, (long)cmd.cmdSize, TCPProcessCmdResults.RESULT_OK);
     }
 }