summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2018-10-03 23:16:50 +0200
committerGitHub <noreply@github.com>2018-10-03 23:16:50 +0200
commit484d8a3c5a0a4d446d30a2806b0accc348d6e904 (patch)
treeb460512e653206604e4f53c1c1aee03f433d12cd /slobrok
parentd4644d5eb321bbd66870847e01aa2e46046773e0 (diff)
Revert "Arnej/avoid multiple callbacks"
Diffstat (limited to 'slobrok')
-rwxr-xr-xslobrok/src/tests/startsome/startsome.sh12
-rw-r--r--slobrok/src/vespa/slobrok/server/cmd.cpp117
-rw-r--r--slobrok/src/vespa/slobrok/server/cmd.h36
-rw-r--r--slobrok/src/vespa/slobrok/server/exchange_manager.cpp49
-rw-r--r--slobrok/src/vespa/slobrok/server/exchange_manager.h22
-rw-r--r--slobrok/src/vespa/slobrok/server/history.cpp13
-rw-r--r--slobrok/src/vespa/slobrok/server/history.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp8
-rw-r--r--slobrok/src/vespa/slobrok/server/managed_rpc_server.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp4
-rw-r--r--slobrok/src/vespa/slobrok/server/rpc_server_manager.h6
-rw-r--r--slobrok/src/vespa/slobrok/server/rpchooks.cpp4
12 files changed, 127 insertions, 148 deletions
diff --git a/slobrok/src/tests/startsome/startsome.sh b/slobrok/src/tests/startsome/startsome.sh
index ed3d2b29537..35049813206 100755
--- a/slobrok/src/tests/startsome/startsome.sh
+++ b/slobrok/src/tests/startsome/startsome.sh
@@ -32,7 +32,7 @@ ${SLOBROK} -p 18484 &
sleep 1
./slobrok_rpc_info_app \
- tcp/localhost:18481 verbose > rpc-method-list
+ tcp/`hostname`:18481 verbose > rpc-method-list
echo port 18481:
${SBCMD} 18481 slobrok.callback.listNamesServed
@@ -52,13 +52,13 @@ listall
listall
-add=tcp/localhost:18482
+add=tcp/`hostname`:18482
${SBCMD} 18481 slobrok.admin.addPeer $add $add
-add=tcp/localhost:18483
+add=tcp/`hostname`:18483
${SBCMD} 18481 slobrok.admin.addPeer $add $add
-add=tcp/localhost:18484
+add=tcp/`hostname`:18484
${SBCMD} 18481 slobrok.admin.addPeer $add $add
-add=tcp/localhost:18481
+add=tcp/`hostname`:18481
${SBCMD} 18484 slobrok.admin.addPeer $add $add
listall
@@ -67,7 +67,7 @@ listall
listall
-rem=tcp/localhost:18482
+rem=tcp/`hostname`:18482
${SBCMD} 18481 slobrok.admin.removePeer $rem $rem
./slobrok_tstdst_app -s 18482 -p 18490 -n testrpcsrv/19 &
diff --git a/slobrok/src/vespa/slobrok/server/cmd.cpp b/slobrok/src/vespa/slobrok/server/cmd.cpp
index 99e86814852..e728c8f80ad 100644
--- a/slobrok/src/vespa/slobrok/server/cmd.cpp
+++ b/slobrok/src/vespa/slobrok/server/cmd.cpp
@@ -14,63 +14,61 @@ namespace slobrok {
//-----------------------------------------------------------------------------
-struct ScriptData {
- SBEnv &env;
- const std::string name;
- const std::string spec;
- FRT_RPCRequest * const registerRequest;
+struct RegRpcSrvData
+{
+private:
+ RegRpcSrvData(const RegRpcSrvData &);
+ RegRpcSrvData &operator=(const RegRpcSrvData &);
+public:
enum {
RDC_INIT, XCH_WANTADD, CHK_RPCSRV, XCH_DOADD, XCH_IGNORE, RDC_INVAL
} _state;
- ScriptData(SBEnv &e, const std::string &n, const std::string &s, FRT_RPCRequest *r)
- : env(e), name(n), spec(s), registerRequest(r), _state(RDC_INIT)
+ SBEnv &env;
+ const std::string name;
+ const std::string spec;
+ FRT_RPCRequest * const registerRequest;
+
+ RegRpcSrvData(SBEnv &e, const std::string &n, const std::string &s, FRT_RPCRequest *r)
+ : _state(RDC_INIT), env(e), name(n), spec(s), registerRequest(r)
{}
};
-//-----------------------------------------------------------------------------
-
-const std::string &
-ScriptCommand::name() { return _data->name; }
-
-const std::string &
-ScriptCommand::spec() { return _data->spec; }
-
-ScriptCommand::ScriptCommand(std::unique_ptr<ScriptData> data)
- : _data(std::move(data))
+RegRpcSrvCommand::RegRpcSrvCommand(std::unique_ptr<RegRpcSrvData> data)
+ : _data(std::move(data))
{}
-ScriptCommand::ScriptCommand(ScriptCommand &&) = default;
-ScriptCommand&
-ScriptCommand::operator= (ScriptCommand &&) = default;
-ScriptCommand::~ScriptCommand() = default;
+RegRpcSrvCommand::RegRpcSrvCommand(RegRpcSrvCommand &&) = default;
+RegRpcSrvCommand & RegRpcSrvCommand::operator =(RegRpcSrvCommand &&) = default;
+RegRpcSrvCommand::~RegRpcSrvCommand() = default;
-ScriptCommand
-ScriptCommand::makeRegRpcSrvCmd(SBEnv &env,
- const std::string &name, const std::string &spec,
- FRT_RPCRequest *req)
+RegRpcSrvCommand
+RegRpcSrvCommand::makeRegRpcSrvCmd(SBEnv &env,
+ const std::string &name, const std::string &spec,
+ FRT_RPCRequest *req)
{
- return ScriptCommand(std::make_unique<ScriptData>(env, name, spec, req));
+ return RegRpcSrvCommand(std::make_unique<RegRpcSrvData>(env, name, spec, req));
}
-ScriptCommand
-ScriptCommand::makeRemRemCmd(SBEnv &env, const std::string & name, const std::string &spec)
+RegRpcSrvCommand
+RegRpcSrvCommand::makeRemRemCmd(SBEnv &env, const std::string & name, const std::string &spec)
{
- auto data = std::make_unique<ScriptData>(env, name, spec, nullptr);
- data->_state = ScriptData::XCH_IGNORE;
- return ScriptCommand(std::move(data));
+ auto data = std::make_unique<RegRpcSrvData>(env, name, spec, nullptr);
+ data->_state = RegRpcSrvData::XCH_IGNORE;
+ return RegRpcSrvCommand(std::move(data));
}
void
-ScriptCommand::doRequest()
+RegRpcSrvCommand::doRequest()
{
- LOG_ASSERT(_data->_state == ScriptData::RDC_INIT);
+ LOG_ASSERT(_data->_state == RegRpcSrvData::RDC_INIT);
doneHandler(OkState());
}
-void cleanupReservation(ScriptData & data)
+void
+RegRpcSrvCommand::cleanupReservation(RegRpcSrvData & data)
{
RpcServerMap &map = data.env._rpcsrvmap;
const ReservedName *rsvp = map.getReservation(data.name.c_str());
@@ -80,20 +78,13 @@ void cleanupReservation(ScriptData & data)
}
void
-ScriptCommand::doneHandler(OkState result)
+RegRpcSrvCommand::doneHandler(OkState result)
{
- LOG_ASSERT(_data);
- std::unique_ptr<ScriptData> dataUP = std::move(_data);
- LOG_ASSERT(! _data);
- ScriptData & data = *dataUP;
- const char *name_p = data.name.c_str();
- const char *spec_p = data.spec.c_str();
- ExchangeManager &xch = data.env._exchanger;
- RpcServerManager &rsm = data.env._rpcsrvmanager;
-
+ LOG_ASSERT(_data != nullptr);
+ std::unique_ptr<RegRpcSrvData> dataUP = std::move(_data);
+ RegRpcSrvData & data = *dataUP;
if (result.failed()) {
- LOG(warning, "failed [%s->%s] in state %d: %s",
- name_p, spec_p, data._state, result.errorMsg.c_str());
+ LOG(warning, "failed in state %d: %s", data._state, result.errorMsg.c_str());
cleanupReservation(data);
// XXX should handle different state errors differently?
if (data.registerRequest != nullptr) {
@@ -102,30 +93,30 @@ ScriptCommand::doneHandler(OkState result)
} else {
LOG(warning, "ignored: %s", result.errorMsg.c_str());
}
- return;
+ goto alldone;
}
- if (data._state == ScriptData::RDC_INIT) {
- LOG(spam, "phase wantAdd(%s,%s)", name_p, spec_p);
- data._state = ScriptData::XCH_WANTADD;
- xch.wantAdd(std::move(dataUP));
+ if (data._state == RegRpcSrvData::RDC_INIT) {
+ LOG(spam, "phase wantAdd(%s,%s)", data.name.c_str(), data.spec.c_str());
+ data._state = RegRpcSrvData::XCH_WANTADD;
+ data.env._exchanger.wantAdd(data.name.c_str(), data.spec.c_str(), std::move(dataUP));
return;
- } else if (data._state == ScriptData::XCH_WANTADD) {
- LOG(spam, "phase addManaged(%s,%s)", name_p, spec_p);
- data._state = ScriptData::CHK_RPCSRV;
- rsm.addManaged(std::move(dataUP));
+ } else if (data._state == RegRpcSrvData::XCH_WANTADD) {
+ LOG(spam, "phase addManaged(%s,%s)", data.name.c_str(), data.spec.c_str());
+ data._state = RegRpcSrvData::CHK_RPCSRV;
+ data.env._rpcsrvmanager.addManaged(data.name, data.spec.c_str(), std::move(dataUP));
return;
- } else if (data._state == ScriptData::CHK_RPCSRV) {
- LOG(spam, "phase doAdd(%s,%s)", name_p, spec_p);
- data._state = ScriptData::XCH_DOADD;
- xch.doAdd(std::move(dataUP));
+ } else if (data._state == RegRpcSrvData::CHK_RPCSRV) {
+ LOG(spam, "phase doAdd(%s,%s)", data.name.c_str(), data.spec.c_str());
+ data._state = RegRpcSrvData::XCH_DOADD;
+ data.env._exchanger.doAdd(data.name.c_str(), data.spec.c_str(), std::move(dataUP));
return;
- } else if (data._state == ScriptData::XCH_DOADD) {
- LOG(debug, "done doAdd(%s,%s)", name_p, spec_p);
- data._state = ScriptData::RDC_INVAL;
+ } else if (data._state == RegRpcSrvData::XCH_DOADD) {
+ LOG(debug, "done doAdd(%s,%s)", data.name.c_str(), data.spec.c_str());
+ data._state = RegRpcSrvData::RDC_INVAL;
// all OK
data.registerRequest->Return();
goto alldone;
- } else if (data._state == ScriptData::XCH_IGNORE) {
+ } else if (data._state == RegRpcSrvData::XCH_IGNORE) {
goto alldone;
}
// no other state should be possible
diff --git a/slobrok/src/vespa/slobrok/server/cmd.h b/slobrok/src/vespa/slobrok/server/cmd.h
index 02ae16e457b..07b3d3ee0ba 100644
--- a/slobrok/src/vespa/slobrok/server/cmd.h
+++ b/slobrok/src/vespa/slobrok/server/cmd.h
@@ -9,26 +9,34 @@ class FRT_RPCRequest;
namespace slobrok {
class SBEnv;
-struct ScriptData;
-class ScriptCommand
+struct RegRpcSrvData;
+
+/**
+ * @class RegRpcSrvCommand
+ * @brief Small "script" to handle the various stages of a registration
+ *
+ * XXX should change name, also used for other tasks
+ **/
+class RegRpcSrvCommand
{
private:
- std::unique_ptr<ScriptData> _data;
- ScriptCommand(std::unique_ptr<ScriptData> data);
+ std::unique_ptr<RegRpcSrvData> _data;
+ static void cleanupReservation(RegRpcSrvData &);
+ RegRpcSrvCommand(std::unique_ptr<RegRpcSrvData> data);
public:
- const std::string &name();
- const std::string &spec();
-
- ScriptCommand(ScriptCommand &&);
- ScriptCommand& operator= (ScriptCommand &&);
- ~ScriptCommand();
+ virtual void doneHandler(OkState result);
+ void doRequest();
- static ScriptCommand makeRegRpcSrvCmd(SBEnv &env, const std::string &name, const std::string &spec, FRT_RPCRequest *req);
- static ScriptCommand makeRemRemCmd(SBEnv &env, const std::string &name, const std::string &spec);
+ RegRpcSrvCommand(RegRpcSrvCommand &&);
+ RegRpcSrvCommand & operator=(RegRpcSrvCommand &&);
+ virtual ~RegRpcSrvCommand();
- void doneHandler(OkState result);
- void doRequest();
+ static RegRpcSrvCommand makeRegRpcSrvCmd(SBEnv &env, const std::string &name, const std::string &spec, FRT_RPCRequest *req);
+ static RegRpcSrvCommand makeRemRemCmd(SBEnv &env, const std::string &name, const std::string &spec);
};
+//-----------------------------------------------------------------------------
+
} // namespace slobrok
+
diff --git a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
index e941889ffa3..e74724803e8 100644
--- a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
+++ b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
@@ -69,8 +69,8 @@ ExchangeManager::getPartnerList()
void
ExchangeManager::forwardRemove(const std::string & name, const std::string & spec)
{
- WorkPackage *package = new WorkPackage(WorkPackage::OP_REMOVE, *this,
- ScriptCommand::makeRemRemCmd(_env, name, spec));
+ WorkPackage *package = new WorkPackage(WorkPackage::OP_REMOVE, name, spec, *this,
+ RegRpcSrvCommand::makeRemRemCmd(_env, name, spec));
for (const auto & entry : _partners) {
package->addItem(entry.second.get());
}
@@ -78,9 +78,9 @@ ExchangeManager::forwardRemove(const std::string & name, const std::string & spe
}
void
-ExchangeManager::doAdd(ScriptCommand rdc)
+ExchangeManager::doAdd(const std::string &name, const std::string &spec, RegRpcSrvCommand rdc)
{
- WorkPackage *package = new WorkPackage(WorkPackage::OP_DOADD, *this, std::move(rdc));
+ WorkPackage *package = new WorkPackage(WorkPackage::OP_DOADD, name, spec, *this, std::move(rdc));
for (const auto & entry : _partners) {
package->addItem(entry.second.get());
@@ -90,9 +90,9 @@ ExchangeManager::doAdd(ScriptCommand rdc)
void
-ExchangeManager::wantAdd(ScriptCommand rdc)
+ExchangeManager::wantAdd(const std::string &name, const std::string &spec, RegRpcSrvCommand rdc)
{
- WorkPackage *package = new WorkPackage(WorkPackage::OP_WANTADD, *this, std::move(rdc));
+ WorkPackage *package = new WorkPackage(WorkPackage::OP_WANTADD, name, spec, *this, std::move(rdc));
for (const auto & entry : _partners) {
package->addItem(entry.second.get());
}
@@ -120,22 +120,15 @@ ExchangeManager::healthCheck()
ExchangeManager::WorkPackage::WorkItem::WorkItem(WorkPackage &pkg,
RemoteSlobrok *rem,
FRT_RPCRequest *req)
- : FNET_Task(pkg._exchanger._env.getScheduler()), _pkg(pkg), _pendingReq(req), _remslob(rem)
+ : _pkg(pkg), _pendingReq(req), _remslob(rem)
{
}
void
ExchangeManager::WorkPackage::WorkItem::RequestDone(FRT_RPCRequest *req)
{
- LOG_ASSERT(req == _pendingReq);
- ScheduleNow();
-}
-
-void
-ExchangeManager::WorkPackage::WorkItem::PerformTask()
-{
bool denied = false;
- FRT_RPCRequest *req = _pendingReq;
+ LOG_ASSERT(req == _pendingReq);
FRT_Values &answer = *(req->GetReturn());
if (!req->IsError() && strcmp(answer.GetTypeString(), "is") == 0) {
@@ -169,15 +162,16 @@ ExchangeManager::WorkPackage::WorkItem::~WorkItem()
}
-ExchangeManager::WorkPackage::WorkPackage(op_type op,
- ExchangeManager &exchanger,
- ScriptCommand script)
+ExchangeManager::WorkPackage::WorkPackage(op_type op, const std::string & name, const std::string & spec,
+ ExchangeManager &exchanger, RegRpcSrvCommand donehandler)
: _work(),
_doneCnt(0),
_numDenied(0),
- _script(std::move(script)),
+ _donehandler(std::move(donehandler)),
_exchanger(exchanger),
- _optype(op)
+ _optype(op),
+ _name(name),
+ _spec(spec)
{
}
@@ -194,9 +188,9 @@ ExchangeManager::WorkPackage::doneItem(bool denied)
(int)_doneCnt, (int)_work.size(), (int)_numDenied);
if (_doneCnt == _work.size()) {
if (_numDenied > 0) {
- _script.doneHandler(OkState(_numDenied, "denied by remote"));
+ _donehandler.doneHandler(OkState(_numDenied, "denied by remote"));
} else {
- _script.doneHandler(OkState());
+ _donehandler.doneHandler(OkState());
}
delete this;
}
@@ -209,9 +203,6 @@ ExchangeManager::WorkPackage::addItem(RemoteSlobrok *partner)
if (! partner->isConnected()) {
return;
}
- const char *name_p = _script.name().c_str();
- const char *spec_p = _script.spec().c_str();
-
FRT_RPCRequest *r = _exchanger._env.getSupervisor()->AllocRPCRequest();
// XXX should recheck rpcsrvmap again
if (_optype == OP_REMOVE) {
@@ -222,13 +213,13 @@ ExchangeManager::WorkPackage::addItem(RemoteSlobrok *partner)
r->SetMethodName("slobrok.internal.doAdd");
}
r->GetParams()->AddString(_exchanger._env.mySpec().c_str());
- r->GetParams()->AddString(name_p);
- r->GetParams()->AddString(spec_p);
+ r->GetParams()->AddString(_name.c_str());
+ r->GetParams()->AddString(_spec.c_str());
_work.push_back(std::make_unique<WorkItem>(*this, partner, r));
LOG(spam, "added %s(%s,%s,%s) for %s to workpackage",
r->GetMethodName(), _exchanger._env.mySpec().c_str(),
- name_p, spec_p, partner->getName().c_str());
+ _name.c_str(), _spec.c_str(), partner->getName().c_str());
}
@@ -238,7 +229,7 @@ ExchangeManager::WorkPackage::expedite()
size_t sz = _work.size();
if (sz == 0) {
// no remotes need doing.
- _script.doneHandler(OkState());
+ _donehandler.doneHandler(OkState());
delete this;
return;
}
diff --git a/slobrok/src/vespa/slobrok/server/exchange_manager.h b/slobrok/src/vespa/slobrok/server/exchange_manager.h
index 85f5996e3d2..ea335cbb3c0 100644
--- a/slobrok/src/vespa/slobrok/server/exchange_manager.h
+++ b/slobrok/src/vespa/slobrok/server/exchange_manager.h
@@ -44,7 +44,7 @@ private:
class WorkPackage
{
private:
- class WorkItem: public FRT_IRequestWait, public FNET_Task
+ class WorkItem: public FRT_IRequestWait
{
private:
WorkPackage &_pkg;
@@ -53,28 +53,28 @@ private:
public:
void expedite();
void RequestDone(FRT_RPCRequest *req) override;
- void PerformTask() override;
WorkItem(WorkPackage &pkg, RemoteSlobrok *rem, FRT_RPCRequest *req);
WorkItem(const WorkItem&) = delete;
WorkItem& operator= (const WorkItem&) = delete;
~WorkItem();
};
std::vector<std::unique_ptr<WorkItem>> _work;
- size_t _doneCnt;
- size_t _numDenied;
- ScriptCommand _script;
+ size_t _doneCnt;
+ size_t _numDenied;
+ RegRpcSrvCommand _donehandler;
public:
- ExchangeManager &_exchanger;
+ ExchangeManager &_exchanger;
enum op_type { OP_NOP, OP_WANTADD, OP_DOADD, OP_REMOVE };
op_type _optype;
+ const std::string _name;
+ const std::string _spec;
void addItem(RemoteSlobrok *partner);
void doneItem(bool denied);
void expedite();
WorkPackage(const WorkPackage&) = delete;
WorkPackage& operator= (const WorkPackage&) = delete;
- WorkPackage(op_type op,
- ExchangeManager &exchanger,
- ScriptCommand donehandler);
+ WorkPackage(op_type op, const std::string & name, const std::string & spec,
+ ExchangeManager &exchanger, RegRpcSrvCommand donehandler);
~WorkPackage();
};
@@ -94,8 +94,8 @@ public:
void forwardRemove(const std::string & name, const std::string & spec);
- void wantAdd(ScriptCommand rdc);
- void doAdd(ScriptCommand rdc);
+ void wantAdd(const std::string & name, const std::string & spec, RegRpcSrvCommand rdc);
+ void doAdd(const std::string & name, const std::string & spec, RegRpcSrvCommand rdc);
RemoteSlobrok *lookupPartner(const std::string & name) const;
void healthCheck();
diff --git a/slobrok/src/vespa/slobrok/server/history.cpp b/slobrok/src/vespa/slobrok/server/history.cpp
index 059f0ff4b89..f23b0cbb757 100644
--- a/slobrok/src/vespa/slobrok/server/history.cpp
+++ b/slobrok/src/vespa/slobrok/server/history.cpp
@@ -11,10 +11,10 @@ void
History::verify() const
{
if (_entries.size() > 0) {
- citer_t i = _entries.cbegin();
+ citer_t i = _entries.begin();
vespalib::GenCnt gen = i->gen;
- while (++i != _entries.cend()) {
+ while (++i != _entries.end()) {
gen.add();
LOG_ASSERT(gen == i->gen);
}
@@ -24,7 +24,10 @@ History::verify() const
void
History::add(const std::string &name, vespalib::GenCnt gen)
{
- _entries.emplace_back(name, gen);
+ HistoryEntry h;
+ _entries.push_back(h);
+ _entries.back().name = name;
+ _entries.back().gen = gen;
if (_entries.size() > 1500) {
_entries.erase(_entries.begin(), _entries.begin() + 500);
@@ -51,8 +54,8 @@ History::has(vespalib::GenCnt gen) const
std::set<std::string>
History::since(vespalib::GenCnt gen) const
{
- citer_t i = _entries.cbegin();
- citer_t end = _entries.cend();
+ citer_t i = _entries.begin();
+ citer_t end = _entries.end();
while (i != end) {
if (i->gen == gen) break;
++i;
diff --git a/slobrok/src/vespa/slobrok/server/history.h b/slobrok/src/vespa/slobrok/server/history.h
index d88b1348c6d..ca90c927dc0 100644
--- a/slobrok/src/vespa/slobrok/server/history.h
+++ b/slobrok/src/vespa/slobrok/server/history.h
@@ -14,8 +14,6 @@ private:
struct HistoryEntry {
std::string name;
vespalib::GenCnt gen;
- HistoryEntry(const std::string &n, vespalib::GenCnt g)
- : name(n), gen(g) {}
};
std::vector<HistoryEntry> _entries;
diff --git a/slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp b/slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp
index b9e8b8d032d..065dac04304 100644
--- a/slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp
+++ b/slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp
@@ -16,7 +16,6 @@ ManagedRpcServer::ManagedRpcServer(const std::string & name,
const std::string & spec,
IRpcServerManager &manager)
: NamedService(name, spec),
- FNET_Task(manager.getSupervisor()->GetScheduler()),
_mmanager(manager),
_monitor(*this, *manager.getSupervisor()),
_monitoredServer(nullptr),
@@ -88,13 +87,6 @@ void
ManagedRpcServer::RequestDone(FRT_RPCRequest *req)
{
LOG_ASSERT(req == _checkServerReq);
- ScheduleNow();
-}
-
-void
-ManagedRpcServer::PerformTask()
-{
- FRT_RPCRequest *req = _checkServerReq;
FRT_Values &answer = *(req->GetReturn());
if (req->GetErrorCode() == FRTE_RPC_ABORT) {
diff --git a/slobrok/src/vespa/slobrok/server/managed_rpc_server.h b/slobrok/src/vespa/slobrok/server/managed_rpc_server.h
index 6c978d03299..072aebd7850 100644
--- a/slobrok/src/vespa/slobrok/server/managed_rpc_server.h
+++ b/slobrok/src/vespa/slobrok/server/managed_rpc_server.h
@@ -23,7 +23,6 @@ class IRpcServerManager;
class ManagedRpcServer: public NamedService,
public FRT_IRequestWait,
- public FNET_Task,
public IMonitoredServer
{
public:
@@ -45,7 +44,6 @@ private:
FRT_StringValue *strings);
public:
void RequestDone(FRT_RPCRequest *req) override;
- void PerformTask() override;
void notifyDisconnected() override; // lost connection to service
};
diff --git a/slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp b/slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp
index e3d7800f236..e63efd8089a 100644
--- a/slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp
+++ b/slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp
@@ -239,10 +239,8 @@ RpcServerManager::removeLocal(const std::string & name, const std::string &spec)
void
-RpcServerManager::addManaged(ScriptCommand rdc)
+RpcServerManager::addManaged(const std::string &name, const std::string &spec, RegRpcSrvCommand rdc)
{
- const std::string &name = rdc.name();
- const std::string &spec = rdc.spec();
auto newRpcServer = std::make_unique<ManagedRpcServer>(name, spec, *this);
ManagedRpcServer & rpcsrv = *newRpcServer;
_rpcsrvmap.addNew(std::move(newRpcServer));
diff --git a/slobrok/src/vespa/slobrok/server/rpc_server_manager.h b/slobrok/src/vespa/slobrok/server/rpc_server_manager.h
index 174afc1adcc..70ca10e480d 100644
--- a/slobrok/src/vespa/slobrok/server/rpc_server_manager.h
+++ b/slobrok/src/vespa/slobrok/server/rpc_server_manager.h
@@ -38,8 +38,8 @@ private:
struct MRSandRRSC {
ManagedRpcServer *rpcsrv;
- ScriptCommand handler;
- MRSandRRSC(ManagedRpcServer *d, ScriptCommand h)
+ RegRpcSrvCommand handler;
+ MRSandRRSC(ManagedRpcServer *d, RegRpcSrvCommand h)
: rpcsrv(d), handler(std::move(h)) {}
};
std::vector<MRSandRRSC> _addManageds;
@@ -55,7 +55,7 @@ public:
OkState addMyReservation(const std::string & name, const std::string & spec);
bool alreadyManaged(const std::string & name, const std::string & spec);
- void addManaged(ScriptCommand rdc);
+ void addManaged(const std::string & name, const std::string & spec, RegRpcSrvCommand rdc);
OkState remove(ManagedRpcServer *rpcsrv);
diff --git a/slobrok/src/vespa/slobrok/server/rpchooks.cpp b/slobrok/src/vespa/slobrok/server/rpchooks.cpp
index ff1ce514084..460b060cb82 100644
--- a/slobrok/src/vespa/slobrok/server/rpchooks.cpp
+++ b/slobrok/src/vespa/slobrok/server/rpchooks.cpp
@@ -269,8 +269,8 @@ RPCHooks::rpc_registerRpcServer(FRT_RPCRequest *req)
}
// need to actually setup management and decide result later
req->Detach();
- ScriptCommand completer
- = ScriptCommand::makeRegRpcSrvCmd(_env, dName, dSpec, req);
+ RegRpcSrvCommand completer
+ = RegRpcSrvCommand::makeRegRpcSrvCmd(_env, dName, dSpec, req);
completer.doRequest();
}