diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-10-08 10:55:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-08 10:55:39 +0200 |
commit | ec51bd5fa0b87deefd9ecceefc7b168c71b58184 (patch) | |
tree | 41f1e9ae07e5e68284d186a7f3b4eba44ddbaf0b /slobrok | |
parent | 7d82433df26ad99401e8f5284d79985bd1a21a76 (diff) |
Revert "Arnej/avoid multiple callbacks 2"
Diffstat (limited to 'slobrok')
-rwxr-xr-x | slobrok/src/tests/startsome/startsome.sh | 12 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/cmd.cpp | 117 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/cmd.h | 36 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/exchange_manager.cpp | 57 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/exchange_manager.h | 22 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/history.cpp | 13 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/history.h | 2 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/managed_rpc_server.cpp | 13 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/managed_rpc_server.h | 2 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/rpc_server_manager.cpp | 4 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/rpc_server_manager.h | 6 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/rpchooks.cpp | 4 |
12 files changed, 130 insertions, 158 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 eb5f1a1f148..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,29 +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); - if (req->GetErrorCode() == FRTE_RPC_ABORT) { - LOG(debug, "WorkItem aborted"); - req->SubRef(); - _pendingReq = nullptr; - } else { - 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) { @@ -171,21 +157,21 @@ ExchangeManager::WorkPackage::WorkItem::~WorkItem() { if (_pendingReq != nullptr) { _pendingReq->Abort(); - // _pendingReq cleared by RequestDone Method LOG_ASSERT(_pendingReq == nullptr); } } -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) { } @@ -202,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; } @@ -217,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) { @@ -230,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()); } @@ -246,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 79ed475ae8e..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,20 +87,14 @@ void ManagedRpcServer::RequestDone(FRT_RPCRequest *req) { LOG_ASSERT(req == _checkServerReq); + FRT_Values &answer = *(req->GetReturn()); + if (req->GetErrorCode() == FRTE_RPC_ABORT) { LOG(debug, "rpcserver[%s].check aborted", getName().c_str()); req->SubRef(); _checkServerReq = nullptr; - } else { - ScheduleNow(); + return; } -} - -void -ManagedRpcServer::PerformTask() -{ - FRT_RPCRequest *req = _checkServerReq; - FRT_Values &answer = *(req->GetReturn()); if (req->IsError() || strcmp(answer.GetTypeString(), "S") != 0 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(); } |