protected void SetState(EProtoState state, EProtoResult result = EProtoResult.Ok) { _state = state; switch (state) { case EProtoState.Closed: { SetTask(EProtoTask.None, result); // TRACE_PROTO(level_INFO, "Состояние: Closed"); RaiseEventClose(); } break; case EProtoState.Opened: { _isTimeout = false; SetTask(EProtoTask.None, result); // TRACE_PROTO(level_INFO, "Состояние: Opened"); RaiseEventOpen(); } break; case EProtoState.Listen: { SetTask(EProtoTask.None, result); // TRACE_PROTO(level_INFO, "Состояние: Listen"); RaiseEventListen(); } break; } // end switch (анализ состояния) }
public ProtoBase(ModuleTyp typ, String title, int index) : base(typ, title, index) { _state = EProtoState.Closed; _task = EProtoTask.None; _result = EProtoResult.Unknow; _executeState = CoreExecuteState.Active; OnOpen = null; OnClose = null; OnBreak = null; OnError = null; OnListen = null; ModIndex = ++_sharedId; }
public Boolean Close() { if (_state != EProtoState.Closed || _task == EProtoTask.Opening) { if (DoClose()) { SetState(EProtoState.Closed); } else { SetTask(EProtoTask.Closing); } return(true); } else { _result = EProtoResult.Ok; // TRACE_PROTO(level_WARNING, "Ошибка закрытия: Уже закрыт"); } return(false); }
public Boolean Open() { if (_state == EProtoState.Closed) { if (DoOpen()) { SetState(EProtoState.Opened); } else { SetTask(EProtoTask.Opening); } return(true); } else { _result = EProtoResult.Ok; // TRACE_PROTO(level_WARNING, "Ошибка открытия: Уже открыт"); } return(false); }
protected void SetTask(EProtoTask task, EProtoResult result = EProtoResult.Ok) { _task = task; if (task == EProtoTask.None) { if (result == EProtoResult.Timeout) { _isTimeout = true; } _result = result; } else { _result = EProtoResult.Unknow; } switch (task) { case EProtoTask.Opening: // TRACE_PROTO(level_INFO, "Задача: Открытие"); // CALLBACK(IoctlCode.IOCTL_PROTO_OPENING); break; case EProtoTask.Closing: // TRACE_PROTO(level_INFO, "Задача: Закрытие"); // CALLBACK(IoctlCode.IOCTL_PROTO_CLOSING); break; case EProtoTask.Sending: // TRACE_PROTO(level_INFO, "Задача: Передача"); // CALLBACK(IoctlCode.IOCTL_PROTO_SENDING); _isTimeout = false; break; } }
private EProtoTask _task; // Текущая задача протокола #endregion Fields #region Constructors public ProtoBase(ModuleTyp typ, String title, int index) : base(typ, title, index) { _state = EProtoState.Closed; _task = EProtoTask.None; _result = EProtoResult.Unknow; _executeState = CoreExecuteState.Active; OnOpen = null; OnClose = null; OnBreak = null; OnError = null; OnListen = null; ModIndex = ++_sharedId; }
protected void SetTask(EProtoTask task, EProtoResult result = EProtoResult.Ok) { _task = task; if (task == EProtoTask.None) { if (result == EProtoResult.Timeout) _isTimeout = true; _result = result; } else { _result = EProtoResult.Unknow; } switch (task) { case EProtoTask.Opening: // TRACE_PROTO(level_INFO, "Задача: Открытие"); // CALLBACK(IoctlCode.IOCTL_PROTO_OPENING); break; case EProtoTask.Closing: // TRACE_PROTO(level_INFO, "Задача: Закрытие"); // CALLBACK(IoctlCode.IOCTL_PROTO_CLOSING); break; case EProtoTask.Sending: // TRACE_PROTO(level_INFO, "Задача: Передача"); // CALLBACK(IoctlCode.IOCTL_PROTO_SENDING); _isTimeout = false; break; } }
public Boolean Open() { if (_state == EProtoState.Closed) { if ( DoOpen() ) SetState(EProtoState.Opened); else SetTask(EProtoTask.Opening); return true; } else { _result = EProtoResult.Ok; // TRACE_PROTO(level_WARNING, "Ошибка открытия: Уже открыт"); } return false; }
public Boolean Close() { if (_state != EProtoState.Closed || _task == EProtoTask.Opening) { if ( DoClose() ) SetState(EProtoState.Closed); else SetTask(EProtoTask.Closing); return true; } else { _result = EProtoResult.Ok; // TRACE_PROTO(level_WARNING, "Ошибка закрытия: Уже закрыт"); } return false; }