Beispiel #1
0
 private void setResponse(FuncMsgServer msg)
 {
     lock (_monitorLock)
     {
         _response     = msg;
         _isWaitingMsg = true;
         Monitor.PulseAll(_monitorLock);
     }
 }
Beispiel #2
0
        public ForumConnectionImpl(string ip, int port)
        {
            _monitorLock      = new Object();
            _AvailableLock    = new Object();
            _WaitingReplyLock = new Object();
            _orders           = new List <FuncMsgServer>();

            _ip           = ip;
            _port         = port;
            _server       = null;
            _isWaitingMsg = false;
            _isAvailable  = true;
            _response     = null;
        }
Beispiel #3
0
        public void run()
        {
            try
            {
                BinaryFormatter bformatter = new BinaryFormatter();
                while (true)
                {
                    FuncMsgClient msg = (FuncMsgClient)bformatter.Deserialize(_con.GetStream());

                    FuncMsgServer response = _usrHand.processMsg(msg);
                    bformatter.Serialize(_con.GetStream(), response);
                }
            }
            catch
            {
                return;
            }
        }
Beispiel #4
0
 public FuncMsgServer processMsg(FuncMsgClient msg)
 {
     try
     {
         object        response    = _actions[(int)msg.type](msg.args);
         List <object> responseLst = new List <object> {
             response
         };
         FuncMsgServer responseMsg = new FuncMsgServer {
             type = FuncMsgServer.FuncType.Replay, args = responseLst
         };
         return(responseMsg);
     }
     catch
     {
         FuncMsgServer responseMsg = new FuncMsgServer {
             type = FuncMsgServer.FuncType.ErrorReplay, args = null
         };
         return(responseMsg);
     }
 }
Beispiel #5
0
        private void reader()
        {
            BinaryFormatter bformatter = new BinaryFormatter();

            while (true)
            {
                FuncMsgServer msg = (FuncMsgServer)bformatter.Deserialize(_server.GetStream());
                if (msg.type == FuncMsgServer.FuncType.Replay || msg.type == FuncMsgServer.FuncType.ErrorReplay)
                {
                    setResponse(msg);
                }
                else
                {
                    _orders.Add(msg);
                }

                /*
                 * catch
                 * {
                 * return;
                 * }
                 * */
            }
        }