| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- {
- $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.
|