You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4 8e941d3f-bd1b-0410-a28a-d453659cc2b4
84 lines
2.4 KiB
ObjectPascal
84 lines
2.4 KiB
ObjectPascal
program calc_client;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
uses
|
|
Classes, SysUtils,
|
|
service_intf,
|
|
base_soap_formatter, soap_formatter, binary_formatter,
|
|
ics_tcp_protocol,
|
|
calculator, calculator_proxy, TypInfo;
|
|
|
|
Var
|
|
calcObj : ICalculator;
|
|
i, j, k : Integer;
|
|
rk : TBinaryArgsResult;
|
|
vA : TBinaryArgsResultArray;
|
|
f : IFormatterClient;
|
|
s : TStream;
|
|
msgProt : string;
|
|
begin
|
|
{ vA := TBinaryArgsResultArray.Create();
|
|
vA.SetLength(2);
|
|
f := TBinaryFormatter.Create() as IFormatterClient;
|
|
f.BeginCall('pr','trgt');
|
|
f.Put('xx',TypeInfo(TBinaryArgsResultArray),vA);
|
|
f.EndCall();
|
|
s:= TMemoryStream.Create();
|
|
f.SaveToStream(s);
|
|
f := Nil;
|
|
f := TBinaryFormatter.Create() as IFormatterClient;
|
|
s.Position := 0;
|
|
WriteLn('------------------------------------------');
|
|
WriteLn('------------------------------------------');
|
|
f.LoadFromStream(s);
|
|
ReadLn();
|
|
Exit;}
|
|
//Client
|
|
Write('Enter msg protocol :');
|
|
ReadLn(msgProt);
|
|
If Not( AnsiSameText(msgProt,'SOAP') Or AnsiSameText(msgProt,'binary') ) Then
|
|
msgProt := 'binary';
|
|
Writeln('USED Msg protocol = ',msgProt);
|
|
ICS_RegisterTCP_Transport();
|
|
|
|
rk := nil;
|
|
Try
|
|
Try
|
|
calcObj := TCalculator_Proxy.Create(
|
|
'ICalculator', // Target
|
|
msgProt,//'SOAP',//'binary', // Protocol Data
|
|
'TCP:Address=127.0.0.1;Port=1234;target=ICalculator' // Transport Data
|
|
);
|
|
WriteLn('Calculator test.');
|
|
Write('Enter A = '); ReadLn(i);
|
|
Write('Enter B = '); ReadLn(j);
|
|
k := calcObj.DivInt(i,j);
|
|
Write(' A / B = '); WriteLn(k);
|
|
rk := calcObj.AddInt(i,j);
|
|
WriteLn(Format(' ( %d %s %d ) = %d',[rk.Arg_A, rk.Arg_OP, rk.Arg_B, rk.Arg_R]));
|
|
WriteLn('----------------------------------------------');
|
|
vA := calcObj.DoAllOperations(i,j);
|
|
Try
|
|
For i := 0 To Pred(vA.Length) Do
|
|
WriteLn(Format(' ( %d %s %d ) = %d; OP=%s',[vA[i].Arg_A, vA[i].Arg_OP, vA[i].Arg_B, vA[i].Arg_R,GetEnumName(TypeInfo(TCalc_Op),Ord(vA[i].Arg_OpEnum))]));
|
|
Finally
|
|
vA.Free();
|
|
End;
|
|
Except
|
|
On E : ESOAPException Do Begin
|
|
WriteLn('Oups ( SOAP Exception ) :');
|
|
WriteLn(' Code=',E.FaultCode);
|
|
WriteLn(' String=',E.FaultString);
|
|
End;
|
|
On E : Exception Do Begin
|
|
WriteLn('Oups:');
|
|
WriteLn(E.Message);
|
|
End;
|
|
End;
|
|
Finally
|
|
rk.Free();
|
|
End;
|
|
ReadLn();
|
|
end.
|