162 lines
5.0 KiB
C++
162 lines
5.0 KiB
C++
// 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.
|
|
|
|
const char* snapshot(R"""(
|
|
open Thrift
|
|
open Service_types
|
|
|
|
(* HELPER FUNCTIONS AND STRUCTURES *)
|
|
|
|
class ping_args =
|
|
object (self)
|
|
method copy =
|
|
let _new = Oo.copy self in
|
|
_new
|
|
method write (oprot : Protocol.t) =
|
|
oprot#writeStructBegin "ping_args";
|
|
oprot#writeFieldStop;
|
|
oprot#writeStructEnd
|
|
end
|
|
let rec read_ping_args (iprot : Protocol.t) =
|
|
let _str2 = new ping_args in
|
|
ignore(iprot#readStructBegin);
|
|
(try while true do
|
|
let (_,_t3,_id4) = iprot#readFieldBegin in
|
|
if _t3 = Protocol.T_STOP then
|
|
raise Break
|
|
else ();
|
|
(match _id4 with
|
|
| _ -> iprot#skip _t3);
|
|
iprot#readFieldEnd;
|
|
done; ()
|
|
with Break -> ());
|
|
iprot#readStructEnd;
|
|
_str2
|
|
|
|
class ping_result =
|
|
object (self)
|
|
val mutable _serverError : Errors_types.serverError option = None
|
|
method get_serverError = _serverError
|
|
method grab_serverError = match _serverError with None->raise (Field_empty "ping_result.serverError") | Some _x5 -> _x5
|
|
method set_serverError _x5 = _serverError <- Some _x5
|
|
method unset_serverError = _serverError <- None
|
|
method reset_serverError = _serverError <- None
|
|
|
|
method copy =
|
|
let _new = Oo.copy self in
|
|
if _serverError <> None then
|
|
_new#set_serverError self#grab_serverError#copy;
|
|
_new
|
|
method write (oprot : Protocol.t) =
|
|
oprot#writeStructBegin "ping_result";
|
|
(match _serverError with None -> () | Some _v ->
|
|
oprot#writeFieldBegin("serverError",Protocol.T_STRUCT,1);
|
|
_v#write(oprot);
|
|
oprot#writeFieldEnd
|
|
);
|
|
oprot#writeFieldStop;
|
|
oprot#writeStructEnd
|
|
end
|
|
let rec read_ping_result (iprot : Protocol.t) =
|
|
let _str8 = new ping_result in
|
|
ignore(iprot#readStructBegin);
|
|
(try while true do
|
|
let (_,_t9,_id10) = iprot#readFieldBegin in
|
|
if _t9 = Protocol.T_STOP then
|
|
raise Break
|
|
else ();
|
|
(match _id10 with
|
|
| 1 -> (if _t9 = Protocol.T_STRUCT then
|
|
_str8#set_serverError (Errors_types.read_serverError iprot)
|
|
else
|
|
iprot#skip _t9)
|
|
| _ -> iprot#skip _t9);
|
|
iprot#readFieldEnd;
|
|
done; ()
|
|
with Break -> ());
|
|
iprot#readStructEnd;
|
|
_str8
|
|
|
|
class virtual iface =
|
|
object (self)
|
|
method virtual ping : unit
|
|
end
|
|
|
|
class client (iprot : Protocol.t) (oprot : Protocol.t) =
|
|
object (self)
|
|
val mutable seqid = 0
|
|
method ping =
|
|
self#send_ping;
|
|
self#recv_ping
|
|
method private send_ping =
|
|
oprot#writeMessageBegin ("ping", Protocol.CALL, seqid);
|
|
let args = new ping_args in
|
|
args#write oprot;
|
|
oprot#writeMessageEnd;
|
|
oprot#getTransport#flush
|
|
method private recv_ping =
|
|
let (fname, mtype, rseqid) = iprot#readMessageBegin in
|
|
(if mtype = Protocol.EXCEPTION then
|
|
let x = Application_Exn.read iprot in
|
|
(iprot#readMessageEnd; raise (Application_Exn.E x))
|
|
else ());
|
|
let result = read_ping_result iprot in
|
|
iprot#readMessageEnd;
|
|
(match result#get_serverError with None -> () | Some _v ->
|
|
raise (Errors_types.ServerError _v));
|
|
()
|
|
end
|
|
|
|
class processor (handler : iface) =
|
|
object (self)
|
|
inherit Processor.t
|
|
|
|
val processMap = Hashtbl.create 1
|
|
method process iprot oprot =
|
|
let (name, typ, seqid) = iprot#readMessageBegin in
|
|
if Hashtbl.mem processMap name then
|
|
(Hashtbl.find processMap name) (seqid, iprot, oprot)
|
|
else (
|
|
iprot#skip(Protocol.T_STRUCT);
|
|
iprot#readMessageEnd;
|
|
let x = Application_Exn.create Application_Exn.UNKNOWN_METHOD ("Unknown function "^name) in
|
|
oprot#writeMessageBegin(name, Protocol.EXCEPTION, seqid);
|
|
x#write oprot;
|
|
oprot#writeMessageEnd;
|
|
oprot#getTransport#flush
|
|
);
|
|
true
|
|
method private process_ping (seqid, iprot, oprot) =
|
|
let _ = read_ping_args iprot in
|
|
iprot#readMessageEnd;
|
|
let result = new ping_result in
|
|
(try
|
|
(handler#ping);
|
|
with
|
|
| Errors_types.ServerError serverError ->
|
|
result#set_serverError serverError
|
|
);
|
|
oprot#writeMessageBegin ("ping", Protocol.REPLY, seqid);
|
|
result#write oprot;
|
|
oprot#writeMessageEnd;
|
|
oprot#getTransport#flush
|
|
initializer
|
|
Hashtbl.add processMap "ping" self#process_ping;
|
|
end
|
|
|
|
)""");
|