Initial import
This commit is contained in:
parent
5ca0cb3b15
commit
92eefe9981
|
@ -0,0 +1,107 @@
|
|||
Unit m_Protocol_Base;
|
||||
|
||||
{$I M_OPS.PAS}
|
||||
|
||||
Interface
|
||||
|
||||
Uses
|
||||
m_DateTime,
|
||||
m_Input,
|
||||
m_Socket_Class,
|
||||
m_Protocol_Queue;
|
||||
|
||||
Type
|
||||
RecProtocolStatus = Record
|
||||
Protocol : String[15];
|
||||
Sender : Boolean;
|
||||
FilePath : String;
|
||||
FileName : String;
|
||||
FileSize : Int64;
|
||||
Position : Int64;
|
||||
BlockSize : Word;
|
||||
Errors : Word;
|
||||
StartTime : LongInt;
|
||||
StartPos : Int64;
|
||||
LastMessage : String[80];
|
||||
End;
|
||||
|
||||
TProtocolStatusProc = Procedure (Starting, Ending: Boolean; Status: RecProtocolStatus);
|
||||
TProtocolAbortProc = Function : Boolean;
|
||||
|
||||
TProtocolBase = Class
|
||||
Status : RecProtocolStatus;
|
||||
StatusProc : TProtocolStatusProc;
|
||||
AbortProc : TProtocolAbortProc;
|
||||
Client : TSocketClass;
|
||||
Queue : TProtocolQueue;
|
||||
EndTransfer : Boolean;
|
||||
Connected : Boolean;
|
||||
ReceivePath : String;
|
||||
|
||||
Constructor Create (Var C: TSocketClass; Var Q: TProtocolQueue); Virtual;
|
||||
Destructor Destroy; Override;
|
||||
|
||||
Function AbortTransfer : Boolean;
|
||||
Procedure StatusUpdate (Starting, Ending: Boolean);
|
||||
Function ReadByteTimeOut (hSec: LongInt) : SmallInt;
|
||||
End;
|
||||
|
||||
Implementation
|
||||
|
||||
Function NoAbortProc : Boolean;
|
||||
Begin
|
||||
Result := False;
|
||||
End;
|
||||
|
||||
Constructor TProtocolBase.Create (Var C: TSocketClass; Var Q: TProtocolQueue);
|
||||
Begin
|
||||
Client := C;
|
||||
Queue := Q;
|
||||
EndTransfer := False;
|
||||
Connected := True;
|
||||
ReceivePath := '';
|
||||
StatusProc := NIL;
|
||||
AbortProc := @NoAbortProc;
|
||||
|
||||
FillChar(Status, SizeOf(Status), 0);
|
||||
End;
|
||||
|
||||
Destructor TProtocolBase.Destroy;
|
||||
Begin
|
||||
Inherited Destroy;
|
||||
End;
|
||||
|
||||
Procedure TProtocolBase.StatusUpdate (Starting, Ending: Boolean);
|
||||
Begin
|
||||
If Assigned(StatusProc) Then
|
||||
StatusProc(Starting, Ending, Status);
|
||||
End;
|
||||
|
||||
Function TProtocolBase.ReadByteTimeOut (hSec: LongInt) : SmallInt;
|
||||
Var
|
||||
Res : Byte;
|
||||
Begin
|
||||
Result := -1;
|
||||
|
||||
If Client.DataWaiting Then Begin
|
||||
Connected := Client.ReadBuf(Res, 1) <> -1;
|
||||
Result := Res;
|
||||
End Else
|
||||
Case Client.WaitForData(HSec * 10) of
|
||||
-1 : Connected := False;
|
||||
0 : ;
|
||||
Else
|
||||
Client.ReadBuf(Res, 1);
|
||||
Result := Res;
|
||||
End;
|
||||
End;
|
||||
|
||||
Function TProtocolBase.AbortTransfer : Boolean;
|
||||
Begin
|
||||
If Not EndTransfer Then
|
||||
EndTransfer := (Not Connected) or AbortProc;
|
||||
|
||||
AbortTransfer := EndTransfer;
|
||||
End;
|
||||
|
||||
End.
|
Loading…
Reference in New Issue