summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fnet/src/examples/frt/rpc/rpc_proxy.cpp17
-rw-r--r--fnet/src/tests/frt/rpc/invoke.cpp4
-rw-r--r--fnet/src/tests/printstuff/printstuff_test.cpp12
-rw-r--r--fnet/src/vespa/fnet/frt/packets.cpp6
-rw-r--r--fnet/src/vespa/fnet/frt/rpcrequest.cpp11
-rw-r--r--fnet/src/vespa/fnet/frt/supervisor.cpp6
-rw-r--r--fnet/src/vespa/fnet/frt/values.cpp12
-rw-r--r--slobrok/src/vespa/slobrok/server/rpchooks.cpp8
8 files changed, 34 insertions, 42 deletions
diff --git a/fnet/src/examples/frt/rpc/rpc_proxy.cpp b/fnet/src/examples/frt/rpc/rpc_proxy.cpp
index 9f6ae37ab2d..0be2c2131eb 100644
--- a/fnet/src/examples/frt/rpc/rpc_proxy.cpp
+++ b/fnet/src/examples/frt/rpc/rpc_proxy.cpp
@@ -142,20 +142,13 @@ RPCProxy::HOOK_Mismatch(FRT_RPCRequest *req)
}
req->Detach();
req->SetError(FRTE_NO_ERROR, "");
- if (req->GetConnection()->IsServer() &&
- GetSession(req)->server != NULL)
+ if (req->GetConnection()->IsServer() && GetSession(req)->server != NULL)
{
- GetSession(req)->server->InvokeAsync(req, 60.0,
- new (req->getStash())
- ReqDone(*this));
- } else if (req->GetConnection()->IsClient() &&
- GetSession(req)->client != NULL)
+ GetSession(req)->server->InvokeAsync(req, 60.0, &req->getStash()->create<ReqDone>(*this));
+ } else if (req->GetConnection()->IsClient() && GetSession(req)->client != NULL)
{
- FRT_Supervisor::InvokeAsync(GetSession(req)->client->Owner(),
- GetSession(req)->client,
- req, 60.0,
- new (req->getStash())
- ReqDone(*this));
+ FRT_Supervisor::InvokeAsync(GetSession(req)->client->Owner(), GetSession(req)->client,
+ req, 60.0, &req->getStash()->create<ReqDone>(*this));
} else {
req->SetError(FRTE_RPC_CONNECTION);
req->Return();
diff --git a/fnet/src/tests/frt/rpc/invoke.cpp b/fnet/src/tests/frt/rpc/invoke.cpp
index 12f1383fbc0..2abe1b9a5de 100644
--- a/fnet/src/tests/frt/rpc/invoke.cpp
+++ b/fnet/src/tests/frt/rpc/invoke.cpp
@@ -261,9 +261,7 @@ public:
if (delay == 0) {
req->Return();
} else {
- new (req->getStash()) DelayedReturn(_scheduler,
- req,
- ((double)delay) / 1000.0);
+ req->getStash()->create<DelayedReturn>(_scheduler, req, ((double)delay) / 1000.0);
}
} else {
diff --git a/fnet/src/tests/printstuff/printstuff_test.cpp b/fnet/src/tests/printstuff/printstuff_test.cpp
index d39cee5a44b..09e4d34daab 100644
--- a/fnet/src/tests/printstuff/printstuff_test.cpp
+++ b/fnet/src/tests/printstuff/printstuff_test.cpp
@@ -24,14 +24,14 @@ TEST("rpc packets in a queue") {
{
req->SetMethodName("foo");
FNET_PacketQueue_NoLock q1(1, FNET_IPacketHandler::FNET_KEEP_CHANNEL);
- q1.QueuePacket_NoLock(new (req->getStash()) FRT_RPCRequestPacket(req, 0, false), FNET_Context());
- q1.QueuePacket_NoLock(new (req->getStash()) FRT_RPCReplyPacket(req, 0, false), FNET_Context());
- q1.QueuePacket_NoLock(new (req->getStash()) FRT_RPCErrorPacket(req, 0, false), FNET_Context());
+ q1.QueuePacket_NoLock(&req->getStash()->create<FRT_RPCRequestPacket>(req, 0, false), FNET_Context());
+ q1.QueuePacket_NoLock(&req->getStash()->create<FRT_RPCRequestPacket>(req, 0, false), FNET_Context());
+ q1.QueuePacket_NoLock(&req->getStash()->create<FRT_RPCRequestPacket>(req, 0, false), FNET_Context());
q1.Print();
FNET_PacketQueue q2(2, FNET_IPacketHandler::FNET_KEEP_CHANNEL);
- q2.QueuePacket(new (req->getStash()) FRT_RPCRequestPacket(req, 0, false), FNET_Context());
- q2.QueuePacket(new (req->getStash()) FRT_RPCReplyPacket(req, 0, false), FNET_Context());
- q2.QueuePacket(new (req->getStash()) FRT_RPCErrorPacket(req, 0, false), FNET_Context());
+ q2.QueuePacket(&req->getStash()->create<FRT_RPCRequestPacket>(req, 0, false), FNET_Context());
+ q2.QueuePacket(&req->getStash()->create<FRT_RPCRequestPacket>(req, 0, false), FNET_Context());
+ q2.QueuePacket(&req->getStash()->create<FRT_RPCRequestPacket>(req, 0, false), FNET_Context());
q2.Print();
}
req->SubRef();
diff --git a/fnet/src/vespa/fnet/frt/packets.cpp b/fnet/src/vespa/fnet/frt/packets.cpp
index 93f2030669d..cb0a3f65224 100644
--- a/fnet/src/vespa/fnet/frt/packets.cpp
+++ b/fnet/src/vespa/fnet/frt/packets.cpp
@@ -259,13 +259,13 @@ FRT_PacketFactory::CreatePacket(uint32_t pcode, FNET_Context context)
switch(pcode) {
case PCODE_FRT_RPC_REQUEST:
- return new (tub) FRT_RPCRequestPacket(req, flags, false);
+ return &tub->create<FRT_RPCRequestPacket>(req, flags, false);
case PCODE_FRT_RPC_REPLY:
- return new (tub) FRT_RPCReplyPacket(req, flags, false);
+ return &tub->create<FRT_RPCReplyPacket>(req, flags, false);
case PCODE_FRT_RPC_ERROR:
- return new (tub) FRT_RPCErrorPacket(req, flags, false);
+ return &tub->create<FRT_RPCErrorPacket>(req, flags, false);
}
return NULL;
}
diff --git a/fnet/src/vespa/fnet/frt/rpcrequest.cpp b/fnet/src/vespa/fnet/frt/rpcrequest.cpp
index 84a8fb48602..55ed2ccd01b 100644
--- a/fnet/src/vespa/fnet/frt/rpcrequest.cpp
+++ b/fnet/src/vespa/fnet/frt/rpcrequest.cpp
@@ -166,7 +166,7 @@ FRT_RPCRequest::CreateRequestPacket(bool wantReply)
else
flags |= FLAG_FRT_RPC_NOREPLY;
- return new (&_tub) FRT_RPCRequestPacket(this, flags, true);
+ return &_tub.create<FRT_RPCRequestPacket>(this, flags, true);
}
@@ -177,8 +177,9 @@ FRT_RPCRequest::CreateReplyPacket()
if (FNET_Info::GetEndian() == FNET_Info::ENDIAN_LITTLE)
flags |= FLAG_FRT_RPC_LITTLE_ENDIAN;
- if (IsError())
- return new (&_tub) FRT_RPCErrorPacket(this, flags, true);
- else
- return new (&_tub) FRT_RPCReplyPacket(this, flags, true);
+ if (IsError()) {
+ return &_tub.create<FRT_RPCErrorPacket>(this, flags, true);
+ } else {
+ return &_tub.create<FRT_RPCReplyPacket>(this, flags, true);
+ }
}
diff --git a/fnet/src/vespa/fnet/frt/supervisor.cpp b/fnet/src/vespa/fnet/frt/supervisor.cpp
index 9add08fe1d9..68775da44c6 100644
--- a/fnet/src/vespa/fnet/frt/supervisor.cpp
+++ b/fnet/src/vespa/fnet/frt/supervisor.cpp
@@ -206,7 +206,7 @@ FRT_Supervisor::InvokeAsync(SchedulerPtr scheduler,
{
uint32_t chid;
FNET_Packet *packet = req->CreateRequestPacket(true);
- FRT_RPCAdapter *adapter = new (req->getStash()) FRT_RPCAdapter(scheduler.ptr, req, waiter);
+ FRT_RPCAdapter *adapter = &req->getStash()->create<FRT_RPCAdapter>(scheduler.ptr, req, waiter);
FNET_Channel *ch = (conn == nullptr)? nullptr : conn->OpenChannel(adapter, FNET_Context((void *)req), &chid);
adapter->SetChannel(ch);
@@ -274,7 +274,7 @@ FRT_Supervisor::HandlePacket(FNET_Packet *packet, FNET_Context context)
} else {
req->SetError(FRTE_RPC_BAD_REQUEST);
}
- invoker = new (req->getStash()) FRT_RPCInvoker(this, req, noReply);
+ invoker = &req->getStash()->create<FRT_RPCInvoker>(this, req, noReply);
packet->Free();
if (req->IsError()) {
@@ -480,7 +480,7 @@ FRT_Supervisor::ConnHooks::InvokeHook(FRT_Method *hook,
{
FRT_RPCRequest *req = _parent.AllocRPCRequest();
req->SetMethodName(hook->GetName());
- (new (req->getStash()) FRT_HookInvoker(req, hook, conn))->Invoke();
+ req->getStash()->create<FRT_HookInvoker>(req, hook, conn).Invoke();
}
diff --git a/fnet/src/vespa/fnet/frt/values.cpp b/fnet/src/vespa/fnet/frt/values.cpp
index bb3ecd4db2d..bfbe8c2963e 100644
--- a/fnet/src/vespa/fnet/frt/values.cpp
+++ b/fnet/src/vespa/fnet/frt/values.cpp
@@ -241,7 +241,7 @@ FRT_Values::AddStringArray(uint32_t len) {
void
FRT_Values::AddSharedData(FRT_ISharedBlob *blob) {
EnsureFree();
- _blobs = new (_tub) BlobRef(NULL, _numValues, blob, _blobs);
+ _blobs = &_tub->create<BlobRef>(nullptr, _numValues, blob, _blobs);
_values[_numValues]._data._buf = const_cast<char *>(blob->getData());
_values[_numValues]._data._len = blob->getLen();
_typeString[_numValues++] = FRT_VALUE_DATA;
@@ -249,13 +249,13 @@ FRT_Values::AddSharedData(FRT_ISharedBlob *blob) {
void
FRT_Values::AddData(vespalib::alloc::Alloc buf, uint32_t len) {
- AddSharedData(new (_tub) LocalBlob(std::move(buf), len));
+ AddSharedData(&_tub->create<LocalBlob>(std::move(buf), len));
}
void
FRT_Values::AddData(const char *buf, uint32_t len) {
if (len > SHARED_LIMIT) {
- return AddSharedData(new (_tub) LocalBlob(buf, len));
+ return AddSharedData(&_tub->create<LocalBlob>(buf, len));
}
EnsureFree();
_values[_numValues]._data._buf = fnet::copyData(_tub->alloc(len), buf, len);
@@ -266,7 +266,7 @@ FRT_Values::AddData(const char *buf, uint32_t len) {
char *
FRT_Values::AddData(uint32_t len) {
if (len > SHARED_LIMIT) {
- LocalBlob *blob = new (_tub) LocalBlob(NULL, len);
+ LocalBlob *blob = &_tub->create<LocalBlob>(nullptr, len);
AddSharedData(blob);
return blob->getInternalData();
}
@@ -303,8 +303,8 @@ void
FRT_Values::SetData(FRT_DataValue *value, const char *buf, uint32_t len) {
char *mybuf = NULL;
if (len > SHARED_LIMIT) {
- LocalBlob *blob = new (_tub) LocalBlob(buf, len);
- _blobs = new (_tub) BlobRef(value, 0, blob, _blobs);
+ LocalBlob *blob = &_tub->create<LocalBlob>(buf, len);
+ _blobs = &_tub->create<BlobRef>(value, 0, blob, _blobs);
mybuf = blob->getInternalData();
} else {
mybuf = fnet::copyData(_tub->alloc(len), buf, len);
diff --git a/slobrok/src/vespa/slobrok/server/rpchooks.cpp b/slobrok/src/vespa/slobrok/server/rpchooks.cpp
index a008e495df2..2274230b42d 100644
--- a/slobrok/src/vespa/slobrok/server/rpchooks.cpp
+++ b/slobrok/src/vespa/slobrok/server/rpchooks.cpp
@@ -522,8 +522,8 @@ RPCHooks::rpc_mirrorFetch(FRT_RPCRequest *req)
vespalib::GenCnt gencnt(args[0]._intval32);
uint32_t msTimeout = args[1]._intval32;
- (new (req->getStash())
- MirrorFetch(_env.getSupervisor(), req, _rpcsrvmap.visibleMap(), gencnt))->invoke(msTimeout);
+ req->getStash()->create<MirrorFetch>(_env.getSupervisor(), req,
+ _rpcsrvmap.visibleMap(), gencnt).invoke(msTimeout);
}
void
@@ -535,8 +535,8 @@ RPCHooks::rpc_incrementalFetch(FRT_RPCRequest *req)
vespalib::GenCnt gencnt(args[0]._intval32);
uint32_t msTimeout = args[1]._intval32;
- (new (req->getStash())
- IncrementalFetch(_env.getSupervisor(), req, _rpcsrvmap.visibleMap(), gencnt))->invoke(msTimeout);
+ req->getStash()->create<IncrementalFetch>(_env.getSupervisor(), req,
+ _rpcsrvmap.visibleMap(), gencnt).invoke(msTimeout);
}