From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- .../thrift/tutorial/ocaml/CalcClient.ml | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 src/jaegertracing/thrift/tutorial/ocaml/CalcClient.ml (limited to 'src/jaegertracing/thrift/tutorial/ocaml/CalcClient.ml') diff --git a/src/jaegertracing/thrift/tutorial/ocaml/CalcClient.ml b/src/jaegertracing/thrift/tutorial/ocaml/CalcClient.ml new file mode 100755 index 000000000..5a8467be2 --- /dev/null +++ b/src/jaegertracing/thrift/tutorial/ocaml/CalcClient.ml @@ -0,0 +1,74 @@ +(* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*) + +open Arg +open Thrift +open Tutorial_types +open Shared_types + +exception Die;; +let sod = function + Some v -> v + | None -> raise Die;; + +type connection = { + trans : Transport.t ; + proto : Thrift.Protocol.t; + calc : Calculator.client ; +} + +let connect ~host port = + let tx = new TSocket.t host port in + let proto = new TBinaryProtocol.t tx in + let calc = new Calculator.client proto proto in + tx#opn; + { trans = tx ; proto = proto; calc = calc } +;; + +let doclient () = + let cli = connect ~host:"127.0.0.1" 9090 in + try + cli.calc#ping ; + Printf.printf "ping()\n" ; flush stdout ; + (let sum = cli.calc#add (Int32.of_int 1) (Int32.of_int 1) in + Printf.printf "1+1=%ld\n" sum ; + flush stdout) ; + (let w = new work in + w#set_op Operation.DIVIDE ; + w#set_num1 (Int32.of_int 1) ; + w#set_num2 (Int32.of_int 0) ; + try + let quotient = cli.calc#calculate (Int32.of_int 1) w in + Printf.printf "Whoa? We can divide by zero!\n" ; flush stdout + with InvalidOperation io -> + Printf.printf "InvalidOperation: %s\n" io#grab_why ; flush stdout) ; + (let w = new work in + w#set_op Operation.SUBTRACT ; + w#set_num1 (Int32.of_int 15) ; + w#set_num2 (Int32.of_int 10) ; + let diff = cli.calc#calculate (Int32.of_int 1) w in + Printf.printf "15-10=%ld\n" diff ; flush stdout) ; + (let ss = cli.calc#getStruct (Int32.of_int 1) in + Printf.printf "Check log: %s\n" ss#grab_value ; flush stdout) ; + cli.trans#close + with Transport.E (_,what) -> + Printf.printf "ERROR: %s\n" what ; flush stdout +;; + +doclient();; -- cgit v1.2.3