more message building size hints
This commit is contained in:
parent
83a4d4dc9e
commit
f28b7de494
2 changed files with 21 additions and 7 deletions
|
@ -403,7 +403,9 @@ final class RpcState {
|
||||||
ClientHook restore() {
|
ClientHook restore() {
|
||||||
var question = questions.next();
|
var question = questions.next();
|
||||||
question.setAwaitingReturn(true);
|
question.setAwaitingReturn(true);
|
||||||
var message = connection.newOutgoingMessage(64);
|
int sizeHint = messageSizeHint()
|
||||||
|
+ RpcProtocol.Bootstrap.factory.structSize().total();
|
||||||
|
var message = connection.newOutgoingMessage(sizeHint);
|
||||||
var builder = message.getBody().initAs(RpcProtocol.Message.factory).initBootstrap();
|
var builder = message.getBody().initAs(RpcProtocol.Message.factory).initBootstrap();
|
||||||
builder.setQuestionId(question.getId());
|
builder.setQuestionId(question.getId());
|
||||||
message.send();
|
message.send();
|
||||||
|
@ -465,7 +467,7 @@ final class RpcState {
|
||||||
default:
|
default:
|
||||||
if (!isDisconnected()) {
|
if (!isDisconnected()) {
|
||||||
// boomin' back atcha
|
// boomin' back atcha
|
||||||
var msg = connection.newOutgoingMessage(1024);
|
var msg = connection.newOutgoingMessage(BuilderArena.SUGGESTED_FIRST_SEGMENT_WORDS);
|
||||||
msg.getBody().initAs(RpcProtocol.Message.factory).setUnimplemented(reader);
|
msg.getBody().initAs(RpcProtocol.Message.factory).setUnimplemented(reader);
|
||||||
msg.send();
|
msg.send();
|
||||||
}
|
}
|
||||||
|
@ -524,7 +526,10 @@ final class RpcState {
|
||||||
answer.active = true;
|
answer.active = true;
|
||||||
|
|
||||||
var capTable = new BuilderCapabilityTable();
|
var capTable = new BuilderCapabilityTable();
|
||||||
var response = connection.newOutgoingMessage(1024);
|
int sizeHint = messageSizeHint()
|
||||||
|
+ RpcProtocol.Return.factory.structSize().total()
|
||||||
|
+ RpcProtocol.Payload.factory.structSize().total();
|
||||||
|
var response = connection.newOutgoingMessage(sizeHint);
|
||||||
|
|
||||||
var ret = response.getBody().getAs(RpcProtocol.Message.factory).initReturn();
|
var ret = response.getBody().getAs(RpcProtocol.Message.factory).initReturn();
|
||||||
ret.setAnswerId(answerId);
|
ret.setAnswerId(answerId);
|
||||||
|
@ -799,7 +804,10 @@ final class RpcState {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var message = connection.newOutgoingMessage(1024);
|
int sizeHint = messageSizeHint()
|
||||||
|
+ RpcProtocol.Disembargo.factory.structSize().total()
|
||||||
|
+ MESSAGE_TARGET_SIZE_HINT;
|
||||||
|
var message = connection.newOutgoingMessage(sizeHint);
|
||||||
var builder = message.getBody().initAs(RpcProtocol.Message.factory).initDisembargo();
|
var builder = message.getBody().initAs(RpcProtocol.Message.factory).initDisembargo();
|
||||||
var redirect = rpcTarget.writeTarget(builder.initTarget());
|
var redirect = rpcTarget.writeTarget(builder.initTarget());
|
||||||
// Disembargoes should only be sent to capabilities that were previously the subject of
|
// Disembargoes should only be sent to capabilities that were previously the subject of
|
||||||
|
@ -937,7 +945,10 @@ final class RpcState {
|
||||||
}
|
}
|
||||||
|
|
||||||
// send a Resolve message
|
// send a Resolve message
|
||||||
var message = connection.newOutgoingMessage(1024);
|
int sizeHint = messageSizeHint()
|
||||||
|
+ RpcProtocol.Resolve.factory.structSize().total()
|
||||||
|
+ CAP_DESCRIPTOR_SIZE_HINT;
|
||||||
|
var message = connection.newOutgoingMessage(sizeHint);
|
||||||
var resolve = message.getBody().initAs(RpcProtocol.Message.factory).initResolve();
|
var resolve = message.getBody().initAs(RpcProtocol.Message.factory).initResolve();
|
||||||
resolve.setPromiseId(exportId);
|
resolve.setPromiseId(exportId);
|
||||||
var fds = List.<Integer>of();
|
var fds = List.<Integer>of();
|
||||||
|
@ -1788,7 +1799,9 @@ final class RpcState {
|
||||||
// TODO Flow control
|
// TODO Flow control
|
||||||
|
|
||||||
if (resolutionType == ResolutionType.REFLECTED && receivedCall && !isDisconnected()) {
|
if (resolutionType == ResolutionType.REFLECTED && receivedCall && !isDisconnected()) {
|
||||||
var message = connection.newOutgoingMessage(1024);
|
int sizeHint = messageSizeHint()
|
||||||
|
+ RpcProtocol.Disembargo.factory.structSize().total();
|
||||||
|
var message = connection.newOutgoingMessage(sizeHint);
|
||||||
var disembargo = message.getBody().initAs(RpcProtocol.Message.factory).initDisembargo();
|
var disembargo = message.getBody().initAs(RpcProtocol.Message.factory).initDisembargo();
|
||||||
var redirect = RpcState.this.writeTarget(cap, disembargo.initTarget());
|
var redirect = RpcState.this.writeTarget(cap, disembargo.initTarget());
|
||||||
assert redirect == null;
|
assert redirect == null;
|
||||||
|
|
|
@ -12,6 +12,7 @@ public class TwoPartyVatNetwork
|
||||||
void incoming(IncomingRpcMessage message, RpcTwoPartyProtocol.Side side);
|
void incoming(IncomingRpcMessage message, RpcTwoPartyProtocol.Side side);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static BuilderArena.AllocationStrategy allocationStrategy = BuilderArena.SUGGESTED_ALLOCATION_STRATEGY;
|
||||||
private CompletableFuture<java.lang.Void> previousWrite = CompletableFuture.completedFuture(null);
|
private CompletableFuture<java.lang.Void> previousWrite = CompletableFuture.completedFuture(null);
|
||||||
private final CompletableFuture<java.lang.Void> peerDisconnected = new CompletableFuture<>();
|
private final CompletableFuture<java.lang.Void> peerDisconnected = new CompletableFuture<>();
|
||||||
private final AsynchronousSocketChannel channel;
|
private final AsynchronousSocketChannel channel;
|
||||||
|
@ -117,7 +118,7 @@ public class TwoPartyVatNetwork
|
||||||
List<Integer> fds = List.of();
|
List<Integer> fds = List.of();
|
||||||
|
|
||||||
OutgoingMessage(int firstSegmentWordSize) {
|
OutgoingMessage(int firstSegmentWordSize) {
|
||||||
this.message = new MessageBuilder(firstSegmentWordSize);
|
this.message = new MessageBuilder(firstSegmentWordSize, allocationStrategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue