📄 dntimeoutsupport.pas
字号:
// The contents of this file are used with permission, subject to
// the Mozilla Public License Version 1.1 (the "License"); you may
// not use this file except in compliance with the License. You may
// obtain a copy of the License at
// http://www.mozilla.org/MPL/MPL-1.1.html
//
// Software distributed under the License is distributed on an
// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
// implied. See the License for the specific language governing
// rights and limitations under the License.
unit DnTimeOutSupport;
interface
uses
DnInterfaces, DnRtl;
type
IDnTimeOutHandler = interface
procedure OnTimeOutExpired(Context: TDnThreadContext; Channel: IDnChannel);
end;
TDnTimeOutWrapper = class (TDnObject, IDnIOResponse)
protected
FChannel: IDnChannel;
FHandler: IDnTimeOutHandler;
function Channel: IDnIOTrackerHolder;
procedure CallHandler(Context: TDnThreadContext);
public
constructor Create(Channel: IDnChannel; Handler: IDnTimeOutHandler);
destructor Destroy; override;
end;
implementation
constructor TDnTimeOutWrapper.Create(Channel: IDnChannel; Handler: IDnTimeOutHandler);
begin
inherited Create;
FChannel := Channel;
FHandler := Handler;
FRefCount := 0;
end;
destructor TDnTimeOutWrapper.Destroy;
begin
FHandler := Nil;
FChannel := Nil;
inherited Destroy;
end;
function TDnTimeOutWrapper.Channel: IDnIOTrackerHolder;
begin
FChannel.QueryInterface(IDnIOTrackerHolder, Result);
end;
procedure TDnTimeOutWrapper.CallHandler(Context: TDnThreadContext);
begin
FHandler.OnTimeOutExpired(Context, FChannel);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -