| -module(client). | 
 |  | 
 | -include("thrift.hrl"). | 
 | -include("transport/tSocket.hrl"). | 
 | -include("protocol/tBinaryProtocol.hrl"). | 
 |  | 
 | -include("calculator_thrift.hrl"). | 
 |  | 
 | -export([go/0]). | 
 |  | 
 | p(X) -> | 
 |     io:format("~p~n", [X]), | 
 |     ok. | 
 |  | 
 | t() -> | 
 |     thrift:start(), | 
 |     Host = "dev020", | 
 |     Port = 9999, | 
 |  | 
 |     try | 
 |         _Sock = oop:start_new(tSocket, [Host, Port]), | 
 |         Trans = oop:start_new(tBufferedTransport, [_Sock]), | 
 |         Prot  = oop:start_new(tBinaryProtocol, [Trans]), | 
 |  | 
 |         ?R0(Trans, effectful_open), | 
 |  | 
 |         Client = calculator_thrift:new(Prot), | 
 |  | 
 |         calculator_thrift:ping(Client), | 
 |         io:format("ping~n", []), | 
 |  | 
 |         Sum = calculator_thrift:add(Client, 1, 1), | 
 |         io:format("1+1=~p~n", [Sum]), | 
 |  | 
 |         Sum1 = calculator_thrift:add(Client, 1, 4), | 
 |         io:format("1+4=~p~n", [Sum1]), | 
 |  | 
 |         Work = #work{op=?tutorial_SUBTRACT, | 
 |                      num1=15, | 
 |                      num2=10}, | 
 |         Diff = calculator_thrift:calculate(Client, 1, Work), | 
 |         io:format("15-10=~p~n", [Diff]), | 
 |  | 
 |         %% xxx inheritance doesn't work | 
 |         %% Log = sharedService_thrift:getStruct(Client, 1), | 
 |         %% io:format("Log: ~p~n", [Log]), | 
 |  | 
 |         %% xxx neither do exceptions :( | 
 |         try | 
 |             Work1 = #work{op=?tutorial_DIVIDE, | 
 |                           num1=1, | 
 |                           num2=0}, | 
 |             _Quot = (calculator_thrift:calculate(Client, 1, Work1)), | 
 |  | 
 |             io:format("LAME: exception handling is broken~n", []) | 
 |         catch | 
 |             Z -> | 
 |                 p(Z) | 
 |         %%   rescue InvalidOperation => io | 
 |         %%     print "InvalidOperation: ", io.why, "\n" | 
 |         %%   end | 
 |         end, | 
 |  | 
 |         calculator_thrift:zip(Client), | 
 |         io:format("zip~n", []), | 
 |  | 
 |         ?R0(Trans, effectful_close) | 
 |  | 
 |     catch | 
 |         Y -> | 
 |             p(Y) | 
 |     end, | 
 |     ok. |