Beispiel #1
0
 private void Buffer_OnNext(ITracked<MPack> p)
 {
     try
     {
         var map = p.Value as MPackMap;
         if (map != null)
         {
             if (map.ContainsKey(CONST.HDR_CMD))
             {
                 MPack response = null;
                 switch (map[CONST.HDR_CMD].To<string>())
                 {
                     //case CONST.CMD_USER:
                     //    logCmd = "USER";
                     //    response = User(p.Observe());
                     //    break;
                     //case CONST.CMD_AUTH:
                     //    logCmd = "AUTH";
                     //    response = Auth(p.Observe());
                     //    break;
                     case CONST.CMD_OPEN:
                         response = Open(p.Observe());
                         break;
                     case CONST.CMD_CLOSE:
                         response = Close(p.Observe());
                         break;
                     case CONST.CMD_EXECUTE:
                         response = Execute(p.Observe());
                         break;
                         //default:
                         //    throw new ArgumentException($"Command {map[CONST.HDR_CMD].To<string>()} not recognized.");
                 }
                 if (response != null)
                     WritePacket(response);
             }
         }
     }
     catch (Exception e)
     {
         p.Observe();
         MPackMap err = new MPackMap();
         err[CONST.HDR_STATUS] = MPack.From(CONST.STA_ERROR);
         err[CONST.HDR_VALUE] = MPack.From(e.Message);
         if (p.Value is MPackMap && ((MPackMap)p.Value).ContainsKey(CONST.HDR_ID))
             err[CONST.HDR_ID] = p.Value[CONST.HDR_ID];
         WritePacket(err);
     }
 }