📄 idserveriohandlersocket.pas
字号:
{ $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: 13961: IdServerIOHandlerSocket.pas
{
{ Rev 1.15 2004.02.03 4:17:04 PM czhower
{ For unit name changes.
}
{
{ Rev 1.14 2004.01.20 10:03:32 PM czhower
{ InitComponent
}
{
{ Rev 1.13 2003.10.11 5:50:00 PM czhower
{ -VCL fixes for servers
{ -Chain suport for servers (Super core)
{ -Scheduler upgrades
{ -Full yarn support
}
{
{ Rev 1.12 10/5/2003 03:03:58 AM JPMugaas
{ Should compile.
}
{
{ Rev 1.11 2003.09.19 10:11:20 PM czhower
{ Next stage of fiber support in servers.
}
{
{ Rev 1.10 2003.09.19 11:54:34 AM czhower
{ -Completed more features necessary for servers
{ -Fixed some bugs
}
{
{ Rev 1.9 2003.09.18 4:10:28 PM czhower
{ Preliminary changes for Yarn support.
}
{
{ Rev 1.8 2003.07.14 10:15:36 PM czhower
{ Changed timeout to 250 from 100
}
{
Rev 1.7 3/29/2003 5:55:02 PM BGooijen
now calls AfterAccept
}
{
Rev 1.6 3/13/2003 10:18:28 AM BGooijen
Server side fibers, bug fixes
}
{
{ Rev 1.5 1-17-2003 22:22:04 BGooijen
{ new design
}
{
{ Rev 1.4 1-1-2003 16:28:26 BGooijen
{ Changed TIdThread to TIdYarn
}
{
{ Rev 1.3 12-7-2002 17:02:32 BGooijen
{ Now creates IOHandlerSockets of class IOHandlerSocketClass.
{ This is more flexible for descendants
}
{
{ Rev 1.2 12-7-2002 12:34:38 BGooijen
{ Re-enabled IPv6 support
}
{
{ Rev 1.1 05/12/2002 15:32:00 AO'Neill
}
{
{ Rev 1.0 12/2/2002 05:01:30 PM JPMugaas
{ Rechecked in due to file corruption.
}
unit IdServerIOHandlerSocket;
interface
uses
Classes,
IdSocketHandle, IdGlobal, IdThread, IdServerIOHandler, IdStackConsts, IdIOHandler, IdScheduler,
IdIOHandlerSocket, IdYarn,
SysUtils;
type
TIdIOHandlerSocketClass = class of TIdIOHandlerSocket;
TIdServerIOHandlerSocket = class(TIdServerIOHandler)
protected
IOHandlerSocketClass: TIdIOHandlerSocketClass;
//
procedure InitComponent; override;
public
function Accept(
ASocket: TIdSocketHandle;
AListenerThread: TIdThread;
AYarn: TIdYarn
): TIdIOHandler;
override;
procedure Init; override;
end;
implementation
{ TIdServerIOHandlerSocket }
procedure TIdServerIOHandlerSocket.Init;
begin
//
end;
function TIdServerIOHandlerSocket.Accept(
ASocket: TIdSocketHandle;
AListenerThread: TIdThread;
AYarn: TIdYarn
): TIdIOHandler;
var
LIOHandler: TIdIOHandlerSocket;
begin
LIOHandler := IOHandlerSocketClass.Create(nil);
LIOHandler.Open;
Result := nil;
while not AListenerThread.Stopped do try
if ASocket.Select(250) then begin
if LIOHandler.Binding.Accept(ASocket.Handle) then begin
LIOHandler.AfterAccept;
Result := LIOHandler;
Break;
end else begin
FreeAndNil(LIOHandler);
Break;
end;
end;
finally
if AListenerThread.Stopped then begin
FreeAndNil(LIOHandler);
end;
end;
end;
procedure TIdServerIOHandlerSocket.InitComponent;
begin
inherited;
IOHandlerSocketClass := TIdIOHandlerSocket;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -