TAstaServerSocket.SendCodedMessage
Applies to
TAstaClientSocket
Declaration
procedure
SendCodedMessage(ClientSocket: TCustomWinSocket;
MsgID: Integer; Msg: string);
Description
SendCodedMessage allows you to send a message to the server, and then make a custom response back
to the client. The SendCodedMessage method allows you to roll your own protocol where certain MsgIDs have
specific meaning to your application. The ability to create your own protocol in this fashion is a simple
yet powerful technique. See the Simple Business Objects code below.
The simple code below sends a message to the server, but the message is sent with two different MsgIDs. The server will handle the message differently depending on which of the MsgIDs, 1700 or 1750, accompanies the message.
procedure TForm1.Button4Click(Sender: TObject);
begin
AstaClientSocket1.SendCodedMessage(ClietnSocket, 1700,
eClientCodedMessage.Text);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
AstaClientSocket1.SendCodedMessage(ClientSocket, 1750,
eClientCodedMessage.Text);
end;
The server responds wtih the following implementation code.
procedure TForm1.AstaServerSocket1CodedMessage(ClientSocket:
TCustomWinSocket; Sender: TObject; MsgID: Integer; Msg: string);
begin
case MsgID of
1700: AstaServerSocket1.SendCodedMessage(ClientSocket,
MsgID, UpperCase(Msg));
1750: AstaServerSocket1.SendCodedMessage(Clientsocket,
MsgID, LowerCase(Msg));
end;
end;
When returned to the client, it is picked up in the AstaClientSocket's OnCodedMessage event.
Simple Business Objects
The following code shows how you could send CodedMessages to a business object instantiated on the server. In this scenario, 1800 and 1850 are "protocol codes" that you control. The client can call those codes, with or without a parameter and invoke a custom response from the server.
procedure
TForm1.AstaServerSocket1CodedMessage(Sender: TObject;
ClientSocket: TCustomWinSocket; MsgID: Integer; Msg: string);
begin
case MsgID of
1800: begin
if MyBusinessObject.ChargeSalesTax(StrToInt(Msg)) then
AstaServerSocket1.SendCodedMessage(ClientSocket,
MsgID,
'TRUE')
else
AstaServerSocket1.SendCodedMessage(ClientSocket,
MsgID,
'FALSE');
end;
1850: begin
AstaServerSocket1.SendCodedMessage(ClientSocket,
MsgID,
MyBusinessObject.NewCreditLimit(Msg));
end;
end;
end;