From 8ba81573b3e82103b0ecc7af14d253ebe2489260 Mon Sep 17 00:00:00 2001 From: Christopher Piro Date: Tue, 15 Jan 2008 12:04:15 +0000 Subject: [PATCH] [thrift] preliminary tthrift tutorial client for Erlang Summary: we haven't had a client tutorial for the longest time -- added one that basically works. will iron the bugs out in due order. Reviewed By: eletuchy Test Plan: works when launched like server.sh Revert Plan: ok git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665427 13f79535-47bb-0310-9956-ffa450edef68 --- tutorial/erl/client.erl | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tutorial/erl/client.erl diff --git a/tutorial/erl/client.erl b/tutorial/erl/client.erl new file mode 100644 index 00000000..f4ff7b3e --- /dev/null +++ b/tutorial/erl/client.erl @@ -0,0 +1,68 @@ +-module(client). + +-include("thrift.hrl"). +-include("transport/tSocket.hrl"). +-include("protocol/tBinaryProtocol.hrl"). + +-include("calculator_thrift.hrl"). + +-export([t/0]). + +t() -> + Host = "dev020", + Port = 9999, + + _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), + p("ping"), + + %% + %% 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), + + ok. -- 2.17.1