| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- { $HDR$}
- {**********************************************************************}
- { Unit archived using Team Coherence }
- { Team Coherence is Copyright 2002 by Quality Software Components }
- { }
- { For further information / comments, visit our WEB site at }
- { http://www.TeamCoherence.com }
- {**********************************************************************}
- {}
- { $Log: 10319: IdServerIOHandlerSocket.pas
- {
- { Rev 1.0 2002.11.12 10:51:18 PM czhower
- }
- unit IdServerIOHandlerSocket;
- interface
- Uses
- SysUtils, IdGlobal, IdThread, IdServerIOHandler, IdStackConsts, IdIOHandler, IdIOHandlerSocket;
- type
- TIdServerIOHandlerSocket = class(TIdServerIOHandler)
- public
- procedure Init; override;
- function Accept(ASocket: TIdStackSocketHandle;
- AThread: TIdThread = nil): TIdIOHandler; override;
- end;
- implementation
- uses Classes;
- { TIdServerIOHandlerSocket }
- procedure TIdServerIOHandlerSocket.Init;
- begin
- //
- end;
- function TIdServerIOHandlerSocket.Accept(ASocket: TIdStackSocketHandle;
- AThread: TIdThread = nil): TIdIOHandler;
- Var
- LIOHandler: TIdIOHandlerSocket;
- begin
- LIOHandler := TIdIOHandlerSocket.Create(nil);
- LIOHandler.Open;
- Result := nil;
- if Assigned(AThread) then begin
- while not AThread.Stopped do begin
- if LIOHandler.Binding.Select(ASocket, 100) then begin // Wait for 100 ms
- if LIOHandler.Binding.Accept(ASocket) then begin
- Result := LIOHandler;
- EXIT;
- end else begin
- FreeAndNil(LIOHandler);
- EXIT;
- end;//if Accept
- end;//if select
- end;
- if AThread.Stopped then begin
- FreeAndNil(LIOHandler);
- end;
- end
- // Old way for compatibility
- else begin
- if LIOHandler.Binding.Accept(ASocket) then begin
- Result := LIOHandler;
- Exit;
- end else begin
- FreeAndNil(LIOHandler);
- end;
- end;
- end;
- end.
-
|