예제 #1
0
        private AcpResponse AcpFlow(AcpCommand command)
        {
            AliveCheck();
            byte fCode = Acp.FCODE_NO_RESPONSE;

            byte[] dataBuffer = new byte[0];
            try
            {
                AcpStandardProcess.Send(socket, command.ToBytes());
                AcpStandardProcess.Receive(socket, out fCode, out dataBuffer);
            }
            catch (AcpTimeOutException)
            {
                Logger.Info(this, "timeout..");
                fCode = Acp.FCODE_TIMEOUT;
            }
            catch (SocketException e)
            {
                Logger.Warn(this, $"acp socket exception {e.ToString()}");
                fCode = Acp.FCODE_NO_RESPONSE;
            }
            catch (IOException e)
            {
                Logger.Warn(this, $"acp exception(client reading) {e}");
                fCode      = Acp.FCODE_ERR_WITH_EX;
                dataBuffer = Encoding.UTF8.GetBytes(e.ToString() + " " + e.Message);
            }
            return(new AcpResponse()
            {
                FirstCode = fCode,
                Data = dataBuffer,
            });
        }
예제 #2
0
 public AcpResponse SendCommand(AcpCommand command)
 {
     lock (_locker)
     {
         return(AcpFlow(command));
     }
 }