Beispiel #1
0
        void thread_main()
        {
            int sessionId;

            while (true)
            {
                sessionId = _mSessionIdQueue.Take();

                MethodContext mContext = _mSessionId2MethodContext[sessionId];
                Object        result;
                lock (this._objServiceImpl)
                {
                    result = mContext.method.Invoke(mContext.obj, mContext.parameters);
                }
                mContext.setResult(result);
                mContext._mConsumerResetEvent.Set();
                // cleanup, _mConsumerResetEvent was reset already
                var map = (IDictionary <int, MethodContext>)_mSessionId2MethodContext;
                map.Remove(sessionId);
            }
        }
Beispiel #2
0
        Object getResponse(int sessionId)
        {
            MethodContext methodContext = _mSessionId2MethodContext[sessionId];

            return(methodContext.getResult());
        }
Beispiel #3
0
 void enqueueRequest(int sessionId, MethodContext mContext)
 {
     _mSessionId2MethodContext[sessionId] = mContext;
     _mSessionIdQueue.Add(sessionId);
 }