Files
PolyORB/doc/client.adb
Jérôme Hugues 65a9baf6ef Extend section 5: CORBA,
Include a mini tutorial on how to write a simple echo client/server

[Imported from Perforce change 8091 at 2006-12-01 20:29:32]

Subversion-branch: /trunk/polyorb
Subversion-revision: 35704
2004-05-28 13:22:01 +00:00

58 lines
1.4 KiB
Ada

with Ada.Command_Line;
with Ada.Text_IO;
with CORBA.ORB;
with Echo;
with PolyORB.Setup.Client;
pragma Warnings (Off, PolyORB.Setup.Client);
procedure Client is
use Ada.Command_Line;
use Ada.Text_IO;
Sent_Msg, Rcvd_Msg : CORBA.String;
myecho : Echo.Ref;
begin
CORBA.ORB.Initialize ("ORB");
if Argument_Count /= 1 then
Put_Line ("usage : client <IOR_string_from_server>");
return;
end if;
-- Getting the CORBA.Object
CORBA.ORB.String_To_Object
(CORBA.To_CORBA_String (Ada.Command_Line.Argument (1)), myecho);
-- Checking if it worked
if Echo.Is_Nil (myecho) then
Put_Line ("main : cannot invoke on a nil reference");
return;
end if;
-- Sending message
Sent_Msg := CORBA.To_CORBA_String (Standard.String'("Hello Ada !"));
Rcvd_Msg := Echo.echoString (myecho, Sent_Msg);
-- Printing result
Put_Line ("I said : " & CORBA.To_Standard_String (Sent_Msg));
Put_Line ("The object answered : " & CORBA.To_Standard_String (Rcvd_Msg));
exception
when E : CORBA.Transient =>
declare
Memb : CORBA.System_Exception_Members;
begin
CORBA.Get_Members (E, Memb);
Put ("received exception transient, minor");
Put (CORBA.Unsigned_Long'Image (Memb.Minor));
Put (", completion status: ");
Put_Line (CORBA.Completion_Status'Image (Memb.Completed));
end;
end Client;