예제 #1
0
파일: AOPSink.cs 프로젝트: zqy117/MyGB
 protected virtual void AddAfterAOPHandle(string methodName, AfterAOPHandle afterHandle)
 {
     lock (this.m_AfterHandles)
     {
         if (!m_AfterHandles.Contains(methodName))
         {
             m_AfterHandles.Add(methodName, afterHandle);
         }
     }
 }
예제 #2
0
        protected virtual void AddAfterAOPHandle(string methodName, AfterAOPHandle afterHandle)
        {
            SortedList afterHandles;

            Monitor.Enter(afterHandles = this.m_AfterHandles);
            try
            {
                if (!this.m_AfterHandles.Contains(methodName))
                {
                    this.m_AfterHandles.Add(methodName, afterHandle);
                }
            }
            finally
            {
                Monitor.Exit(afterHandles);
            }
        }
예제 #3
0
파일: AOPSink.cs 프로젝트: zqy117/MyGB
        public IMessage SyncProcessMessage(IMessage msg)
        {
            IMethodCallMessage call         = msg as IMethodCallMessage;
            string             methodName   = call.MethodName.ToUpper();
            BeforeAOPHandle    beforeHandle = FindBeforeAOPHandle(methodName);

            if (beforeHandle != null)
            {
                beforeHandle(call);
            }
            IMessage             retMsg      = m_NextSink.SyncProcessMessage(msg);
            IMethodReturnMessage reply       = retMsg as IMethodReturnMessage;
            AfterAOPHandle       afterHandle = FindAfterAOPHandle(methodName);

            if (afterHandle != null)
            {
                afterHandle(reply);
            }
            return(retMsg);
        }
예제 #4
0
        public IMessage SyncProcessMessage(IMessage msg)
        {
            IMethodCallMessage methodCallMessage = msg as IMethodCallMessage;
            string             methodName        = methodCallMessage.MethodName.ToUpper();
            bool            flag            = this.FindbeforeAOPMethod(methodCallMessage);
            BeforeAOPHandle beforeAOPHandle = this.FindBeforeAOPHandle(methodName);

            if (beforeAOPHandle != null && flag)
            {
                beforeAOPHandle(methodCallMessage);
            }
            IMessage             message        = this.m_NextSink.SyncProcessMessage(msg);
            IMethodReturnMessage replyMsg       = message as IMethodReturnMessage;
            AfterAOPHandle       afterAOPHandle = this.FindAfterAOPHandle(methodName);

            if (afterAOPHandle != null && flag)
            {
                afterAOPHandle(replyMsg);
            }
            return(message);
        }