summaryrefslogtreecommitdiffstats
path: root/fnet
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2018-09-04 12:16:55 +0000
committerHåvard Pettersen <havardpe@oath.com>2018-09-05 13:25:25 +0000
commitf163bfa304b627aa0fda87b13bf4d22f5bf21fbf (patch)
tree9b1d694b790ac407417ea5dfa0f0ddbb0ae500b7 /fnet
parent3bcb5407524034b3206aef269fef52a196023504 (diff)
remove non-instant invocation
Diffstat (limited to 'fnet')
-rw-r--r--fnet/src/examples/frt/rpc/rpc_callback_client.cpp11
-rw-r--r--fnet/src/examples/frt/rpc/rpc_callback_server.cpp15
-rw-r--r--fnet/src/examples/frt/rpc/rpc_server.cpp6
-rw-r--r--fnet/src/tests/frt/method_pt/method_pt.cpp14
-rw-r--r--fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp2
-rw-r--r--fnet/src/tests/frt/rpc/detach_return_invoke.cpp2
-rw-r--r--fnet/src/tests/frt/rpc/invoke.cpp33
-rw-r--r--fnet/src/tests/frt/rpc/session.cpp4
-rw-r--r--fnet/src/tests/frt/rpc/sharedblob.cpp2
-rw-r--r--fnet/src/tests/info/info.cpp2
-rw-r--r--fnet/src/vespa/fnet/frt/invoker.cpp15
-rw-r--r--fnet/src/vespa/fnet/frt/invoker.h7
-rw-r--r--fnet/src/vespa/fnet/frt/reflection.cpp5
-rw-r--r--fnet/src/vespa/fnet/frt/reflection.h4
-rw-r--r--fnet/src/vespa/fnet/frt/rpcrequest.h2
-rw-r--r--fnet/src/vespa/fnet/frt/supervisor.cpp46
-rw-r--r--fnet/src/vespa/fnet/frt/supervisor.h2
17 files changed, 64 insertions, 108 deletions
diff --git a/fnet/src/examples/frt/rpc/rpc_callback_client.cpp b/fnet/src/examples/frt/rpc/rpc_callback_client.cpp
index 801de59b515..7c6434e870a 100644
--- a/fnet/src/examples/frt/rpc/rpc_callback_client.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_callback_client.cpp
@@ -26,7 +26,7 @@ RPC::Init(FRT_Supervisor *s)
{
FRT_ReflectionBuilder rb(s);
//-------------------------------------------------------------------
- rb.DefineMethod("prod", "", "", true,
+ rb.DefineMethod("prod", "", "",
FRT_METHOD(RPC::Prod), this);
//-------------------------------------------------------------------
}
@@ -45,6 +45,7 @@ MyApp::Main()
printf("usage : rpc_server <connectspec>\n");
return 1;
}
+ bool ok = true;
RPC rpc;
FRT_Supervisor orb;
rpc.Init(&orb);
@@ -63,6 +64,7 @@ MyApp::Main()
printf("[error(%d): %s]\n",
req->GetErrorCode(),
req->GetErrorMessage());
+ ok = false;
}
printf("invokeCnt: %d\n", rpc.invokeCnt);
@@ -76,6 +78,7 @@ MyApp::Main()
printf("[error(%d): %s]\n",
req->GetErrorCode(),
req->GetErrorMessage());
+ ok = false;
}
printf("invokeCnt: %d\n", rpc.invokeCnt);
@@ -89,14 +92,18 @@ MyApp::Main()
printf("[error(%d): %s]\n",
req->GetErrorCode(),
req->GetErrorMessage());
+ ok = false;
}
printf("invokeCnt: %d\n", rpc.invokeCnt);
+ if (rpc.invokeCnt != 3) {
+ ok = false;
+ }
req->SubRef();
target->SubRef();
orb.ShutDown(true);
- return 0;
+ return ok ? 0 : 1;
}
diff --git a/fnet/src/examples/frt/rpc/rpc_callback_server.cpp b/fnet/src/examples/frt/rpc/rpc_callback_server.cpp
index 33207282bcc..ac7b34ebda0 100644
--- a/fnet/src/examples/frt/rpc/rpc_callback_server.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_callback_server.cpp
@@ -2,6 +2,7 @@
#include <vespa/fnet/frt/frt.h>
#include <vespa/fastos/app.h>
+#include <thread>
#include <vespa/log/log.h>
LOG_SETUP("rpc_callback_server");
@@ -12,9 +13,7 @@ struct RPC : public FRT_Invokable
void Init(FRT_Supervisor *s);
};
-void
-RPC::CallBack(FRT_RPCRequest *req)
-{
+void do_callback(FRT_RPCRequest *req) {
FNET_Connection *conn = req->GetConnection();
FRT_RPCRequest *cb = new FRT_RPCRequest();
cb->SetMethodName(req->GetParams()->GetValue(0)._string._str);
@@ -25,6 +24,14 @@ RPC::CallBack(FRT_RPCRequest *req)
cb->GetErrorMessage());
}
cb->SubRef();
+ req->Return();
+}
+
+void
+RPC::CallBack(FRT_RPCRequest *req)
+{
+ req->Detach();
+ std::thread(do_callback, req).detach();
}
void
@@ -32,7 +39,7 @@ RPC::Init(FRT_Supervisor *s)
{
FRT_ReflectionBuilder rb(s);
//-------------------------------------------------------------------
- rb.DefineMethod("callBack", "s", "", false,
+ rb.DefineMethod("callBack", "s", "",
FRT_METHOD(RPC::CallBack), this);
//-------------------------------------------------------------------
}
diff --git a/fnet/src/examples/frt/rpc/rpc_server.cpp b/fnet/src/examples/frt/rpc/rpc_server.cpp
index 8947663216e..03d618133c9 100644
--- a/fnet/src/examples/frt/rpc/rpc_server.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_server.cpp
@@ -28,21 +28,21 @@ RPCServer::InitRPC(FRT_Supervisor *s)
{
FRT_ReflectionBuilder rb(s);
//-------------------------------------------------------------------
- rb.DefineMethod("concat", "ss", "s", true,
+ rb.DefineMethod("concat", "ss", "s",
FRT_METHOD(RPCServer::RPC_concat), this);
rb.MethodDesc("Concatenate two strings");
rb.ParamDesc("string1", "a string");
rb.ParamDesc("string2", "another string");
rb.ReturnDesc("ret", "the concatenation of string1 and string2");
//-------------------------------------------------------------------
- rb.DefineMethod("addFloat", "ff", "f", true,
+ rb.DefineMethod("addFloat", "ff", "f",
FRT_METHOD(RPCServer::RPC_addFloat), this);
rb.MethodDesc("Add two floats");
rb.ParamDesc("float1", "a float");
rb.ParamDesc("float2", "another float");
rb.ReturnDesc("ret", "float1 + float2");
//-------------------------------------------------------------------
- rb.DefineMethod("addDouble", "dd", "d", true,
+ rb.DefineMethod("addDouble", "dd", "d",
FRT_METHOD(RPCServer::RPC_addDouble), this);
rb.MethodDesc("Add two doubles");
rb.ParamDesc("double1", "a double");
diff --git a/fnet/src/tests/frt/method_pt/method_pt.cpp b/fnet/src/tests/frt/method_pt/method_pt.cpp
index db5905d6871..5417fddceeb 100644
--- a/fnet/src/tests/frt/method_pt/method_pt.cpp
+++ b/fnet/src/tests/frt/method_pt/method_pt.cpp
@@ -207,35 +207,35 @@ void initTest() {
//-------------------------------------------------------------------
- rb.DefineMethod("simpleMethod", "", "", true,
+ rb.DefineMethod("simpleMethod", "", "",
FRT_METHOD(SimpleHandler::RPC_Method),
_simpleHandler);
//-------------------------------------------------------------------
- rb.DefineMethod("mediumMethod1", "", "", true,
+ rb.DefineMethod("mediumMethod1", "", "",
FRT_METHOD(MediumHandler1::RPC_Method),
_mediumHandler1);
- rb.DefineMethod("mediumMethod2", "", "", true,
+ rb.DefineMethod("mediumMethod2", "", "",
FRT_METHOD(MediumHandler2::RPC_Method),
_mediumHandler2);
- rb.DefineMethod("mediumMethod3", "", "", true,
+ rb.DefineMethod("mediumMethod3", "", "",
FRT_METHOD(MediumHandler3::RPC_Method),
_mediumHandler3);
//-------------------------------------------------------------------
- rb.DefineMethod("complexMethod1", "", "", true,
+ rb.DefineMethod("complexMethod1", "", "",
FRT_METHOD(ComplexHandler1::RPC_Method),
_complexHandler1);
- rb.DefineMethod("complexMethod2", "", "", true,
+ rb.DefineMethod("complexMethod2", "", "",
FRT_METHOD(ComplexHandler2::RPC_Method),
_complexHandler2);
- rb.DefineMethod("complexMethod3", "", "", true,
+ rb.DefineMethod("complexMethod3", "", "",
FRT_METHOD(ComplexHandler3::RPC_Method),
_complexHandler3);
diff --git a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
index 4f8b4b82743..dbead4adfe5 100644
--- a/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
+++ b/fnet/src/tests/frt/parallel_rpc/parallel_rpc_test.cpp
@@ -37,7 +37,7 @@ struct Server : Rpc {
}
void init_rpc() {
FRT_ReflectionBuilder rb(&orb);
- rb.DefineMethod("inc", "l", "l", true, FRT_METHOD(Server::rpc_inc), this);
+ rb.DefineMethod("inc", "l", "l", FRT_METHOD(Server::rpc_inc), this);
rb.MethodDesc("increment a 64-bit integer");
rb.ParamDesc("in", "an integer (64 bit)");
rb.ReturnDesc("out", "in + 1 (64 bit)");
diff --git a/fnet/src/tests/frt/rpc/detach_return_invoke.cpp b/fnet/src/tests/frt/rpc/detach_return_invoke.cpp
index 54a891261c2..ab21c62bb68 100644
--- a/fnet/src/tests/frt/rpc/detach_return_invoke.cpp
+++ b/fnet/src/tests/frt/rpc/detach_return_invoke.cpp
@@ -20,7 +20,7 @@ struct Server : public FRT_Invokable
Server(FRT_Supervisor &s, Receptor &r) : orb(s), receptor(r) {
FRT_ReflectionBuilder rb(&s);
- rb.DefineMethod("hook", "", "", true,
+ rb.DefineMethod("hook", "", "",
FRT_METHOD(Server::rpc_hook), this);
}
diff --git a/fnet/src/tests/frt/rpc/invoke.cpp b/fnet/src/tests/frt/rpc/invoke.cpp
index 787adb227f9..e3bd662214f 100644
--- a/fnet/src/tests/frt/rpc/invoke.cpp
+++ b/fnet/src/tests/frt/rpc/invoke.cpp
@@ -124,7 +124,7 @@ public:
assert(_echo_stash != nullptr && _echo_args != nullptr);
FRT_ReflectionBuilder rb(supervisor);
- rb.DefineMethod("echo", "*", "*", true,
+ rb.DefineMethod("echo", "*", "*",
FRT_METHOD(EchoTest::RPC_Echo), this);
FRT_Values *args = _echo_args;
@@ -225,17 +225,15 @@ public:
{
FRT_ReflectionBuilder rb(supervisor);
- rb.DefineMethod("inc", "i", "i", true,
+ rb.DefineMethod("inc", "i", "i",
FRT_METHOD(TestRPC::RPC_Inc), this);
- rb.DefineMethod("setValue", "i", "", true,
+ rb.DefineMethod("setValue", "i", "",
FRT_METHOD(TestRPC::RPC_SetValue), this);
- rb.DefineMethod("incValue", "", "", true,
+ rb.DefineMethod("incValue", "", "",
FRT_METHOD(TestRPC::RPC_IncValue), this);
- rb.DefineMethod("getValue", "", "i", true,
+ rb.DefineMethod("getValue", "", "i",
FRT_METHOD(TestRPC::RPC_GetValue), this);
- rb.DefineMethod("testFast", "iiibb", "i", true,
- FRT_METHOD(TestRPC::RPC_Test), this);
- rb.DefineMethod("testSlow", "iiibb", "i", false,
+ rb.DefineMethod("testFast", "iiibb", "i",
FRT_METHOD(TestRPC::RPC_Test), this);
}
@@ -364,7 +362,6 @@ const char phase_names[PHASE_ZZZ][32] =
enum {
TIMING_NULL = 0,
TIMING_INSTANT,
- TIMING_NON_INSTANT,
TIMING_ZZZ
};
@@ -372,7 +369,6 @@ const char timing_names[TIMING_ZZZ][32] =
{
"nullptr",
"INSTANT",
- "NON-INSTANT"
};
enum {
@@ -451,17 +447,10 @@ struct State {
void PrepareTestMethod()
{
NewReq();
- bool instant = (_timing == TIMING_INSTANT);
- if (_timing != TIMING_INSTANT &&
- _timing != TIMING_NON_INSTANT)
- {
+ if (_timing != TIMING_INSTANT) {
ASSERT_TRUE(false); // consult your dealer...
}
- if (instant) {
- _req->SetMethodName("testFast");
- } else {
- _req->SetMethodName("testSlow");
- }
+ _req->SetMethodName("testFast");
}
void SetTestParams(uint32_t value, uint32_t delay,
@@ -928,9 +917,9 @@ TEST_F("invoke test", State()) {
EXPECT_TRUE(_phase_simple_cnt == 1);
EXPECT_TRUE(_phase_void_cnt == 1);
EXPECT_TRUE(_phase_speed_cnt == 1);
- EXPECT_TRUE(_phase_advanced_cnt == 4);
- EXPECT_TRUE(_phase_error_cnt == 4);
- EXPECT_TRUE(_phase_abort_cnt == 4);
+ EXPECT_TRUE(_phase_advanced_cnt == 2);
+ EXPECT_TRUE(_phase_error_cnt == 2);
+ EXPECT_TRUE(_phase_abort_cnt == 2);
EXPECT_TRUE(_phase_echo_cnt == 1);
}
diff --git a/fnet/src/tests/frt/rpc/session.cpp b/fnet/src/tests/frt/rpc/session.cpp
index b84db9b4e88..93f14647e21 100644
--- a/fnet/src/tests/frt/rpc/session.cpp
+++ b/fnet/src/tests/frt/rpc/session.cpp
@@ -77,9 +77,9 @@ struct RPC : public FRT_Invokable
void Init(FRT_Supervisor *s)
{
FRT_ReflectionBuilder rb(s);
- rb.DefineMethod("getValue", "", "i", true,
+ rb.DefineMethod("getValue", "", "i",
FRT_METHOD(RPC::GetValue), this);
- rb.DefineMethod("setValue", "i", "", true,
+ rb.DefineMethod("setValue", "i", "",
FRT_METHOD(RPC::SetValue), this);
s->SetSessionInitHook(FRT_METHOD(RPC::InitSession), this);
s->SetSessionFiniHook(FRT_METHOD(RPC::FiniSession), this);
diff --git a/fnet/src/tests/frt/rpc/sharedblob.cpp b/fnet/src/tests/frt/rpc/sharedblob.cpp
index 10eaad9c013..a48ecbb1da7 100644
--- a/fnet/src/tests/frt/rpc/sharedblob.cpp
+++ b/fnet/src/tests/frt/rpc/sharedblob.cpp
@@ -176,7 +176,7 @@ TEST("testImplicitShared") {
ServerSampler serverSampler(dataSet, req);
{
FRT_ReflectionBuilder rb(&orb);
- rb.DefineMethod("test", "*", "*", true,
+ rb.DefineMethod("test", "*", "*",
FRT_METHOD(ServerSampler::RPC_test), &serverSampler);
}
orb.Listen(0);
diff --git a/fnet/src/tests/info/info.cpp b/fnet/src/tests/info/info.cpp
index ecd21a7bd25..f76e66c2af6 100644
--- a/fnet/src/tests/info/info.cpp
+++ b/fnet/src/tests/info/info.cpp
@@ -24,7 +24,7 @@ struct RPC : public FRT_Invokable
{
FRT_ReflectionBuilder rb(s);
//-------------------------------------------------------------------
- rb.DefineMethod("getInfo", "", "sssii", true,
+ rb.DefineMethod("getInfo", "", "sssii",
FRT_METHOD(RPC::GetInfo), this);
// FastOS version
// FNET version
diff --git a/fnet/src/vespa/fnet/frt/invoker.cpp b/fnet/src/vespa/fnet/frt/invoker.cpp
index f2dc331c707..b174c3a710e 100644
--- a/fnet/src/vespa/fnet/frt/invoker.cpp
+++ b/fnet/src/vespa/fnet/frt/invoker.cpp
@@ -64,18 +64,14 @@ FRT_RPCInvoker::FRT_RPCInvoker(FRT_Supervisor *supervisor,
req->SetReturnHandler(this);
}
-bool FRT_RPCInvoker::IsInstant() {
- return _method->IsInstant();
-}
-
-bool FRT_RPCInvoker::Invoke(bool freeChannel)
+bool FRT_RPCInvoker::Invoke()
{
bool detached = false;
_req->SetDetachedPT(&detached);
(_method->GetHandler()->*_method->GetMethod())(_req);
if (detached)
return false;
- HandleDone(freeChannel);
+ HandleDone(false);
return true;
}
@@ -120,13 +116,6 @@ FRT_RPCInvoker::GetConnection()
return _req->GetContext()._value.CHANNEL->GetConnection();
}
-
-void
-FRT_RPCInvoker::Run(FastOS_ThreadInterface *, void *)
-{
- Invoke(true);
-}
-
//-----------------------------------------------------------------------------
void FRT_HookInvoker::Invoke()
diff --git a/fnet/src/vespa/fnet/frt/invoker.h b/fnet/src/vespa/fnet/frt/invoker.h
index 15d74017200..64adf66688e 100644
--- a/fnet/src/vespa/fnet/frt/invoker.h
+++ b/fnet/src/vespa/fnet/frt/invoker.h
@@ -59,8 +59,7 @@ public:
//-----------------------------------------------------------------------------
-class FRT_RPCInvoker : public FastOS_Runnable,
- public FRT_IReturnHandler
+class FRT_RPCInvoker : public FRT_IReturnHandler
{
private:
FRT_RPCRequest *_req;
@@ -76,15 +75,13 @@ public:
bool noReply);
void ForceMethod(FRT_Method *method) { _method = method; }
- bool IsInstant();
FRT_RPCRequest *GetRequest() { return _req; }
void HandleDone(bool freeChannel);
- bool Invoke(bool freeChannel);
+ bool Invoke();
void HandleReturn() override;
FNET_Connection *GetConnection() override;
- void Run(FastOS_ThreadInterface *, void *) override;
};
//-----------------------------------------------------------------------------
diff --git a/fnet/src/vespa/fnet/frt/reflection.cpp b/fnet/src/vespa/fnet/frt/reflection.cpp
index 4285c512ebf..305294f4a3c 100644
--- a/fnet/src/vespa/fnet/frt/reflection.cpp
+++ b/fnet/src/vespa/fnet/frt/reflection.cpp
@@ -6,13 +6,12 @@
#include "supervisor.h"
FRT_Method::FRT_Method(const char * name, const char * paramSpec, const char * returnSpec,
- bool instant, FRT_METHOD_PT method, FRT_Invokable * handler)
+ FRT_METHOD_PT method, FRT_Invokable * handler)
: _hashNext(nullptr),
_listNext(nullptr),
_name(strdup(name)),
_paramSpec(strdup(paramSpec)),
_returnSpec(strdup(returnSpec)),
- _instant(instant),
_method(method),
_handler(handler),
_docLen(0),
@@ -171,7 +170,6 @@ void
FRT_ReflectionBuilder::DefineMethod(const char *name,
const char *paramSpec,
const char *returnSpec,
- bool instant,
FRT_METHOD_PT method,
FRT_Invokable *handler)
{
@@ -182,7 +180,6 @@ FRT_ReflectionBuilder::DefineMethod(const char *name,
_method = new FRT_Method(name,
paramSpec,
returnSpec,
- instant,
method,
handler);
_lookup->AddMethod(_method);
diff --git a/fnet/src/vespa/fnet/frt/reflection.h b/fnet/src/vespa/fnet/frt/reflection.h
index 466e58413e9..5189cf81d0a 100644
--- a/fnet/src/vespa/fnet/frt/reflection.h
+++ b/fnet/src/vespa/fnet/frt/reflection.h
@@ -19,7 +19,6 @@ private:
char *_name; // method name
char *_paramSpec; // method parameter spec
char *_returnSpec; // method return spec
- bool _instant; // method is instant ?
FRT_METHOD_PT _method; // method pointer
FRT_Invokable *_handler; // method handler
uint32_t _docLen; // method documentation length
@@ -32,7 +31,6 @@ public:
FRT_Method(const char *name,
const char *paramSpec,
const char *returnSpec,
- bool instant,
FRT_METHOD_PT method,
FRT_Invokable *handler);
@@ -42,7 +40,6 @@ public:
const char *GetName() { return _name; }
const char *GetParamSpec() { return _paramSpec; }
const char *GetReturnSpec() { return _returnSpec; }
- bool IsInstant() { return _instant; }
FRT_METHOD_PT GetMethod() { return _method; }
FRT_Invokable *GetHandler() { return _handler; }
void SetDocumentation(FRT_Values *values);
@@ -121,7 +118,6 @@ public:
void DefineMethod(const char *name,
const char *paramSpec,
const char *returnSpec,
- bool instant,
FRT_METHOD_PT method,
FRT_Invokable *handler);
void MethodDesc(const char *desc);
diff --git a/fnet/src/vespa/fnet/frt/rpcrequest.h b/fnet/src/vespa/fnet/frt/rpcrequest.h
index a10653ce2f6..cc871e7ac0c 100644
--- a/fnet/src/vespa/fnet/frt/rpcrequest.h
+++ b/fnet/src/vespa/fnet/frt/rpcrequest.h
@@ -133,7 +133,7 @@ public:
FNET_Packet *CreateReplyPacket();
void SetDetachedPT(bool *detachedPT) { _detachedPT = detachedPT; }
- void Detach() { *_detachedPT = true; }
+ FRT_RPCRequest *Detach() { *_detachedPT = true; return this; }
void SetAbortHandler(FRT_IAbortHandler *handler) { _abortHandler = handler; }
void SetReturnHandler(FRT_IReturnHandler *handler) { _returnHandler = handler; }
diff --git a/fnet/src/vespa/fnet/frt/supervisor.cpp b/fnet/src/vespa/fnet/frt/supervisor.cpp
index 927e2e84b94..e509223c005 100644
--- a/fnet/src/vespa/fnet/frt/supervisor.cpp
+++ b/fnet/src/vespa/fnet/frt/supervisor.cpp
@@ -91,22 +91,6 @@ FRT_Supervisor::GetListenPort() const
}
-bool
-FRT_Supervisor::RunInvocation(FRT_RPCInvoker *invoker)
-{
- // XXX: implement queue with max length + max # threads
-
- if (_threadPool == nullptr ||
- _threadPool->NewThread(invoker) == nullptr)
- {
- invoker->GetRequest()->SetError(FRTE_RPC_OVERLOAD,
- "Could not start thread");
- return false;
- }
- return true;
-}
-
-
FRT_Target *
FRT_Supervisor::GetTarget(const char *spec)
{
@@ -179,7 +163,7 @@ FRT_Supervisor::SetMethodMismatchHook(FRT_METHOD_PT method,
{
delete _methodMismatchHook;
_methodMismatchHook = new FRT_Method("frt.hook.methodMismatch", "*", "*",
- true, method, handler);
+ method, handler);
assert(_methodMismatchHook != nullptr);
}
@@ -284,25 +268,17 @@ FRT_Supervisor::HandlePacket(FNET_Packet *packet, FNET_Context context)
&& _methodMismatchHook != nullptr)
{
invoker->ForceMethod(_methodMismatchHook);
- return (invoker->Invoke(false)) ?
+ return (invoker->Invoke()) ?
FNET_FREE_CHANNEL : FNET_CLOSE_CHANNEL;
}
invoker->HandleDone(false);
return FNET_FREE_CHANNEL;
- } else if (invoker->IsInstant()) {
-
- return (invoker->Invoke(false)) ?
- FNET_FREE_CHANNEL : FNET_CLOSE_CHANNEL;
-
} else {
- if (!RunInvocation(invoker)) {
- invoker->HandleDone(false);
- return FNET_FREE_CHANNEL;
- }
- return FNET_CLOSE_CHANNEL;
+ return (invoker->Invoke()) ?
+ FNET_FREE_CHANNEL : FNET_CLOSE_CHANNEL;
}
}
@@ -349,17 +325,17 @@ FRT_Supervisor::RPCHooks::InitRPC(FRT_Supervisor *supervisor)
{
FRT_ReflectionBuilder rb(supervisor);
//---------------------------------------------------------------------------
- rb.DefineMethod("frt.rpc.ping", "", "", true,
+ rb.DefineMethod("frt.rpc.ping", "", "",
FRT_METHOD(FRT_Supervisor::RPCHooks::RPC_Ping), this);
rb.MethodDesc("Method that may be used to check if the server is online");
//---------------------------------------------------------------------------
- rb.DefineMethod("frt.rpc.echo", "*", "*", true,
+ rb.DefineMethod("frt.rpc.echo", "*", "*",
FRT_METHOD(FRT_Supervisor::RPCHooks::RPC_Echo), this);
rb.MethodDesc("Echo the parameters as return values");
rb.ParamDesc("params", "Any set of parameters");
rb.ReturnDesc("return", "The parameter values");
//---------------------------------------------------------------------------
- rb.DefineMethod("frt.rpc.getMethodList", "", "SSS", true,
+ rb.DefineMethod("frt.rpc.getMethodList", "", "SSS",
FRT_METHOD(FRT_Supervisor::RPCHooks::RPC_GetMethodList),
this);
rb.MethodDesc("Obtain a list of all available methods");
@@ -367,7 +343,7 @@ FRT_Supervisor::RPCHooks::InitRPC(FRT_Supervisor *supervisor)
rb.ReturnDesc("params", "Method parameter types");
rb.ReturnDesc("return", "Method return types");
//---------------------------------------------------------------------------
- rb.DefineMethod("frt.rpc.getMethodInfo", "s", "sssSSSS", true,
+ rb.DefineMethod("frt.rpc.getMethodInfo", "s", "sssSSSS",
FRT_METHOD(FRT_Supervisor::RPCHooks::RPC_GetMethodInfo),
this);
rb.MethodDesc("Obtain detailed information about a single method");
@@ -448,7 +424,7 @@ FRT_Supervisor::ConnHooks::SetSessionInitHook(FRT_METHOD_PT method,
{
delete _sessionInitHook;
_sessionInitHook = new FRT_Method("frt.hook.sessionInit", "", "",
- true, method, handler);
+ method, handler);
assert(_sessionInitHook != nullptr);
}
@@ -459,7 +435,7 @@ FRT_Supervisor::ConnHooks::SetSessionDownHook(FRT_METHOD_PT method,
{
delete _sessionDownHook;
_sessionDownHook = new FRT_Method("frt.hook.sessionDown", "", "",
- true, method, handler);
+ method, handler);
assert(_sessionDownHook != nullptr);
}
@@ -470,7 +446,7 @@ FRT_Supervisor::ConnHooks::SetSessionFiniHook(FRT_METHOD_PT method,
{
delete _sessionFiniHook;
_sessionFiniHook = new FRT_Method("frt.hook.sessionFini", "", "",
- true, method, handler);
+ method, handler);
assert(_sessionFiniHook != nullptr);
}
diff --git a/fnet/src/vespa/fnet/frt/supervisor.h b/fnet/src/vespa/fnet/frt/supervisor.h
index 051c1caceeb..dc7fb496239 100644
--- a/fnet/src/vespa/fnet/frt/supervisor.h
+++ b/fnet/src/vespa/fnet/frt/supervisor.h
@@ -99,8 +99,6 @@ public:
bool Listen(int port);
uint32_t GetListenPort() const;
- bool RunInvocation(FRT_RPCInvoker *invoker);
-
FRT_Target *GetTarget(const char *spec);
FRT_Target *Get2WayTarget(const char *spec,
FNET_Context connContext = FNET_Context());