summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-10-03 19:22:14 +0000
committerArne Juul <arnej@yahoo-inc.com>2018-10-03 19:22:14 +0000
commitd9049b95a7c23c9404eb38bbfa02c1a72986d6eb (patch)
tree8363ee5f79b6ecfa1e725ed2479a3b6136bd6d69 /slobrok
parent936e4ebdef80ee00d541a8700ddc2d19ff2486e8 (diff)
reduce data multiplication
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/vespa/slobrok/server/exchange_manager.cpp21
-rw-r--r--slobrok/src/vespa/slobrok/server/exchange_manager.h4
2 files changed, 12 insertions, 13 deletions
diff --git a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
index 9b2f0fd5a72..e941889ffa3 100644
--- a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
+++ b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
@@ -175,11 +175,9 @@ ExchangeManager::WorkPackage::WorkPackage(op_type op,
: _work(),
_doneCnt(0),
_numDenied(0),
- _donehandler(std::move(script)),
+ _script(std::move(script)),
_exchanger(exchanger),
- _optype(op),
- _name(_donehandler.name()),
- _spec(_donehandler.spec())
+ _optype(op)
{
}
@@ -196,9 +194,9 @@ ExchangeManager::WorkPackage::doneItem(bool denied)
(int)_doneCnt, (int)_work.size(), (int)_numDenied);
if (_doneCnt == _work.size()) {
if (_numDenied > 0) {
- _donehandler.doneHandler(OkState(_numDenied, "denied by remote"));
+ _script.doneHandler(OkState(_numDenied, "denied by remote"));
} else {
- _donehandler.doneHandler(OkState());
+ _script.doneHandler(OkState());
}
delete this;
}
@@ -211,6 +209,9 @@ 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) {
@@ -221,13 +222,13 @@ ExchangeManager::WorkPackage::addItem(RemoteSlobrok *partner)
r->SetMethodName("slobrok.internal.doAdd");
}
r->GetParams()->AddString(_exchanger._env.mySpec().c_str());
- r->GetParams()->AddString(_name.c_str());
- r->GetParams()->AddString(_spec.c_str());
+ r->GetParams()->AddString(name_p);
+ r->GetParams()->AddString(spec_p);
_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.c_str(), _spec.c_str(), partner->getName().c_str());
+ name_p, spec_p, partner->getName().c_str());
}
@@ -237,7 +238,7 @@ ExchangeManager::WorkPackage::expedite()
size_t sz = _work.size();
if (sz == 0) {
// no remotes need doing.
- _donehandler.doneHandler(OkState());
+ _script.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 f86807a6f68..85f5996e3d2 100644
--- a/slobrok/src/vespa/slobrok/server/exchange_manager.h
+++ b/slobrok/src/vespa/slobrok/server/exchange_manager.h
@@ -62,13 +62,11 @@ private:
std::vector<std::unique_ptr<WorkItem>> _work;
size_t _doneCnt;
size_t _numDenied;
- ScriptCommand _donehandler;
+ ScriptCommand _script;
public:
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();