Большое спасибо вам обоим за ваши ответы. Я решил реализовать его так, как это описал mghie - путем реализации собственного класса перехватчиков для моих соединений. Просто для тех, кто заинтересован в решении, я приведу здесь некоторый исходный код:
type
TCountTrafficInterceptor = class (TIdConnectionIntercept)
public
type TIntPointer = ^Longint;
private
FTraffic : TIntPointer;
public
constructor Create (TrafficVar : TIntPointer);
procedure Send (var ABuffer : TIdBytes); override;
procedure Receive (var ABuffer : TIdBytes); override;
end;
constructor TCountTrafficInterceptor.Create (TrafficVar : TIntPointer);
begin
FTraffic := TrafficVar;
end;
procedure TCountTrafficInterceptor.Send (var ABuffer : TIdBytes);
begin
inherited Send (ABuffer);
FTraffic^ := FTraffic^ + Length (ABuffer);
end;
procedure TCountTrafficInterceptor.Receive (var ABuffer : TIdBytes);
begin
inherited Receive (ABuffer);
FTraffic^ := FTraffic^ + Length (ABuffer);
end;
А в методе OnConnect TIdTCPCmdServer:
AContext.Connection.IOHandler.Intercept :=
TCountTrafficInterceptor.Create (@FNetworkTraffic);
Отлично работает, именно то решение, которое я искал. Еще раз спасибо за ваши ответы.
Кстати: как я могу использовать (в) знак в моих сообщениях? Я всегда получаю цитату из блока, когда пытаюсь его набрать ...