Some changes mostly for Protocols/NetRunner
This commit is contained in:
parent
ab789bc8af
commit
feeb978157
|
@ -1,7 +1,7 @@
|
||||||
{$I M_OPS.PAS}
|
|
||||||
|
|
||||||
Unit m_Socket_Class;
|
Unit m_Socket_Class;
|
||||||
|
|
||||||
|
{$I M_OPS.PAS}
|
||||||
|
|
||||||
Interface
|
Interface
|
||||||
|
|
||||||
Uses
|
Uses
|
||||||
|
@ -61,8 +61,8 @@ Type
|
||||||
Function WriteLine (Str: String) : LongInt;
|
Function WriteLine (Str: String) : LongInt;
|
||||||
Function WriteStr (Str: String) : LongInt;
|
Function WriteStr (Str: String) : LongInt;
|
||||||
Function WriteFile (Str: String) : Boolean;
|
Function WriteFile (Str: String) : Boolean;
|
||||||
|
Function WriteBufEscaped (Var Buf: TSocketBuffer; Var Len: LongInt) : LongInt;
|
||||||
Procedure TelnetInBuffer (Var Buf: TSocketBuffer; Var Len: LongInt);
|
Procedure TelnetInBuffer (Var Buf: TSocketBuffer; Var Len: LongInt);
|
||||||
Procedure TelnetOutBuffer (Var Buf: TSocketBuffer; Var Len: LongInt);
|
|
||||||
Function ReadBuf (Var Buf; Len: LongInt) : LongInt;
|
Function ReadBuf (Var Buf; Len: LongInt) : LongInt;
|
||||||
Function ReadLine (Var Str: String) : LongInt;
|
Function ReadLine (Var Str: String) : LongInt;
|
||||||
Function SetBlocking (Block: Boolean): LongInt;
|
Function SetBlocking (Block: Boolean): LongInt;
|
||||||
|
@ -72,6 +72,8 @@ Type
|
||||||
Procedure WaitInit (Port: Word);
|
Procedure WaitInit (Port: Word);
|
||||||
Function WaitConnection : TSocketClass;
|
Function WaitConnection : TSocketClass;
|
||||||
Procedure PurgeInputData;
|
Procedure PurgeInputData;
|
||||||
|
Procedure PurgeOutputData;
|
||||||
|
Function PeekChar (Num: Byte) : Char;
|
||||||
Function ReadChar : Char;
|
Function ReadChar : Char;
|
||||||
Function WriteChar (Ch: Char) : LongInt;
|
Function WriteChar (Ch: Char) : LongInt;
|
||||||
Procedure Status (Str: String);
|
Procedure Status (Str: String);
|
||||||
|
@ -136,15 +138,23 @@ Begin
|
||||||
Inherited Destroy;
|
Inherited Destroy;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure TSocketClass.PurgeInputData;
|
Procedure TSocketClass.PurgeOutputData;
|
||||||
Var
|
|
||||||
Buf : Array[1..1024] of Char;
|
|
||||||
Begin
|
Begin
|
||||||
If FSocketHandle = -1 Then Exit;
|
FOutBufPos := 0;
|
||||||
|
End;
|
||||||
|
|
||||||
If DataWaiting Then
|
Procedure TSocketClass.PurgeInputData;
|
||||||
Repeat
|
//Var
|
||||||
Until ReadBuf(Buf, SizeOf(Buf)) <> 1024;
|
// Buf : Array[1..1024] of Char;
|
||||||
|
Begin
|
||||||
|
// If FSocketHandle = -1 Then Exit;
|
||||||
|
|
||||||
|
FInBufPos := 0;
|
||||||
|
FInBufEnd := 0;
|
||||||
|
|
||||||
|
// If DataWaiting Then
|
||||||
|
// Repeat
|
||||||
|
// Until ReadBuf(Buf, SizeOf(Buf)) <> 1024;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure TSocketClass.Disconnect;
|
Procedure TSocketClass.Disconnect;
|
||||||
|
@ -177,8 +187,8 @@ Procedure TSocketClass.BufFlush;
|
||||||
Begin
|
Begin
|
||||||
If FOutBufPos > 0 Then Begin
|
If FOutBufPos > 0 Then Begin
|
||||||
If FTelnetClient or FTelnetServer Then
|
If FTelnetClient or FTelnetServer Then
|
||||||
TelnetOutBuffer(FOutBuf, FOutBufPos);
|
WriteBufEscaped(FOutBuf, FOutBufPos)
|
||||||
|
Else
|
||||||
WriteBuf(FOutBuf, FOutBufPos);
|
WriteBuf(FOutBuf, FOutBufPos);
|
||||||
|
|
||||||
FOutBufPos := 0;
|
FOutBufPos := 0;
|
||||||
|
@ -191,11 +201,8 @@ Begin
|
||||||
|
|
||||||
Inc(FOutBufPos);
|
Inc(FOutBufPos);
|
||||||
|
|
||||||
If FOutBufPos > TSocketBufferSize Then Begin
|
If FOutBufPos > TSocketBufferSize Then
|
||||||
WriteBuf (FOutBuf, FOutBufPos - 1);
|
BufFlush;
|
||||||
|
|
||||||
FOutBufPos := 0;
|
|
||||||
End;
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure TSocketClass.BufWriteStr (Str: String);
|
Procedure TSocketClass.BufWriteStr (Str: String);
|
||||||
|
@ -250,9 +257,9 @@ Begin
|
||||||
Result := True;
|
Result := True;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure TSocketClass.TelnetOutBuffer (Var Buf: TSocketBuffer; Var Len: LongInt);
|
Function TSocketClass.WriteBufEscaped (Var Buf: TSocketBuffer; Var Len: LongInt) : LongInt;
|
||||||
Var
|
Var
|
||||||
Temp : TSocketBuffer;
|
Temp : Array[0..TSocketBufferSize * 2] of Char;
|
||||||
TempPos : LongInt;
|
TempPos : LongInt;
|
||||||
Count : LongInt;
|
Count : LongInt;
|
||||||
Begin
|
Begin
|
||||||
|
@ -269,8 +276,15 @@ Begin
|
||||||
Inc (TempPos);
|
Inc (TempPos);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Buf := Temp;
|
Dec(TempPos);
|
||||||
Len := TempPos - 1;
|
|
||||||
|
Result := fpSend(FSocketHandle, @Temp, TempPos, FPSENDOPT);
|
||||||
|
|
||||||
|
While (Result = -1) and (SocketError = ESOCKEWOULDBLOCK) Do Begin
|
||||||
|
WaitMS(10);
|
||||||
|
|
||||||
|
Result := fpSend(FSocketHandle, @Temp, TempPos, FPSENDOPT);
|
||||||
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure TSocketClass.TelnetInBuffer (Var Buf: TSocketBuffer; Var Len: LongInt);
|
Procedure TSocketClass.TelnetInBuffer (Var Buf: TSocketBuffer; Var Len: LongInt);
|
||||||
|
@ -403,6 +417,15 @@ Begin
|
||||||
ReadBuf(Result, 1);
|
ReadBuf(Result, 1);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
Function TSocketClass.PeekChar (Num: Byte) : Char;
|
||||||
|
Begin
|
||||||
|
If (FInBufPos = FInBufEnd) and DataWaiting Then
|
||||||
|
ReadBuf(Result, 0);
|
||||||
|
|
||||||
|
If FInBufPos + Num < FInBufEnd Then
|
||||||
|
Result := FInBuf[FInBufPos + Num];
|
||||||
|
End;
|
||||||
|
|
||||||
Function TSocketClass.ReadBuf (Var Buf; Len: LongInt) : LongInt;
|
Function TSocketClass.ReadBuf (Var Buf; Len: LongInt) : LongInt;
|
||||||
Begin
|
Begin
|
||||||
If FInBufPos = FInBufEnd Then Begin
|
If FInBufPos = FInBufEnd Then Begin
|
||||||
|
|
Loading…
Reference in New Issue