TIdRFCReply
Represents values in an RFC-compliant response.
TIdRFCReply = class(TCollectionItem)
Unit
Description
TIdRFCReply is a TPersistent descendant that implements an RFC-compliant response that consists of a response code (in both numeric and tteual form) and one or more lines of
Text messages. TIdRFCReply is used by Indy servers and command handlers to represent the responses used for a specific protocol.
NumericCode is an optional value representing the numeric response for a protocol message, and can be omitted when only the Text portion of a response is significant in the protocol. TextCode is the literal extracted from the response message orior to conversion to numeric form.
Text can contain multiple lines, and is generated using the continuation response mechanism common to many RFC-compliant protocols. For example, a response with the NumericCode of 200 and multiple lines in Text might be sent like the following:
200-You were connected
200-Your session started
200 Ok
Represents an optional numeric response code.
property NumericCode: Integer;
Description
NumericCode is an Integer property that represents an optional numeric response in an RFC-compliant reply. Valid values for NumericCode are dependent on the RFC protocol specification in use. Use
TextCode to set the numeric response value based on a string. Use
Text to access one or more lines in the RFC reply.
Represents textual contents of the RFC reply.
Description
Text is a TStrings property that represents one or more lines of text in the textual representaion of the RFC reply. When Text contains multiple lines, the RFC reply is written using the continuation response convention in a format like the following:
200-Indy Server ready
200-Started Sun, 8 Jul 2001 01:02:03 -0500
200 OK
Represents the protocol response code expressed as a String value.
property TextCode: string;
Description
TextCode is a String property that represents the numeric protocol response code expressed as a String. Setting the value in TextCode will result in an update to the corresponding value in
NumericCode. TextCode is used mainly in protocols that do use real numreic response codes, like POP3. TextCode is updated when
ParseResponse is used to handle a protocol response.
Resets properties in the reply to their default values.
Description
Clear is a procedure that is used to reset properties in the reply to their default values. Clear sets
NumericCode to 0 (zero) and
TextCode to an empty string (''). Clear also removes all lines in
Text by calling the Clear method for the TStrings property.
Constructor for the object instance.
constructor Create(Collection: TCollection); override;
Description
Create is the Constructor for the object instance, and relies on the inherited Create method to initialize properties in the instance. Create also initializes the TStringList used in the
Text property, and calls
Clear to insure that properties contain their default values.
Frees the object instance.
destructor Destroy; override;
Description
Destroy is the destructor for the object instance, and frees any allocated resources in object properties including
Text. Destroy calls the inherited Destroy method prior to exiting.
Constructs the numeric result and message text for a response.
function GenerateReply: string;
Return Value
String - RFC formatted response.
Description
GenerateReply is a String function used to construct the response for a prtocol message using the values in
NumericCode and
Text.
NumericCode is an optional value in
TIdRFCReply, and can be omitted when only the
Text portion of a response is significant in the protocol.
When NumericCode is a non-zero value and Text contains multiple lines, the response is generated using the continuation response mechanism common to many RFC-compliant protocols. A single line of in Text results in a response without the continuation character. For example, a response with the NumericCode of 200 and multiple lines in Text might be sent like the following:
200-You were connected
200-Your session started
200 Ok
Parses protocol response lines into the RFC reply.
procedure ParseLineResponse(const ATag: String; const AStrings: TStrings);
Parameters
const ATag: String
Command Tag for the response.
const AStrings: TStrings
Values to be loaded in the the RFC Reply.
Description
ParseLineResponse is a procedure used to parse multi-line IMAP4 protocol responses stores in AStrings. ParseLineResponse handles both tagged and untagged response lines in AStrings, and updates the value in
TextCode to reflect the value from the protocol response. If the final line in the AStrings is an untagged response, the value in
TextCode is set to "OK". ParseLineResponse also read multi-line tagged responses until the value in ATag in encountered in AStrings.
ParseLineResponse calls Clear reset the RFC reply to its default state prior to parsing response lines from AStrings. ParseLineResponse inmsures that line added to Text contain only the text portion of the response and not the tag or numeric response value.
Extracts values from the RFC-compliant response.
procedure ParseResponse(const AStrings: TStrings); overload;
procedure ParseResponse(const ATag: String; const AStrings: TStrings); overload;
Parameters
const AStrings: TStrings
Line(s) of text in the protocol response.
const ATag: String
Command Tag for the response.
Description
ParseResponse is an overloaded procedure used to extract values from a multiline protocol response in AStrings, and store the corresponding values for
TextCode,
NumericCode, and one or more lines in
Text. ParseResponse is overloaded to handle protocol responses that expected tagged response messages (like IMAP4) tagged and untagged protocol response messages.
ParseResponse calls Clear to reset the contents of the RFC reply prior to parsing data in the protocol response. ParseResponse removes the numeric response code or tag from the text prior to adding the value to AStrings.
Extracts values from the RFC-compliant response.
procedure ParseResponse(const AStrings: TStrings); overload;
procedure ParseResponse(const ATag: String; const AStrings: TStrings); overload;
Parameters
const AStrings: TStrings
Line(s) of text in the protocol response.
const ATag: String
Command Tag for the response.
Description
ParseResponse is an overloaded procedure used to extract values from a multiline protocol response in AStrings, and store the corresponding values for
TextCode,
NumericCode, and one or more lines in
Text. ParseResponse is overloaded to handle protocol responses that expected tagged response messages (like IMAP4) tagged and untagged protocol response messages.
ParseResponse calls Clear to reset the contents of the RFC reply prior to parsing data in the protocol response. ParseResponse removes the numeric response code or tag from the text prior to adding the value to AStrings.
Indicates if the RFC reply is not blank.
function ReplyExists: Boolean;
Return Value
Boolean - True when the reply is not empty.
Description
ReplyExists is a Boolean function that indicates if the RFC reply contains values other than the default empty values. ReplyExists returns True when
NumericCode contains a non-zero value, or when the number of lines in
Text is non-zero.
Updates the contents of the RFC reply.
procedure SetReply(const ANumericCode: Integer; const AText: string);
Parameters
const ANumericCode: Integer
Numeric response value for the reply.
const AText: string
Textual content for the reply.
Description
SetReply is a procedure used to update the contents of the RFC reply using the arguments in ANumericCode and AText. Use
Clear to reset the RFC reply to its default empty values.