126 lines
3.0 KiB
Plaintext
126 lines
3.0 KiB
Plaintext
|
{
|
||
|
$Project$
|
||
|
$Workfile$
|
||
|
$Revision$
|
||
|
$DateUTC$
|
||
|
$Id$
|
||
|
|
||
|
This file is part of the Indy (Internet Direct) project, and is offered
|
||
|
under the dual-licensing agreement described on the Indy website.
|
||
|
(http://www.indyproject.org/)
|
||
|
|
||
|
Copyright:
|
||
|
(c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
|
||
|
}
|
||
|
{
|
||
|
$Log$
|
||
|
}
|
||
|
{
|
||
|
Rev 1.2 2004.10.26 2:19:58 PM czhower
|
||
|
Resolved alias conflict.
|
||
|
|
||
|
Rev 1.1 14/07/2004 21:37:26 CCostelloe
|
||
|
Changed Get/SetMessage to Get/SetIdMessage to avoid conflict under C++ with
|
||
|
Windows' GetMessage
|
||
|
|
||
|
Rev 1.0 11/13/2002 07:57:28 AM JPMugaas
|
||
|
|
||
|
2000-APR-14 Peter Mee: Converted to Indy.
|
||
|
|
||
|
2001-MAY-03 Idan Cohen: Added Create and Destroy of TIdMessage.
|
||
|
}
|
||
|
|
||
|
unit IdMessageCollection;
|
||
|
|
||
|
{
|
||
|
TIdMessageCollection: Contains a collection of IdMessages.
|
||
|
Originally by Peter Mee.
|
||
|
}
|
||
|
|
||
|
interface
|
||
|
|
||
|
{$i IdCompilerDefines.inc}
|
||
|
|
||
|
uses
|
||
|
Classes,
|
||
|
IdMessage;
|
||
|
|
||
|
type
|
||
|
TIdMessageItems = class of TIdMessageItem;
|
||
|
|
||
|
TIdMessageItem = class(TCollectionItem)
|
||
|
protected
|
||
|
FAttempt: Integer;
|
||
|
FMsg: TIdMessage;
|
||
|
FQueued: Boolean;
|
||
|
public
|
||
|
constructor Create(Collection: TCollection); override;
|
||
|
destructor Destroy; override;
|
||
|
//
|
||
|
property Attempt: Integer read FAttempt write FAttempt;
|
||
|
property Msg: TIdMessage read FMsg;
|
||
|
property Queued: Boolean read FQueued write FQueued;
|
||
|
end;
|
||
|
|
||
|
TIdMessageCollection = class(TCollection)
|
||
|
private
|
||
|
function GetIdMessage(index: Integer): TIdMessage;
|
||
|
procedure SetIdMessage(index: Integer; const Value: TIdMessage);
|
||
|
public
|
||
|
constructor Create; reintroduce;
|
||
|
function Add: TIdMessageItem;
|
||
|
property Messages[index: Integer]: TIdMessage read GetIdMessage write SetIdMessage; Default;
|
||
|
end;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
uses
|
||
|
IdGlobal, SysUtils;
|
||
|
|
||
|
{ TIdMessageItem }
|
||
|
|
||
|
constructor TIdMessageItem.Create(Collection: TCollection);
|
||
|
begin
|
||
|
inherited Create(Collection);
|
||
|
FMsg := TIdMessage.Create(nil);
|
||
|
end;
|
||
|
|
||
|
destructor TIdMessageItem.Destroy;
|
||
|
begin
|
||
|
FreeAndNil(FMsg);
|
||
|
inherited Destroy;
|
||
|
end;
|
||
|
|
||
|
{ TIdMessageCollection }
|
||
|
|
||
|
constructor TIdMessageCollection.Create;
|
||
|
begin
|
||
|
inherited Create(TIdMessageItem);
|
||
|
end;
|
||
|
|
||
|
function TIdMessageCollection.Add;
|
||
|
begin
|
||
|
Result := TIdMessageItem(inherited Add);
|
||
|
end;
|
||
|
|
||
|
function TIdMessageCollection.GetIdMessage(index: Integer): TIdMessage;
|
||
|
begin
|
||
|
Result := TIdMessageItem(Items[index]).Msg;
|
||
|
end;
|
||
|
|
||
|
procedure TIdMessageCollection.SetIdMessage(index: Integer; const Value: TIdMessage);
|
||
|
begin
|
||
|
//I think it should be freed before the new value is assigned or else the
|
||
|
//pointer will be lost.
|
||
|
|
||
|
// RLebeau 6/3/2010: this is taking ownership of the input TIdMessage
|
||
|
// pointer! We should probably be calling Assign() instead, and let
|
||
|
// the caller manage its TIdMessage object separately. Or else make
|
||
|
// the Messages[] property read-only instead...
|
||
|
|
||
|
TIdMessageItem(Items[index]).FMsg.Free;
|
||
|
TIdMessageItem(Items[index]).FMsg := Value;
|
||
|
end;
|
||
|
|
||
|
end.
|