| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Diagnostics;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Text.RegularExpressions;
 
- using System.Threading.Tasks;
 
- using Aitex.Core.RT.Log;
 
- namespace MECF.Framework.Common.Communications
 
- {
 
-     public enum EnumHandlerState
 
-     {
 
-         Create,
 
-         Sent,
 
-         Acked,
 
-         Completed,
 
-     }
 
-     public abstract class HandlerBase
 
-     {
 
-         public bool IsComplete
 
-         {
 
-             get { return _state == EnumHandlerState.Completed; }
 
-         }
 
-         public bool IsAcked
 
-         {
 
-             get { return _state == EnumHandlerState.Acked; }
 
-         }
 
-         private EnumHandlerState _state;
 
-         public string Name { get; set; }
 
-         public TimeSpan AckTimeout { get; set; }
 
-         public TimeSpan CompleteTimeout { get; set; }
 
-         public MessageBase ResponseMessage { get; set; }
 
-         public string SendText { get; set; }
 
-         public byte[] SendBinary { get; set; }
 
-         protected Stopwatch _timerAck = new Stopwatch();
 
-         protected Stopwatch _timerComplete = new Stopwatch();
 
-         protected HandlerBase(string text)
 
-         {
 
-             SendText = text;
 
-             SendBinary = null;
 
-             AckTimeout = TimeSpan.FromSeconds(10);
 
-             CompleteTimeout = TimeSpan.FromSeconds(300);
 
-             _state = EnumHandlerState.Create;
 
-         }
 
-         protected HandlerBase(byte[] buffer)
 
-         {
 
-             SendText = "";
 
-             SendBinary = buffer;
 
-             AckTimeout = TimeSpan.FromSeconds(10);
 
-             CompleteTimeout = TimeSpan.FromSeconds(300);
 
-             _state = EnumHandlerState.Create;
 
-         }
 
-         public abstract bool HandleMessage(MessageBase msg, out bool transactionComplete);
 
-         public void SetState(EnumHandlerState state)
 
-         {
 
-             _state = state;
 
-             if (_state == EnumHandlerState.Sent) //connection's responsibility
 
-             {
 
-                 _timerAck.Restart();
 
-                 _timerComplete.Restart();
 
-             }
 
-             if (_state == EnumHandlerState.Acked)  //handler's responsibility
 
-             {
 
-                 _timerAck.Stop();
 
-             }
 
-             if (_state == EnumHandlerState.Completed)//handler's responsibility
 
-             {
 
-                 _timerAck.Stop();
 
-                 _timerComplete.Stop();
 
-             }
 
-         }
 
-         public bool CheckTimeout( )
 
-         {
 
-             if (_state == EnumHandlerState.Sent && _timerAck.IsRunning && _timerAck.Elapsed > AckTimeout)
 
-             {
 
-                 _timerAck.Stop();
 
-                 _state = EnumHandlerState.Completed;
 
-                 return true;
 
-             }
 
-             if ((_state == EnumHandlerState.Sent || _state==EnumHandlerState.Acked) && _timerComplete.IsRunning && _timerComplete.Elapsed > CompleteTimeout)
 
-             {
 
-                 _timerAck.Stop();
 
-                 _timerComplete.Stop();
 
-                 _state = EnumHandlerState.Completed;
 
-                 return true;
 
-             }
 
-             return false;
 
-         }
 
-     }
 
- }
 
 
  |