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, }); }
public AcpResponse SendCommand(AcpCommand command) { lock (_locker) { return(AcpFlow(command)); } }