[thrift] flesh out thrift Erlang tutorial client
Summary: Added examples for all examples except inheritance and application exception handling (divide by zero); looks like both are currently broken. Weak.
Reviewed By: eletuchy
Test Plan: works just like RubyClient.rb (modulo the commented out bits)
Revert Plan: ok
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665428 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tutorial/erl/client.erl b/tutorial/erl/client.erl
index f4ff7b3..9e18746 100644
--- a/tutorial/erl/client.erl
+++ b/tutorial/erl/client.erl
@@ -6,63 +6,68 @@
-include("calculator_thrift.hrl").
--export([t/0]).
+-export([go/0]).
+
+p(X) ->
+ io:format("~p~n", [X]),
+ ok.
t() ->
+ thrift:start(),
Host = "dev020",
Port = 9999,
- _Sock = oop:start_new(tSocket, [Host, Port]),
- Trans = oop:start_new(tBufferedTransport, [_Sock]),
- Prot = oop:start_new(tBinaryProtocol, [Trans]),
+ try
+ _Sock = oop:start_new(tSocket, [Host, Port]),
+ Trans = oop:start_new(tBufferedTransport, [_Sock]),
+ Prot = oop:start_new(tBinaryProtocol, [Trans]),
- ?R0(Trans, effectful_open),
+ ?R0(Trans, effectful_open),
- Client = calculator_thrift:new(Prot),
+ Client = calculator_thrift:new(Prot),
- calculator_thrift:ping(Client),
- p("ping"),
+ calculator_thrift:ping(Client),
+ io:format("ping~n", []),
- %%
- %% sum = client.add(1,1)
- %% print "1+1=", sum, "\n"
- %%
- %% sum = client.add(1,4)
- %% print "1+4=", sum, "\n"
- %%
- %% work = Work.new()
- %%
- %% work.op = Operation::SUBTRACT
- %% work.num1 = 15
- %% work.num2 = 10
- %% diff = client.calculate(1, work)
- %% print "15-10=", diff, "\n"
- %%
- %% log = client.getStruct(1)
- %% print "Log: ", log.value, "\n"
- %%
- %% begin
- %% work.op = Operation::DIVIDE
- %% work.num1 = 1
- %% work.num2 = 0
- %% quot = client.calculate(1, work)
- %% puts "Whoa, we can divide by 0 now?"
- %% rescue InvalidOperation => io
- %% print "InvalidOperation: ", io.why, "\n"
- %% end
- %%
- %% client.zip()
- %% print "zip\n"
- %%
- %% transport.close()
- %%
- %% rescue TException => tx
- %% print 'TException: ', tx.message, "\n"
- %% end
- %%
- %%
- %%
- %% XXX if we don't close, the connection doesn't time out on the other side
- ?R0(Trans, effectful_close),
+ 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.
diff --git a/tutorial/erl/client.sh b/tutorial/erl/client.sh
new file mode 120000
index 0000000..a417e0d
--- /dev/null
+++ b/tutorial/erl/client.sh
@@ -0,0 +1 @@
+server.sh
\ No newline at end of file