From 2b0a27be9eaff157505123e81da23ef1c6915a73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Endre=20S=C3=A1ndor=20Varga?= Date: Wed, 27 Mar 2013 17:47:56 +0100 Subject: [PATCH 1/3] Added acknowledged delivery of system messages --- .../test/scala/akka/actor/FSMTimingSpec.scala | 2 +- .../src/main/scala/akka/actor/FSM.scala | 3 +- .../pattern/ClusterSingletonManager.scala | 1 + .../akka/actor/mailbox/DurableMailbox.scala | 10 +- .../{RemoteProtocol.java => WireFormats.java} | 5648 ++++++++++------- ...RemoteProtocol.proto => WireFormats.proto} | 127 +- akka-remote/src/main/resources/reference.conf | 25 +- .../scala/akka/remote/AckedDelivery.scala | 191 + .../src/main/scala/akka/remote/Endpoint.scala | 428 +- .../scala/akka/remote/MessageSerializer.scala | 8 +- .../akka/remote/RemoteActorRefProvider.scala | 19 +- .../scala/akka/remote/RemoteSettings.scala | 6 + .../src/main/scala/akka/remote/Remoting.scala | 98 +- .../DaemonMsgCreateSerializer.scala | 14 +- .../serialization/ProtobufSerializer.scala | 10 +- .../akka/remote/transport/AkkaPduCodec.scala | 171 +- .../transport/AkkaProtocolTransport.scala | 97 +- .../akka/remote/transport/TestTransport.scala | 2 +- .../transport/ThrottlerTransportAdapter.scala | 4 +- .../scala/akka/remote/AckedDeliverySpec.scala | 334 + .../scala/akka/remote/RemoteConfigSpec.scala | 9 +- .../akka/remote/RemoteDeathWatchSpec.scala | 2 +- .../test/scala/akka/remote/RemotingSpec.scala | 2 +- .../ProtobufSerializerSpec.scala | 4 +- .../remote/transport/AkkaProtocolSpec.scala | 139 +- .../transport/GenericTransportSpec.scala | 4 +- .../SystemMessageDeliveryStressTest.scala | 153 + .../remote/transport/TestTransportSpec.scala | 4 +- .../ThrottlerTransportAdapterSpec.scala | 3 +- 29 files changed, 4750 insertions(+), 2768 deletions(-) rename akka-remote/src/main/java/akka/remote/{RemoteProtocol.java => WireFormats.java} (62%) rename akka-remote/src/main/protocol/{RemoteProtocol.proto => WireFormats.proto} (51%) create mode 100644 akka-remote/src/main/scala/akka/remote/AckedDelivery.scala create mode 100644 akka-remote/src/test/scala/akka/remote/AckedDeliverySpec.scala create mode 100644 akka-remote/src/test/scala/akka/remote/transport/SystemMessageDeliveryStressTest.scala diff --git a/akka-actor-tests/src/test/scala/akka/actor/FSMTimingSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/FSMTimingSpec.scala index c90dde277d..7260249e44 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/FSMTimingSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/FSMTimingSpec.scala @@ -201,7 +201,7 @@ object FSMTimingSpec { case Initial -> TestSingleTimerResubmit ⇒ setTimer("blah", Tick, 500.millis.dilated, false) } when(TestSingleTimerResubmit) { - case Event(Tick, _) ⇒ tester ! Tick; setTimer("blah", Tock, 500.millis.dilated, false) + case Event(Tick, _) ⇒ tester ! Tick; setTimer("blah", Tock, 500.millis.dilated, false); stay() case Event(Tock, _) ⇒ tester ! Tock; goto(Initial) } when(TestCancelTimer) { diff --git a/akka-actor/src/main/scala/akka/actor/FSM.scala b/akka-actor/src/main/scala/akka/actor/FSM.scala index 962c47cbc8..1cc4a90f34 100644 --- a/akka-actor/src/main/scala/akka/actor/FSM.scala +++ b/akka-actor/src/main/scala/akka/actor/FSM.scala @@ -342,7 +342,7 @@ trait FSM[S, D] extends Actor with Listeners with ActorLogging { * @param repeat send once if false, scheduleAtFixedRate if true * @return current state descriptor */ - final def setTimer(name: String, msg: Any, timeout: FiniteDuration, repeat: Boolean): State = { + final def setTimer(name: String, msg: Any, timeout: FiniteDuration, repeat: Boolean): Unit = { if (debugEvent) log.debug("setting " + (if (repeat) "repeating " else "") + "timer '" + name + "'/" + timeout + ": " + msg) if (timers contains name) { @@ -351,7 +351,6 @@ trait FSM[S, D] extends Actor with Listeners with ActorLogging { val timer = Timer(name, msg, repeat, timerGen.next)(context) timer.schedule(self, timeout) timers(name) = timer - stay } /** diff --git a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSingletonManager.scala b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSingletonManager.scala index 8dbdb0be0e..426278ab3a 100644 --- a/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSingletonManager.scala +++ b/akka-contrib/src/main/scala/akka/contrib/pattern/ClusterSingletonManager.scala @@ -478,6 +478,7 @@ class ClusterSingletonManager( logInfo("Retry [{}], sending HandOverToMe to [{}]", count, previousLeaderOption) previousLeaderOption foreach { peer(_) ! HandOverToMe } setTimer(HandOverRetryTimer, HandOverRetry(count + 1), retryInterval, repeat = false) + stay() } else if (previousLeaderOption forall removed.contains) { // can't send HandOverToMe, previousLeader unknown for new node (or restart) // previous leader might be down or removed, so no TakeOverFromMe message is received diff --git a/akka-durable-mailboxes/akka-mailboxes-common/src/main/scala/akka/actor/mailbox/DurableMailbox.scala b/akka-durable-mailboxes/akka-mailboxes-common/src/main/scala/akka/actor/mailbox/DurableMailbox.scala index 93eb4bbed4..c7a3c42433 100644 --- a/akka-durable-mailboxes/akka-mailboxes-common/src/main/scala/akka/actor/mailbox/DurableMailbox.scala +++ b/akka-durable-mailboxes/akka-mailboxes-common/src/main/scala/akka/actor/mailbox/DurableMailbox.scala @@ -5,7 +5,7 @@ package akka.actor.mailbox import akka.dispatch.{ Envelope, MessageQueue } import akka.remote.MessageSerializer -import akka.remote.RemoteProtocol.{ ActorRefProtocol, RemoteMessageProtocol } +import akka.remote.WireFormats.{ ActorRefData, RemoteEnvelope } import com.typesafe.config.Config import akka.actor._ @@ -43,10 +43,10 @@ trait DurableMessageSerialization { this: DurableMessageQueue ⇒ // It's alright to use ref.path.toString here // When the sender is a LocalActorRef it should be local when deserialized also. // When the sender is a RemoteActorRef the path.toString already contains remote address information. - def serializeActorRef(ref: ActorRef): ActorRefProtocol = ActorRefProtocol.newBuilder.setPath(ref.path.toString).build + def serializeActorRef(ref: ActorRef): ActorRefData = ActorRefData.newBuilder.setPath(ref.path.toString).build val message = MessageSerializer.serialize(system, durableMessage.message.asInstanceOf[AnyRef]) - val builder = RemoteMessageProtocol.newBuilder + val builder = RemoteEnvelope.newBuilder .setMessage(message) .setRecipient(serializeActorRef(owner)) .setSender(serializeActorRef(durableMessage.sender)) @@ -60,10 +60,10 @@ trait DurableMessageSerialization { this: DurableMessageQueue ⇒ */ def deserialize(bytes: Array[Byte]): Envelope = { - def deserializeActorRef(refProtocol: ActorRefProtocol): ActorRef = + def deserializeActorRef(refProtocol: ActorRefData): ActorRef = system.provider.resolveActorRef(refProtocol.getPath) - val durableMessage = RemoteMessageProtocol.parseFrom(bytes) + val durableMessage = RemoteEnvelope.parseFrom(bytes) val message = MessageSerializer.deserialize(system, durableMessage.getMessage) val sender = deserializeActorRef(durableMessage.getSender) diff --git a/akka-remote/src/main/java/akka/remote/RemoteProtocol.java b/akka-remote/src/main/java/akka/remote/WireFormats.java similarity index 62% rename from akka-remote/src/main/java/akka/remote/RemoteProtocol.java rename to akka-remote/src/main/java/akka/remote/WireFormats.java index 31179c4408..7baaacac9e 100644 --- a/akka-remote/src/main/java/akka/remote/RemoteProtocol.java +++ b/akka-remote/src/main/java/akka/remote/WireFormats.java @@ -1,10 +1,10 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: RemoteProtocol.proto +// source: WireFormats.proto package akka.remote; -public final class RemoteProtocol { - private RemoteProtocol() {} +public final class WireFormats { + private WireFormats() {} public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } @@ -53,7 +53,7 @@ public final class RemoteProtocol { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return akka.remote.RemoteProtocol.getDescriptor().getEnumTypes().get(0); + return akka.remote.WireFormats.getDescriptor().getEnumTypes().get(0); } private static final CommandType[] VALUES = { @@ -80,81 +80,91 @@ public final class RemoteProtocol { // @@protoc_insertion_point(enum_scope:CommandType) } - public interface AkkaRemoteProtocolOrBuilder + public interface AckAndEnvelopeContainerOrBuilder extends com.google.protobuf.MessageOrBuilder { - // optional bytes payload = 1; - boolean hasPayload(); - com.google.protobuf.ByteString getPayload(); + // optional .AcknowledgementInfo ack = 1; + boolean hasAck(); + akka.remote.WireFormats.AcknowledgementInfo getAck(); + akka.remote.WireFormats.AcknowledgementInfoOrBuilder getAckOrBuilder(); - // optional .RemoteControlProtocol instruction = 2; - boolean hasInstruction(); - akka.remote.RemoteProtocol.RemoteControlProtocol getInstruction(); - akka.remote.RemoteProtocol.RemoteControlProtocolOrBuilder getInstructionOrBuilder(); + // optional .RemoteEnvelope envelope = 2; + boolean hasEnvelope(); + akka.remote.WireFormats.RemoteEnvelope getEnvelope(); + akka.remote.WireFormats.RemoteEnvelopeOrBuilder getEnvelopeOrBuilder(); } - public static final class AkkaRemoteProtocol extends + public static final class AckAndEnvelopeContainer extends com.google.protobuf.GeneratedMessage - implements AkkaRemoteProtocolOrBuilder { - // Use AkkaRemoteProtocol.newBuilder() to construct. - private AkkaRemoteProtocol(Builder builder) { + implements AckAndEnvelopeContainerOrBuilder { + // Use AckAndEnvelopeContainer.newBuilder() to construct. + private AckAndEnvelopeContainer(Builder builder) { super(builder); } - private AkkaRemoteProtocol(boolean noInit) {} + private AckAndEnvelopeContainer(boolean noInit) {} - private static final AkkaRemoteProtocol defaultInstance; - public static AkkaRemoteProtocol getDefaultInstance() { + private static final AckAndEnvelopeContainer defaultInstance; + public static AckAndEnvelopeContainer getDefaultInstance() { return defaultInstance; } - public AkkaRemoteProtocol getDefaultInstanceForType() { + public AckAndEnvelopeContainer getDefaultInstanceForType() { return defaultInstance; } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_AkkaRemoteProtocol_descriptor; + return akka.remote.WireFormats.internal_static_AckAndEnvelopeContainer_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_AkkaRemoteProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_AckAndEnvelopeContainer_fieldAccessorTable; } private int bitField0_; - // optional bytes payload = 1; - public static final int PAYLOAD_FIELD_NUMBER = 1; - private com.google.protobuf.ByteString payload_; - public boolean hasPayload() { + // optional .AcknowledgementInfo ack = 1; + public static final int ACK_FIELD_NUMBER = 1; + private akka.remote.WireFormats.AcknowledgementInfo ack_; + public boolean hasAck() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public com.google.protobuf.ByteString getPayload() { - return payload_; + public akka.remote.WireFormats.AcknowledgementInfo getAck() { + return ack_; + } + public akka.remote.WireFormats.AcknowledgementInfoOrBuilder getAckOrBuilder() { + return ack_; } - // optional .RemoteControlProtocol instruction = 2; - public static final int INSTRUCTION_FIELD_NUMBER = 2; - private akka.remote.RemoteProtocol.RemoteControlProtocol instruction_; - public boolean hasInstruction() { + // optional .RemoteEnvelope envelope = 2; + public static final int ENVELOPE_FIELD_NUMBER = 2; + private akka.remote.WireFormats.RemoteEnvelope envelope_; + public boolean hasEnvelope() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public akka.remote.RemoteProtocol.RemoteControlProtocol getInstruction() { - return instruction_; + public akka.remote.WireFormats.RemoteEnvelope getEnvelope() { + return envelope_; } - public akka.remote.RemoteProtocol.RemoteControlProtocolOrBuilder getInstructionOrBuilder() { - return instruction_; + public akka.remote.WireFormats.RemoteEnvelopeOrBuilder getEnvelopeOrBuilder() { + return envelope_; } private void initFields() { - payload_ = com.google.protobuf.ByteString.EMPTY; - instruction_ = akka.remote.RemoteProtocol.RemoteControlProtocol.getDefaultInstance(); + ack_ = akka.remote.WireFormats.AcknowledgementInfo.getDefaultInstance(); + envelope_ = akka.remote.WireFormats.RemoteEnvelope.getDefaultInstance(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - if (hasInstruction()) { - if (!getInstruction().isInitialized()) { + if (hasAck()) { + if (!getAck().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + if (hasEnvelope()) { + if (!getEnvelope().isInitialized()) { memoizedIsInitialized = 0; return false; } @@ -167,10 +177,10 @@ public final class RemoteProtocol { throws java.io.IOException { getSerializedSize(); if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, payload_); + output.writeMessage(1, ack_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeMessage(2, instruction_); + output.writeMessage(2, envelope_); } getUnknownFields().writeTo(output); } @@ -183,11 +193,11 @@ public final class RemoteProtocol { size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, payload_); + .computeMessageSize(1, ack_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, instruction_); + .computeMessageSize(2, envelope_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; @@ -201,41 +211,41 @@ public final class RemoteProtocol { return super.writeReplace(); } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseFrom( + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseFrom( + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseFrom(byte[] data) + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseFrom( + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseFrom(java.io.InputStream input) + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseFrom( + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseDelimitedFrom(java.io.InputStream input) + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -244,7 +254,7 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseDelimitedFrom( + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -255,12 +265,12 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseFrom( + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.AkkaRemoteProtocol parseFrom( + public static akka.remote.WireFormats.AckAndEnvelopeContainer parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -270,7 +280,7 @@ public final class RemoteProtocol { public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.AkkaRemoteProtocol prototype) { + public static Builder newBuilder(akka.remote.WireFormats.AckAndEnvelopeContainer prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } @@ -283,29 +293,30 @@ public final class RemoteProtocol { } public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.AkkaRemoteProtocolOrBuilder { + implements akka.remote.WireFormats.AckAndEnvelopeContainerOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_AkkaRemoteProtocol_descriptor; + return akka.remote.WireFormats.internal_static_AckAndEnvelopeContainer_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_AkkaRemoteProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_AckAndEnvelopeContainer_fieldAccessorTable; } - // Construct using akka.remote.RemoteProtocol.AkkaRemoteProtocol.newBuilder() + // Construct using akka.remote.WireFormats.AckAndEnvelopeContainer.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - private Builder(BuilderParent parent) { + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getInstructionFieldBuilder(); + getAckFieldBuilder(); + getEnvelopeFieldBuilder(); } } private static Builder create() { @@ -314,12 +325,16 @@ public final class RemoteProtocol { public Builder clear() { super.clear(); - payload_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000001); - if (instructionBuilder_ == null) { - instruction_ = akka.remote.RemoteProtocol.RemoteControlProtocol.getDefaultInstance(); + if (ackBuilder_ == null) { + ack_ = akka.remote.WireFormats.AcknowledgementInfo.getDefaultInstance(); } else { - instructionBuilder_.clear(); + ackBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + if (envelopeBuilder_ == null) { + envelope_ = akka.remote.WireFormats.RemoteEnvelope.getDefaultInstance(); + } else { + envelopeBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000002); return this; @@ -331,24 +346,24 @@ public final class RemoteProtocol { public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return akka.remote.RemoteProtocol.AkkaRemoteProtocol.getDescriptor(); + return akka.remote.WireFormats.AckAndEnvelopeContainer.getDescriptor(); } - public akka.remote.RemoteProtocol.AkkaRemoteProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.AkkaRemoteProtocol.getDefaultInstance(); + public akka.remote.WireFormats.AckAndEnvelopeContainer getDefaultInstanceForType() { + return akka.remote.WireFormats.AckAndEnvelopeContainer.getDefaultInstance(); } - public akka.remote.RemoteProtocol.AkkaRemoteProtocol build() { - akka.remote.RemoteProtocol.AkkaRemoteProtocol result = buildPartial(); + public akka.remote.WireFormats.AckAndEnvelopeContainer build() { + akka.remote.WireFormats.AckAndEnvelopeContainer result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private akka.remote.RemoteProtocol.AkkaRemoteProtocol buildParsed() + private akka.remote.WireFormats.AckAndEnvelopeContainer buildParsed() throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.AkkaRemoteProtocol result = buildPartial(); + akka.remote.WireFormats.AckAndEnvelopeContainer result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -356,21 +371,25 @@ public final class RemoteProtocol { return result; } - public akka.remote.RemoteProtocol.AkkaRemoteProtocol buildPartial() { - akka.remote.RemoteProtocol.AkkaRemoteProtocol result = new akka.remote.RemoteProtocol.AkkaRemoteProtocol(this); + public akka.remote.WireFormats.AckAndEnvelopeContainer buildPartial() { + akka.remote.WireFormats.AckAndEnvelopeContainer result = new akka.remote.WireFormats.AckAndEnvelopeContainer(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { to_bitField0_ |= 0x00000001; } - result.payload_ = payload_; + if (ackBuilder_ == null) { + result.ack_ = ack_; + } else { + result.ack_ = ackBuilder_.build(); + } if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - if (instructionBuilder_ == null) { - result.instruction_ = instruction_; + if (envelopeBuilder_ == null) { + result.envelope_ = envelope_; } else { - result.instruction_ = instructionBuilder_.build(); + result.envelope_ = envelopeBuilder_.build(); } result.bitField0_ = to_bitField0_; onBuilt(); @@ -378,29 +397,35 @@ public final class RemoteProtocol { } public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.AkkaRemoteProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.AkkaRemoteProtocol)other); + if (other instanceof akka.remote.WireFormats.AckAndEnvelopeContainer) { + return mergeFrom((akka.remote.WireFormats.AckAndEnvelopeContainer)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(akka.remote.RemoteProtocol.AkkaRemoteProtocol other) { - if (other == akka.remote.RemoteProtocol.AkkaRemoteProtocol.getDefaultInstance()) return this; - if (other.hasPayload()) { - setPayload(other.getPayload()); + public Builder mergeFrom(akka.remote.WireFormats.AckAndEnvelopeContainer other) { + if (other == akka.remote.WireFormats.AckAndEnvelopeContainer.getDefaultInstance()) return this; + if (other.hasAck()) { + mergeAck(other.getAck()); } - if (other.hasInstruction()) { - mergeInstruction(other.getInstruction()); + if (other.hasEnvelope()) { + mergeEnvelope(other.getEnvelope()); } this.mergeUnknownFields(other.getUnknownFields()); return this; } public final boolean isInitialized() { - if (hasInstruction()) { - if (!getInstruction().isInitialized()) { + if (hasAck()) { + if (!getAck().isInitialized()) { + + return false; + } + } + if (hasEnvelope()) { + if (!getEnvelope().isInitialized()) { return false; } @@ -432,17 +457,21 @@ public final class RemoteProtocol { break; } case 10: { - bitField0_ |= 0x00000001; - payload_ = input.readBytes(); + akka.remote.WireFormats.AcknowledgementInfo.Builder subBuilder = akka.remote.WireFormats.AcknowledgementInfo.newBuilder(); + if (hasAck()) { + subBuilder.mergeFrom(getAck()); + } + input.readMessage(subBuilder, extensionRegistry); + setAck(subBuilder.buildPartial()); break; } case 18: { - akka.remote.RemoteProtocol.RemoteControlProtocol.Builder subBuilder = akka.remote.RemoteProtocol.RemoteControlProtocol.newBuilder(); - if (hasInstruction()) { - subBuilder.mergeFrom(getInstruction()); + akka.remote.WireFormats.RemoteEnvelope.Builder subBuilder = akka.remote.WireFormats.RemoteEnvelope.newBuilder(); + if (hasEnvelope()) { + subBuilder.mergeFrom(getEnvelope()); } input.readMessage(subBuilder, extensionRegistry); - setInstruction(subBuilder.buildPartial()); + setEnvelope(subBuilder.buildPartial()); break; } } @@ -451,253 +480,302 @@ public final class RemoteProtocol { private int bitField0_; - // optional bytes payload = 1; - private com.google.protobuf.ByteString payload_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasPayload() { + // optional .AcknowledgementInfo ack = 1; + private akka.remote.WireFormats.AcknowledgementInfo ack_ = akka.remote.WireFormats.AcknowledgementInfo.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AcknowledgementInfo, akka.remote.WireFormats.AcknowledgementInfo.Builder, akka.remote.WireFormats.AcknowledgementInfoOrBuilder> ackBuilder_; + public boolean hasAck() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public com.google.protobuf.ByteString getPayload() { - return payload_; - } - public Builder setPayload(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - payload_ = value; - onChanged(); - return this; - } - public Builder clearPayload() { - bitField0_ = (bitField0_ & ~0x00000001); - payload_ = getDefaultInstance().getPayload(); - onChanged(); - return this; - } - - // optional .RemoteControlProtocol instruction = 2; - private akka.remote.RemoteProtocol.RemoteControlProtocol instruction_ = akka.remote.RemoteProtocol.RemoteControlProtocol.getDefaultInstance(); - private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.RemoteControlProtocol, akka.remote.RemoteProtocol.RemoteControlProtocol.Builder, akka.remote.RemoteProtocol.RemoteControlProtocolOrBuilder> instructionBuilder_; - public boolean hasInstruction() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public akka.remote.RemoteProtocol.RemoteControlProtocol getInstruction() { - if (instructionBuilder_ == null) { - return instruction_; + public akka.remote.WireFormats.AcknowledgementInfo getAck() { + if (ackBuilder_ == null) { + return ack_; } else { - return instructionBuilder_.getMessage(); + return ackBuilder_.getMessage(); } } - public Builder setInstruction(akka.remote.RemoteProtocol.RemoteControlProtocol value) { - if (instructionBuilder_ == null) { + public Builder setAck(akka.remote.WireFormats.AcknowledgementInfo value) { + if (ackBuilder_ == null) { if (value == null) { throw new NullPointerException(); } - instruction_ = value; + ack_ = value; onChanged(); } else { - instructionBuilder_.setMessage(value); + ackBuilder_.setMessage(value); } - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000001; return this; } - public Builder setInstruction( - akka.remote.RemoteProtocol.RemoteControlProtocol.Builder builderForValue) { - if (instructionBuilder_ == null) { - instruction_ = builderForValue.build(); + public Builder setAck( + akka.remote.WireFormats.AcknowledgementInfo.Builder builderForValue) { + if (ackBuilder_ == null) { + ack_ = builderForValue.build(); onChanged(); } else { - instructionBuilder_.setMessage(builderForValue.build()); + ackBuilder_.setMessage(builderForValue.build()); } - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000001; return this; } - public Builder mergeInstruction(akka.remote.RemoteProtocol.RemoteControlProtocol value) { - if (instructionBuilder_ == null) { - if (((bitField0_ & 0x00000002) == 0x00000002) && - instruction_ != akka.remote.RemoteProtocol.RemoteControlProtocol.getDefaultInstance()) { - instruction_ = - akka.remote.RemoteProtocol.RemoteControlProtocol.newBuilder(instruction_).mergeFrom(value).buildPartial(); + public Builder mergeAck(akka.remote.WireFormats.AcknowledgementInfo value) { + if (ackBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + ack_ != akka.remote.WireFormats.AcknowledgementInfo.getDefaultInstance()) { + ack_ = + akka.remote.WireFormats.AcknowledgementInfo.newBuilder(ack_).mergeFrom(value).buildPartial(); } else { - instruction_ = value; + ack_ = value; } onChanged(); } else { - instructionBuilder_.mergeFrom(value); + ackBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000001; + return this; + } + public Builder clearAck() { + if (ackBuilder_ == null) { + ack_ = akka.remote.WireFormats.AcknowledgementInfo.getDefaultInstance(); + onChanged(); + } else { + ackBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + public akka.remote.WireFormats.AcknowledgementInfo.Builder getAckBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getAckFieldBuilder().getBuilder(); + } + public akka.remote.WireFormats.AcknowledgementInfoOrBuilder getAckOrBuilder() { + if (ackBuilder_ != null) { + return ackBuilder_.getMessageOrBuilder(); + } else { + return ack_; + } + } + private com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AcknowledgementInfo, akka.remote.WireFormats.AcknowledgementInfo.Builder, akka.remote.WireFormats.AcknowledgementInfoOrBuilder> + getAckFieldBuilder() { + if (ackBuilder_ == null) { + ackBuilder_ = new com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AcknowledgementInfo, akka.remote.WireFormats.AcknowledgementInfo.Builder, akka.remote.WireFormats.AcknowledgementInfoOrBuilder>( + ack_, + getParentForChildren(), + isClean()); + ack_ = null; + } + return ackBuilder_; + } + + // optional .RemoteEnvelope envelope = 2; + private akka.remote.WireFormats.RemoteEnvelope envelope_ = akka.remote.WireFormats.RemoteEnvelope.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.RemoteEnvelope, akka.remote.WireFormats.RemoteEnvelope.Builder, akka.remote.WireFormats.RemoteEnvelopeOrBuilder> envelopeBuilder_; + public boolean hasEnvelope() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public akka.remote.WireFormats.RemoteEnvelope getEnvelope() { + if (envelopeBuilder_ == null) { + return envelope_; + } else { + return envelopeBuilder_.getMessage(); + } + } + public Builder setEnvelope(akka.remote.WireFormats.RemoteEnvelope value) { + if (envelopeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + envelope_ = value; + onChanged(); + } else { + envelopeBuilder_.setMessage(value); } bitField0_ |= 0x00000002; return this; } - public Builder clearInstruction() { - if (instructionBuilder_ == null) { - instruction_ = akka.remote.RemoteProtocol.RemoteControlProtocol.getDefaultInstance(); + public Builder setEnvelope( + akka.remote.WireFormats.RemoteEnvelope.Builder builderForValue) { + if (envelopeBuilder_ == null) { + envelope_ = builderForValue.build(); onChanged(); } else { - instructionBuilder_.clear(); + envelopeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + return this; + } + public Builder mergeEnvelope(akka.remote.WireFormats.RemoteEnvelope value) { + if (envelopeBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + envelope_ != akka.remote.WireFormats.RemoteEnvelope.getDefaultInstance()) { + envelope_ = + akka.remote.WireFormats.RemoteEnvelope.newBuilder(envelope_).mergeFrom(value).buildPartial(); + } else { + envelope_ = value; + } + onChanged(); + } else { + envelopeBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + return this; + } + public Builder clearEnvelope() { + if (envelopeBuilder_ == null) { + envelope_ = akka.remote.WireFormats.RemoteEnvelope.getDefaultInstance(); + onChanged(); + } else { + envelopeBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000002); return this; } - public akka.remote.RemoteProtocol.RemoteControlProtocol.Builder getInstructionBuilder() { + public akka.remote.WireFormats.RemoteEnvelope.Builder getEnvelopeBuilder() { bitField0_ |= 0x00000002; onChanged(); - return getInstructionFieldBuilder().getBuilder(); + return getEnvelopeFieldBuilder().getBuilder(); } - public akka.remote.RemoteProtocol.RemoteControlProtocolOrBuilder getInstructionOrBuilder() { - if (instructionBuilder_ != null) { - return instructionBuilder_.getMessageOrBuilder(); + public akka.remote.WireFormats.RemoteEnvelopeOrBuilder getEnvelopeOrBuilder() { + if (envelopeBuilder_ != null) { + return envelopeBuilder_.getMessageOrBuilder(); } else { - return instruction_; + return envelope_; } } private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.RemoteControlProtocol, akka.remote.RemoteProtocol.RemoteControlProtocol.Builder, akka.remote.RemoteProtocol.RemoteControlProtocolOrBuilder> - getInstructionFieldBuilder() { - if (instructionBuilder_ == null) { - instructionBuilder_ = new com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.RemoteControlProtocol, akka.remote.RemoteProtocol.RemoteControlProtocol.Builder, akka.remote.RemoteProtocol.RemoteControlProtocolOrBuilder>( - instruction_, + akka.remote.WireFormats.RemoteEnvelope, akka.remote.WireFormats.RemoteEnvelope.Builder, akka.remote.WireFormats.RemoteEnvelopeOrBuilder> + getEnvelopeFieldBuilder() { + if (envelopeBuilder_ == null) { + envelopeBuilder_ = new com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.RemoteEnvelope, akka.remote.WireFormats.RemoteEnvelope.Builder, akka.remote.WireFormats.RemoteEnvelopeOrBuilder>( + envelope_, getParentForChildren(), isClean()); - instruction_ = null; + envelope_ = null; } - return instructionBuilder_; + return envelopeBuilder_; } - // @@protoc_insertion_point(builder_scope:AkkaRemoteProtocol) + // @@protoc_insertion_point(builder_scope:AckAndEnvelopeContainer) } static { - defaultInstance = new AkkaRemoteProtocol(true); + defaultInstance = new AckAndEnvelopeContainer(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:AkkaRemoteProtocol) + // @@protoc_insertion_point(class_scope:AckAndEnvelopeContainer) } - public interface RemoteMessageProtocolOrBuilder + public interface RemoteEnvelopeOrBuilder extends com.google.protobuf.MessageOrBuilder { - // required .ActorRefProtocol recipient = 1; + // required .ActorRefData recipient = 1; boolean hasRecipient(); - akka.remote.RemoteProtocol.ActorRefProtocol getRecipient(); - akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder getRecipientOrBuilder(); + akka.remote.WireFormats.ActorRefData getRecipient(); + akka.remote.WireFormats.ActorRefDataOrBuilder getRecipientOrBuilder(); - // required .MessageProtocol message = 2; + // required .SerializedMessage message = 2; boolean hasMessage(); - akka.remote.RemoteProtocol.MessageProtocol getMessage(); - akka.remote.RemoteProtocol.MessageProtocolOrBuilder getMessageOrBuilder(); + akka.remote.WireFormats.SerializedMessage getMessage(); + akka.remote.WireFormats.SerializedMessageOrBuilder getMessageOrBuilder(); - // optional .ActorRefProtocol sender = 4; + // optional .ActorRefData sender = 4; boolean hasSender(); - akka.remote.RemoteProtocol.ActorRefProtocol getSender(); - akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder getSenderOrBuilder(); + akka.remote.WireFormats.ActorRefData getSender(); + akka.remote.WireFormats.ActorRefDataOrBuilder getSenderOrBuilder(); - // repeated .MetadataEntryProtocol metadata = 5; - java.util.List - getMetadataList(); - akka.remote.RemoteProtocol.MetadataEntryProtocol getMetadata(int index); - int getMetadataCount(); - java.util.List - getMetadataOrBuilderList(); - akka.remote.RemoteProtocol.MetadataEntryProtocolOrBuilder getMetadataOrBuilder( - int index); + // optional fixed64 seq = 5; + boolean hasSeq(); + long getSeq(); } - public static final class RemoteMessageProtocol extends + public static final class RemoteEnvelope extends com.google.protobuf.GeneratedMessage - implements RemoteMessageProtocolOrBuilder { - // Use RemoteMessageProtocol.newBuilder() to construct. - private RemoteMessageProtocol(Builder builder) { + implements RemoteEnvelopeOrBuilder { + // Use RemoteEnvelope.newBuilder() to construct. + private RemoteEnvelope(Builder builder) { super(builder); } - private RemoteMessageProtocol(boolean noInit) {} + private RemoteEnvelope(boolean noInit) {} - private static final RemoteMessageProtocol defaultInstance; - public static RemoteMessageProtocol getDefaultInstance() { + private static final RemoteEnvelope defaultInstance; + public static RemoteEnvelope getDefaultInstance() { return defaultInstance; } - public RemoteMessageProtocol getDefaultInstanceForType() { + public RemoteEnvelope getDefaultInstanceForType() { return defaultInstance; } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_RemoteMessageProtocol_descriptor; + return akka.remote.WireFormats.internal_static_RemoteEnvelope_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_RemoteMessageProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_RemoteEnvelope_fieldAccessorTable; } private int bitField0_; - // required .ActorRefProtocol recipient = 1; + // required .ActorRefData recipient = 1; public static final int RECIPIENT_FIELD_NUMBER = 1; - private akka.remote.RemoteProtocol.ActorRefProtocol recipient_; + private akka.remote.WireFormats.ActorRefData recipient_; public boolean hasRecipient() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public akka.remote.RemoteProtocol.ActorRefProtocol getRecipient() { + public akka.remote.WireFormats.ActorRefData getRecipient() { return recipient_; } - public akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder getRecipientOrBuilder() { + public akka.remote.WireFormats.ActorRefDataOrBuilder getRecipientOrBuilder() { return recipient_; } - // required .MessageProtocol message = 2; + // required .SerializedMessage message = 2; public static final int MESSAGE_FIELD_NUMBER = 2; - private akka.remote.RemoteProtocol.MessageProtocol message_; + private akka.remote.WireFormats.SerializedMessage message_; public boolean hasMessage() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public akka.remote.RemoteProtocol.MessageProtocol getMessage() { + public akka.remote.WireFormats.SerializedMessage getMessage() { return message_; } - public akka.remote.RemoteProtocol.MessageProtocolOrBuilder getMessageOrBuilder() { + public akka.remote.WireFormats.SerializedMessageOrBuilder getMessageOrBuilder() { return message_; } - // optional .ActorRefProtocol sender = 4; + // optional .ActorRefData sender = 4; public static final int SENDER_FIELD_NUMBER = 4; - private akka.remote.RemoteProtocol.ActorRefProtocol sender_; + private akka.remote.WireFormats.ActorRefData sender_; public boolean hasSender() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public akka.remote.RemoteProtocol.ActorRefProtocol getSender() { + public akka.remote.WireFormats.ActorRefData getSender() { return sender_; } - public akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder getSenderOrBuilder() { + public akka.remote.WireFormats.ActorRefDataOrBuilder getSenderOrBuilder() { return sender_; } - // repeated .MetadataEntryProtocol metadata = 5; - public static final int METADATA_FIELD_NUMBER = 5; - private java.util.List metadata_; - public java.util.List getMetadataList() { - return metadata_; + // optional fixed64 seq = 5; + public static final int SEQ_FIELD_NUMBER = 5; + private long seq_; + public boolean hasSeq() { + return ((bitField0_ & 0x00000008) == 0x00000008); } - public java.util.List - getMetadataOrBuilderList() { - return metadata_; - } - public int getMetadataCount() { - return metadata_.size(); - } - public akka.remote.RemoteProtocol.MetadataEntryProtocol getMetadata(int index) { - return metadata_.get(index); - } - public akka.remote.RemoteProtocol.MetadataEntryProtocolOrBuilder getMetadataOrBuilder( - int index) { - return metadata_.get(index); + public long getSeq() { + return seq_; } private void initFields() { - recipient_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); - message_ = akka.remote.RemoteProtocol.MessageProtocol.getDefaultInstance(); - sender_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); - metadata_ = java.util.Collections.emptyList(); + recipient_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); + message_ = akka.remote.WireFormats.SerializedMessage.getDefaultInstance(); + sender_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); + seq_ = 0L; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -726,12 +804,6 @@ public final class RemoteProtocol { return false; } } - for (int i = 0; i < getMetadataCount(); i++) { - if (!getMetadata(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } memoizedIsInitialized = 1; return true; } @@ -748,8 +820,8 @@ public final class RemoteProtocol { if (((bitField0_ & 0x00000004) == 0x00000004)) { output.writeMessage(4, sender_); } - for (int i = 0; i < metadata_.size(); i++) { - output.writeMessage(5, metadata_.get(i)); + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeFixed64(5, seq_); } getUnknownFields().writeTo(output); } @@ -772,9 +844,9 @@ public final class RemoteProtocol { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, sender_); } - for (int i = 0; i < metadata_.size(); i++) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(5, metadata_.get(i)); + .computeFixed64Size(5, seq_); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; @@ -788,41 +860,41 @@ public final class RemoteProtocol { return super.writeReplace(); } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseFrom( + public static akka.remote.WireFormats.RemoteEnvelope parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseFrom( + public static akka.remote.WireFormats.RemoteEnvelope parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseFrom(byte[] data) + public static akka.remote.WireFormats.RemoteEnvelope parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseFrom( + public static akka.remote.WireFormats.RemoteEnvelope parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseFrom(java.io.InputStream input) + public static akka.remote.WireFormats.RemoteEnvelope parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseFrom( + public static akka.remote.WireFormats.RemoteEnvelope parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseDelimitedFrom(java.io.InputStream input) + public static akka.remote.WireFormats.RemoteEnvelope parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -831,7 +903,7 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseDelimitedFrom( + public static akka.remote.WireFormats.RemoteEnvelope parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -842,12 +914,12 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseFrom( + public static akka.remote.WireFormats.RemoteEnvelope parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteMessageProtocol parseFrom( + public static akka.remote.WireFormats.RemoteEnvelope parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -857,7 +929,7 @@ public final class RemoteProtocol { public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.RemoteMessageProtocol prototype) { + public static Builder newBuilder(akka.remote.WireFormats.RemoteEnvelope prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } @@ -870,23 +942,23 @@ public final class RemoteProtocol { } public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.RemoteMessageProtocolOrBuilder { + implements akka.remote.WireFormats.RemoteEnvelopeOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_RemoteMessageProtocol_descriptor; + return akka.remote.WireFormats.internal_static_RemoteEnvelope_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_RemoteMessageProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_RemoteEnvelope_fieldAccessorTable; } - // Construct using akka.remote.RemoteProtocol.RemoteMessageProtocol.newBuilder() + // Construct using akka.remote.WireFormats.RemoteEnvelope.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - private Builder(BuilderParent parent) { + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } @@ -895,7 +967,6 @@ public final class RemoteProtocol { getRecipientFieldBuilder(); getMessageFieldBuilder(); getSenderFieldBuilder(); - getMetadataFieldBuilder(); } } private static Builder create() { @@ -905,29 +976,25 @@ public final class RemoteProtocol { public Builder clear() { super.clear(); if (recipientBuilder_ == null) { - recipient_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + recipient_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); } else { recipientBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000001); if (messageBuilder_ == null) { - message_ = akka.remote.RemoteProtocol.MessageProtocol.getDefaultInstance(); + message_ = akka.remote.WireFormats.SerializedMessage.getDefaultInstance(); } else { messageBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000002); if (senderBuilder_ == null) { - sender_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + sender_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); } else { senderBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000004); - if (metadataBuilder_ == null) { - metadata_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000008); - } else { - metadataBuilder_.clear(); - } + seq_ = 0L; + bitField0_ = (bitField0_ & ~0x00000008); return this; } @@ -937,24 +1004,24 @@ public final class RemoteProtocol { public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return akka.remote.RemoteProtocol.RemoteMessageProtocol.getDescriptor(); + return akka.remote.WireFormats.RemoteEnvelope.getDescriptor(); } - public akka.remote.RemoteProtocol.RemoteMessageProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.RemoteMessageProtocol.getDefaultInstance(); + public akka.remote.WireFormats.RemoteEnvelope getDefaultInstanceForType() { + return akka.remote.WireFormats.RemoteEnvelope.getDefaultInstance(); } - public akka.remote.RemoteProtocol.RemoteMessageProtocol build() { - akka.remote.RemoteProtocol.RemoteMessageProtocol result = buildPartial(); + public akka.remote.WireFormats.RemoteEnvelope build() { + akka.remote.WireFormats.RemoteEnvelope result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private akka.remote.RemoteProtocol.RemoteMessageProtocol buildParsed() + private akka.remote.WireFormats.RemoteEnvelope buildParsed() throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.RemoteMessageProtocol result = buildPartial(); + akka.remote.WireFormats.RemoteEnvelope result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -962,8 +1029,8 @@ public final class RemoteProtocol { return result; } - public akka.remote.RemoteProtocol.RemoteMessageProtocol buildPartial() { - akka.remote.RemoteProtocol.RemoteMessageProtocol result = new akka.remote.RemoteProtocol.RemoteMessageProtocol(this); + public akka.remote.WireFormats.RemoteEnvelope buildPartial() { + akka.remote.WireFormats.RemoteEnvelope result = new akka.remote.WireFormats.RemoteEnvelope(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -990,31 +1057,26 @@ public final class RemoteProtocol { } else { result.sender_ = senderBuilder_.build(); } - if (metadataBuilder_ == null) { - if (((bitField0_ & 0x00000008) == 0x00000008)) { - metadata_ = java.util.Collections.unmodifiableList(metadata_); - bitField0_ = (bitField0_ & ~0x00000008); - } - result.metadata_ = metadata_; - } else { - result.metadata_ = metadataBuilder_.build(); + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; } + result.seq_ = seq_; result.bitField0_ = to_bitField0_; onBuilt(); return result; } public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.RemoteMessageProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.RemoteMessageProtocol)other); + if (other instanceof akka.remote.WireFormats.RemoteEnvelope) { + return mergeFrom((akka.remote.WireFormats.RemoteEnvelope)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(akka.remote.RemoteProtocol.RemoteMessageProtocol other) { - if (other == akka.remote.RemoteProtocol.RemoteMessageProtocol.getDefaultInstance()) return this; + public Builder mergeFrom(akka.remote.WireFormats.RemoteEnvelope other) { + if (other == akka.remote.WireFormats.RemoteEnvelope.getDefaultInstance()) return this; if (other.hasRecipient()) { mergeRecipient(other.getRecipient()); } @@ -1024,31 +1086,8 @@ public final class RemoteProtocol { if (other.hasSender()) { mergeSender(other.getSender()); } - if (metadataBuilder_ == null) { - if (!other.metadata_.isEmpty()) { - if (metadata_.isEmpty()) { - metadata_ = other.metadata_; - bitField0_ = (bitField0_ & ~0x00000008); - } else { - ensureMetadataIsMutable(); - metadata_.addAll(other.metadata_); - } - onChanged(); - } - } else { - if (!other.metadata_.isEmpty()) { - if (metadataBuilder_.isEmpty()) { - metadataBuilder_.dispose(); - metadataBuilder_ = null; - metadata_ = other.metadata_; - bitField0_ = (bitField0_ & ~0x00000008); - metadataBuilder_ = - com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? - getMetadataFieldBuilder() : null; - } else { - metadataBuilder_.addAllMessages(other.metadata_); - } - } + if (other.hasSeq()) { + setSeq(other.getSeq()); } this.mergeUnknownFields(other.getUnknownFields()); return this; @@ -1077,12 +1116,6 @@ public final class RemoteProtocol { return false; } } - for (int i = 0; i < getMetadataCount(); i++) { - if (!getMetadata(i).isInitialized()) { - - return false; - } - } return true; } @@ -1110,7 +1143,7 @@ public final class RemoteProtocol { break; } case 10: { - akka.remote.RemoteProtocol.ActorRefProtocol.Builder subBuilder = akka.remote.RemoteProtocol.ActorRefProtocol.newBuilder(); + akka.remote.WireFormats.ActorRefData.Builder subBuilder = akka.remote.WireFormats.ActorRefData.newBuilder(); if (hasRecipient()) { subBuilder.mergeFrom(getRecipient()); } @@ -1119,7 +1152,7 @@ public final class RemoteProtocol { break; } case 18: { - akka.remote.RemoteProtocol.MessageProtocol.Builder subBuilder = akka.remote.RemoteProtocol.MessageProtocol.newBuilder(); + akka.remote.WireFormats.SerializedMessage.Builder subBuilder = akka.remote.WireFormats.SerializedMessage.newBuilder(); if (hasMessage()) { subBuilder.mergeFrom(getMessage()); } @@ -1128,7 +1161,7 @@ public final class RemoteProtocol { break; } case 34: { - akka.remote.RemoteProtocol.ActorRefProtocol.Builder subBuilder = akka.remote.RemoteProtocol.ActorRefProtocol.newBuilder(); + akka.remote.WireFormats.ActorRefData.Builder subBuilder = akka.remote.WireFormats.ActorRefData.newBuilder(); if (hasSender()) { subBuilder.mergeFrom(getSender()); } @@ -1136,10 +1169,9 @@ public final class RemoteProtocol { setSender(subBuilder.buildPartial()); break; } - case 42: { - akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder subBuilder = akka.remote.RemoteProtocol.MetadataEntryProtocol.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addMetadata(subBuilder.buildPartial()); + case 41: { + bitField0_ |= 0x00000008; + seq_ = input.readFixed64(); break; } } @@ -1148,21 +1180,21 @@ public final class RemoteProtocol { private int bitField0_; - // required .ActorRefProtocol recipient = 1; - private akka.remote.RemoteProtocol.ActorRefProtocol recipient_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + // required .ActorRefData recipient = 1; + private akka.remote.WireFormats.ActorRefData recipient_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.ActorRefProtocol, akka.remote.RemoteProtocol.ActorRefProtocol.Builder, akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder> recipientBuilder_; + akka.remote.WireFormats.ActorRefData, akka.remote.WireFormats.ActorRefData.Builder, akka.remote.WireFormats.ActorRefDataOrBuilder> recipientBuilder_; public boolean hasRecipient() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public akka.remote.RemoteProtocol.ActorRefProtocol getRecipient() { + public akka.remote.WireFormats.ActorRefData getRecipient() { if (recipientBuilder_ == null) { return recipient_; } else { return recipientBuilder_.getMessage(); } } - public Builder setRecipient(akka.remote.RemoteProtocol.ActorRefProtocol value) { + public Builder setRecipient(akka.remote.WireFormats.ActorRefData value) { if (recipientBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -1176,7 +1208,7 @@ public final class RemoteProtocol { return this; } public Builder setRecipient( - akka.remote.RemoteProtocol.ActorRefProtocol.Builder builderForValue) { + akka.remote.WireFormats.ActorRefData.Builder builderForValue) { if (recipientBuilder_ == null) { recipient_ = builderForValue.build(); onChanged(); @@ -1186,12 +1218,12 @@ public final class RemoteProtocol { bitField0_ |= 0x00000001; return this; } - public Builder mergeRecipient(akka.remote.RemoteProtocol.ActorRefProtocol value) { + public Builder mergeRecipient(akka.remote.WireFormats.ActorRefData value) { if (recipientBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001) && - recipient_ != akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance()) { + recipient_ != akka.remote.WireFormats.ActorRefData.getDefaultInstance()) { recipient_ = - akka.remote.RemoteProtocol.ActorRefProtocol.newBuilder(recipient_).mergeFrom(value).buildPartial(); + akka.remote.WireFormats.ActorRefData.newBuilder(recipient_).mergeFrom(value).buildPartial(); } else { recipient_ = value; } @@ -1204,7 +1236,7 @@ public final class RemoteProtocol { } public Builder clearRecipient() { if (recipientBuilder_ == null) { - recipient_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + recipient_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); onChanged(); } else { recipientBuilder_.clear(); @@ -1212,12 +1244,12 @@ public final class RemoteProtocol { bitField0_ = (bitField0_ & ~0x00000001); return this; } - public akka.remote.RemoteProtocol.ActorRefProtocol.Builder getRecipientBuilder() { + public akka.remote.WireFormats.ActorRefData.Builder getRecipientBuilder() { bitField0_ |= 0x00000001; onChanged(); return getRecipientFieldBuilder().getBuilder(); } - public akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder getRecipientOrBuilder() { + public akka.remote.WireFormats.ActorRefDataOrBuilder getRecipientOrBuilder() { if (recipientBuilder_ != null) { return recipientBuilder_.getMessageOrBuilder(); } else { @@ -1225,11 +1257,11 @@ public final class RemoteProtocol { } } private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.ActorRefProtocol, akka.remote.RemoteProtocol.ActorRefProtocol.Builder, akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder> + akka.remote.WireFormats.ActorRefData, akka.remote.WireFormats.ActorRefData.Builder, akka.remote.WireFormats.ActorRefDataOrBuilder> getRecipientFieldBuilder() { if (recipientBuilder_ == null) { recipientBuilder_ = new com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.ActorRefProtocol, akka.remote.RemoteProtocol.ActorRefProtocol.Builder, akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder>( + akka.remote.WireFormats.ActorRefData, akka.remote.WireFormats.ActorRefData.Builder, akka.remote.WireFormats.ActorRefDataOrBuilder>( recipient_, getParentForChildren(), isClean()); @@ -1238,21 +1270,21 @@ public final class RemoteProtocol { return recipientBuilder_; } - // required .MessageProtocol message = 2; - private akka.remote.RemoteProtocol.MessageProtocol message_ = akka.remote.RemoteProtocol.MessageProtocol.getDefaultInstance(); + // required .SerializedMessage message = 2; + private akka.remote.WireFormats.SerializedMessage message_ = akka.remote.WireFormats.SerializedMessage.getDefaultInstance(); private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.MessageProtocol, akka.remote.RemoteProtocol.MessageProtocol.Builder, akka.remote.RemoteProtocol.MessageProtocolOrBuilder> messageBuilder_; + akka.remote.WireFormats.SerializedMessage, akka.remote.WireFormats.SerializedMessage.Builder, akka.remote.WireFormats.SerializedMessageOrBuilder> messageBuilder_; public boolean hasMessage() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public akka.remote.RemoteProtocol.MessageProtocol getMessage() { + public akka.remote.WireFormats.SerializedMessage getMessage() { if (messageBuilder_ == null) { return message_; } else { return messageBuilder_.getMessage(); } } - public Builder setMessage(akka.remote.RemoteProtocol.MessageProtocol value) { + public Builder setMessage(akka.remote.WireFormats.SerializedMessage value) { if (messageBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -1266,7 +1298,7 @@ public final class RemoteProtocol { return this; } public Builder setMessage( - akka.remote.RemoteProtocol.MessageProtocol.Builder builderForValue) { + akka.remote.WireFormats.SerializedMessage.Builder builderForValue) { if (messageBuilder_ == null) { message_ = builderForValue.build(); onChanged(); @@ -1276,12 +1308,12 @@ public final class RemoteProtocol { bitField0_ |= 0x00000002; return this; } - public Builder mergeMessage(akka.remote.RemoteProtocol.MessageProtocol value) { + public Builder mergeMessage(akka.remote.WireFormats.SerializedMessage value) { if (messageBuilder_ == null) { if (((bitField0_ & 0x00000002) == 0x00000002) && - message_ != akka.remote.RemoteProtocol.MessageProtocol.getDefaultInstance()) { + message_ != akka.remote.WireFormats.SerializedMessage.getDefaultInstance()) { message_ = - akka.remote.RemoteProtocol.MessageProtocol.newBuilder(message_).mergeFrom(value).buildPartial(); + akka.remote.WireFormats.SerializedMessage.newBuilder(message_).mergeFrom(value).buildPartial(); } else { message_ = value; } @@ -1294,7 +1326,7 @@ public final class RemoteProtocol { } public Builder clearMessage() { if (messageBuilder_ == null) { - message_ = akka.remote.RemoteProtocol.MessageProtocol.getDefaultInstance(); + message_ = akka.remote.WireFormats.SerializedMessage.getDefaultInstance(); onChanged(); } else { messageBuilder_.clear(); @@ -1302,12 +1334,12 @@ public final class RemoteProtocol { bitField0_ = (bitField0_ & ~0x00000002); return this; } - public akka.remote.RemoteProtocol.MessageProtocol.Builder getMessageBuilder() { + public akka.remote.WireFormats.SerializedMessage.Builder getMessageBuilder() { bitField0_ |= 0x00000002; onChanged(); return getMessageFieldBuilder().getBuilder(); } - public akka.remote.RemoteProtocol.MessageProtocolOrBuilder getMessageOrBuilder() { + public akka.remote.WireFormats.SerializedMessageOrBuilder getMessageOrBuilder() { if (messageBuilder_ != null) { return messageBuilder_.getMessageOrBuilder(); } else { @@ -1315,11 +1347,11 @@ public final class RemoteProtocol { } } private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.MessageProtocol, akka.remote.RemoteProtocol.MessageProtocol.Builder, akka.remote.RemoteProtocol.MessageProtocolOrBuilder> + akka.remote.WireFormats.SerializedMessage, akka.remote.WireFormats.SerializedMessage.Builder, akka.remote.WireFormats.SerializedMessageOrBuilder> getMessageFieldBuilder() { if (messageBuilder_ == null) { messageBuilder_ = new com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.MessageProtocol, akka.remote.RemoteProtocol.MessageProtocol.Builder, akka.remote.RemoteProtocol.MessageProtocolOrBuilder>( + akka.remote.WireFormats.SerializedMessage, akka.remote.WireFormats.SerializedMessage.Builder, akka.remote.WireFormats.SerializedMessageOrBuilder>( message_, getParentForChildren(), isClean()); @@ -1328,21 +1360,21 @@ public final class RemoteProtocol { return messageBuilder_; } - // optional .ActorRefProtocol sender = 4; - private akka.remote.RemoteProtocol.ActorRefProtocol sender_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + // optional .ActorRefData sender = 4; + private akka.remote.WireFormats.ActorRefData sender_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.ActorRefProtocol, akka.remote.RemoteProtocol.ActorRefProtocol.Builder, akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder> senderBuilder_; + akka.remote.WireFormats.ActorRefData, akka.remote.WireFormats.ActorRefData.Builder, akka.remote.WireFormats.ActorRefDataOrBuilder> senderBuilder_; public boolean hasSender() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public akka.remote.RemoteProtocol.ActorRefProtocol getSender() { + public akka.remote.WireFormats.ActorRefData getSender() { if (senderBuilder_ == null) { return sender_; } else { return senderBuilder_.getMessage(); } } - public Builder setSender(akka.remote.RemoteProtocol.ActorRefProtocol value) { + public Builder setSender(akka.remote.WireFormats.ActorRefData value) { if (senderBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -1356,7 +1388,7 @@ public final class RemoteProtocol { return this; } public Builder setSender( - akka.remote.RemoteProtocol.ActorRefProtocol.Builder builderForValue) { + akka.remote.WireFormats.ActorRefData.Builder builderForValue) { if (senderBuilder_ == null) { sender_ = builderForValue.build(); onChanged(); @@ -1366,12 +1398,12 @@ public final class RemoteProtocol { bitField0_ |= 0x00000004; return this; } - public Builder mergeSender(akka.remote.RemoteProtocol.ActorRefProtocol value) { + public Builder mergeSender(akka.remote.WireFormats.ActorRefData value) { if (senderBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004) && - sender_ != akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance()) { + sender_ != akka.remote.WireFormats.ActorRefData.getDefaultInstance()) { sender_ = - akka.remote.RemoteProtocol.ActorRefProtocol.newBuilder(sender_).mergeFrom(value).buildPartial(); + akka.remote.WireFormats.ActorRefData.newBuilder(sender_).mergeFrom(value).buildPartial(); } else { sender_ = value; } @@ -1384,7 +1416,7 @@ public final class RemoteProtocol { } public Builder clearSender() { if (senderBuilder_ == null) { - sender_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + sender_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); onChanged(); } else { senderBuilder_.clear(); @@ -1392,12 +1424,12 @@ public final class RemoteProtocol { bitField0_ = (bitField0_ & ~0x00000004); return this; } - public akka.remote.RemoteProtocol.ActorRefProtocol.Builder getSenderBuilder() { + public akka.remote.WireFormats.ActorRefData.Builder getSenderBuilder() { bitField0_ |= 0x00000004; onChanged(); return getSenderFieldBuilder().getBuilder(); } - public akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder getSenderOrBuilder() { + public akka.remote.WireFormats.ActorRefDataOrBuilder getSenderOrBuilder() { if (senderBuilder_ != null) { return senderBuilder_.getMessageOrBuilder(); } else { @@ -1405,11 +1437,11 @@ public final class RemoteProtocol { } } private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.ActorRefProtocol, akka.remote.RemoteProtocol.ActorRefProtocol.Builder, akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder> + akka.remote.WireFormats.ActorRefData, akka.remote.WireFormats.ActorRefData.Builder, akka.remote.WireFormats.ActorRefDataOrBuilder> getSenderFieldBuilder() { if (senderBuilder_ == null) { senderBuilder_ = new com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.ActorRefProtocol, akka.remote.RemoteProtocol.ActorRefProtocol.Builder, akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder>( + akka.remote.WireFormats.ActorRefData, akka.remote.WireFormats.ActorRefData.Builder, akka.remote.WireFormats.ActorRefDataOrBuilder>( sender_, getParentForChildren(), isClean()); @@ -1418,323 +1450,116 @@ public final class RemoteProtocol { return senderBuilder_; } - // repeated .MetadataEntryProtocol metadata = 5; - private java.util.List metadata_ = - java.util.Collections.emptyList(); - private void ensureMetadataIsMutable() { - if (!((bitField0_ & 0x00000008) == 0x00000008)) { - metadata_ = new java.util.ArrayList(metadata_); - bitField0_ |= 0x00000008; - } + // optional fixed64 seq = 5; + private long seq_ ; + public boolean hasSeq() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + public long getSeq() { + return seq_; + } + public Builder setSeq(long value) { + bitField0_ |= 0x00000008; + seq_ = value; + onChanged(); + return this; + } + public Builder clearSeq() { + bitField0_ = (bitField0_ & ~0x00000008); + seq_ = 0L; + onChanged(); + return this; } - private com.google.protobuf.RepeatedFieldBuilder< - akka.remote.RemoteProtocol.MetadataEntryProtocol, akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder, akka.remote.RemoteProtocol.MetadataEntryProtocolOrBuilder> metadataBuilder_; - - public java.util.List getMetadataList() { - if (metadataBuilder_ == null) { - return java.util.Collections.unmodifiableList(metadata_); - } else { - return metadataBuilder_.getMessageList(); - } - } - public int getMetadataCount() { - if (metadataBuilder_ == null) { - return metadata_.size(); - } else { - return metadataBuilder_.getCount(); - } - } - public akka.remote.RemoteProtocol.MetadataEntryProtocol getMetadata(int index) { - if (metadataBuilder_ == null) { - return metadata_.get(index); - } else { - return metadataBuilder_.getMessage(index); - } - } - public Builder setMetadata( - int index, akka.remote.RemoteProtocol.MetadataEntryProtocol value) { - if (metadataBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureMetadataIsMutable(); - metadata_.set(index, value); - onChanged(); - } else { - metadataBuilder_.setMessage(index, value); - } - return this; - } - public Builder setMetadata( - int index, akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder builderForValue) { - if (metadataBuilder_ == null) { - ensureMetadataIsMutable(); - metadata_.set(index, builderForValue.build()); - onChanged(); - } else { - metadataBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - public Builder addMetadata(akka.remote.RemoteProtocol.MetadataEntryProtocol value) { - if (metadataBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureMetadataIsMutable(); - metadata_.add(value); - onChanged(); - } else { - metadataBuilder_.addMessage(value); - } - return this; - } - public Builder addMetadata( - int index, akka.remote.RemoteProtocol.MetadataEntryProtocol value) { - if (metadataBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureMetadataIsMutable(); - metadata_.add(index, value); - onChanged(); - } else { - metadataBuilder_.addMessage(index, value); - } - return this; - } - public Builder addMetadata( - akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder builderForValue) { - if (metadataBuilder_ == null) { - ensureMetadataIsMutable(); - metadata_.add(builderForValue.build()); - onChanged(); - } else { - metadataBuilder_.addMessage(builderForValue.build()); - } - return this; - } - public Builder addMetadata( - int index, akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder builderForValue) { - if (metadataBuilder_ == null) { - ensureMetadataIsMutable(); - metadata_.add(index, builderForValue.build()); - onChanged(); - } else { - metadataBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - public Builder addAllMetadata( - java.lang.Iterable values) { - if (metadataBuilder_ == null) { - ensureMetadataIsMutable(); - super.addAll(values, metadata_); - onChanged(); - } else { - metadataBuilder_.addAllMessages(values); - } - return this; - } - public Builder clearMetadata() { - if (metadataBuilder_ == null) { - metadata_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000008); - onChanged(); - } else { - metadataBuilder_.clear(); - } - return this; - } - public Builder removeMetadata(int index) { - if (metadataBuilder_ == null) { - ensureMetadataIsMutable(); - metadata_.remove(index); - onChanged(); - } else { - metadataBuilder_.remove(index); - } - return this; - } - public akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder getMetadataBuilder( - int index) { - return getMetadataFieldBuilder().getBuilder(index); - } - public akka.remote.RemoteProtocol.MetadataEntryProtocolOrBuilder getMetadataOrBuilder( - int index) { - if (metadataBuilder_ == null) { - return metadata_.get(index); } else { - return metadataBuilder_.getMessageOrBuilder(index); - } - } - public java.util.List - getMetadataOrBuilderList() { - if (metadataBuilder_ != null) { - return metadataBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(metadata_); - } - } - public akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder addMetadataBuilder() { - return getMetadataFieldBuilder().addBuilder( - akka.remote.RemoteProtocol.MetadataEntryProtocol.getDefaultInstance()); - } - public akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder addMetadataBuilder( - int index) { - return getMetadataFieldBuilder().addBuilder( - index, akka.remote.RemoteProtocol.MetadataEntryProtocol.getDefaultInstance()); - } - public java.util.List - getMetadataBuilderList() { - return getMetadataFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilder< - akka.remote.RemoteProtocol.MetadataEntryProtocol, akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder, akka.remote.RemoteProtocol.MetadataEntryProtocolOrBuilder> - getMetadataFieldBuilder() { - if (metadataBuilder_ == null) { - metadataBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - akka.remote.RemoteProtocol.MetadataEntryProtocol, akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder, akka.remote.RemoteProtocol.MetadataEntryProtocolOrBuilder>( - metadata_, - ((bitField0_ & 0x00000008) == 0x00000008), - getParentForChildren(), - isClean()); - metadata_ = null; - } - return metadataBuilder_; - } - - // @@protoc_insertion_point(builder_scope:RemoteMessageProtocol) + // @@protoc_insertion_point(builder_scope:RemoteEnvelope) } static { - defaultInstance = new RemoteMessageProtocol(true); + defaultInstance = new RemoteEnvelope(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:RemoteMessageProtocol) + // @@protoc_insertion_point(class_scope:RemoteEnvelope) } - public interface RemoteControlProtocolOrBuilder + public interface AcknowledgementInfoOrBuilder extends com.google.protobuf.MessageOrBuilder { - // required .CommandType commandType = 1; - boolean hasCommandType(); - akka.remote.RemoteProtocol.CommandType getCommandType(); + // required fixed64 cumulativeAck = 1; + boolean hasCumulativeAck(); + long getCumulativeAck(); - // optional string cookie = 2; - boolean hasCookie(); - String getCookie(); - - // optional .AddressProtocol origin = 3; - boolean hasOrigin(); - akka.remote.RemoteProtocol.AddressProtocol getOrigin(); - akka.remote.RemoteProtocol.AddressProtocolOrBuilder getOriginOrBuilder(); + // repeated fixed64 nacks = 2; + java.util.List getNacksList(); + int getNacksCount(); + long getNacks(int index); } - public static final class RemoteControlProtocol extends + public static final class AcknowledgementInfo extends com.google.protobuf.GeneratedMessage - implements RemoteControlProtocolOrBuilder { - // Use RemoteControlProtocol.newBuilder() to construct. - private RemoteControlProtocol(Builder builder) { + implements AcknowledgementInfoOrBuilder { + // Use AcknowledgementInfo.newBuilder() to construct. + private AcknowledgementInfo(Builder builder) { super(builder); } - private RemoteControlProtocol(boolean noInit) {} + private AcknowledgementInfo(boolean noInit) {} - private static final RemoteControlProtocol defaultInstance; - public static RemoteControlProtocol getDefaultInstance() { + private static final AcknowledgementInfo defaultInstance; + public static AcknowledgementInfo getDefaultInstance() { return defaultInstance; } - public RemoteControlProtocol getDefaultInstanceForType() { + public AcknowledgementInfo getDefaultInstanceForType() { return defaultInstance; } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_RemoteControlProtocol_descriptor; + return akka.remote.WireFormats.internal_static_AcknowledgementInfo_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_RemoteControlProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_AcknowledgementInfo_fieldAccessorTable; } private int bitField0_; - // required .CommandType commandType = 1; - public static final int COMMANDTYPE_FIELD_NUMBER = 1; - private akka.remote.RemoteProtocol.CommandType commandType_; - public boolean hasCommandType() { + // required fixed64 cumulativeAck = 1; + public static final int CUMULATIVEACK_FIELD_NUMBER = 1; + private long cumulativeAck_; + public boolean hasCumulativeAck() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public akka.remote.RemoteProtocol.CommandType getCommandType() { - return commandType_; + public long getCumulativeAck() { + return cumulativeAck_; } - // optional string cookie = 2; - public static final int COOKIE_FIELD_NUMBER = 2; - private java.lang.Object cookie_; - public boolean hasCookie() { - return ((bitField0_ & 0x00000002) == 0x00000002); + // repeated fixed64 nacks = 2; + public static final int NACKS_FIELD_NUMBER = 2; + private java.util.List nacks_; + public java.util.List + getNacksList() { + return nacks_; } - public String getCookie() { - java.lang.Object ref = cookie_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - cookie_ = s; - } - return s; - } + public int getNacksCount() { + return nacks_.size(); } - private com.google.protobuf.ByteString getCookieBytes() { - java.lang.Object ref = cookie_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - cookie_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // optional .AddressProtocol origin = 3; - public static final int ORIGIN_FIELD_NUMBER = 3; - private akka.remote.RemoteProtocol.AddressProtocol origin_; - public boolean hasOrigin() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public akka.remote.RemoteProtocol.AddressProtocol getOrigin() { - return origin_; - } - public akka.remote.RemoteProtocol.AddressProtocolOrBuilder getOriginOrBuilder() { - return origin_; + public long getNacks(int index) { + return nacks_.get(index); } private void initFields() { - commandType_ = akka.remote.RemoteProtocol.CommandType.CONNECT; - cookie_ = ""; - origin_ = akka.remote.RemoteProtocol.AddressProtocol.getDefaultInstance(); + cumulativeAck_ = 0L; + nacks_ = java.util.Collections.emptyList();; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - if (!hasCommandType()) { + if (!hasCumulativeAck()) { memoizedIsInitialized = 0; return false; } - if (hasOrigin()) { - if (!getOrigin().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } memoizedIsInitialized = 1; return true; } @@ -1743,13 +1568,10 @@ public final class RemoteProtocol { throws java.io.IOException { getSerializedSize(); if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeEnum(1, commandType_.getNumber()); + output.writeFixed64(1, cumulativeAck_); } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, getCookieBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeMessage(3, origin_); + for (int i = 0; i < nacks_.size(); i++) { + output.writeFixed64(2, nacks_.get(i)); } getUnknownFields().writeTo(output); } @@ -1762,15 +1584,13 @@ public final class RemoteProtocol { size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, commandType_.getNumber()); + .computeFixed64Size(1, cumulativeAck_); } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, getCookieBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, origin_); + { + int dataSize = 0; + dataSize = 8 * getNacksList().size(); + size += dataSize; + size += 1 * getNacksList().size(); } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; @@ -1784,41 +1604,41 @@ public final class RemoteProtocol { return super.writeReplace(); } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseFrom( + public static akka.remote.WireFormats.AcknowledgementInfo parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseFrom( + public static akka.remote.WireFormats.AcknowledgementInfo parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseFrom(byte[] data) + public static akka.remote.WireFormats.AcknowledgementInfo parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseFrom( + public static akka.remote.WireFormats.AcknowledgementInfo parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseFrom(java.io.InputStream input) + public static akka.remote.WireFormats.AcknowledgementInfo parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseFrom( + public static akka.remote.WireFormats.AcknowledgementInfo parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseDelimitedFrom(java.io.InputStream input) + public static akka.remote.WireFormats.AcknowledgementInfo parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -1827,7 +1647,7 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseDelimitedFrom( + public static akka.remote.WireFormats.AcknowledgementInfo parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1838,12 +1658,12 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseFrom( + public static akka.remote.WireFormats.AcknowledgementInfo parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.RemoteControlProtocol parseFrom( + public static akka.remote.WireFormats.AcknowledgementInfo parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1853,7 +1673,7 @@ public final class RemoteProtocol { public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.RemoteControlProtocol prototype) { + public static Builder newBuilder(akka.remote.WireFormats.AcknowledgementInfo prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } @@ -1866,29 +1686,28 @@ public final class RemoteProtocol { } public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.RemoteControlProtocolOrBuilder { + implements akka.remote.WireFormats.AcknowledgementInfoOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_RemoteControlProtocol_descriptor; + return akka.remote.WireFormats.internal_static_AcknowledgementInfo_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_RemoteControlProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_AcknowledgementInfo_fieldAccessorTable; } - // Construct using akka.remote.RemoteProtocol.RemoteControlProtocol.newBuilder() + // Construct using akka.remote.WireFormats.AcknowledgementInfo.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - private Builder(BuilderParent parent) { + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getOriginFieldBuilder(); } } private static Builder create() { @@ -1897,16 +1716,10 @@ public final class RemoteProtocol { public Builder clear() { super.clear(); - commandType_ = akka.remote.RemoteProtocol.CommandType.CONNECT; + cumulativeAck_ = 0L; bitField0_ = (bitField0_ & ~0x00000001); - cookie_ = ""; + nacks_ = java.util.Collections.emptyList();; bitField0_ = (bitField0_ & ~0x00000002); - if (originBuilder_ == null) { - origin_ = akka.remote.RemoteProtocol.AddressProtocol.getDefaultInstance(); - } else { - originBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000004); return this; } @@ -1916,24 +1729,24 @@ public final class RemoteProtocol { public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return akka.remote.RemoteProtocol.RemoteControlProtocol.getDescriptor(); + return akka.remote.WireFormats.AcknowledgementInfo.getDescriptor(); } - public akka.remote.RemoteProtocol.RemoteControlProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.RemoteControlProtocol.getDefaultInstance(); + public akka.remote.WireFormats.AcknowledgementInfo getDefaultInstanceForType() { + return akka.remote.WireFormats.AcknowledgementInfo.getDefaultInstance(); } - public akka.remote.RemoteProtocol.RemoteControlProtocol build() { - akka.remote.RemoteProtocol.RemoteControlProtocol result = buildPartial(); + public akka.remote.WireFormats.AcknowledgementInfo build() { + akka.remote.WireFormats.AcknowledgementInfo result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private akka.remote.RemoteProtocol.RemoteControlProtocol buildParsed() + private akka.remote.WireFormats.AcknowledgementInfo buildParsed() throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.RemoteControlProtocol result = buildPartial(); + akka.remote.WireFormats.AcknowledgementInfo result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -1941,66 +1754,57 @@ public final class RemoteProtocol { return result; } - public akka.remote.RemoteProtocol.RemoteControlProtocol buildPartial() { - akka.remote.RemoteProtocol.RemoteControlProtocol result = new akka.remote.RemoteProtocol.RemoteControlProtocol(this); + public akka.remote.WireFormats.AcknowledgementInfo buildPartial() { + akka.remote.WireFormats.AcknowledgementInfo result = new akka.remote.WireFormats.AcknowledgementInfo(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { to_bitField0_ |= 0x00000001; } - result.commandType_ = commandType_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.cookie_ = cookie_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - if (originBuilder_ == null) { - result.origin_ = origin_; - } else { - result.origin_ = originBuilder_.build(); + result.cumulativeAck_ = cumulativeAck_; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + nacks_ = java.util.Collections.unmodifiableList(nacks_); + bitField0_ = (bitField0_ & ~0x00000002); } + result.nacks_ = nacks_; result.bitField0_ = to_bitField0_; onBuilt(); return result; } public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.RemoteControlProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.RemoteControlProtocol)other); + if (other instanceof akka.remote.WireFormats.AcknowledgementInfo) { + return mergeFrom((akka.remote.WireFormats.AcknowledgementInfo)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(akka.remote.RemoteProtocol.RemoteControlProtocol other) { - if (other == akka.remote.RemoteProtocol.RemoteControlProtocol.getDefaultInstance()) return this; - if (other.hasCommandType()) { - setCommandType(other.getCommandType()); + public Builder mergeFrom(akka.remote.WireFormats.AcknowledgementInfo other) { + if (other == akka.remote.WireFormats.AcknowledgementInfo.getDefaultInstance()) return this; + if (other.hasCumulativeAck()) { + setCumulativeAck(other.getCumulativeAck()); } - if (other.hasCookie()) { - setCookie(other.getCookie()); - } - if (other.hasOrigin()) { - mergeOrigin(other.getOrigin()); + if (!other.nacks_.isEmpty()) { + if (nacks_.isEmpty()) { + nacks_ = other.nacks_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureNacksIsMutable(); + nacks_.addAll(other.nacks_); + } + onChanged(); } this.mergeUnknownFields(other.getUnknownFields()); return this; } public final boolean isInitialized() { - if (!hasCommandType()) { + if (!hasCumulativeAck()) { return false; } - if (hasOrigin()) { - if (!getOrigin().isInitialized()) { - - return false; - } - } return true; } @@ -2027,29 +1831,23 @@ public final class RemoteProtocol { } break; } - case 8: { - int rawValue = input.readEnum(); - akka.remote.RemoteProtocol.CommandType value = akka.remote.RemoteProtocol.CommandType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - bitField0_ |= 0x00000001; - commandType_ = value; - } + case 9: { + bitField0_ |= 0x00000001; + cumulativeAck_ = input.readFixed64(); + break; + } + case 17: { + ensureNacksIsMutable(); + nacks_.add(input.readFixed64()); break; } case 18: { - bitField0_ |= 0x00000002; - cookie_ = input.readBytes(); - break; - } - case 26: { - akka.remote.RemoteProtocol.AddressProtocol.Builder subBuilder = akka.remote.RemoteProtocol.AddressProtocol.newBuilder(); - if (hasOrigin()) { - subBuilder.mergeFrom(getOrigin()); + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + while (input.getBytesUntilLimit() > 0) { + addNacks(input.readFixed64()); } - input.readMessage(subBuilder, extensionRegistry); - setOrigin(subBuilder.buildPartial()); + input.popLimit(limit); break; } } @@ -2058,200 +1856,116 @@ public final class RemoteProtocol { private int bitField0_; - // required .CommandType commandType = 1; - private akka.remote.RemoteProtocol.CommandType commandType_ = akka.remote.RemoteProtocol.CommandType.CONNECT; - public boolean hasCommandType() { + // required fixed64 cumulativeAck = 1; + private long cumulativeAck_ ; + public boolean hasCumulativeAck() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public akka.remote.RemoteProtocol.CommandType getCommandType() { - return commandType_; + public long getCumulativeAck() { + return cumulativeAck_; } - public Builder setCommandType(akka.remote.RemoteProtocol.CommandType value) { - if (value == null) { - throw new NullPointerException(); - } + public Builder setCumulativeAck(long value) { bitField0_ |= 0x00000001; - commandType_ = value; + cumulativeAck_ = value; onChanged(); return this; } - public Builder clearCommandType() { + public Builder clearCumulativeAck() { bitField0_ = (bitField0_ & ~0x00000001); - commandType_ = akka.remote.RemoteProtocol.CommandType.CONNECT; + cumulativeAck_ = 0L; onChanged(); return this; } - // optional string cookie = 2; - private java.lang.Object cookie_ = ""; - public boolean hasCookie() { - return ((bitField0_ & 0x00000002) == 0x00000002); + // repeated fixed64 nacks = 2; + private java.util.List nacks_ = java.util.Collections.emptyList();; + private void ensureNacksIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + nacks_ = new java.util.ArrayList(nacks_); + bitField0_ |= 0x00000002; + } } - public String getCookie() { - java.lang.Object ref = cookie_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - cookie_ = s; - return s; - } else { - return (String) ref; - } + public java.util.List + getNacksList() { + return java.util.Collections.unmodifiableList(nacks_); } - public Builder setCookie(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - cookie_ = value; + public int getNacksCount() { + return nacks_.size(); + } + public long getNacks(int index) { + return nacks_.get(index); + } + public Builder setNacks( + int index, long value) { + ensureNacksIsMutable(); + nacks_.set(index, value); onChanged(); return this; } - public Builder clearCookie() { + public Builder addNacks(long value) { + ensureNacksIsMutable(); + nacks_.add(value); + onChanged(); + return this; + } + public Builder addAllNacks( + java.lang.Iterable values) { + ensureNacksIsMutable(); + super.addAll(values, nacks_); + onChanged(); + return this; + } + public Builder clearNacks() { + nacks_ = java.util.Collections.emptyList();; bitField0_ = (bitField0_ & ~0x00000002); - cookie_ = getDefaultInstance().getCookie(); onChanged(); return this; } - void setCookie(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000002; - cookie_ = value; - onChanged(); - } - // optional .AddressProtocol origin = 3; - private akka.remote.RemoteProtocol.AddressProtocol origin_ = akka.remote.RemoteProtocol.AddressProtocol.getDefaultInstance(); - private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.AddressProtocol, akka.remote.RemoteProtocol.AddressProtocol.Builder, akka.remote.RemoteProtocol.AddressProtocolOrBuilder> originBuilder_; - public boolean hasOrigin() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public akka.remote.RemoteProtocol.AddressProtocol getOrigin() { - if (originBuilder_ == null) { - return origin_; - } else { - return originBuilder_.getMessage(); - } - } - public Builder setOrigin(akka.remote.RemoteProtocol.AddressProtocol value) { - if (originBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - origin_ = value; - onChanged(); - } else { - originBuilder_.setMessage(value); - } - bitField0_ |= 0x00000004; - return this; - } - public Builder setOrigin( - akka.remote.RemoteProtocol.AddressProtocol.Builder builderForValue) { - if (originBuilder_ == null) { - origin_ = builderForValue.build(); - onChanged(); - } else { - originBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000004; - return this; - } - public Builder mergeOrigin(akka.remote.RemoteProtocol.AddressProtocol value) { - if (originBuilder_ == null) { - if (((bitField0_ & 0x00000004) == 0x00000004) && - origin_ != akka.remote.RemoteProtocol.AddressProtocol.getDefaultInstance()) { - origin_ = - akka.remote.RemoteProtocol.AddressProtocol.newBuilder(origin_).mergeFrom(value).buildPartial(); - } else { - origin_ = value; - } - onChanged(); - } else { - originBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000004; - return this; - } - public Builder clearOrigin() { - if (originBuilder_ == null) { - origin_ = akka.remote.RemoteProtocol.AddressProtocol.getDefaultInstance(); - onChanged(); - } else { - originBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - public akka.remote.RemoteProtocol.AddressProtocol.Builder getOriginBuilder() { - bitField0_ |= 0x00000004; - onChanged(); - return getOriginFieldBuilder().getBuilder(); - } - public akka.remote.RemoteProtocol.AddressProtocolOrBuilder getOriginOrBuilder() { - if (originBuilder_ != null) { - return originBuilder_.getMessageOrBuilder(); - } else { - return origin_; - } - } - private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.AddressProtocol, akka.remote.RemoteProtocol.AddressProtocol.Builder, akka.remote.RemoteProtocol.AddressProtocolOrBuilder> - getOriginFieldBuilder() { - if (originBuilder_ == null) { - originBuilder_ = new com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.AddressProtocol, akka.remote.RemoteProtocol.AddressProtocol.Builder, akka.remote.RemoteProtocol.AddressProtocolOrBuilder>( - origin_, - getParentForChildren(), - isClean()); - origin_ = null; - } - return originBuilder_; - } - - // @@protoc_insertion_point(builder_scope:RemoteControlProtocol) + // @@protoc_insertion_point(builder_scope:AcknowledgementInfo) } static { - defaultInstance = new RemoteControlProtocol(true); + defaultInstance = new AcknowledgementInfo(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:RemoteControlProtocol) + // @@protoc_insertion_point(class_scope:AcknowledgementInfo) } - public interface ActorRefProtocolOrBuilder + public interface ActorRefDataOrBuilder extends com.google.protobuf.MessageOrBuilder { // required string path = 1; boolean hasPath(); String getPath(); } - public static final class ActorRefProtocol extends + public static final class ActorRefData extends com.google.protobuf.GeneratedMessage - implements ActorRefProtocolOrBuilder { - // Use ActorRefProtocol.newBuilder() to construct. - private ActorRefProtocol(Builder builder) { + implements ActorRefDataOrBuilder { + // Use ActorRefData.newBuilder() to construct. + private ActorRefData(Builder builder) { super(builder); } - private ActorRefProtocol(boolean noInit) {} + private ActorRefData(boolean noInit) {} - private static final ActorRefProtocol defaultInstance; - public static ActorRefProtocol getDefaultInstance() { + private static final ActorRefData defaultInstance; + public static ActorRefData getDefaultInstance() { return defaultInstance; } - public ActorRefProtocol getDefaultInstanceForType() { + public ActorRefData getDefaultInstanceForType() { return defaultInstance; } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_ActorRefProtocol_descriptor; + return akka.remote.WireFormats.internal_static_ActorRefData_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_ActorRefProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_ActorRefData_fieldAccessorTable; } private int bitField0_; @@ -2334,41 +2048,41 @@ public final class RemoteProtocol { return super.writeReplace(); } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseFrom( + public static akka.remote.WireFormats.ActorRefData parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseFrom( + public static akka.remote.WireFormats.ActorRefData parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseFrom(byte[] data) + public static akka.remote.WireFormats.ActorRefData parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseFrom( + public static akka.remote.WireFormats.ActorRefData parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseFrom(java.io.InputStream input) + public static akka.remote.WireFormats.ActorRefData parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseFrom( + public static akka.remote.WireFormats.ActorRefData parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseDelimitedFrom(java.io.InputStream input) + public static akka.remote.WireFormats.ActorRefData parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -2377,7 +2091,7 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseDelimitedFrom( + public static akka.remote.WireFormats.ActorRefData parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2388,12 +2102,12 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseFrom( + public static akka.remote.WireFormats.ActorRefData parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.ActorRefProtocol parseFrom( + public static akka.remote.WireFormats.ActorRefData parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2403,7 +2117,7 @@ public final class RemoteProtocol { public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.ActorRefProtocol prototype) { + public static Builder newBuilder(akka.remote.WireFormats.ActorRefData prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } @@ -2416,23 +2130,23 @@ public final class RemoteProtocol { } public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder { + implements akka.remote.WireFormats.ActorRefDataOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_ActorRefProtocol_descriptor; + return akka.remote.WireFormats.internal_static_ActorRefData_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_ActorRefProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_ActorRefData_fieldAccessorTable; } - // Construct using akka.remote.RemoteProtocol.ActorRefProtocol.newBuilder() + // Construct using akka.remote.WireFormats.ActorRefData.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - private Builder(BuilderParent parent) { + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } @@ -2457,24 +2171,24 @@ public final class RemoteProtocol { public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return akka.remote.RemoteProtocol.ActorRefProtocol.getDescriptor(); + return akka.remote.WireFormats.ActorRefData.getDescriptor(); } - public akka.remote.RemoteProtocol.ActorRefProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + public akka.remote.WireFormats.ActorRefData getDefaultInstanceForType() { + return akka.remote.WireFormats.ActorRefData.getDefaultInstance(); } - public akka.remote.RemoteProtocol.ActorRefProtocol build() { - akka.remote.RemoteProtocol.ActorRefProtocol result = buildPartial(); + public akka.remote.WireFormats.ActorRefData build() { + akka.remote.WireFormats.ActorRefData result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private akka.remote.RemoteProtocol.ActorRefProtocol buildParsed() + private akka.remote.WireFormats.ActorRefData buildParsed() throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.ActorRefProtocol result = buildPartial(); + akka.remote.WireFormats.ActorRefData result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -2482,8 +2196,8 @@ public final class RemoteProtocol { return result; } - public akka.remote.RemoteProtocol.ActorRefProtocol buildPartial() { - akka.remote.RemoteProtocol.ActorRefProtocol result = new akka.remote.RemoteProtocol.ActorRefProtocol(this); + public akka.remote.WireFormats.ActorRefData buildPartial() { + akka.remote.WireFormats.ActorRefData result = new akka.remote.WireFormats.ActorRefData(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -2496,16 +2210,16 @@ public final class RemoteProtocol { } public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.ActorRefProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.ActorRefProtocol)other); + if (other instanceof akka.remote.WireFormats.ActorRefData) { + return mergeFrom((akka.remote.WireFormats.ActorRefData)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(akka.remote.RemoteProtocol.ActorRefProtocol other) { - if (other == akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance()) return this; + public Builder mergeFrom(akka.remote.WireFormats.ActorRefData other) { + if (other == akka.remote.WireFormats.ActorRefData.getDefaultInstance()) return this; if (other.hasPath()) { setPath(other.getPath()); } @@ -2591,18 +2305,18 @@ public final class RemoteProtocol { onChanged(); } - // @@protoc_insertion_point(builder_scope:ActorRefProtocol) + // @@protoc_insertion_point(builder_scope:ActorRefData) } static { - defaultInstance = new ActorRefProtocol(true); + defaultInstance = new ActorRefData(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:ActorRefProtocol) + // @@protoc_insertion_point(class_scope:ActorRefData) } - public interface MessageProtocolOrBuilder + public interface SerializedMessageOrBuilder extends com.google.protobuf.MessageOrBuilder { // required bytes message = 1; @@ -2617,32 +2331,32 @@ public final class RemoteProtocol { boolean hasMessageManifest(); com.google.protobuf.ByteString getMessageManifest(); } - public static final class MessageProtocol extends + public static final class SerializedMessage extends com.google.protobuf.GeneratedMessage - implements MessageProtocolOrBuilder { - // Use MessageProtocol.newBuilder() to construct. - private MessageProtocol(Builder builder) { + implements SerializedMessageOrBuilder { + // Use SerializedMessage.newBuilder() to construct. + private SerializedMessage(Builder builder) { super(builder); } - private MessageProtocol(boolean noInit) {} + private SerializedMessage(boolean noInit) {} - private static final MessageProtocol defaultInstance; - public static MessageProtocol getDefaultInstance() { + private static final SerializedMessage defaultInstance; + public static SerializedMessage getDefaultInstance() { return defaultInstance; } - public MessageProtocol getDefaultInstanceForType() { + public SerializedMessage getDefaultInstanceForType() { return defaultInstance; } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_MessageProtocol_descriptor; + return akka.remote.WireFormats.internal_static_SerializedMessage_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_MessageProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_SerializedMessage_fieldAccessorTable; } private int bitField0_; @@ -2743,41 +2457,41 @@ public final class RemoteProtocol { return super.writeReplace(); } - public static akka.remote.RemoteProtocol.MessageProtocol parseFrom( + public static akka.remote.WireFormats.SerializedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.MessageProtocol parseFrom( + public static akka.remote.WireFormats.SerializedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.MessageProtocol parseFrom(byte[] data) + public static akka.remote.WireFormats.SerializedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.MessageProtocol parseFrom( + public static akka.remote.WireFormats.SerializedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.MessageProtocol parseFrom(java.io.InputStream input) + public static akka.remote.WireFormats.SerializedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.MessageProtocol parseFrom( + public static akka.remote.WireFormats.SerializedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.MessageProtocol parseDelimitedFrom(java.io.InputStream input) + public static akka.remote.WireFormats.SerializedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -2786,7 +2500,7 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.MessageProtocol parseDelimitedFrom( + public static akka.remote.WireFormats.SerializedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2797,12 +2511,12 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.MessageProtocol parseFrom( + public static akka.remote.WireFormats.SerializedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.MessageProtocol parseFrom( + public static akka.remote.WireFormats.SerializedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2812,7 +2526,7 @@ public final class RemoteProtocol { public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.MessageProtocol prototype) { + public static Builder newBuilder(akka.remote.WireFormats.SerializedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } @@ -2825,23 +2539,23 @@ public final class RemoteProtocol { } public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.MessageProtocolOrBuilder { + implements akka.remote.WireFormats.SerializedMessageOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_MessageProtocol_descriptor; + return akka.remote.WireFormats.internal_static_SerializedMessage_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_MessageProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_SerializedMessage_fieldAccessorTable; } - // Construct using akka.remote.RemoteProtocol.MessageProtocol.newBuilder() + // Construct using akka.remote.WireFormats.SerializedMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - private Builder(BuilderParent parent) { + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } @@ -2870,24 +2584,24 @@ public final class RemoteProtocol { public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return akka.remote.RemoteProtocol.MessageProtocol.getDescriptor(); + return akka.remote.WireFormats.SerializedMessage.getDescriptor(); } - public akka.remote.RemoteProtocol.MessageProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.MessageProtocol.getDefaultInstance(); + public akka.remote.WireFormats.SerializedMessage getDefaultInstanceForType() { + return akka.remote.WireFormats.SerializedMessage.getDefaultInstance(); } - public akka.remote.RemoteProtocol.MessageProtocol build() { - akka.remote.RemoteProtocol.MessageProtocol result = buildPartial(); + public akka.remote.WireFormats.SerializedMessage build() { + akka.remote.WireFormats.SerializedMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private akka.remote.RemoteProtocol.MessageProtocol buildParsed() + private akka.remote.WireFormats.SerializedMessage buildParsed() throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.MessageProtocol result = buildPartial(); + akka.remote.WireFormats.SerializedMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -2895,8 +2609,8 @@ public final class RemoteProtocol { return result; } - public akka.remote.RemoteProtocol.MessageProtocol buildPartial() { - akka.remote.RemoteProtocol.MessageProtocol result = new akka.remote.RemoteProtocol.MessageProtocol(this); + public akka.remote.WireFormats.SerializedMessage buildPartial() { + akka.remote.WireFormats.SerializedMessage result = new akka.remote.WireFormats.SerializedMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -2917,16 +2631,16 @@ public final class RemoteProtocol { } public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.MessageProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.MessageProtocol)other); + if (other instanceof akka.remote.WireFormats.SerializedMessage) { + return mergeFrom((akka.remote.WireFormats.SerializedMessage)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(akka.remote.RemoteProtocol.MessageProtocol other) { - if (other == akka.remote.RemoteProtocol.MessageProtocol.getDefaultInstance()) return this; + public Builder mergeFrom(akka.remote.WireFormats.SerializedMessage other) { + if (other == akka.remote.WireFormats.SerializedMessage.getDefaultInstance()) return this; if (other.hasMessage()) { setMessage(other.getMessage()); } @@ -3065,1186 +2779,91 @@ public final class RemoteProtocol { return this; } - // @@protoc_insertion_point(builder_scope:MessageProtocol) + // @@protoc_insertion_point(builder_scope:SerializedMessage) } static { - defaultInstance = new MessageProtocol(true); + defaultInstance = new SerializedMessage(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:MessageProtocol) + // @@protoc_insertion_point(class_scope:SerializedMessage) } - public interface MetadataEntryProtocolOrBuilder + public interface DaemonMsgCreateDataOrBuilder extends com.google.protobuf.MessageOrBuilder { - // required string key = 1; - boolean hasKey(); - String getKey(); - - // required bytes value = 2; - boolean hasValue(); - com.google.protobuf.ByteString getValue(); - } - public static final class MetadataEntryProtocol extends - com.google.protobuf.GeneratedMessage - implements MetadataEntryProtocolOrBuilder { - // Use MetadataEntryProtocol.newBuilder() to construct. - private MetadataEntryProtocol(Builder builder) { - super(builder); - } - private MetadataEntryProtocol(boolean noInit) {} - - private static final MetadataEntryProtocol defaultInstance; - public static MetadataEntryProtocol getDefaultInstance() { - return defaultInstance; - } - - public MetadataEntryProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_MetadataEntryProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_MetadataEntryProtocol_fieldAccessorTable; - } - - private int bitField0_; - // required string key = 1; - public static final int KEY_FIELD_NUMBER = 1; - private java.lang.Object key_; - public boolean hasKey() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getKey() { - java.lang.Object ref = key_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - key_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getKeyBytes() { - java.lang.Object ref = key_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - key_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required bytes value = 2; - public static final int VALUE_FIELD_NUMBER = 2; - private com.google.protobuf.ByteString value_; - public boolean hasValue() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public com.google.protobuf.ByteString getValue() { - return value_; - } - - private void initFields() { - key_ = ""; - value_ = com.google.protobuf.ByteString.EMPTY; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasKey()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasValue()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, getKeyBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, value_); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, getKeyBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, value_); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static akka.remote.RemoteProtocol.MetadataEntryProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.MetadataEntryProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.MetadataEntryProtocolOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_MetadataEntryProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_MetadataEntryProtocol_fieldAccessorTable; - } - - // Construct using akka.remote.RemoteProtocol.MetadataEntryProtocol.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder(BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - key_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - value_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return akka.remote.RemoteProtocol.MetadataEntryProtocol.getDescriptor(); - } - - public akka.remote.RemoteProtocol.MetadataEntryProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.MetadataEntryProtocol.getDefaultInstance(); - } - - public akka.remote.RemoteProtocol.MetadataEntryProtocol build() { - akka.remote.RemoteProtocol.MetadataEntryProtocol result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private akka.remote.RemoteProtocol.MetadataEntryProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.MetadataEntryProtocol result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public akka.remote.RemoteProtocol.MetadataEntryProtocol buildPartial() { - akka.remote.RemoteProtocol.MetadataEntryProtocol result = new akka.remote.RemoteProtocol.MetadataEntryProtocol(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.key_ = key_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.value_ = value_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.MetadataEntryProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.MetadataEntryProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(akka.remote.RemoteProtocol.MetadataEntryProtocol other) { - if (other == akka.remote.RemoteProtocol.MetadataEntryProtocol.getDefaultInstance()) return this; - if (other.hasKey()) { - setKey(other.getKey()); - } - if (other.hasValue()) { - setValue(other.getValue()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasKey()) { - - return false; - } - if (!hasValue()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - key_ = input.readBytes(); - break; - } - case 18: { - bitField0_ |= 0x00000002; - value_ = input.readBytes(); - break; - } - } - } - } - - private int bitField0_; - - // required string key = 1; - private java.lang.Object key_ = ""; - public boolean hasKey() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getKey() { - java.lang.Object ref = key_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - key_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setKey(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - key_ = value; - onChanged(); - return this; - } - public Builder clearKey() { - bitField0_ = (bitField0_ & ~0x00000001); - key_ = getDefaultInstance().getKey(); - onChanged(); - return this; - } - void setKey(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; - key_ = value; - onChanged(); - } - - // required bytes value = 2; - private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasValue() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public com.google.protobuf.ByteString getValue() { - return value_; - } - public Builder setValue(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - value_ = value; - onChanged(); - return this; - } - public Builder clearValue() { - bitField0_ = (bitField0_ & ~0x00000002); - value_ = getDefaultInstance().getValue(); - onChanged(); - return this; - } - - // @@protoc_insertion_point(builder_scope:MetadataEntryProtocol) - } - - static { - defaultInstance = new MetadataEntryProtocol(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:MetadataEntryProtocol) - } - - public interface AddressProtocolOrBuilder - extends com.google.protobuf.MessageOrBuilder { - - // required string system = 1; - boolean hasSystem(); - String getSystem(); - - // required string hostname = 2; - boolean hasHostname(); - String getHostname(); - - // required uint32 port = 3; - boolean hasPort(); - int getPort(); - - // optional string protocol = 4; - boolean hasProtocol(); - String getProtocol(); - } - public static final class AddressProtocol extends - com.google.protobuf.GeneratedMessage - implements AddressProtocolOrBuilder { - // Use AddressProtocol.newBuilder() to construct. - private AddressProtocol(Builder builder) { - super(builder); - } - private AddressProtocol(boolean noInit) {} - - private static final AddressProtocol defaultInstance; - public static AddressProtocol getDefaultInstance() { - return defaultInstance; - } - - public AddressProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_AddressProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_AddressProtocol_fieldAccessorTable; - } - - private int bitField0_; - // required string system = 1; - public static final int SYSTEM_FIELD_NUMBER = 1; - private java.lang.Object system_; - public boolean hasSystem() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getSystem() { - java.lang.Object ref = system_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - system_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getSystemBytes() { - java.lang.Object ref = system_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - system_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required string hostname = 2; - public static final int HOSTNAME_FIELD_NUMBER = 2; - private java.lang.Object hostname_; - public boolean hasHostname() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public String getHostname() { - java.lang.Object ref = hostname_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - hostname_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getHostnameBytes() { - java.lang.Object ref = hostname_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - hostname_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required uint32 port = 3; - public static final int PORT_FIELD_NUMBER = 3; - private int port_; - public boolean hasPort() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getPort() { - return port_; - } - - // optional string protocol = 4; - public static final int PROTOCOL_FIELD_NUMBER = 4; - private java.lang.Object protocol_; - public boolean hasProtocol() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public String getProtocol() { - java.lang.Object ref = protocol_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - protocol_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getProtocolBytes() { - java.lang.Object ref = protocol_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - protocol_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private void initFields() { - system_ = ""; - hostname_ = ""; - port_ = 0; - protocol_ = ""; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasSystem()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasHostname()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPort()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, getSystemBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, getHostnameBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt32(3, port_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeBytes(4, getProtocolBytes()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, getSystemBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, getHostnameBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, port_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(4, getProtocolBytes()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static akka.remote.RemoteProtocol.AddressProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static akka.remote.RemoteProtocol.AddressProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static akka.remote.RemoteProtocol.AddressProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static akka.remote.RemoteProtocol.AddressProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static akka.remote.RemoteProtocol.AddressProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static akka.remote.RemoteProtocol.AddressProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static akka.remote.RemoteProtocol.AddressProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static akka.remote.RemoteProtocol.AddressProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static akka.remote.RemoteProtocol.AddressProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static akka.remote.RemoteProtocol.AddressProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.AddressProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.AddressProtocolOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_AddressProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_AddressProtocol_fieldAccessorTable; - } - - // Construct using akka.remote.RemoteProtocol.AddressProtocol.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder(BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - system_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - hostname_ = ""; - bitField0_ = (bitField0_ & ~0x00000002); - port_ = 0; - bitField0_ = (bitField0_ & ~0x00000004); - protocol_ = ""; - bitField0_ = (bitField0_ & ~0x00000008); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return akka.remote.RemoteProtocol.AddressProtocol.getDescriptor(); - } - - public akka.remote.RemoteProtocol.AddressProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.AddressProtocol.getDefaultInstance(); - } - - public akka.remote.RemoteProtocol.AddressProtocol build() { - akka.remote.RemoteProtocol.AddressProtocol result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private akka.remote.RemoteProtocol.AddressProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.AddressProtocol result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public akka.remote.RemoteProtocol.AddressProtocol buildPartial() { - akka.remote.RemoteProtocol.AddressProtocol result = new akka.remote.RemoteProtocol.AddressProtocol(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.system_ = system_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.hostname_ = hostname_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.port_ = port_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.protocol_ = protocol_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.AddressProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.AddressProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(akka.remote.RemoteProtocol.AddressProtocol other) { - if (other == akka.remote.RemoteProtocol.AddressProtocol.getDefaultInstance()) return this; - if (other.hasSystem()) { - setSystem(other.getSystem()); - } - if (other.hasHostname()) { - setHostname(other.getHostname()); - } - if (other.hasPort()) { - setPort(other.getPort()); - } - if (other.hasProtocol()) { - setProtocol(other.getProtocol()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasSystem()) { - - return false; - } - if (!hasHostname()) { - - return false; - } - if (!hasPort()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - system_ = input.readBytes(); - break; - } - case 18: { - bitField0_ |= 0x00000002; - hostname_ = input.readBytes(); - break; - } - case 24: { - bitField0_ |= 0x00000004; - port_ = input.readUInt32(); - break; - } - case 34: { - bitField0_ |= 0x00000008; - protocol_ = input.readBytes(); - break; - } - } - } - } - - private int bitField0_; - - // required string system = 1; - private java.lang.Object system_ = ""; - public boolean hasSystem() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getSystem() { - java.lang.Object ref = system_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - system_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setSystem(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - system_ = value; - onChanged(); - return this; - } - public Builder clearSystem() { - bitField0_ = (bitField0_ & ~0x00000001); - system_ = getDefaultInstance().getSystem(); - onChanged(); - return this; - } - void setSystem(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; - system_ = value; - onChanged(); - } - - // required string hostname = 2; - private java.lang.Object hostname_ = ""; - public boolean hasHostname() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public String getHostname() { - java.lang.Object ref = hostname_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - hostname_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setHostname(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - hostname_ = value; - onChanged(); - return this; - } - public Builder clearHostname() { - bitField0_ = (bitField0_ & ~0x00000002); - hostname_ = getDefaultInstance().getHostname(); - onChanged(); - return this; - } - void setHostname(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000002; - hostname_ = value; - onChanged(); - } - - // required uint32 port = 3; - private int port_ ; - public boolean hasPort() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getPort() { - return port_; - } - public Builder setPort(int value) { - bitField0_ |= 0x00000004; - port_ = value; - onChanged(); - return this; - } - public Builder clearPort() { - bitField0_ = (bitField0_ & ~0x00000004); - port_ = 0; - onChanged(); - return this; - } - - // optional string protocol = 4; - private java.lang.Object protocol_ = ""; - public boolean hasProtocol() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public String getProtocol() { - java.lang.Object ref = protocol_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - protocol_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setProtocol(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000008; - protocol_ = value; - onChanged(); - return this; - } - public Builder clearProtocol() { - bitField0_ = (bitField0_ & ~0x00000008); - protocol_ = getDefaultInstance().getProtocol(); - onChanged(); - return this; - } - void setProtocol(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000008; - protocol_ = value; - onChanged(); - } - - // @@protoc_insertion_point(builder_scope:AddressProtocol) - } - - static { - defaultInstance = new AddressProtocol(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:AddressProtocol) - } - - public interface DaemonMsgCreateProtocolOrBuilder - extends com.google.protobuf.MessageOrBuilder { - - // required .PropsProtocol props = 1; + // required .PropsData props = 1; boolean hasProps(); - akka.remote.RemoteProtocol.PropsProtocol getProps(); - akka.remote.RemoteProtocol.PropsProtocolOrBuilder getPropsOrBuilder(); + akka.remote.WireFormats.PropsData getProps(); + akka.remote.WireFormats.PropsDataOrBuilder getPropsOrBuilder(); - // required .DeployProtocol deploy = 2; + // required .DeployData deploy = 2; boolean hasDeploy(); - akka.remote.RemoteProtocol.DeployProtocol getDeploy(); - akka.remote.RemoteProtocol.DeployProtocolOrBuilder getDeployOrBuilder(); + akka.remote.WireFormats.DeployData getDeploy(); + akka.remote.WireFormats.DeployDataOrBuilder getDeployOrBuilder(); // required string path = 3; boolean hasPath(); String getPath(); - // required .ActorRefProtocol supervisor = 4; + // required .ActorRefData supervisor = 4; boolean hasSupervisor(); - akka.remote.RemoteProtocol.ActorRefProtocol getSupervisor(); - akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder getSupervisorOrBuilder(); + akka.remote.WireFormats.ActorRefData getSupervisor(); + akka.remote.WireFormats.ActorRefDataOrBuilder getSupervisorOrBuilder(); } - public static final class DaemonMsgCreateProtocol extends + public static final class DaemonMsgCreateData extends com.google.protobuf.GeneratedMessage - implements DaemonMsgCreateProtocolOrBuilder { - // Use DaemonMsgCreateProtocol.newBuilder() to construct. - private DaemonMsgCreateProtocol(Builder builder) { + implements DaemonMsgCreateDataOrBuilder { + // Use DaemonMsgCreateData.newBuilder() to construct. + private DaemonMsgCreateData(Builder builder) { super(builder); } - private DaemonMsgCreateProtocol(boolean noInit) {} + private DaemonMsgCreateData(boolean noInit) {} - private static final DaemonMsgCreateProtocol defaultInstance; - public static DaemonMsgCreateProtocol getDefaultInstance() { + private static final DaemonMsgCreateData defaultInstance; + public static DaemonMsgCreateData getDefaultInstance() { return defaultInstance; } - public DaemonMsgCreateProtocol getDefaultInstanceForType() { + public DaemonMsgCreateData getDefaultInstanceForType() { return defaultInstance; } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_DaemonMsgCreateProtocol_descriptor; + return akka.remote.WireFormats.internal_static_DaemonMsgCreateData_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_DaemonMsgCreateProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_DaemonMsgCreateData_fieldAccessorTable; } private int bitField0_; - // required .PropsProtocol props = 1; + // required .PropsData props = 1; public static final int PROPS_FIELD_NUMBER = 1; - private akka.remote.RemoteProtocol.PropsProtocol props_; + private akka.remote.WireFormats.PropsData props_; public boolean hasProps() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public akka.remote.RemoteProtocol.PropsProtocol getProps() { + public akka.remote.WireFormats.PropsData getProps() { return props_; } - public akka.remote.RemoteProtocol.PropsProtocolOrBuilder getPropsOrBuilder() { + public akka.remote.WireFormats.PropsDataOrBuilder getPropsOrBuilder() { return props_; } - // required .DeployProtocol deploy = 2; + // required .DeployData deploy = 2; public static final int DEPLOY_FIELD_NUMBER = 2; - private akka.remote.RemoteProtocol.DeployProtocol deploy_; + private akka.remote.WireFormats.DeployData deploy_; public boolean hasDeploy() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public akka.remote.RemoteProtocol.DeployProtocol getDeploy() { + public akka.remote.WireFormats.DeployData getDeploy() { return deploy_; } - public akka.remote.RemoteProtocol.DeployProtocolOrBuilder getDeployOrBuilder() { + public akka.remote.WireFormats.DeployDataOrBuilder getDeployOrBuilder() { return deploy_; } @@ -4280,24 +2899,24 @@ public final class RemoteProtocol { } } - // required .ActorRefProtocol supervisor = 4; + // required .ActorRefData supervisor = 4; public static final int SUPERVISOR_FIELD_NUMBER = 4; - private akka.remote.RemoteProtocol.ActorRefProtocol supervisor_; + private akka.remote.WireFormats.ActorRefData supervisor_; public boolean hasSupervisor() { return ((bitField0_ & 0x00000008) == 0x00000008); } - public akka.remote.RemoteProtocol.ActorRefProtocol getSupervisor() { + public akka.remote.WireFormats.ActorRefData getSupervisor() { return supervisor_; } - public akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder getSupervisorOrBuilder() { + public akka.remote.WireFormats.ActorRefDataOrBuilder getSupervisorOrBuilder() { return supervisor_; } private void initFields() { - props_ = akka.remote.RemoteProtocol.PropsProtocol.getDefaultInstance(); - deploy_ = akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance(); + props_ = akka.remote.WireFormats.PropsData.getDefaultInstance(); + deploy_ = akka.remote.WireFormats.DeployData.getDefaultInstance(); path_ = ""; - supervisor_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + supervisor_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -4388,41 +3007,41 @@ public final class RemoteProtocol { return super.writeReplace(); } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseFrom( + public static akka.remote.WireFormats.DaemonMsgCreateData parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseFrom( + public static akka.remote.WireFormats.DaemonMsgCreateData parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseFrom(byte[] data) + public static akka.remote.WireFormats.DaemonMsgCreateData parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseFrom( + public static akka.remote.WireFormats.DaemonMsgCreateData parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseFrom(java.io.InputStream input) + public static akka.remote.WireFormats.DaemonMsgCreateData parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseFrom( + public static akka.remote.WireFormats.DaemonMsgCreateData parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseDelimitedFrom(java.io.InputStream input) + public static akka.remote.WireFormats.DaemonMsgCreateData parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -4431,7 +3050,7 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseDelimitedFrom( + public static akka.remote.WireFormats.DaemonMsgCreateData parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4442,12 +3061,12 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseFrom( + public static akka.remote.WireFormats.DaemonMsgCreateData parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.DaemonMsgCreateProtocol parseFrom( + public static akka.remote.WireFormats.DaemonMsgCreateData parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -4457,7 +3076,7 @@ public final class RemoteProtocol { public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.DaemonMsgCreateProtocol prototype) { + public static Builder newBuilder(akka.remote.WireFormats.DaemonMsgCreateData prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } @@ -4470,23 +3089,23 @@ public final class RemoteProtocol { } public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.DaemonMsgCreateProtocolOrBuilder { + implements akka.remote.WireFormats.DaemonMsgCreateDataOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_DaemonMsgCreateProtocol_descriptor; + return akka.remote.WireFormats.internal_static_DaemonMsgCreateData_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_DaemonMsgCreateProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_DaemonMsgCreateData_fieldAccessorTable; } - // Construct using akka.remote.RemoteProtocol.DaemonMsgCreateProtocol.newBuilder() + // Construct using akka.remote.WireFormats.DaemonMsgCreateData.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - private Builder(BuilderParent parent) { + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } @@ -4504,13 +3123,13 @@ public final class RemoteProtocol { public Builder clear() { super.clear(); if (propsBuilder_ == null) { - props_ = akka.remote.RemoteProtocol.PropsProtocol.getDefaultInstance(); + props_ = akka.remote.WireFormats.PropsData.getDefaultInstance(); } else { propsBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000001); if (deployBuilder_ == null) { - deploy_ = akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance(); + deploy_ = akka.remote.WireFormats.DeployData.getDefaultInstance(); } else { deployBuilder_.clear(); } @@ -4518,7 +3137,7 @@ public final class RemoteProtocol { path_ = ""; bitField0_ = (bitField0_ & ~0x00000004); if (supervisorBuilder_ == null) { - supervisor_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + supervisor_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); } else { supervisorBuilder_.clear(); } @@ -4532,24 +3151,24 @@ public final class RemoteProtocol { public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return akka.remote.RemoteProtocol.DaemonMsgCreateProtocol.getDescriptor(); + return akka.remote.WireFormats.DaemonMsgCreateData.getDescriptor(); } - public akka.remote.RemoteProtocol.DaemonMsgCreateProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.DaemonMsgCreateProtocol.getDefaultInstance(); + public akka.remote.WireFormats.DaemonMsgCreateData getDefaultInstanceForType() { + return akka.remote.WireFormats.DaemonMsgCreateData.getDefaultInstance(); } - public akka.remote.RemoteProtocol.DaemonMsgCreateProtocol build() { - akka.remote.RemoteProtocol.DaemonMsgCreateProtocol result = buildPartial(); + public akka.remote.WireFormats.DaemonMsgCreateData build() { + akka.remote.WireFormats.DaemonMsgCreateData result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private akka.remote.RemoteProtocol.DaemonMsgCreateProtocol buildParsed() + private akka.remote.WireFormats.DaemonMsgCreateData buildParsed() throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.DaemonMsgCreateProtocol result = buildPartial(); + akka.remote.WireFormats.DaemonMsgCreateData result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -4557,8 +3176,8 @@ public final class RemoteProtocol { return result; } - public akka.remote.RemoteProtocol.DaemonMsgCreateProtocol buildPartial() { - akka.remote.RemoteProtocol.DaemonMsgCreateProtocol result = new akka.remote.RemoteProtocol.DaemonMsgCreateProtocol(this); + public akka.remote.WireFormats.DaemonMsgCreateData buildPartial() { + akka.remote.WireFormats.DaemonMsgCreateData result = new akka.remote.WireFormats.DaemonMsgCreateData(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -4595,16 +3214,16 @@ public final class RemoteProtocol { } public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.DaemonMsgCreateProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.DaemonMsgCreateProtocol)other); + if (other instanceof akka.remote.WireFormats.DaemonMsgCreateData) { + return mergeFrom((akka.remote.WireFormats.DaemonMsgCreateData)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(akka.remote.RemoteProtocol.DaemonMsgCreateProtocol other) { - if (other == akka.remote.RemoteProtocol.DaemonMsgCreateProtocol.getDefaultInstance()) return this; + public Builder mergeFrom(akka.remote.WireFormats.DaemonMsgCreateData other) { + if (other == akka.remote.WireFormats.DaemonMsgCreateData.getDefaultInstance()) return this; if (other.hasProps()) { mergeProps(other.getProps()); } @@ -4677,7 +3296,7 @@ public final class RemoteProtocol { break; } case 10: { - akka.remote.RemoteProtocol.PropsProtocol.Builder subBuilder = akka.remote.RemoteProtocol.PropsProtocol.newBuilder(); + akka.remote.WireFormats.PropsData.Builder subBuilder = akka.remote.WireFormats.PropsData.newBuilder(); if (hasProps()) { subBuilder.mergeFrom(getProps()); } @@ -4686,7 +3305,7 @@ public final class RemoteProtocol { break; } case 18: { - akka.remote.RemoteProtocol.DeployProtocol.Builder subBuilder = akka.remote.RemoteProtocol.DeployProtocol.newBuilder(); + akka.remote.WireFormats.DeployData.Builder subBuilder = akka.remote.WireFormats.DeployData.newBuilder(); if (hasDeploy()) { subBuilder.mergeFrom(getDeploy()); } @@ -4700,7 +3319,7 @@ public final class RemoteProtocol { break; } case 34: { - akka.remote.RemoteProtocol.ActorRefProtocol.Builder subBuilder = akka.remote.RemoteProtocol.ActorRefProtocol.newBuilder(); + akka.remote.WireFormats.ActorRefData.Builder subBuilder = akka.remote.WireFormats.ActorRefData.newBuilder(); if (hasSupervisor()) { subBuilder.mergeFrom(getSupervisor()); } @@ -4714,21 +3333,21 @@ public final class RemoteProtocol { private int bitField0_; - // required .PropsProtocol props = 1; - private akka.remote.RemoteProtocol.PropsProtocol props_ = akka.remote.RemoteProtocol.PropsProtocol.getDefaultInstance(); + // required .PropsData props = 1; + private akka.remote.WireFormats.PropsData props_ = akka.remote.WireFormats.PropsData.getDefaultInstance(); private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.PropsProtocol, akka.remote.RemoteProtocol.PropsProtocol.Builder, akka.remote.RemoteProtocol.PropsProtocolOrBuilder> propsBuilder_; + akka.remote.WireFormats.PropsData, akka.remote.WireFormats.PropsData.Builder, akka.remote.WireFormats.PropsDataOrBuilder> propsBuilder_; public boolean hasProps() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public akka.remote.RemoteProtocol.PropsProtocol getProps() { + public akka.remote.WireFormats.PropsData getProps() { if (propsBuilder_ == null) { return props_; } else { return propsBuilder_.getMessage(); } } - public Builder setProps(akka.remote.RemoteProtocol.PropsProtocol value) { + public Builder setProps(akka.remote.WireFormats.PropsData value) { if (propsBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -4742,7 +3361,7 @@ public final class RemoteProtocol { return this; } public Builder setProps( - akka.remote.RemoteProtocol.PropsProtocol.Builder builderForValue) { + akka.remote.WireFormats.PropsData.Builder builderForValue) { if (propsBuilder_ == null) { props_ = builderForValue.build(); onChanged(); @@ -4752,12 +3371,12 @@ public final class RemoteProtocol { bitField0_ |= 0x00000001; return this; } - public Builder mergeProps(akka.remote.RemoteProtocol.PropsProtocol value) { + public Builder mergeProps(akka.remote.WireFormats.PropsData value) { if (propsBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001) && - props_ != akka.remote.RemoteProtocol.PropsProtocol.getDefaultInstance()) { + props_ != akka.remote.WireFormats.PropsData.getDefaultInstance()) { props_ = - akka.remote.RemoteProtocol.PropsProtocol.newBuilder(props_).mergeFrom(value).buildPartial(); + akka.remote.WireFormats.PropsData.newBuilder(props_).mergeFrom(value).buildPartial(); } else { props_ = value; } @@ -4770,7 +3389,7 @@ public final class RemoteProtocol { } public Builder clearProps() { if (propsBuilder_ == null) { - props_ = akka.remote.RemoteProtocol.PropsProtocol.getDefaultInstance(); + props_ = akka.remote.WireFormats.PropsData.getDefaultInstance(); onChanged(); } else { propsBuilder_.clear(); @@ -4778,12 +3397,12 @@ public final class RemoteProtocol { bitField0_ = (bitField0_ & ~0x00000001); return this; } - public akka.remote.RemoteProtocol.PropsProtocol.Builder getPropsBuilder() { + public akka.remote.WireFormats.PropsData.Builder getPropsBuilder() { bitField0_ |= 0x00000001; onChanged(); return getPropsFieldBuilder().getBuilder(); } - public akka.remote.RemoteProtocol.PropsProtocolOrBuilder getPropsOrBuilder() { + public akka.remote.WireFormats.PropsDataOrBuilder getPropsOrBuilder() { if (propsBuilder_ != null) { return propsBuilder_.getMessageOrBuilder(); } else { @@ -4791,11 +3410,11 @@ public final class RemoteProtocol { } } private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.PropsProtocol, akka.remote.RemoteProtocol.PropsProtocol.Builder, akka.remote.RemoteProtocol.PropsProtocolOrBuilder> + akka.remote.WireFormats.PropsData, akka.remote.WireFormats.PropsData.Builder, akka.remote.WireFormats.PropsDataOrBuilder> getPropsFieldBuilder() { if (propsBuilder_ == null) { propsBuilder_ = new com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.PropsProtocol, akka.remote.RemoteProtocol.PropsProtocol.Builder, akka.remote.RemoteProtocol.PropsProtocolOrBuilder>( + akka.remote.WireFormats.PropsData, akka.remote.WireFormats.PropsData.Builder, akka.remote.WireFormats.PropsDataOrBuilder>( props_, getParentForChildren(), isClean()); @@ -4804,21 +3423,21 @@ public final class RemoteProtocol { return propsBuilder_; } - // required .DeployProtocol deploy = 2; - private akka.remote.RemoteProtocol.DeployProtocol deploy_ = akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance(); + // required .DeployData deploy = 2; + private akka.remote.WireFormats.DeployData deploy_ = akka.remote.WireFormats.DeployData.getDefaultInstance(); private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.DeployProtocol, akka.remote.RemoteProtocol.DeployProtocol.Builder, akka.remote.RemoteProtocol.DeployProtocolOrBuilder> deployBuilder_; + akka.remote.WireFormats.DeployData, akka.remote.WireFormats.DeployData.Builder, akka.remote.WireFormats.DeployDataOrBuilder> deployBuilder_; public boolean hasDeploy() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public akka.remote.RemoteProtocol.DeployProtocol getDeploy() { + public akka.remote.WireFormats.DeployData getDeploy() { if (deployBuilder_ == null) { return deploy_; } else { return deployBuilder_.getMessage(); } } - public Builder setDeploy(akka.remote.RemoteProtocol.DeployProtocol value) { + public Builder setDeploy(akka.remote.WireFormats.DeployData value) { if (deployBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -4832,7 +3451,7 @@ public final class RemoteProtocol { return this; } public Builder setDeploy( - akka.remote.RemoteProtocol.DeployProtocol.Builder builderForValue) { + akka.remote.WireFormats.DeployData.Builder builderForValue) { if (deployBuilder_ == null) { deploy_ = builderForValue.build(); onChanged(); @@ -4842,12 +3461,12 @@ public final class RemoteProtocol { bitField0_ |= 0x00000002; return this; } - public Builder mergeDeploy(akka.remote.RemoteProtocol.DeployProtocol value) { + public Builder mergeDeploy(akka.remote.WireFormats.DeployData value) { if (deployBuilder_ == null) { if (((bitField0_ & 0x00000002) == 0x00000002) && - deploy_ != akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance()) { + deploy_ != akka.remote.WireFormats.DeployData.getDefaultInstance()) { deploy_ = - akka.remote.RemoteProtocol.DeployProtocol.newBuilder(deploy_).mergeFrom(value).buildPartial(); + akka.remote.WireFormats.DeployData.newBuilder(deploy_).mergeFrom(value).buildPartial(); } else { deploy_ = value; } @@ -4860,7 +3479,7 @@ public final class RemoteProtocol { } public Builder clearDeploy() { if (deployBuilder_ == null) { - deploy_ = akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance(); + deploy_ = akka.remote.WireFormats.DeployData.getDefaultInstance(); onChanged(); } else { deployBuilder_.clear(); @@ -4868,12 +3487,12 @@ public final class RemoteProtocol { bitField0_ = (bitField0_ & ~0x00000002); return this; } - public akka.remote.RemoteProtocol.DeployProtocol.Builder getDeployBuilder() { + public akka.remote.WireFormats.DeployData.Builder getDeployBuilder() { bitField0_ |= 0x00000002; onChanged(); return getDeployFieldBuilder().getBuilder(); } - public akka.remote.RemoteProtocol.DeployProtocolOrBuilder getDeployOrBuilder() { + public akka.remote.WireFormats.DeployDataOrBuilder getDeployOrBuilder() { if (deployBuilder_ != null) { return deployBuilder_.getMessageOrBuilder(); } else { @@ -4881,11 +3500,11 @@ public final class RemoteProtocol { } } private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.DeployProtocol, akka.remote.RemoteProtocol.DeployProtocol.Builder, akka.remote.RemoteProtocol.DeployProtocolOrBuilder> + akka.remote.WireFormats.DeployData, akka.remote.WireFormats.DeployData.Builder, akka.remote.WireFormats.DeployDataOrBuilder> getDeployFieldBuilder() { if (deployBuilder_ == null) { deployBuilder_ = new com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.DeployProtocol, akka.remote.RemoteProtocol.DeployProtocol.Builder, akka.remote.RemoteProtocol.DeployProtocolOrBuilder>( + akka.remote.WireFormats.DeployData, akka.remote.WireFormats.DeployData.Builder, akka.remote.WireFormats.DeployDataOrBuilder>( deploy_, getParentForChildren(), isClean()); @@ -4930,21 +3549,21 @@ public final class RemoteProtocol { onChanged(); } - // required .ActorRefProtocol supervisor = 4; - private akka.remote.RemoteProtocol.ActorRefProtocol supervisor_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + // required .ActorRefData supervisor = 4; + private akka.remote.WireFormats.ActorRefData supervisor_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.ActorRefProtocol, akka.remote.RemoteProtocol.ActorRefProtocol.Builder, akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder> supervisorBuilder_; + akka.remote.WireFormats.ActorRefData, akka.remote.WireFormats.ActorRefData.Builder, akka.remote.WireFormats.ActorRefDataOrBuilder> supervisorBuilder_; public boolean hasSupervisor() { return ((bitField0_ & 0x00000008) == 0x00000008); } - public akka.remote.RemoteProtocol.ActorRefProtocol getSupervisor() { + public akka.remote.WireFormats.ActorRefData getSupervisor() { if (supervisorBuilder_ == null) { return supervisor_; } else { return supervisorBuilder_.getMessage(); } } - public Builder setSupervisor(akka.remote.RemoteProtocol.ActorRefProtocol value) { + public Builder setSupervisor(akka.remote.WireFormats.ActorRefData value) { if (supervisorBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -4958,7 +3577,7 @@ public final class RemoteProtocol { return this; } public Builder setSupervisor( - akka.remote.RemoteProtocol.ActorRefProtocol.Builder builderForValue) { + akka.remote.WireFormats.ActorRefData.Builder builderForValue) { if (supervisorBuilder_ == null) { supervisor_ = builderForValue.build(); onChanged(); @@ -4968,12 +3587,12 @@ public final class RemoteProtocol { bitField0_ |= 0x00000008; return this; } - public Builder mergeSupervisor(akka.remote.RemoteProtocol.ActorRefProtocol value) { + public Builder mergeSupervisor(akka.remote.WireFormats.ActorRefData value) { if (supervisorBuilder_ == null) { if (((bitField0_ & 0x00000008) == 0x00000008) && - supervisor_ != akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance()) { + supervisor_ != akka.remote.WireFormats.ActorRefData.getDefaultInstance()) { supervisor_ = - akka.remote.RemoteProtocol.ActorRefProtocol.newBuilder(supervisor_).mergeFrom(value).buildPartial(); + akka.remote.WireFormats.ActorRefData.newBuilder(supervisor_).mergeFrom(value).buildPartial(); } else { supervisor_ = value; } @@ -4986,7 +3605,7 @@ public final class RemoteProtocol { } public Builder clearSupervisor() { if (supervisorBuilder_ == null) { - supervisor_ = akka.remote.RemoteProtocol.ActorRefProtocol.getDefaultInstance(); + supervisor_ = akka.remote.WireFormats.ActorRefData.getDefaultInstance(); onChanged(); } else { supervisorBuilder_.clear(); @@ -4994,12 +3613,12 @@ public final class RemoteProtocol { bitField0_ = (bitField0_ & ~0x00000008); return this; } - public akka.remote.RemoteProtocol.ActorRefProtocol.Builder getSupervisorBuilder() { + public akka.remote.WireFormats.ActorRefData.Builder getSupervisorBuilder() { bitField0_ |= 0x00000008; onChanged(); return getSupervisorFieldBuilder().getBuilder(); } - public akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder getSupervisorOrBuilder() { + public akka.remote.WireFormats.ActorRefDataOrBuilder getSupervisorOrBuilder() { if (supervisorBuilder_ != null) { return supervisorBuilder_.getMessageOrBuilder(); } else { @@ -5007,11 +3626,11 @@ public final class RemoteProtocol { } } private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.ActorRefProtocol, akka.remote.RemoteProtocol.ActorRefProtocol.Builder, akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder> + akka.remote.WireFormats.ActorRefData, akka.remote.WireFormats.ActorRefData.Builder, akka.remote.WireFormats.ActorRefDataOrBuilder> getSupervisorFieldBuilder() { if (supervisorBuilder_ == null) { supervisorBuilder_ = new com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.ActorRefProtocol, akka.remote.RemoteProtocol.ActorRefProtocol.Builder, akka.remote.RemoteProtocol.ActorRefProtocolOrBuilder>( + akka.remote.WireFormats.ActorRefData, akka.remote.WireFormats.ActorRefData.Builder, akka.remote.WireFormats.ActorRefDataOrBuilder>( supervisor_, getParentForChildren(), isClean()); @@ -5020,24 +3639,24 @@ public final class RemoteProtocol { return supervisorBuilder_; } - // @@protoc_insertion_point(builder_scope:DaemonMsgCreateProtocol) + // @@protoc_insertion_point(builder_scope:DaemonMsgCreateData) } static { - defaultInstance = new DaemonMsgCreateProtocol(true); + defaultInstance = new DaemonMsgCreateData(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:DaemonMsgCreateProtocol) + // @@protoc_insertion_point(class_scope:DaemonMsgCreateData) } - public interface PropsProtocolOrBuilder + public interface PropsDataOrBuilder extends com.google.protobuf.MessageOrBuilder { - // required .DeployProtocol deploy = 2; + // required .DeployData deploy = 2; boolean hasDeploy(); - akka.remote.RemoteProtocol.DeployProtocol getDeploy(); - akka.remote.RemoteProtocol.DeployProtocolOrBuilder getDeployOrBuilder(); + akka.remote.WireFormats.DeployData getDeploy(); + akka.remote.WireFormats.DeployDataOrBuilder getDeployOrBuilder(); // required string clazz = 3; boolean hasClazz(); @@ -5053,45 +3672,45 @@ public final class RemoteProtocol { int getClassesCount(); String getClasses(int index); } - public static final class PropsProtocol extends + public static final class PropsData extends com.google.protobuf.GeneratedMessage - implements PropsProtocolOrBuilder { - // Use PropsProtocol.newBuilder() to construct. - private PropsProtocol(Builder builder) { + implements PropsDataOrBuilder { + // Use PropsData.newBuilder() to construct. + private PropsData(Builder builder) { super(builder); } - private PropsProtocol(boolean noInit) {} + private PropsData(boolean noInit) {} - private static final PropsProtocol defaultInstance; - public static PropsProtocol getDefaultInstance() { + private static final PropsData defaultInstance; + public static PropsData getDefaultInstance() { return defaultInstance; } - public PropsProtocol getDefaultInstanceForType() { + public PropsData getDefaultInstanceForType() { return defaultInstance; } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_PropsProtocol_descriptor; + return akka.remote.WireFormats.internal_static_PropsData_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_PropsProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_PropsData_fieldAccessorTable; } private int bitField0_; - // required .DeployProtocol deploy = 2; + // required .DeployData deploy = 2; public static final int DEPLOY_FIELD_NUMBER = 2; - private akka.remote.RemoteProtocol.DeployProtocol deploy_; + private akka.remote.WireFormats.DeployData deploy_; public boolean hasDeploy() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public akka.remote.RemoteProtocol.DeployProtocol getDeploy() { + public akka.remote.WireFormats.DeployData getDeploy() { return deploy_; } - public akka.remote.RemoteProtocol.DeployProtocolOrBuilder getDeployOrBuilder() { + public akka.remote.WireFormats.DeployDataOrBuilder getDeployOrBuilder() { return deploy_; } @@ -5156,7 +3775,7 @@ public final class RemoteProtocol { } private void initFields() { - deploy_ = akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance(); + deploy_ = akka.remote.WireFormats.DeployData.getDefaultInstance(); clazz_ = ""; args_ = java.util.Collections.emptyList();; classes_ = com.google.protobuf.LazyStringArrayList.EMPTY; @@ -5244,41 +3863,41 @@ public final class RemoteProtocol { return super.writeReplace(); } - public static akka.remote.RemoteProtocol.PropsProtocol parseFrom( + public static akka.remote.WireFormats.PropsData parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.PropsProtocol parseFrom( + public static akka.remote.WireFormats.PropsData parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.PropsProtocol parseFrom(byte[] data) + public static akka.remote.WireFormats.PropsData parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.PropsProtocol parseFrom( + public static akka.remote.WireFormats.PropsData parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.PropsProtocol parseFrom(java.io.InputStream input) + public static akka.remote.WireFormats.PropsData parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.PropsProtocol parseFrom( + public static akka.remote.WireFormats.PropsData parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.PropsProtocol parseDelimitedFrom(java.io.InputStream input) + public static akka.remote.WireFormats.PropsData parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -5287,7 +3906,7 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.PropsProtocol parseDelimitedFrom( + public static akka.remote.WireFormats.PropsData parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -5298,12 +3917,12 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.PropsProtocol parseFrom( + public static akka.remote.WireFormats.PropsData parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.PropsProtocol parseFrom( + public static akka.remote.WireFormats.PropsData parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -5313,7 +3932,7 @@ public final class RemoteProtocol { public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.PropsProtocol prototype) { + public static Builder newBuilder(akka.remote.WireFormats.PropsData prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } @@ -5326,23 +3945,23 @@ public final class RemoteProtocol { } public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.PropsProtocolOrBuilder { + implements akka.remote.WireFormats.PropsDataOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_PropsProtocol_descriptor; + return akka.remote.WireFormats.internal_static_PropsData_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_PropsProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_PropsData_fieldAccessorTable; } - // Construct using akka.remote.RemoteProtocol.PropsProtocol.newBuilder() + // Construct using akka.remote.WireFormats.PropsData.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - private Builder(BuilderParent parent) { + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } @@ -5358,7 +3977,7 @@ public final class RemoteProtocol { public Builder clear() { super.clear(); if (deployBuilder_ == null) { - deploy_ = akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance(); + deploy_ = akka.remote.WireFormats.DeployData.getDefaultInstance(); } else { deployBuilder_.clear(); } @@ -5378,24 +3997,24 @@ public final class RemoteProtocol { public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return akka.remote.RemoteProtocol.PropsProtocol.getDescriptor(); + return akka.remote.WireFormats.PropsData.getDescriptor(); } - public akka.remote.RemoteProtocol.PropsProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.PropsProtocol.getDefaultInstance(); + public akka.remote.WireFormats.PropsData getDefaultInstanceForType() { + return akka.remote.WireFormats.PropsData.getDefaultInstance(); } - public akka.remote.RemoteProtocol.PropsProtocol build() { - akka.remote.RemoteProtocol.PropsProtocol result = buildPartial(); + public akka.remote.WireFormats.PropsData build() { + akka.remote.WireFormats.PropsData result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private akka.remote.RemoteProtocol.PropsProtocol buildParsed() + private akka.remote.WireFormats.PropsData buildParsed() throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.PropsProtocol result = buildPartial(); + akka.remote.WireFormats.PropsData result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -5403,8 +4022,8 @@ public final class RemoteProtocol { return result; } - public akka.remote.RemoteProtocol.PropsProtocol buildPartial() { - akka.remote.RemoteProtocol.PropsProtocol result = new akka.remote.RemoteProtocol.PropsProtocol(this); + public akka.remote.WireFormats.PropsData buildPartial() { + akka.remote.WireFormats.PropsData result = new akka.remote.WireFormats.PropsData(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -5436,16 +4055,16 @@ public final class RemoteProtocol { } public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.PropsProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.PropsProtocol)other); + if (other instanceof akka.remote.WireFormats.PropsData) { + return mergeFrom((akka.remote.WireFormats.PropsData)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(akka.remote.RemoteProtocol.PropsProtocol other) { - if (other == akka.remote.RemoteProtocol.PropsProtocol.getDefaultInstance()) return this; + public Builder mergeFrom(akka.remote.WireFormats.PropsData other) { + if (other == akka.remote.WireFormats.PropsData.getDefaultInstance()) return this; if (other.hasDeploy()) { mergeDeploy(other.getDeploy()); } @@ -5516,7 +4135,7 @@ public final class RemoteProtocol { break; } case 18: { - akka.remote.RemoteProtocol.DeployProtocol.Builder subBuilder = akka.remote.RemoteProtocol.DeployProtocol.newBuilder(); + akka.remote.WireFormats.DeployData.Builder subBuilder = akka.remote.WireFormats.DeployData.newBuilder(); if (hasDeploy()) { subBuilder.mergeFrom(getDeploy()); } @@ -5545,21 +4164,21 @@ public final class RemoteProtocol { private int bitField0_; - // required .DeployProtocol deploy = 2; - private akka.remote.RemoteProtocol.DeployProtocol deploy_ = akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance(); + // required .DeployData deploy = 2; + private akka.remote.WireFormats.DeployData deploy_ = akka.remote.WireFormats.DeployData.getDefaultInstance(); private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.DeployProtocol, akka.remote.RemoteProtocol.DeployProtocol.Builder, akka.remote.RemoteProtocol.DeployProtocolOrBuilder> deployBuilder_; + akka.remote.WireFormats.DeployData, akka.remote.WireFormats.DeployData.Builder, akka.remote.WireFormats.DeployDataOrBuilder> deployBuilder_; public boolean hasDeploy() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public akka.remote.RemoteProtocol.DeployProtocol getDeploy() { + public akka.remote.WireFormats.DeployData getDeploy() { if (deployBuilder_ == null) { return deploy_; } else { return deployBuilder_.getMessage(); } } - public Builder setDeploy(akka.remote.RemoteProtocol.DeployProtocol value) { + public Builder setDeploy(akka.remote.WireFormats.DeployData value) { if (deployBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -5573,7 +4192,7 @@ public final class RemoteProtocol { return this; } public Builder setDeploy( - akka.remote.RemoteProtocol.DeployProtocol.Builder builderForValue) { + akka.remote.WireFormats.DeployData.Builder builderForValue) { if (deployBuilder_ == null) { deploy_ = builderForValue.build(); onChanged(); @@ -5583,12 +4202,12 @@ public final class RemoteProtocol { bitField0_ |= 0x00000001; return this; } - public Builder mergeDeploy(akka.remote.RemoteProtocol.DeployProtocol value) { + public Builder mergeDeploy(akka.remote.WireFormats.DeployData value) { if (deployBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001) && - deploy_ != akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance()) { + deploy_ != akka.remote.WireFormats.DeployData.getDefaultInstance()) { deploy_ = - akka.remote.RemoteProtocol.DeployProtocol.newBuilder(deploy_).mergeFrom(value).buildPartial(); + akka.remote.WireFormats.DeployData.newBuilder(deploy_).mergeFrom(value).buildPartial(); } else { deploy_ = value; } @@ -5601,7 +4220,7 @@ public final class RemoteProtocol { } public Builder clearDeploy() { if (deployBuilder_ == null) { - deploy_ = akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance(); + deploy_ = akka.remote.WireFormats.DeployData.getDefaultInstance(); onChanged(); } else { deployBuilder_.clear(); @@ -5609,12 +4228,12 @@ public final class RemoteProtocol { bitField0_ = (bitField0_ & ~0x00000001); return this; } - public akka.remote.RemoteProtocol.DeployProtocol.Builder getDeployBuilder() { + public akka.remote.WireFormats.DeployData.Builder getDeployBuilder() { bitField0_ |= 0x00000001; onChanged(); return getDeployFieldBuilder().getBuilder(); } - public akka.remote.RemoteProtocol.DeployProtocolOrBuilder getDeployOrBuilder() { + public akka.remote.WireFormats.DeployDataOrBuilder getDeployOrBuilder() { if (deployBuilder_ != null) { return deployBuilder_.getMessageOrBuilder(); } else { @@ -5622,11 +4241,11 @@ public final class RemoteProtocol { } } private com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.DeployProtocol, akka.remote.RemoteProtocol.DeployProtocol.Builder, akka.remote.RemoteProtocol.DeployProtocolOrBuilder> + akka.remote.WireFormats.DeployData, akka.remote.WireFormats.DeployData.Builder, akka.remote.WireFormats.DeployDataOrBuilder> getDeployFieldBuilder() { if (deployBuilder_ == null) { deployBuilder_ = new com.google.protobuf.SingleFieldBuilder< - akka.remote.RemoteProtocol.DeployProtocol, akka.remote.RemoteProtocol.DeployProtocol.Builder, akka.remote.RemoteProtocol.DeployProtocolOrBuilder>( + akka.remote.WireFormats.DeployData, akka.remote.WireFormats.DeployData.Builder, akka.remote.WireFormats.DeployDataOrBuilder>( deploy_, getParentForChildren(), isClean()); @@ -5778,18 +4397,18 @@ public final class RemoteProtocol { onChanged(); } - // @@protoc_insertion_point(builder_scope:PropsProtocol) + // @@protoc_insertion_point(builder_scope:PropsData) } static { - defaultInstance = new PropsProtocol(true); + defaultInstance = new PropsData(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:PropsProtocol) + // @@protoc_insertion_point(class_scope:PropsData) } - public interface DeployProtocolOrBuilder + public interface DeployDataOrBuilder extends com.google.protobuf.MessageOrBuilder { // required string path = 1; @@ -5812,32 +4431,32 @@ public final class RemoteProtocol { boolean hasDispatcher(); String getDispatcher(); } - public static final class DeployProtocol extends + public static final class DeployData extends com.google.protobuf.GeneratedMessage - implements DeployProtocolOrBuilder { - // Use DeployProtocol.newBuilder() to construct. - private DeployProtocol(Builder builder) { + implements DeployDataOrBuilder { + // Use DeployData.newBuilder() to construct. + private DeployData(Builder builder) { super(builder); } - private DeployProtocol(boolean noInit) {} + private DeployData(boolean noInit) {} - private static final DeployProtocol defaultInstance; - public static DeployProtocol getDefaultInstance() { + private static final DeployData defaultInstance; + public static DeployData getDefaultInstance() { return defaultInstance; } - public DeployProtocol getDefaultInstanceForType() { + public DeployData getDefaultInstanceForType() { return defaultInstance; } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_DeployProtocol_descriptor; + return akka.remote.WireFormats.internal_static_DeployData_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_DeployProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_DeployData_fieldAccessorTable; } private int bitField0_; @@ -6014,41 +4633,41 @@ public final class RemoteProtocol { return super.writeReplace(); } - public static akka.remote.RemoteProtocol.DeployProtocol parseFrom( + public static akka.remote.WireFormats.DeployData parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.DeployProtocol parseFrom( + public static akka.remote.WireFormats.DeployData parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.DeployProtocol parseFrom(byte[] data) + public static akka.remote.WireFormats.DeployData parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static akka.remote.RemoteProtocol.DeployProtocol parseFrom( + public static akka.remote.WireFormats.DeployData parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.DeployProtocol parseFrom(java.io.InputStream input) + public static akka.remote.WireFormats.DeployData parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.DeployProtocol parseFrom( + public static akka.remote.WireFormats.DeployData parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static akka.remote.RemoteProtocol.DeployProtocol parseDelimitedFrom(java.io.InputStream input) + public static akka.remote.WireFormats.DeployData parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -6057,7 +4676,7 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.DeployProtocol parseDelimitedFrom( + public static akka.remote.WireFormats.DeployData parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -6068,12 +4687,12 @@ public final class RemoteProtocol { return null; } } - public static akka.remote.RemoteProtocol.DeployProtocol parseFrom( + public static akka.remote.WireFormats.DeployData parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static akka.remote.RemoteProtocol.DeployProtocol parseFrom( + public static akka.remote.WireFormats.DeployData parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -6083,7 +4702,7 @@ public final class RemoteProtocol { public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.remote.RemoteProtocol.DeployProtocol prototype) { + public static Builder newBuilder(akka.remote.WireFormats.DeployData prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } @@ -6096,23 +4715,23 @@ public final class RemoteProtocol { } public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder - implements akka.remote.RemoteProtocol.DeployProtocolOrBuilder { + implements akka.remote.WireFormats.DeployDataOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return akka.remote.RemoteProtocol.internal_static_DeployProtocol_descriptor; + return akka.remote.WireFormats.internal_static_DeployData_descriptor; } protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable() { - return akka.remote.RemoteProtocol.internal_static_DeployProtocol_fieldAccessorTable; + return akka.remote.WireFormats.internal_static_DeployData_fieldAccessorTable; } - // Construct using akka.remote.RemoteProtocol.DeployProtocol.newBuilder() + // Construct using akka.remote.WireFormats.DeployData.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - private Builder(BuilderParent parent) { + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { super(parent); maybeForceBuilderInitialization(); } @@ -6145,24 +4764,24 @@ public final class RemoteProtocol { public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return akka.remote.RemoteProtocol.DeployProtocol.getDescriptor(); + return akka.remote.WireFormats.DeployData.getDescriptor(); } - public akka.remote.RemoteProtocol.DeployProtocol getDefaultInstanceForType() { - return akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance(); + public akka.remote.WireFormats.DeployData getDefaultInstanceForType() { + return akka.remote.WireFormats.DeployData.getDefaultInstance(); } - public akka.remote.RemoteProtocol.DeployProtocol build() { - akka.remote.RemoteProtocol.DeployProtocol result = buildPartial(); + public akka.remote.WireFormats.DeployData build() { + akka.remote.WireFormats.DeployData result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private akka.remote.RemoteProtocol.DeployProtocol buildParsed() + private akka.remote.WireFormats.DeployData buildParsed() throws com.google.protobuf.InvalidProtocolBufferException { - akka.remote.RemoteProtocol.DeployProtocol result = buildPartial(); + akka.remote.WireFormats.DeployData result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -6170,8 +4789,8 @@ public final class RemoteProtocol { return result; } - public akka.remote.RemoteProtocol.DeployProtocol buildPartial() { - akka.remote.RemoteProtocol.DeployProtocol result = new akka.remote.RemoteProtocol.DeployProtocol(this); + public akka.remote.WireFormats.DeployData buildPartial() { + akka.remote.WireFormats.DeployData result = new akka.remote.WireFormats.DeployData(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -6200,16 +4819,16 @@ public final class RemoteProtocol { } public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof akka.remote.RemoteProtocol.DeployProtocol) { - return mergeFrom((akka.remote.RemoteProtocol.DeployProtocol)other); + if (other instanceof akka.remote.WireFormats.DeployData) { + return mergeFrom((akka.remote.WireFormats.DeployData)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(akka.remote.RemoteProtocol.DeployProtocol other) { - if (other == akka.remote.RemoteProtocol.DeployProtocol.getDefaultInstance()) return this; + public Builder mergeFrom(akka.remote.WireFormats.DeployData other) { + if (other == akka.remote.WireFormats.DeployData.getDefaultInstance()) return this; if (other.hasPath()) { setPath(other.getPath()); } @@ -6435,67 +5054,2326 @@ public final class RemoteProtocol { onChanged(); } - // @@protoc_insertion_point(builder_scope:DeployProtocol) + // @@protoc_insertion_point(builder_scope:DeployData) } static { - defaultInstance = new DeployProtocol(true); + defaultInstance = new DeployData(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:DeployProtocol) + // @@protoc_insertion_point(class_scope:DeployData) + } + + public interface AkkaProtocolMessageOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // optional bytes payload = 1; + boolean hasPayload(); + com.google.protobuf.ByteString getPayload(); + + // optional .AkkaControlMessage instruction = 2; + boolean hasInstruction(); + akka.remote.WireFormats.AkkaControlMessage getInstruction(); + akka.remote.WireFormats.AkkaControlMessageOrBuilder getInstructionOrBuilder(); + } + public static final class AkkaProtocolMessage extends + com.google.protobuf.GeneratedMessage + implements AkkaProtocolMessageOrBuilder { + // Use AkkaProtocolMessage.newBuilder() to construct. + private AkkaProtocolMessage(Builder builder) { + super(builder); + } + private AkkaProtocolMessage(boolean noInit) {} + + private static final AkkaProtocolMessage defaultInstance; + public static AkkaProtocolMessage getDefaultInstance() { + return defaultInstance; + } + + public AkkaProtocolMessage getDefaultInstanceForType() { + return defaultInstance; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return akka.remote.WireFormats.internal_static_AkkaProtocolMessage_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.remote.WireFormats.internal_static_AkkaProtocolMessage_fieldAccessorTable; + } + + private int bitField0_; + // optional bytes payload = 1; + public static final int PAYLOAD_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString payload_; + public boolean hasPayload() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public com.google.protobuf.ByteString getPayload() { + return payload_; + } + + // optional .AkkaControlMessage instruction = 2; + public static final int INSTRUCTION_FIELD_NUMBER = 2; + private akka.remote.WireFormats.AkkaControlMessage instruction_; + public boolean hasInstruction() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public akka.remote.WireFormats.AkkaControlMessage getInstruction() { + return instruction_; + } + public akka.remote.WireFormats.AkkaControlMessageOrBuilder getInstructionOrBuilder() { + return instruction_; + } + + private void initFields() { + payload_ = com.google.protobuf.ByteString.EMPTY; + instruction_ = akka.remote.WireFormats.AkkaControlMessage.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (hasInstruction()) { + if (!getInstruction().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, payload_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, instruction_); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, payload_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, instruction_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static akka.remote.WireFormats.AkkaProtocolMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static akka.remote.WireFormats.AkkaProtocolMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AkkaProtocolMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static akka.remote.WireFormats.AkkaProtocolMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AkkaProtocolMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static akka.remote.WireFormats.AkkaProtocolMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AkkaProtocolMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static akka.remote.WireFormats.AkkaProtocolMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input, extensionRegistry)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static akka.remote.WireFormats.AkkaProtocolMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static akka.remote.WireFormats.AkkaProtocolMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(akka.remote.WireFormats.AkkaProtocolMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements akka.remote.WireFormats.AkkaProtocolMessageOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return akka.remote.WireFormats.internal_static_AkkaProtocolMessage_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.remote.WireFormats.internal_static_AkkaProtocolMessage_fieldAccessorTable; + } + + // Construct using akka.remote.WireFormats.AkkaProtocolMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getInstructionFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + payload_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + if (instructionBuilder_ == null) { + instruction_ = akka.remote.WireFormats.AkkaControlMessage.getDefaultInstance(); + } else { + instructionBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return akka.remote.WireFormats.AkkaProtocolMessage.getDescriptor(); + } + + public akka.remote.WireFormats.AkkaProtocolMessage getDefaultInstanceForType() { + return akka.remote.WireFormats.AkkaProtocolMessage.getDefaultInstance(); + } + + public akka.remote.WireFormats.AkkaProtocolMessage build() { + akka.remote.WireFormats.AkkaProtocolMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + private akka.remote.WireFormats.AkkaProtocolMessage buildParsed() + throws com.google.protobuf.InvalidProtocolBufferException { + akka.remote.WireFormats.AkkaProtocolMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException( + result).asInvalidProtocolBufferException(); + } + return result; + } + + public akka.remote.WireFormats.AkkaProtocolMessage buildPartial() { + akka.remote.WireFormats.AkkaProtocolMessage result = new akka.remote.WireFormats.AkkaProtocolMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.payload_ = payload_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (instructionBuilder_ == null) { + result.instruction_ = instruction_; + } else { + result.instruction_ = instructionBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof akka.remote.WireFormats.AkkaProtocolMessage) { + return mergeFrom((akka.remote.WireFormats.AkkaProtocolMessage)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(akka.remote.WireFormats.AkkaProtocolMessage other) { + if (other == akka.remote.WireFormats.AkkaProtocolMessage.getDefaultInstance()) return this; + if (other.hasPayload()) { + setPayload(other.getPayload()); + } + if (other.hasInstruction()) { + mergeInstruction(other.getInstruction()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (hasInstruction()) { + if (!getInstruction().isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder( + this.getUnknownFields()); + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + this.setUnknownFields(unknownFields.build()); + onChanged(); + return this; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + this.setUnknownFields(unknownFields.build()); + onChanged(); + return this; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + payload_ = input.readBytes(); + break; + } + case 18: { + akka.remote.WireFormats.AkkaControlMessage.Builder subBuilder = akka.remote.WireFormats.AkkaControlMessage.newBuilder(); + if (hasInstruction()) { + subBuilder.mergeFrom(getInstruction()); + } + input.readMessage(subBuilder, extensionRegistry); + setInstruction(subBuilder.buildPartial()); + break; + } + } + } + } + + private int bitField0_; + + // optional bytes payload = 1; + private com.google.protobuf.ByteString payload_ = com.google.protobuf.ByteString.EMPTY; + public boolean hasPayload() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public com.google.protobuf.ByteString getPayload() { + return payload_; + } + public Builder setPayload(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + payload_ = value; + onChanged(); + return this; + } + public Builder clearPayload() { + bitField0_ = (bitField0_ & ~0x00000001); + payload_ = getDefaultInstance().getPayload(); + onChanged(); + return this; + } + + // optional .AkkaControlMessage instruction = 2; + private akka.remote.WireFormats.AkkaControlMessage instruction_ = akka.remote.WireFormats.AkkaControlMessage.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AkkaControlMessage, akka.remote.WireFormats.AkkaControlMessage.Builder, akka.remote.WireFormats.AkkaControlMessageOrBuilder> instructionBuilder_; + public boolean hasInstruction() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public akka.remote.WireFormats.AkkaControlMessage getInstruction() { + if (instructionBuilder_ == null) { + return instruction_; + } else { + return instructionBuilder_.getMessage(); + } + } + public Builder setInstruction(akka.remote.WireFormats.AkkaControlMessage value) { + if (instructionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + instruction_ = value; + onChanged(); + } else { + instructionBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + return this; + } + public Builder setInstruction( + akka.remote.WireFormats.AkkaControlMessage.Builder builderForValue) { + if (instructionBuilder_ == null) { + instruction_ = builderForValue.build(); + onChanged(); + } else { + instructionBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + return this; + } + public Builder mergeInstruction(akka.remote.WireFormats.AkkaControlMessage value) { + if (instructionBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + instruction_ != akka.remote.WireFormats.AkkaControlMessage.getDefaultInstance()) { + instruction_ = + akka.remote.WireFormats.AkkaControlMessage.newBuilder(instruction_).mergeFrom(value).buildPartial(); + } else { + instruction_ = value; + } + onChanged(); + } else { + instructionBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + return this; + } + public Builder clearInstruction() { + if (instructionBuilder_ == null) { + instruction_ = akka.remote.WireFormats.AkkaControlMessage.getDefaultInstance(); + onChanged(); + } else { + instructionBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + public akka.remote.WireFormats.AkkaControlMessage.Builder getInstructionBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getInstructionFieldBuilder().getBuilder(); + } + public akka.remote.WireFormats.AkkaControlMessageOrBuilder getInstructionOrBuilder() { + if (instructionBuilder_ != null) { + return instructionBuilder_.getMessageOrBuilder(); + } else { + return instruction_; + } + } + private com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AkkaControlMessage, akka.remote.WireFormats.AkkaControlMessage.Builder, akka.remote.WireFormats.AkkaControlMessageOrBuilder> + getInstructionFieldBuilder() { + if (instructionBuilder_ == null) { + instructionBuilder_ = new com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AkkaControlMessage, akka.remote.WireFormats.AkkaControlMessage.Builder, akka.remote.WireFormats.AkkaControlMessageOrBuilder>( + instruction_, + getParentForChildren(), + isClean()); + instruction_ = null; + } + return instructionBuilder_; + } + + // @@protoc_insertion_point(builder_scope:AkkaProtocolMessage) + } + + static { + defaultInstance = new AkkaProtocolMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:AkkaProtocolMessage) + } + + public interface AkkaControlMessageOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .CommandType commandType = 1; + boolean hasCommandType(); + akka.remote.WireFormats.CommandType getCommandType(); + + // optional .AkkaHandshakeInfo handshakeInfo = 2; + boolean hasHandshakeInfo(); + akka.remote.WireFormats.AkkaHandshakeInfo getHandshakeInfo(); + akka.remote.WireFormats.AkkaHandshakeInfoOrBuilder getHandshakeInfoOrBuilder(); + } + public static final class AkkaControlMessage extends + com.google.protobuf.GeneratedMessage + implements AkkaControlMessageOrBuilder { + // Use AkkaControlMessage.newBuilder() to construct. + private AkkaControlMessage(Builder builder) { + super(builder); + } + private AkkaControlMessage(boolean noInit) {} + + private static final AkkaControlMessage defaultInstance; + public static AkkaControlMessage getDefaultInstance() { + return defaultInstance; + } + + public AkkaControlMessage getDefaultInstanceForType() { + return defaultInstance; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return akka.remote.WireFormats.internal_static_AkkaControlMessage_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.remote.WireFormats.internal_static_AkkaControlMessage_fieldAccessorTable; + } + + private int bitField0_; + // required .CommandType commandType = 1; + public static final int COMMANDTYPE_FIELD_NUMBER = 1; + private akka.remote.WireFormats.CommandType commandType_; + public boolean hasCommandType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public akka.remote.WireFormats.CommandType getCommandType() { + return commandType_; + } + + // optional .AkkaHandshakeInfo handshakeInfo = 2; + public static final int HANDSHAKEINFO_FIELD_NUMBER = 2; + private akka.remote.WireFormats.AkkaHandshakeInfo handshakeInfo_; + public boolean hasHandshakeInfo() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public akka.remote.WireFormats.AkkaHandshakeInfo getHandshakeInfo() { + return handshakeInfo_; + } + public akka.remote.WireFormats.AkkaHandshakeInfoOrBuilder getHandshakeInfoOrBuilder() { + return handshakeInfo_; + } + + private void initFields() { + commandType_ = akka.remote.WireFormats.CommandType.CONNECT; + handshakeInfo_ = akka.remote.WireFormats.AkkaHandshakeInfo.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasCommandType()) { + memoizedIsInitialized = 0; + return false; + } + if (hasHandshakeInfo()) { + if (!getHandshakeInfo().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, commandType_.getNumber()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(2, handshakeInfo_); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, commandType_.getNumber()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, handshakeInfo_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static akka.remote.WireFormats.AkkaControlMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static akka.remote.WireFormats.AkkaControlMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AkkaControlMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static akka.remote.WireFormats.AkkaControlMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AkkaControlMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static akka.remote.WireFormats.AkkaControlMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AkkaControlMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static akka.remote.WireFormats.AkkaControlMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input, extensionRegistry)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static akka.remote.WireFormats.AkkaControlMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static akka.remote.WireFormats.AkkaControlMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(akka.remote.WireFormats.AkkaControlMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements akka.remote.WireFormats.AkkaControlMessageOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return akka.remote.WireFormats.internal_static_AkkaControlMessage_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.remote.WireFormats.internal_static_AkkaControlMessage_fieldAccessorTable; + } + + // Construct using akka.remote.WireFormats.AkkaControlMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getHandshakeInfoFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + commandType_ = akka.remote.WireFormats.CommandType.CONNECT; + bitField0_ = (bitField0_ & ~0x00000001); + if (handshakeInfoBuilder_ == null) { + handshakeInfo_ = akka.remote.WireFormats.AkkaHandshakeInfo.getDefaultInstance(); + } else { + handshakeInfoBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return akka.remote.WireFormats.AkkaControlMessage.getDescriptor(); + } + + public akka.remote.WireFormats.AkkaControlMessage getDefaultInstanceForType() { + return akka.remote.WireFormats.AkkaControlMessage.getDefaultInstance(); + } + + public akka.remote.WireFormats.AkkaControlMessage build() { + akka.remote.WireFormats.AkkaControlMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + private akka.remote.WireFormats.AkkaControlMessage buildParsed() + throws com.google.protobuf.InvalidProtocolBufferException { + akka.remote.WireFormats.AkkaControlMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException( + result).asInvalidProtocolBufferException(); + } + return result; + } + + public akka.remote.WireFormats.AkkaControlMessage buildPartial() { + akka.remote.WireFormats.AkkaControlMessage result = new akka.remote.WireFormats.AkkaControlMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.commandType_ = commandType_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + if (handshakeInfoBuilder_ == null) { + result.handshakeInfo_ = handshakeInfo_; + } else { + result.handshakeInfo_ = handshakeInfoBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof akka.remote.WireFormats.AkkaControlMessage) { + return mergeFrom((akka.remote.WireFormats.AkkaControlMessage)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(akka.remote.WireFormats.AkkaControlMessage other) { + if (other == akka.remote.WireFormats.AkkaControlMessage.getDefaultInstance()) return this; + if (other.hasCommandType()) { + setCommandType(other.getCommandType()); + } + if (other.hasHandshakeInfo()) { + mergeHandshakeInfo(other.getHandshakeInfo()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasCommandType()) { + + return false; + } + if (hasHandshakeInfo()) { + if (!getHandshakeInfo().isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder( + this.getUnknownFields()); + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + this.setUnknownFields(unknownFields.build()); + onChanged(); + return this; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + this.setUnknownFields(unknownFields.build()); + onChanged(); + return this; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + akka.remote.WireFormats.CommandType value = akka.remote.WireFormats.CommandType.valueOf(rawValue); + if (value == null) { + unknownFields.mergeVarintField(1, rawValue); + } else { + bitField0_ |= 0x00000001; + commandType_ = value; + } + break; + } + case 18: { + akka.remote.WireFormats.AkkaHandshakeInfo.Builder subBuilder = akka.remote.WireFormats.AkkaHandshakeInfo.newBuilder(); + if (hasHandshakeInfo()) { + subBuilder.mergeFrom(getHandshakeInfo()); + } + input.readMessage(subBuilder, extensionRegistry); + setHandshakeInfo(subBuilder.buildPartial()); + break; + } + } + } + } + + private int bitField0_; + + // required .CommandType commandType = 1; + private akka.remote.WireFormats.CommandType commandType_ = akka.remote.WireFormats.CommandType.CONNECT; + public boolean hasCommandType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public akka.remote.WireFormats.CommandType getCommandType() { + return commandType_; + } + public Builder setCommandType(akka.remote.WireFormats.CommandType value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + commandType_ = value; + onChanged(); + return this; + } + public Builder clearCommandType() { + bitField0_ = (bitField0_ & ~0x00000001); + commandType_ = akka.remote.WireFormats.CommandType.CONNECT; + onChanged(); + return this; + } + + // optional .AkkaHandshakeInfo handshakeInfo = 2; + private akka.remote.WireFormats.AkkaHandshakeInfo handshakeInfo_ = akka.remote.WireFormats.AkkaHandshakeInfo.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AkkaHandshakeInfo, akka.remote.WireFormats.AkkaHandshakeInfo.Builder, akka.remote.WireFormats.AkkaHandshakeInfoOrBuilder> handshakeInfoBuilder_; + public boolean hasHandshakeInfo() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public akka.remote.WireFormats.AkkaHandshakeInfo getHandshakeInfo() { + if (handshakeInfoBuilder_ == null) { + return handshakeInfo_; + } else { + return handshakeInfoBuilder_.getMessage(); + } + } + public Builder setHandshakeInfo(akka.remote.WireFormats.AkkaHandshakeInfo value) { + if (handshakeInfoBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + handshakeInfo_ = value; + onChanged(); + } else { + handshakeInfoBuilder_.setMessage(value); + } + bitField0_ |= 0x00000002; + return this; + } + public Builder setHandshakeInfo( + akka.remote.WireFormats.AkkaHandshakeInfo.Builder builderForValue) { + if (handshakeInfoBuilder_ == null) { + handshakeInfo_ = builderForValue.build(); + onChanged(); + } else { + handshakeInfoBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000002; + return this; + } + public Builder mergeHandshakeInfo(akka.remote.WireFormats.AkkaHandshakeInfo value) { + if (handshakeInfoBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002) && + handshakeInfo_ != akka.remote.WireFormats.AkkaHandshakeInfo.getDefaultInstance()) { + handshakeInfo_ = + akka.remote.WireFormats.AkkaHandshakeInfo.newBuilder(handshakeInfo_).mergeFrom(value).buildPartial(); + } else { + handshakeInfo_ = value; + } + onChanged(); + } else { + handshakeInfoBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000002; + return this; + } + public Builder clearHandshakeInfo() { + if (handshakeInfoBuilder_ == null) { + handshakeInfo_ = akka.remote.WireFormats.AkkaHandshakeInfo.getDefaultInstance(); + onChanged(); + } else { + handshakeInfoBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + public akka.remote.WireFormats.AkkaHandshakeInfo.Builder getHandshakeInfoBuilder() { + bitField0_ |= 0x00000002; + onChanged(); + return getHandshakeInfoFieldBuilder().getBuilder(); + } + public akka.remote.WireFormats.AkkaHandshakeInfoOrBuilder getHandshakeInfoOrBuilder() { + if (handshakeInfoBuilder_ != null) { + return handshakeInfoBuilder_.getMessageOrBuilder(); + } else { + return handshakeInfo_; + } + } + private com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AkkaHandshakeInfo, akka.remote.WireFormats.AkkaHandshakeInfo.Builder, akka.remote.WireFormats.AkkaHandshakeInfoOrBuilder> + getHandshakeInfoFieldBuilder() { + if (handshakeInfoBuilder_ == null) { + handshakeInfoBuilder_ = new com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AkkaHandshakeInfo, akka.remote.WireFormats.AkkaHandshakeInfo.Builder, akka.remote.WireFormats.AkkaHandshakeInfoOrBuilder>( + handshakeInfo_, + getParentForChildren(), + isClean()); + handshakeInfo_ = null; + } + return handshakeInfoBuilder_; + } + + // @@protoc_insertion_point(builder_scope:AkkaControlMessage) + } + + static { + defaultInstance = new AkkaControlMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:AkkaControlMessage) + } + + public interface AkkaHandshakeInfoOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required .AddressData origin = 1; + boolean hasOrigin(); + akka.remote.WireFormats.AddressData getOrigin(); + akka.remote.WireFormats.AddressDataOrBuilder getOriginOrBuilder(); + + // required fixed64 uid = 2; + boolean hasUid(); + long getUid(); + + // optional string cookie = 3; + boolean hasCookie(); + String getCookie(); + } + public static final class AkkaHandshakeInfo extends + com.google.protobuf.GeneratedMessage + implements AkkaHandshakeInfoOrBuilder { + // Use AkkaHandshakeInfo.newBuilder() to construct. + private AkkaHandshakeInfo(Builder builder) { + super(builder); + } + private AkkaHandshakeInfo(boolean noInit) {} + + private static final AkkaHandshakeInfo defaultInstance; + public static AkkaHandshakeInfo getDefaultInstance() { + return defaultInstance; + } + + public AkkaHandshakeInfo getDefaultInstanceForType() { + return defaultInstance; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return akka.remote.WireFormats.internal_static_AkkaHandshakeInfo_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.remote.WireFormats.internal_static_AkkaHandshakeInfo_fieldAccessorTable; + } + + private int bitField0_; + // required .AddressData origin = 1; + public static final int ORIGIN_FIELD_NUMBER = 1; + private akka.remote.WireFormats.AddressData origin_; + public boolean hasOrigin() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public akka.remote.WireFormats.AddressData getOrigin() { + return origin_; + } + public akka.remote.WireFormats.AddressDataOrBuilder getOriginOrBuilder() { + return origin_; + } + + // required fixed64 uid = 2; + public static final int UID_FIELD_NUMBER = 2; + private long uid_; + public boolean hasUid() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public long getUid() { + return uid_; + } + + // optional string cookie = 3; + public static final int COOKIE_FIELD_NUMBER = 3; + private java.lang.Object cookie_; + public boolean hasCookie() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public String getCookie() { + java.lang.Object ref = cookie_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + if (com.google.protobuf.Internal.isValidUtf8(bs)) { + cookie_ = s; + } + return s; + } + } + private com.google.protobuf.ByteString getCookieBytes() { + java.lang.Object ref = cookie_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((String) ref); + cookie_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + origin_ = akka.remote.WireFormats.AddressData.getDefaultInstance(); + uid_ = 0L; + cookie_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasOrigin()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasUid()) { + memoizedIsInitialized = 0; + return false; + } + if (!getOrigin().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, origin_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeFixed64(2, uid_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getCookieBytes()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, origin_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeFixed64Size(2, uid_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(3, getCookieBytes()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static akka.remote.WireFormats.AkkaHandshakeInfo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static akka.remote.WireFormats.AkkaHandshakeInfo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AkkaHandshakeInfo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static akka.remote.WireFormats.AkkaHandshakeInfo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AkkaHandshakeInfo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static akka.remote.WireFormats.AkkaHandshakeInfo parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AkkaHandshakeInfo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static akka.remote.WireFormats.AkkaHandshakeInfo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input, extensionRegistry)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static akka.remote.WireFormats.AkkaHandshakeInfo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static akka.remote.WireFormats.AkkaHandshakeInfo parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(akka.remote.WireFormats.AkkaHandshakeInfo prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements akka.remote.WireFormats.AkkaHandshakeInfoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return akka.remote.WireFormats.internal_static_AkkaHandshakeInfo_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.remote.WireFormats.internal_static_AkkaHandshakeInfo_fieldAccessorTable; + } + + // Construct using akka.remote.WireFormats.AkkaHandshakeInfo.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getOriginFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + if (originBuilder_ == null) { + origin_ = akka.remote.WireFormats.AddressData.getDefaultInstance(); + } else { + originBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + uid_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + cookie_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return akka.remote.WireFormats.AkkaHandshakeInfo.getDescriptor(); + } + + public akka.remote.WireFormats.AkkaHandshakeInfo getDefaultInstanceForType() { + return akka.remote.WireFormats.AkkaHandshakeInfo.getDefaultInstance(); + } + + public akka.remote.WireFormats.AkkaHandshakeInfo build() { + akka.remote.WireFormats.AkkaHandshakeInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + private akka.remote.WireFormats.AkkaHandshakeInfo buildParsed() + throws com.google.protobuf.InvalidProtocolBufferException { + akka.remote.WireFormats.AkkaHandshakeInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException( + result).asInvalidProtocolBufferException(); + } + return result; + } + + public akka.remote.WireFormats.AkkaHandshakeInfo buildPartial() { + akka.remote.WireFormats.AkkaHandshakeInfo result = new akka.remote.WireFormats.AkkaHandshakeInfo(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + if (originBuilder_ == null) { + result.origin_ = origin_; + } else { + result.origin_ = originBuilder_.build(); + } + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.uid_ = uid_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.cookie_ = cookie_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof akka.remote.WireFormats.AkkaHandshakeInfo) { + return mergeFrom((akka.remote.WireFormats.AkkaHandshakeInfo)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(akka.remote.WireFormats.AkkaHandshakeInfo other) { + if (other == akka.remote.WireFormats.AkkaHandshakeInfo.getDefaultInstance()) return this; + if (other.hasOrigin()) { + mergeOrigin(other.getOrigin()); + } + if (other.hasUid()) { + setUid(other.getUid()); + } + if (other.hasCookie()) { + setCookie(other.getCookie()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasOrigin()) { + + return false; + } + if (!hasUid()) { + + return false; + } + if (!getOrigin().isInitialized()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder( + this.getUnknownFields()); + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + this.setUnknownFields(unknownFields.build()); + onChanged(); + return this; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + this.setUnknownFields(unknownFields.build()); + onChanged(); + return this; + } + break; + } + case 10: { + akka.remote.WireFormats.AddressData.Builder subBuilder = akka.remote.WireFormats.AddressData.newBuilder(); + if (hasOrigin()) { + subBuilder.mergeFrom(getOrigin()); + } + input.readMessage(subBuilder, extensionRegistry); + setOrigin(subBuilder.buildPartial()); + break; + } + case 17: { + bitField0_ |= 0x00000002; + uid_ = input.readFixed64(); + break; + } + case 26: { + bitField0_ |= 0x00000004; + cookie_ = input.readBytes(); + break; + } + } + } + } + + private int bitField0_; + + // required .AddressData origin = 1; + private akka.remote.WireFormats.AddressData origin_ = akka.remote.WireFormats.AddressData.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AddressData, akka.remote.WireFormats.AddressData.Builder, akka.remote.WireFormats.AddressDataOrBuilder> originBuilder_; + public boolean hasOrigin() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public akka.remote.WireFormats.AddressData getOrigin() { + if (originBuilder_ == null) { + return origin_; + } else { + return originBuilder_.getMessage(); + } + } + public Builder setOrigin(akka.remote.WireFormats.AddressData value) { + if (originBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + origin_ = value; + onChanged(); + } else { + originBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + return this; + } + public Builder setOrigin( + akka.remote.WireFormats.AddressData.Builder builderForValue) { + if (originBuilder_ == null) { + origin_ = builderForValue.build(); + onChanged(); + } else { + originBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + return this; + } + public Builder mergeOrigin(akka.remote.WireFormats.AddressData value) { + if (originBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001) && + origin_ != akka.remote.WireFormats.AddressData.getDefaultInstance()) { + origin_ = + akka.remote.WireFormats.AddressData.newBuilder(origin_).mergeFrom(value).buildPartial(); + } else { + origin_ = value; + } + onChanged(); + } else { + originBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000001; + return this; + } + public Builder clearOrigin() { + if (originBuilder_ == null) { + origin_ = akka.remote.WireFormats.AddressData.getDefaultInstance(); + onChanged(); + } else { + originBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + public akka.remote.WireFormats.AddressData.Builder getOriginBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getOriginFieldBuilder().getBuilder(); + } + public akka.remote.WireFormats.AddressDataOrBuilder getOriginOrBuilder() { + if (originBuilder_ != null) { + return originBuilder_.getMessageOrBuilder(); + } else { + return origin_; + } + } + private com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AddressData, akka.remote.WireFormats.AddressData.Builder, akka.remote.WireFormats.AddressDataOrBuilder> + getOriginFieldBuilder() { + if (originBuilder_ == null) { + originBuilder_ = new com.google.protobuf.SingleFieldBuilder< + akka.remote.WireFormats.AddressData, akka.remote.WireFormats.AddressData.Builder, akka.remote.WireFormats.AddressDataOrBuilder>( + origin_, + getParentForChildren(), + isClean()); + origin_ = null; + } + return originBuilder_; + } + + // required fixed64 uid = 2; + private long uid_ ; + public boolean hasUid() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public long getUid() { + return uid_; + } + public Builder setUid(long value) { + bitField0_ |= 0x00000002; + uid_ = value; + onChanged(); + return this; + } + public Builder clearUid() { + bitField0_ = (bitField0_ & ~0x00000002); + uid_ = 0L; + onChanged(); + return this; + } + + // optional string cookie = 3; + private java.lang.Object cookie_ = ""; + public boolean hasCookie() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public String getCookie() { + java.lang.Object ref = cookie_; + if (!(ref instanceof String)) { + String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + cookie_ = s; + return s; + } else { + return (String) ref; + } + } + public Builder setCookie(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + cookie_ = value; + onChanged(); + return this; + } + public Builder clearCookie() { + bitField0_ = (bitField0_ & ~0x00000004); + cookie_ = getDefaultInstance().getCookie(); + onChanged(); + return this; + } + void setCookie(com.google.protobuf.ByteString value) { + bitField0_ |= 0x00000004; + cookie_ = value; + onChanged(); + } + + // @@protoc_insertion_point(builder_scope:AkkaHandshakeInfo) + } + + static { + defaultInstance = new AkkaHandshakeInfo(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:AkkaHandshakeInfo) + } + + public interface AddressDataOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string system = 1; + boolean hasSystem(); + String getSystem(); + + // required string hostname = 2; + boolean hasHostname(); + String getHostname(); + + // required uint32 port = 3; + boolean hasPort(); + int getPort(); + + // optional string protocol = 4; + boolean hasProtocol(); + String getProtocol(); + } + public static final class AddressData extends + com.google.protobuf.GeneratedMessage + implements AddressDataOrBuilder { + // Use AddressData.newBuilder() to construct. + private AddressData(Builder builder) { + super(builder); + } + private AddressData(boolean noInit) {} + + private static final AddressData defaultInstance; + public static AddressData getDefaultInstance() { + return defaultInstance; + } + + public AddressData getDefaultInstanceForType() { + return defaultInstance; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return akka.remote.WireFormats.internal_static_AddressData_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.remote.WireFormats.internal_static_AddressData_fieldAccessorTable; + } + + private int bitField0_; + // required string system = 1; + public static final int SYSTEM_FIELD_NUMBER = 1; + private java.lang.Object system_; + public boolean hasSystem() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public String getSystem() { + java.lang.Object ref = system_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + if (com.google.protobuf.Internal.isValidUtf8(bs)) { + system_ = s; + } + return s; + } + } + private com.google.protobuf.ByteString getSystemBytes() { + java.lang.Object ref = system_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((String) ref); + system_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // required string hostname = 2; + public static final int HOSTNAME_FIELD_NUMBER = 2; + private java.lang.Object hostname_; + public boolean hasHostname() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public String getHostname() { + java.lang.Object ref = hostname_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + if (com.google.protobuf.Internal.isValidUtf8(bs)) { + hostname_ = s; + } + return s; + } + } + private com.google.protobuf.ByteString getHostnameBytes() { + java.lang.Object ref = hostname_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((String) ref); + hostname_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // required uint32 port = 3; + public static final int PORT_FIELD_NUMBER = 3; + private int port_; + public boolean hasPort() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public int getPort() { + return port_; + } + + // optional string protocol = 4; + public static final int PROTOCOL_FIELD_NUMBER = 4; + private java.lang.Object protocol_; + public boolean hasProtocol() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + public String getProtocol() { + java.lang.Object ref = protocol_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + if (com.google.protobuf.Internal.isValidUtf8(bs)) { + protocol_ = s; + } + return s; + } + } + private com.google.protobuf.ByteString getProtocolBytes() { + java.lang.Object ref = protocol_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((String) ref); + protocol_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + system_ = ""; + hostname_ = ""; + port_ = 0; + protocol_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasSystem()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasHostname()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPort()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getSystemBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getHostnameBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt32(3, port_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getProtocolBytes()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, getSystemBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getHostnameBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, port_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(4, getProtocolBytes()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static akka.remote.WireFormats.AddressData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static akka.remote.WireFormats.AddressData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AddressData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static akka.remote.WireFormats.AddressData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AddressData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static akka.remote.WireFormats.AddressData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + public static akka.remote.WireFormats.AddressData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static akka.remote.WireFormats.AddressData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input, extensionRegistry)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static akka.remote.WireFormats.AddressData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static akka.remote.WireFormats.AddressData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(akka.remote.WireFormats.AddressData prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements akka.remote.WireFormats.AddressDataOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return akka.remote.WireFormats.internal_static_AddressData_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.remote.WireFormats.internal_static_AddressData_fieldAccessorTable; + } + + // Construct using akka.remote.WireFormats.AddressData.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + system_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + hostname_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + port_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + protocol_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return akka.remote.WireFormats.AddressData.getDescriptor(); + } + + public akka.remote.WireFormats.AddressData getDefaultInstanceForType() { + return akka.remote.WireFormats.AddressData.getDefaultInstance(); + } + + public akka.remote.WireFormats.AddressData build() { + akka.remote.WireFormats.AddressData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + private akka.remote.WireFormats.AddressData buildParsed() + throws com.google.protobuf.InvalidProtocolBufferException { + akka.remote.WireFormats.AddressData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException( + result).asInvalidProtocolBufferException(); + } + return result; + } + + public akka.remote.WireFormats.AddressData buildPartial() { + akka.remote.WireFormats.AddressData result = new akka.remote.WireFormats.AddressData(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.system_ = system_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.hostname_ = hostname_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.port_ = port_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.protocol_ = protocol_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof akka.remote.WireFormats.AddressData) { + return mergeFrom((akka.remote.WireFormats.AddressData)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(akka.remote.WireFormats.AddressData other) { + if (other == akka.remote.WireFormats.AddressData.getDefaultInstance()) return this; + if (other.hasSystem()) { + setSystem(other.getSystem()); + } + if (other.hasHostname()) { + setHostname(other.getHostname()); + } + if (other.hasPort()) { + setPort(other.getPort()); + } + if (other.hasProtocol()) { + setProtocol(other.getProtocol()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasSystem()) { + + return false; + } + if (!hasHostname()) { + + return false; + } + if (!hasPort()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder( + this.getUnknownFields()); + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + this.setUnknownFields(unknownFields.build()); + onChanged(); + return this; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + this.setUnknownFields(unknownFields.build()); + onChanged(); + return this; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + system_ = input.readBytes(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + hostname_ = input.readBytes(); + break; + } + case 24: { + bitField0_ |= 0x00000004; + port_ = input.readUInt32(); + break; + } + case 34: { + bitField0_ |= 0x00000008; + protocol_ = input.readBytes(); + break; + } + } + } + } + + private int bitField0_; + + // required string system = 1; + private java.lang.Object system_ = ""; + public boolean hasSystem() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public String getSystem() { + java.lang.Object ref = system_; + if (!(ref instanceof String)) { + String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + system_ = s; + return s; + } else { + return (String) ref; + } + } + public Builder setSystem(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + system_ = value; + onChanged(); + return this; + } + public Builder clearSystem() { + bitField0_ = (bitField0_ & ~0x00000001); + system_ = getDefaultInstance().getSystem(); + onChanged(); + return this; + } + void setSystem(com.google.protobuf.ByteString value) { + bitField0_ |= 0x00000001; + system_ = value; + onChanged(); + } + + // required string hostname = 2; + private java.lang.Object hostname_ = ""; + public boolean hasHostname() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public String getHostname() { + java.lang.Object ref = hostname_; + if (!(ref instanceof String)) { + String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + hostname_ = s; + return s; + } else { + return (String) ref; + } + } + public Builder setHostname(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + hostname_ = value; + onChanged(); + return this; + } + public Builder clearHostname() { + bitField0_ = (bitField0_ & ~0x00000002); + hostname_ = getDefaultInstance().getHostname(); + onChanged(); + return this; + } + void setHostname(com.google.protobuf.ByteString value) { + bitField0_ |= 0x00000002; + hostname_ = value; + onChanged(); + } + + // required uint32 port = 3; + private int port_ ; + public boolean hasPort() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public int getPort() { + return port_; + } + public Builder setPort(int value) { + bitField0_ |= 0x00000004; + port_ = value; + onChanged(); + return this; + } + public Builder clearPort() { + bitField0_ = (bitField0_ & ~0x00000004); + port_ = 0; + onChanged(); + return this; + } + + // optional string protocol = 4; + private java.lang.Object protocol_ = ""; + public boolean hasProtocol() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + public String getProtocol() { + java.lang.Object ref = protocol_; + if (!(ref instanceof String)) { + String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + protocol_ = s; + return s; + } else { + return (String) ref; + } + } + public Builder setProtocol(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + protocol_ = value; + onChanged(); + return this; + } + public Builder clearProtocol() { + bitField0_ = (bitField0_ & ~0x00000008); + protocol_ = getDefaultInstance().getProtocol(); + onChanged(); + return this; + } + void setProtocol(com.google.protobuf.ByteString value) { + bitField0_ |= 0x00000008; + protocol_ = value; + onChanged(); + } + + // @@protoc_insertion_point(builder_scope:AddressData) + } + + static { + defaultInstance = new AddressData(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:AddressData) } private static com.google.protobuf.Descriptors.Descriptor - internal_static_AkkaRemoteProtocol_descriptor; + internal_static_AckAndEnvelopeContainer_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_AkkaRemoteProtocol_fieldAccessorTable; + internal_static_AckAndEnvelopeContainer_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor - internal_static_RemoteMessageProtocol_descriptor; + internal_static_RemoteEnvelope_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_RemoteMessageProtocol_fieldAccessorTable; + internal_static_RemoteEnvelope_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor - internal_static_RemoteControlProtocol_descriptor; + internal_static_AcknowledgementInfo_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_RemoteControlProtocol_fieldAccessorTable; + internal_static_AcknowledgementInfo_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor - internal_static_ActorRefProtocol_descriptor; + internal_static_ActorRefData_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_ActorRefProtocol_fieldAccessorTable; + internal_static_ActorRefData_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor - internal_static_MessageProtocol_descriptor; + internal_static_SerializedMessage_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_MessageProtocol_fieldAccessorTable; + internal_static_SerializedMessage_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor - internal_static_MetadataEntryProtocol_descriptor; + internal_static_DaemonMsgCreateData_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_MetadataEntryProtocol_fieldAccessorTable; + internal_static_DaemonMsgCreateData_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor - internal_static_AddressProtocol_descriptor; + internal_static_PropsData_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_AddressProtocol_fieldAccessorTable; + internal_static_PropsData_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor - internal_static_DaemonMsgCreateProtocol_descriptor; + internal_static_DeployData_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_DaemonMsgCreateProtocol_fieldAccessorTable; + internal_static_DeployData_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor - internal_static_PropsProtocol_descriptor; + internal_static_AkkaProtocolMessage_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_PropsProtocol_fieldAccessorTable; + internal_static_AkkaProtocolMessage_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor - internal_static_DeployProtocol_descriptor; + internal_static_AkkaControlMessage_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_DeployProtocol_fieldAccessorTable; + internal_static_AkkaControlMessage_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_AkkaHandshakeInfo_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_AkkaHandshakeInfo_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_AddressData_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_AddressData_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -6505,119 +7383,137 @@ public final class RemoteProtocol { descriptor; static { java.lang.String[] descriptorData = { - "\n\024RemoteProtocol.proto\"R\n\022AkkaRemoteProt" + - "ocol\022\017\n\007payload\030\001 \001(\014\022+\n\013instruction\030\002 \001" + - "(\0132\026.RemoteControlProtocol\"\255\001\n\025RemoteMes" + - "sageProtocol\022$\n\trecipient\030\001 \002(\0132\021.ActorR" + - "efProtocol\022!\n\007message\030\002 \002(\0132\020.MessagePro" + - "tocol\022!\n\006sender\030\004 \001(\0132\021.ActorRefProtocol" + - "\022(\n\010metadata\030\005 \003(\0132\026.MetadataEntryProtoc" + - "ol\"l\n\025RemoteControlProtocol\022!\n\013commandTy" + - "pe\030\001 \002(\0162\014.CommandType\022\016\n\006cookie\030\002 \001(\t\022 " + - "\n\006origin\030\003 \001(\0132\020.AddressProtocol\" \n\020Acto", - "rRefProtocol\022\014\n\004path\030\001 \002(\t\"Q\n\017MessagePro" + - "tocol\022\017\n\007message\030\001 \002(\014\022\024\n\014serializerId\030\002" + - " \002(\005\022\027\n\017messageManifest\030\003 \001(\014\"3\n\025Metadat" + - "aEntryProtocol\022\013\n\003key\030\001 \002(\t\022\r\n\005value\030\002 \002" + - "(\014\"S\n\017AddressProtocol\022\016\n\006system\030\001 \002(\t\022\020\n" + - "\010hostname\030\002 \002(\t\022\014\n\004port\030\003 \002(\r\022\020\n\010protoco" + - "l\030\004 \001(\t\"\216\001\n\027DaemonMsgCreateProtocol\022\035\n\005p" + - "rops\030\001 \002(\0132\016.PropsProtocol\022\037\n\006deploy\030\002 \002" + - "(\0132\017.DeployProtocol\022\014\n\004path\030\003 \002(\t\022%\n\nsup" + - "ervisor\030\004 \002(\0132\021.ActorRefProtocol\"^\n\rProp", - "sProtocol\022\037\n\006deploy\030\002 \002(\0132\017.DeployProtoc" + - "ol\022\r\n\005clazz\030\003 \002(\t\022\014\n\004args\030\004 \003(\014\022\017\n\007class" + - "es\030\005 \003(\t\"g\n\016DeployProtocol\022\014\n\004path\030\001 \002(\t" + - "\022\016\n\006config\030\002 \001(\014\022\024\n\014routerConfig\030\003 \001(\014\022\r" + - "\n\005scope\030\004 \001(\014\022\022\n\ndispatcher\030\005 \001(\t*7\n\013Com" + - "mandType\022\013\n\007CONNECT\020\001\022\014\n\010SHUTDOWN\020\002\022\r\n\tH" + - "EARTBEAT\020\003B\017\n\013akka.remoteH\001" + "\n\021WireFormats.proto\"_\n\027AckAndEnvelopeCon" + + "tainer\022!\n\003ack\030\001 \001(\0132\024.AcknowledgementInf" + + "o\022!\n\010envelope\030\002 \001(\0132\017.RemoteEnvelope\"\203\001\n" + + "\016RemoteEnvelope\022 \n\trecipient\030\001 \002(\0132\r.Act" + + "orRefData\022#\n\007message\030\002 \002(\0132\022.SerializedM" + + "essage\022\035\n\006sender\030\004 \001(\0132\r.ActorRefData\022\013\n" + + "\003seq\030\005 \001(\006\";\n\023AcknowledgementInfo\022\025\n\rcum" + + "ulativeAck\030\001 \002(\006\022\r\n\005nacks\030\002 \003(\006\"\034\n\014Actor" + + "RefData\022\014\n\004path\030\001 \002(\t\"S\n\021SerializedMessa" + + "ge\022\017\n\007message\030\001 \002(\014\022\024\n\014serializerId\030\002 \002(", + "\005\022\027\n\017messageManifest\030\003 \001(\014\"~\n\023DaemonMsgC" + + "reateData\022\031\n\005props\030\001 \002(\0132\n.PropsData\022\033\n\006" + + "deploy\030\002 \002(\0132\013.DeployData\022\014\n\004path\030\003 \002(\t\022" + + "!\n\nsupervisor\030\004 \002(\0132\r.ActorRefData\"V\n\tPr" + + "opsData\022\033\n\006deploy\030\002 \002(\0132\013.DeployData\022\r\n\005" + + "clazz\030\003 \002(\t\022\014\n\004args\030\004 \003(\014\022\017\n\007classes\030\005 \003" + + "(\t\"c\n\nDeployData\022\014\n\004path\030\001 \002(\t\022\016\n\006config" + + "\030\002 \001(\014\022\024\n\014routerConfig\030\003 \001(\014\022\r\n\005scope\030\004 " + + "\001(\014\022\022\n\ndispatcher\030\005 \001(\t\"P\n\023AkkaProtocolM" + + "essage\022\017\n\007payload\030\001 \001(\014\022(\n\013instruction\030\002", + " \001(\0132\023.AkkaControlMessage\"b\n\022AkkaControl" + + "Message\022!\n\013commandType\030\001 \002(\0162\014.CommandTy" + + "pe\022)\n\rhandshakeInfo\030\002 \001(\0132\022.AkkaHandshak" + + "eInfo\"N\n\021AkkaHandshakeInfo\022\034\n\006origin\030\001 \002" + + "(\0132\014.AddressData\022\013\n\003uid\030\002 \002(\006\022\016\n\006cookie\030" + + "\003 \001(\t\"O\n\013AddressData\022\016\n\006system\030\001 \002(\t\022\020\n\010" + + "hostname\030\002 \002(\t\022\014\n\004port\030\003 \002(\r\022\020\n\010protocol" + + "\030\004 \001(\t*7\n\013CommandType\022\013\n\007CONNECT\020\001\022\014\n\010SH" + + "UTDOWN\020\002\022\r\n\tHEARTBEAT\020\003B\017\n\013akka.remoteH\001" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.Descriptors.FileDescriptor root) { descriptor = root; - internal_static_AkkaRemoteProtocol_descriptor = + internal_static_AckAndEnvelopeContainer_descriptor = getDescriptor().getMessageTypes().get(0); - internal_static_AkkaRemoteProtocol_fieldAccessorTable = new + internal_static_AckAndEnvelopeContainer_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_AkkaRemoteProtocol_descriptor, - new java.lang.String[] { "Payload", "Instruction", }, - akka.remote.RemoteProtocol.AkkaRemoteProtocol.class, - akka.remote.RemoteProtocol.AkkaRemoteProtocol.Builder.class); - internal_static_RemoteMessageProtocol_descriptor = + internal_static_AckAndEnvelopeContainer_descriptor, + new java.lang.String[] { "Ack", "Envelope", }, + akka.remote.WireFormats.AckAndEnvelopeContainer.class, + akka.remote.WireFormats.AckAndEnvelopeContainer.Builder.class); + internal_static_RemoteEnvelope_descriptor = getDescriptor().getMessageTypes().get(1); - internal_static_RemoteMessageProtocol_fieldAccessorTable = new + internal_static_RemoteEnvelope_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_RemoteMessageProtocol_descriptor, - new java.lang.String[] { "Recipient", "Message", "Sender", "Metadata", }, - akka.remote.RemoteProtocol.RemoteMessageProtocol.class, - akka.remote.RemoteProtocol.RemoteMessageProtocol.Builder.class); - internal_static_RemoteControlProtocol_descriptor = + internal_static_RemoteEnvelope_descriptor, + new java.lang.String[] { "Recipient", "Message", "Sender", "Seq", }, + akka.remote.WireFormats.RemoteEnvelope.class, + akka.remote.WireFormats.RemoteEnvelope.Builder.class); + internal_static_AcknowledgementInfo_descriptor = getDescriptor().getMessageTypes().get(2); - internal_static_RemoteControlProtocol_fieldAccessorTable = new + internal_static_AcknowledgementInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_RemoteControlProtocol_descriptor, - new java.lang.String[] { "CommandType", "Cookie", "Origin", }, - akka.remote.RemoteProtocol.RemoteControlProtocol.class, - akka.remote.RemoteProtocol.RemoteControlProtocol.Builder.class); - internal_static_ActorRefProtocol_descriptor = + internal_static_AcknowledgementInfo_descriptor, + new java.lang.String[] { "CumulativeAck", "Nacks", }, + akka.remote.WireFormats.AcknowledgementInfo.class, + akka.remote.WireFormats.AcknowledgementInfo.Builder.class); + internal_static_ActorRefData_descriptor = getDescriptor().getMessageTypes().get(3); - internal_static_ActorRefProtocol_fieldAccessorTable = new + internal_static_ActorRefData_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_ActorRefProtocol_descriptor, + internal_static_ActorRefData_descriptor, new java.lang.String[] { "Path", }, - akka.remote.RemoteProtocol.ActorRefProtocol.class, - akka.remote.RemoteProtocol.ActorRefProtocol.Builder.class); - internal_static_MessageProtocol_descriptor = + akka.remote.WireFormats.ActorRefData.class, + akka.remote.WireFormats.ActorRefData.Builder.class); + internal_static_SerializedMessage_descriptor = getDescriptor().getMessageTypes().get(4); - internal_static_MessageProtocol_fieldAccessorTable = new + internal_static_SerializedMessage_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_MessageProtocol_descriptor, + internal_static_SerializedMessage_descriptor, new java.lang.String[] { "Message", "SerializerId", "MessageManifest", }, - akka.remote.RemoteProtocol.MessageProtocol.class, - akka.remote.RemoteProtocol.MessageProtocol.Builder.class); - internal_static_MetadataEntryProtocol_descriptor = + akka.remote.WireFormats.SerializedMessage.class, + akka.remote.WireFormats.SerializedMessage.Builder.class); + internal_static_DaemonMsgCreateData_descriptor = getDescriptor().getMessageTypes().get(5); - internal_static_MetadataEntryProtocol_fieldAccessorTable = new + internal_static_DaemonMsgCreateData_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_MetadataEntryProtocol_descriptor, - new java.lang.String[] { "Key", "Value", }, - akka.remote.RemoteProtocol.MetadataEntryProtocol.class, - akka.remote.RemoteProtocol.MetadataEntryProtocol.Builder.class); - internal_static_AddressProtocol_descriptor = - getDescriptor().getMessageTypes().get(6); - internal_static_AddressProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_AddressProtocol_descriptor, - new java.lang.String[] { "System", "Hostname", "Port", "Protocol", }, - akka.remote.RemoteProtocol.AddressProtocol.class, - akka.remote.RemoteProtocol.AddressProtocol.Builder.class); - internal_static_DaemonMsgCreateProtocol_descriptor = - getDescriptor().getMessageTypes().get(7); - internal_static_DaemonMsgCreateProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_DaemonMsgCreateProtocol_descriptor, + internal_static_DaemonMsgCreateData_descriptor, new java.lang.String[] { "Props", "Deploy", "Path", "Supervisor", }, - akka.remote.RemoteProtocol.DaemonMsgCreateProtocol.class, - akka.remote.RemoteProtocol.DaemonMsgCreateProtocol.Builder.class); - internal_static_PropsProtocol_descriptor = - getDescriptor().getMessageTypes().get(8); - internal_static_PropsProtocol_fieldAccessorTable = new + akka.remote.WireFormats.DaemonMsgCreateData.class, + akka.remote.WireFormats.DaemonMsgCreateData.Builder.class); + internal_static_PropsData_descriptor = + getDescriptor().getMessageTypes().get(6); + internal_static_PropsData_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_PropsProtocol_descriptor, + internal_static_PropsData_descriptor, new java.lang.String[] { "Deploy", "Clazz", "Args", "Classes", }, - akka.remote.RemoteProtocol.PropsProtocol.class, - akka.remote.RemoteProtocol.PropsProtocol.Builder.class); - internal_static_DeployProtocol_descriptor = - getDescriptor().getMessageTypes().get(9); - internal_static_DeployProtocol_fieldAccessorTable = new + akka.remote.WireFormats.PropsData.class, + akka.remote.WireFormats.PropsData.Builder.class); + internal_static_DeployData_descriptor = + getDescriptor().getMessageTypes().get(7); + internal_static_DeployData_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_DeployProtocol_descriptor, + internal_static_DeployData_descriptor, new java.lang.String[] { "Path", "Config", "RouterConfig", "Scope", "Dispatcher", }, - akka.remote.RemoteProtocol.DeployProtocol.class, - akka.remote.RemoteProtocol.DeployProtocol.Builder.class); + akka.remote.WireFormats.DeployData.class, + akka.remote.WireFormats.DeployData.Builder.class); + internal_static_AkkaProtocolMessage_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_AkkaProtocolMessage_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_AkkaProtocolMessage_descriptor, + new java.lang.String[] { "Payload", "Instruction", }, + akka.remote.WireFormats.AkkaProtocolMessage.class, + akka.remote.WireFormats.AkkaProtocolMessage.Builder.class); + internal_static_AkkaControlMessage_descriptor = + getDescriptor().getMessageTypes().get(9); + internal_static_AkkaControlMessage_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_AkkaControlMessage_descriptor, + new java.lang.String[] { "CommandType", "HandshakeInfo", }, + akka.remote.WireFormats.AkkaControlMessage.class, + akka.remote.WireFormats.AkkaControlMessage.Builder.class); + internal_static_AkkaHandshakeInfo_descriptor = + getDescriptor().getMessageTypes().get(10); + internal_static_AkkaHandshakeInfo_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_AkkaHandshakeInfo_descriptor, + new java.lang.String[] { "Origin", "Uid", "Cookie", }, + akka.remote.WireFormats.AkkaHandshakeInfo.class, + akka.remote.WireFormats.AkkaHandshakeInfo.Builder.class); + internal_static_AddressData_descriptor = + getDescriptor().getMessageTypes().get(11); + internal_static_AddressData_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_AddressData_descriptor, + new java.lang.String[] { "System", "Hostname", "Port", "Protocol", }, + akka.remote.WireFormats.AddressData.class, + akka.remote.WireFormats.AddressData.Builder.class); return null; } }; diff --git a/akka-remote/src/main/protocol/RemoteProtocol.proto b/akka-remote/src/main/protocol/WireFormats.proto similarity index 51% rename from akka-remote/src/main/protocol/RemoteProtocol.proto rename to akka-remote/src/main/protocol/WireFormats.proto index 0102c8e7b9..0a44dc3ce2 100644 --- a/akka-remote/src/main/protocol/RemoteProtocol.proto +++ b/akka-remote/src/main/protocol/WireFormats.proto @@ -8,94 +8,68 @@ option optimize_for = SPEED; /****************************************** Compile with: cd ./akka-remote/src/main/protocol - protoc RemoteProtocol.proto --java_out ../java + protoc WireFormats.proto --java_out ../java cd ../../../.. ./scripts/fix-protobuf.sh *******************************************/ -message AkkaRemoteProtocol { - optional bytes payload = 1; - optional RemoteControlProtocol instruction = 2; +/****************************************** + * Remoting message formats + ******************************************/ + + +message AckAndEnvelopeContainer { + optional AcknowledgementInfo ack = 1; + optional RemoteEnvelope envelope = 2; } /** * Defines a remote message. */ -message RemoteMessageProtocol { - required ActorRefProtocol recipient = 1; - required MessageProtocol message = 2; - optional ActorRefProtocol sender = 4; - repeated MetadataEntryProtocol metadata = 5; +message RemoteEnvelope { + required ActorRefData recipient = 1; + required SerializedMessage message = 2; + optional ActorRefData sender = 4; + optional fixed64 seq = 5; } -/** - * Defines some control messages for the remoting - */ -message RemoteControlProtocol { - required CommandType commandType = 1; - optional string cookie = 2; - optional AddressProtocol origin = 3; -} - -/** - * Defines the type of the RemoteControlProtocol command type - */ -enum CommandType { - CONNECT = 1; - SHUTDOWN = 2; - HEARTBEAT = 3; +message AcknowledgementInfo { + required fixed64 cumulativeAck = 1; + repeated fixed64 nacks = 2; } /** * Defines a remote ActorRef that "remembers" and uses its original Actor instance * on the original node. */ -message ActorRefProtocol { +message ActorRefData { required string path = 1; } /** * Defines a message. */ -message MessageProtocol { +message SerializedMessage { required bytes message = 1; required int32 serializerId = 2; optional bytes messageManifest = 3; } -/** - * Defines a meta data entry. - */ -message MetadataEntryProtocol { - required string key = 1; - required bytes value = 2; -} - -/** - * Defines a remote address. - */ -message AddressProtocol { - required string system = 1; - required string hostname = 2; - required uint32 port = 3; - optional string protocol = 4; -} - /** * Defines akka.remote.DaemonMsgCreate */ -message DaemonMsgCreateProtocol { - required PropsProtocol props = 1; - required DeployProtocol deploy = 2; +message DaemonMsgCreateData { + required PropsData props = 1; + required DeployData deploy = 2; required string path = 3; - required ActorRefProtocol supervisor = 4; + required ActorRefData supervisor = 4; } /** * Serialization of akka.actor.Props */ -message PropsProtocol { - required DeployProtocol deploy = 2; +message PropsData { + required DeployData deploy = 2; required string clazz = 3; repeated bytes args = 4; repeated string classes = 5; @@ -104,10 +78,59 @@ message PropsProtocol { /** * Serialization of akka.actor.Deploy */ -message DeployProtocol { +message DeployData { required string path = 1; optional bytes config = 2; optional bytes routerConfig = 3; optional bytes scope = 4; optional string dispatcher = 5; } + + +/****************************************** + * Akka Protocol message formats + ******************************************/ + +/** + * Message format of Akka Protocol. + * Message contains either a payload or an instruction. + */ +message AkkaProtocolMessage { + optional bytes payload = 1; + optional AkkaControlMessage instruction = 2; +} + +/** + * Defines some control messages for the remoting + */ +message AkkaControlMessage { + required CommandType commandType = 1; + optional AkkaHandshakeInfo handshakeInfo = 2; +} + +message AkkaHandshakeInfo { + required AddressData origin = 1; + required fixed64 uid = 2; + optional string cookie = 3; + +} + +/** + * Defines the type of the AkkaControlMessage command type + */ +enum CommandType { + CONNECT = 1; + SHUTDOWN = 2; + HEARTBEAT = 3; +} + + +/** + * Defines a remote address. + */ +message AddressData { + required string system = 1; + required string hostname = 2; + required uint32 port = 3; + optional string protocol = 4; +} diff --git a/akka-remote/src/main/resources/reference.conf b/akka-remote/src/main/resources/reference.conf index c9550bbd0f..d8b279af93 100644 --- a/akka-remote/src/main/resources/reference.conf +++ b/akka-remote/src/main/resources/reference.conf @@ -82,12 +82,6 @@ akka { mailbox-type = "akka.dispatch.UnboundedDequeBasedMailbox" } - # If enabled, an inbound connection is only considered to be live after the remote - # system sent an explicit acknowledgement. - # It is recommended to leave this setting on when connectionless transports (e.g. UDP) - # are used. - wait-activity-enabled = on - # Controls the backoff interval after a refused write is reattempted. (Transports may # refuse writes if their internal buffer is full) backoff-interval = 0.01 s @@ -245,6 +239,25 @@ akka { # order of seconds or minutes. gate-unknown-addresses-for = 60 s + # This setting defines the maximum number of unacknowledged system messages + # allowed for a remote system. If this limit is reached the remote system is + # declared to be dead and its UID marked as tainted. + system-message-buffer-size = 1000 + + # This setting defines the maximum idle time after an individual + # acknowledgement for system messages is sent. System message delivery + # is guaranteed by explicit acknowledgement messages. These acks are + # piggybacked on ordinary traffic messages. If no traffic is detected + # during the time period configured here, the remoting will send out + # an individual ack. + system-message-ack-piggyback-timeout = 0.3 s + + # This setting defines the time after messages that have not been + # explicitly acknowledged or negatively acknowledged are resent. + # Messages that were negatively acknowledged are always immediately + # resent. + resend-interval = 1 s + ### Transports and adapters # List of the transport drivers that will be loaded by the remoting. diff --git a/akka-remote/src/main/scala/akka/remote/AckedDelivery.scala b/akka-remote/src/main/scala/akka/remote/AckedDelivery.scala new file mode 100644 index 0000000000..829f610bac --- /dev/null +++ b/akka-remote/src/main/scala/akka/remote/AckedDelivery.scala @@ -0,0 +1,191 @@ +/** + * Copyright (C) 2009-2013 Typesafe Inc. + */ +package akka.remote + +import scala.collection.immutable._ +import akka.AkkaException + +object SeqNo { + + implicit val ord: Ordering[SeqNo] = new Ordering[SeqNo] { + override def compare(x: SeqNo, y: SeqNo): Int = { + val sgn = if (x.rawValue < y.rawValue) -1 else if (x.rawValue > y.rawValue) 1 else 0 + if (((x.rawValue - y.rawValue) * sgn) < 0L) -sgn else sgn + } + } + +} + +/** + * Implements a 64 bit sequence number with proper wrap-around ordering. + */ +case class SeqNo(rawValue: Long) extends Ordered[SeqNo] { + + /** + * Checks if this sequence number is an immediate successor of the provided one. + * + * @param that The second sequence number that has to be exactly one less + * @return true if this sequence number is the successor of the provided one + */ + def isSuccessor(that: SeqNo): Boolean = (this.rawValue - that.rawValue) == 1 + + /** + * Increments the sequence number. Wraps-around if 64 bit limit is reached. + * @return the incremented sequence number + */ + def inc: SeqNo = new SeqNo(this.rawValue + 1L) + + override def compare(that: SeqNo) = SeqNo.ord.compare(this, that) + + override def toString = String.valueOf(rawValue) +} + +object HasSequenceNumber { + implicit def seqOrdering[T <: HasSequenceNumber]: Ordering[T] = new Ordering[T] { + def compare(x: T, y: T) = x.seq.compare(y.seq) + } +} + +/** + * Messages that are to be buffered in [[akka.remote.AckedSendBuffer]] or [[akka.remote.AckedReceiveBuffer]] has + * to implement this interface to provide the sequence needed by the buffers. + */ +trait HasSequenceNumber { + + /** + * Sequence number of the message + */ + def seq: SeqNo +} + +/** + * Class representing an acknowledgement with selective negative acknowledgements. + * + * @param cumulativeAck Represents the highest sequence number received. + * @param nacks Set of sequence numbers between the last delivered one and cumulativeAck that has been not yet received. + */ +case class Ack(cumulativeAck: SeqNo, nacks: Set[SeqNo] = Set.empty) { + override def toString = s"ACK[$cumulativeAck, ${nacks.mkString("{", ", ", "}")}]" +} + +class ResendBufferCapacityReachedException(c: Int) + extends AkkaException(s"Resend buffer capacity of [$c] has been reached.") + +/** + * Implements an immutable resend buffer that buffers messages until they have been acknowledged. Properly removes messages + * when an ack is received. This buffer works together with [[akka.remote.AckedReceiveBuffer]] on the receiving end. + * + * @param capacity Maximum number of messages the buffer is willing to accept. If reached [[akka.remote.ResendBufferCapacityReachedException]] + * is thrown. + * @param nonAcked Sequence of messages that has not yet been acknowledged. + * @param nacked Sequence of messages that has been explicitly negative acknowledged. + * @param maxSeq The maximum sequence number that has been stored in this buffer. Messages having lower sequence number + * will be not stored but rejected with [[java.lang.IllegalArgumentException]] + */ +case class AckedSendBuffer[T <: HasSequenceNumber]( + capacity: Int, + nonAcked: IndexedSeq[T] = Vector.empty[T], + nacked: IndexedSeq[T] = Vector.empty[T], + maxSeq: SeqNo = SeqNo(-1)) { + + /** + * Processes an incoming acknowledgement and returns a new buffer with only unacknowledged elements remaining. + * @param ack The received acknowledgement + * @return An updated buffer containing the remaining unacknowledged messages + */ + def acknowledge(ack: Ack): AckedSendBuffer[T] = this.copy( + nonAcked = nonAcked.filter { m ⇒ m.seq > ack.cumulativeAck }, + nacked = (nacked ++ nonAcked) filter { m ⇒ ack.nacks(m.seq) }) + + /** + * Puts a new message in the buffer. Throws [[java.lang.IllegalArgumentException]] if an out-of-sequence message + * is attempted to be stored. + * @param msg The message to be stored for possible future retransmission. + * @return The updated buffer + */ + def buffer(msg: T): AckedSendBuffer[T] = { + if (msg.seq <= maxSeq) throw new IllegalArgumentException(s"Sequence number must be monotonic. Received [${msg.seq}] " + + s"which is smaller than [$maxSeq]") + + if (nonAcked.size == capacity) throw new ResendBufferCapacityReachedException(capacity) + + this.copy(nonAcked = this.nonAcked :+ msg, maxSeq = msg.seq) + } + + override def toString = nonAcked.map(_.seq).mkString("[", ", ", "]") +} + +/** + * Implements an immutable receive buffer that buffers incoming messages until they can be safely delivered. This + * buffer works together with a [[akka.remote.AckedSendBuffer]] on the sender side. + * + * @param lastDelivered Sequence number of the last message that has been delivered. + * @param cumulativeAck The highest sequence number received so far. + * @param buf Buffer of messages that are waiting for delivery + */ +case class AckedReceiveBuffer[T <: HasSequenceNumber]( + lastDelivered: SeqNo = SeqNo(-1), + cumulativeAck: SeqNo = SeqNo(-1), + buf: SortedSet[T] = TreeSet.empty[T])(implicit val seqOrdering: Ordering[T]) { + + import SeqNo.ord.max + + /** + * Puts a sequenced message in the receive buffer returning a new buffer. + * @param arrivedMsg message to be put into the buffer. + * @return The updated buffer containing the message. + */ + def receive(arrivedMsg: T): AckedReceiveBuffer[T] = { + this.copy( + cumulativeAck = max(arrivedMsg.seq, cumulativeAck), + buf = if (arrivedMsg.seq > lastDelivered && !buf.contains(arrivedMsg)) buf + arrivedMsg else buf) + } + + /** + * Extract all messages that could be safely delivered, an updated ack to be sent to the sender, and an updated + * buffer that has the messages removed that can be delivered. + * @return Triplet of the updated buffer, messages that can be delivered and the updated acknowledgement. + */ + def extractDeliverable: (AckedReceiveBuffer[T], Seq[T], Ack) = { + var deliver = Vector.empty[T] + var ack = Ack(cumulativeAck = cumulativeAck) + var updatedLastDelivered = lastDelivered + var prev = lastDelivered + + for (bufferedMsg ← buf) { + if (bufferedMsg.seq.isSuccessor(updatedLastDelivered)) { + deliver :+= bufferedMsg + updatedLastDelivered = updatedLastDelivered.inc + } else if (!bufferedMsg.seq.isSuccessor(prev)) { + var diff = bufferedMsg.seq.rawValue - prev.rawValue - 1 + var nacks = Set.empty[SeqNo] + + // Collect all missing sequence numbers (gaps) + while (diff > 0) { + nacks += SeqNo(prev.rawValue + diff) + diff -= 1 + } + ack = ack.copy(nacks = ack.nacks ++ nacks) + } + prev = bufferedMsg.seq + } + + (this.copy(buf = buf filterNot deliver.contains, lastDelivered = updatedLastDelivered), deliver, ack) + } + + /** + * Merges two receive buffers. Merging preserves sequencing of messages, and drops all messages that has been + * safely acknowledged by any of the participating buffers. Also updates the expected sequence numbers. + * @param that The receive buffer to merge with + * @return The merged receive buffer. + */ + def mergeFrom(that: AckedReceiveBuffer[T]): AckedReceiveBuffer[T] = { + this.copy( + lastDelivered = max(this.lastDelivered, that.lastDelivered), + cumulativeAck = max(this.cumulativeAck, that.cumulativeAck), + buf = (this.buf union that.buf).filter { _.seq > lastDelivered }) + } + + override def toString = buf.map { _.seq }.mkString("[", ", ", "]") +} \ No newline at end of file diff --git a/akka-remote/src/main/scala/akka/remote/Endpoint.scala b/akka-remote/src/main/scala/akka/remote/Endpoint.scala index dbaf59e470..3a6b6eb17e 100644 --- a/akka-remote/src/main/scala/akka/remote/Endpoint.scala +++ b/akka-remote/src/main/scala/akka/remote/Endpoint.scala @@ -3,21 +3,27 @@ */ package akka.remote -import akka.{ OnlyCauseStackTrace, AkkaException } import akka.actor._ import akka.dispatch.sysmsg.SystemMessage import akka.event.LoggingAdapter import akka.pattern.pipe import akka.remote.EndpointManager.Send -import akka.remote.RemoteProtocol.MessageProtocol +import akka.remote.WireFormats.SerializedMessage import akka.remote.transport.AkkaPduCodec._ import akka.remote.transport.AssociationHandle._ -import akka.remote.transport.{ AkkaPduCodec, Transport, AssociationHandle } +import akka.remote.transport.Transport.InvalidAssociationException +import akka.remote.transport.{ AkkaPduProtobufCodec, AkkaPduCodec, Transport, AkkaProtocolHandle } import akka.serialization.Serialization import akka.util.ByteString -import scala.util.control.NonFatal -import akka.remote.transport.Transport.InvalidAssociationException +import akka.{ OnlyCauseStackTrace, AkkaException } import java.io.NotSerializableException +import java.util.concurrent.ConcurrentHashMap +import scala.concurrent.duration.{ Duration, Deadline } +import scala.util.control.NonFatal +import scala.annotation.tailrec +import akka.remote.EndpointWriter.FlushAndStop +import akka.actor.SupervisorStrategy._ +import akka.remote.EndpointManager.Link /** * INTERNAL API @@ -25,7 +31,7 @@ import java.io.NotSerializableException private[remote] trait InboundMessageDispatcher { def dispatch(recipient: InternalActorRef, recipientAddress: Address, - serializedMessage: MessageProtocol, + serializedMessage: SerializedMessage, senderOption: Option[ActorRef]): Unit } @@ -40,7 +46,7 @@ private[remote] class DefaultMessageDispatcher(private val system: ExtendedActor override def dispatch(recipient: InternalActorRef, recipientAddress: Address, - serializedMessage: MessageProtocol, + serializedMessage: SerializedMessage, senderOption: Option[ActorRef]): Unit = { import provider.remoteSettings._ @@ -87,29 +93,6 @@ private[remote] class DefaultMessageDispatcher(private val system: ExtendedActor } -/** - * INTERNAL API - */ -private[remote] object EndpointWriter { - - /** - * This message signals that the current association maintained by the local EndpointWriter and EndpointReader is - * to be overridden by a new inbound association. This is needed to avoid parallel inbound associations from the - * same remote endpoint: when a parallel inbound association is detected, the old one is removed and the new one is - * used instead. - * @param handle Handle of the new inbound association. - */ - case class TakeOver(handle: AssociationHandle) - case object BackoffTimer - case object FlushAndStop - - sealed trait State - case object Initializing extends State - case object Buffering extends State - case object Writing extends State - case object Handoff extends State -} - /** * INTERNAL API */ @@ -125,6 +108,13 @@ private[remote] class EndpointException(msg: String, cause: Throwable) extends A private[remote] case class InvalidAssociation(localAddress: Address, remoteAddress: Address, cause: Throwable) extends EndpointException("Invalid address: " + remoteAddress, cause) +/** + * INTERNAL API + */ +@SerialVersionUID(1L) +private[remote] case class HopelessAssociation(localAddress: Address, remoteAddress: Address, uid: Option[Int], cause: Throwable) + extends EndpointException("Catastrophic association error.") + /** * INTERNAL API */ @@ -143,6 +133,182 @@ private[remote] class EndpointAssociationException(msg: String, cause: Throwable @SerialVersionUID(1L) private[remote] class OversizedPayloadException(msg: String) extends EndpointException(msg) +/** + * INTERNAL API + */ +private[remote] object ReliableDeliverySupervisor { + case object Ungate + case class GotUid(uid: Int) + + def apply( + handleOrActive: Option[AkkaProtocolHandle], + localAddress: Address, + remoteAddress: Address, + transport: Transport, + settings: RemoteSettings, + codec: AkkaPduCodec, + receiveBuffers: ConcurrentHashMap[Link, AckedReceiveBuffer[Message]]): Props = + Props(classOf[ReliableDeliverySupervisor], handleOrActive, localAddress, remoteAddress, transport, settings, + codec, receiveBuffers) +} + +/** + * INTERNAL API + */ +private[remote] class ReliableDeliverySupervisor( + handleOrActive: Option[AkkaProtocolHandle], + val localAddress: Address, + val remoteAddress: Address, + val transport: Transport, + val settings: RemoteSettings, + val codec: AkkaPduCodec, + val receiveBuffers: ConcurrentHashMap[Link, AckedReceiveBuffer[Message]]) extends Actor { + import ReliableDeliverySupervisor._ + + def retryGateEnabled = settings.RetryGateClosedFor > Duration.Zero + + override val supervisorStrategy = OneForOneStrategy(settings.MaximumRetriesInWindow, settings.RetryWindow, loggingEnabled = false) { + case e @ (_: InvalidAssociation | _: HopelessAssociation) ⇒ Escalate + case NonFatal(e) ⇒ + if (retryGateEnabled) { + import context.dispatcher + context.become(gated) + context.system.scheduler.scheduleOnce(settings.RetryGateClosedFor, self, Ungate) + context.unwatch(writer) + currentHandle = None + Stop + } else { + Restart + } + } + + var currentHandle: Option[AkkaProtocolHandle] = handleOrActive + var resendBuffer = new AckedSendBuffer[Send](settings.SysMsgBufferSize) + var resendDeadline = Deadline.now + settings.SysResendTimeout + var lastCumulativeAck = SeqNo(-1) + + val nextSeq = { + var seqCounter: Long = 0L + () ⇒ { + val tmp = seqCounter + seqCounter += 1 + SeqNo(tmp) + } + } + + var writer: ActorRef = createWriter() + var uid: Option[Int] = handleOrActive map { _.handshakeInfo.uid } + + override def postStop(): Unit = { + // All remaining messages in the buffer has to be delivered to dead letters. It is important to clear the sequence + // number otherwise deadLetters will ignore it to avoid reporting system messages as dead letters while they are + // still possibly retransmitted. + // Such a situation may arise when the EndpointWriter is shut down, and all of its mailbox contents are delivered + // to dead letters. These messages should be ignored, as they still live in resendBuffer and might be delivered to + // the remote system later. + (resendBuffer.nacked ++ resendBuffer.nonAcked) foreach { s ⇒ context.system.deadLetters ! s.copy(seqOpt = None) } + receiveBuffers.remove(Link(localAddress, remoteAddress)) + } + + override def postRestart(reason: Throwable): Unit = { + throw new IllegalStateException( + "BUG: ReliableDeliverySupervisor has been attempted to be restarted. This must not happen.") + } + + override def receive: Receive = { + case FlushAndStop ⇒ + // Trying to serve until our last breath + resendAll() + writer ! FlushAndStop + context.become(flushWait) + case s: Send ⇒ + handleSend(s) + case ack: Ack ⇒ + resendBuffer = resendBuffer.acknowledge(ack) + if (lastCumulativeAck < ack.cumulativeAck) { + resendDeadline = Deadline.now + settings.SysResendTimeout + lastCumulativeAck = ack.cumulativeAck + } else if (resendDeadline.isOverdue()) { + resendAll() + resendDeadline = Deadline.now + settings.SysResendTimeout + } + resendNacked() + case Terminated(_) ⇒ + currentHandle = None + context.become(idle) + case GotUid(u) ⇒ uid = Some(u) + } + + def gated: Receive = { + case Ungate ⇒ + if (resendBuffer.nonAcked.nonEmpty || resendBuffer.nacked.nonEmpty) { + writer = createWriter() + resendAll() + context.become(receive) + } else context.become(idle) + case s @ Send(msg: SystemMessage, _, _, _) ⇒ tryBuffer(s.copy(seqOpt = Some(nextSeq()))) + case s: Send ⇒ context.system.deadLetters ! s + case FlushAndStop ⇒ context.stop(self) + case _ ⇒ // Ignore + } + + def idle: Receive = { + case s: Send ⇒ + writer = createWriter() + resendAll() + handleSend(s) + context.become(receive) + case FlushAndStop ⇒ context.stop(self) + } + + def flushWait: Receive = { + case Terminated(_) ⇒ + // Clear buffer to prevent sending system messages to dead letters -- at this point we are shutting down + // and don't really know if they were properly delivered or not. + resendBuffer = new AckedSendBuffer[Send](0) + context.stop(self) + case _ ⇒ // Ignore + } + + private def handleSend(send: Send): Unit = + if (send.message.isInstanceOf[SystemMessage]) { + val sequencedSend = send.copy(seqOpt = Some(nextSeq())) + tryBuffer(sequencedSend) + writer ! sequencedSend + } else writer ! send + + private def resendNacked(): Unit = resendBuffer.nacked foreach { writer ! _ } + + private def resendAll(): Unit = { + resendNacked() + resendBuffer.nonAcked foreach { writer ! _ } + } + + private def tryBuffer(s: Send): Unit = + try { + resendBuffer = resendBuffer buffer s + } catch { + case NonFatal(e) ⇒ throw new HopelessAssociation(localAddress, remoteAddress, uid, e) + } + + private def createWriter(): ActorRef = { + context.watch(context.actorOf(EndpointWriter( + handleOrActive = currentHandle, + localAddress = localAddress, + remoteAddress = remoteAddress, + transport = transport, + settings = settings, + AkkaPduProtobufCodec, + receiveBuffers = receiveBuffers, + reliableDeliverySupervisor = Some(self)) + .withDispatcher("akka.remote.writer-dispatcher"), + "endpointWriter")) + } +} + +/** + * INTERNAL API + */ private[remote] abstract class EndpointActor( val localAddress: Address, val remoteAddress: Address, @@ -161,16 +327,58 @@ private[remote] abstract class EndpointActor( } } +/** + * INTERNAL API + */ +private[remote] object EndpointWriter { + + def apply( + handleOrActive: Option[AkkaProtocolHandle], + localAddress: Address, + remoteAddress: Address, + transport: Transport, + settings: RemoteSettings, + codec: AkkaPduCodec, + receiveBuffers: ConcurrentHashMap[Link, AckedReceiveBuffer[Message]], + reliableDeliverySupervisor: Option[ActorRef]): Props = + Props(classOf[EndpointWriter], handleOrActive, localAddress, remoteAddress, transport, settings, codec, + receiveBuffers, reliableDeliverySupervisor) + + /** + * This message signals that the current association maintained by the local EndpointWriter and EndpointReader is + * to be overridden by a new inbound association. This is needed to avoid parallel inbound associations from the + * same remote endpoint: when a parallel inbound association is detected, the old one is removed and the new one is + * used instead. + * @param handle Handle of the new inbound association. + */ + case class TakeOver(handle: AkkaProtocolHandle) + case object BackoffTimer + case object FlushAndStop + case object AckIdleCheckTimer + + case class OutboundAck(ack: Ack) + + sealed trait State + case object Initializing extends State + case object Buffering extends State + case object Writing extends State + case object Handoff extends State + + val AckIdleTimerName = "AckIdleTimer" +} + /** * INTERNAL API */ private[remote] class EndpointWriter( - handleOrActive: Option[AssociationHandle], + handleOrActive: Option[AkkaProtocolHandle], localAddress: Address, remoteAddress: Address, transport: Transport, settings: RemoteSettings, - codec: AkkaPduCodec) extends EndpointActor(localAddress, remoteAddress, transport, settings, codec) with Stash with FSM[EndpointWriter.State, Unit] { + codec: AkkaPduCodec, + val receiveBuffers: ConcurrentHashMap[Link, AckedReceiveBuffer[Message]], + val reliableDeliverySupervisor: Option[ActorRef]) extends EndpointActor(localAddress, remoteAddress, transport, settings, codec) with Stash with FSM[EndpointWriter.State, Unit] { import EndpointWriter._ import context.dispatcher @@ -178,9 +386,14 @@ private[remote] class EndpointWriter( val extendedSystem: ExtendedActorSystem = context.system.asInstanceOf[ExtendedActorSystem] var reader: Option[ActorRef] = None - var handle: Option[AssociationHandle] = handleOrActive // FIXME: refactor into state data + var handle: Option[AkkaProtocolHandle] = handleOrActive // FIXME: refactor into state data val readerId = Iterator from 0 + def newAckDeadline: Deadline = Deadline.now + settings.SysMsgAckTimeout + var ackDeadline: Deadline = newAckDeadline + + var lastAck: Option[Ack] = None + override val supervisorStrategy = OneForOneStrategy() { case NonFatal(e) ⇒ publishAndThrow(e) } val msgDispatch = new DefaultMessageDispatcher(extendedSystem, RARP(extendedSystem).provider, log) @@ -203,7 +416,10 @@ private[remote] class EndpointWriter( preStart() } - override def preStart(): Unit = + override def preStart(): Unit = { + + setTimer(AckIdleTimerName, AckIdleCheckTimer, settings.SysMsgAckTimeout / 2, repeat = true) + startWith( handle match { case Some(h) ⇒ @@ -213,18 +429,20 @@ private[remote] class EndpointWriter( transport.associate(remoteAddress) pipeTo self Initializing }, - ()) + stateData = ()) + } when(Initializing) { - case Event(Send(msg, senderOption, recipient), _) ⇒ + case Event(Send(msg, senderOption, recipient, _), _) ⇒ stash() stay() case Event(Status.Failure(e: InvalidAssociationException), _) ⇒ publishAndThrow(new InvalidAssociation(localAddress, remoteAddress, e)) case Event(Status.Failure(e), _) ⇒ publishAndThrow(new EndpointAssociationException(s"Association failed with [$remoteAddress]", e)) - case Event(inboundHandle: AssociationHandle, _) ⇒ + case Event(inboundHandle: AkkaProtocolHandle, _) ⇒ // Assert handle == None? + context.parent ! ReliableDeliverySupervisor.GotUid(inboundHandle.handshakeInfo.uid) handle = Some(inboundHandle) reader = startReadEndpoint(inboundHandle) goto(Writing) @@ -232,7 +450,7 @@ private[remote] class EndpointWriter( } when(Buffering) { - case Event(Send(msg, senderOption, recipient), _) ⇒ + case Event(_: Send, _) ⇒ stash() stay() @@ -244,17 +462,26 @@ private[remote] class EndpointWriter( } when(Writing) { - case Event(Send(msg, senderOption, recipient), _) ⇒ + case Event(s @ Send(msg, senderOption, recipient, seqOption), _) ⇒ try { handle match { case Some(h) ⇒ - val pdu = codec.constructMessage(recipient.localAddressToUse, recipient, serializeMessage(msg), senderOption) + ackDeadline = newAckDeadline + + val pdu = codec.constructMessage( + recipient.localAddressToUse, + recipient, + serializeMessage(msg), + senderOption, + seqOption = seqOption, + ackOption = lastAck) + if (pdu.size > transport.maximumPayloadBytes) { publishAndStay(new OversizedPayloadException(s"Discarding oversized payload sent to ${recipient}: max allowed size ${transport.maximumPayloadBytes} bytes, actual size of encoded ${msg.getClass} was ${pdu.size} bytes.")) } else if (h.write(pdu)) { stay() } else { - stash() + if (seqOption.isEmpty) stash() goto(Buffering) } case None ⇒ @@ -267,7 +494,14 @@ private[remote] class EndpointWriter( } // We are in Writing state, so stash is empty, safe to stop here - case Event(FlushAndStop, _) ⇒ stop() + case Event(FlushAndStop, _) ⇒ + // Try to send a last Ack message + trySendPureAck() + stop() + + case Event(AckIdleCheckTimer, _) if ackDeadline.isOverdue() ⇒ + trySendPureAck() + stay() } when(Handoff) { @@ -276,16 +510,15 @@ private[remote] class EndpointWriter( unstashAll() goto(Writing) - case Event(Send(msg, senderOption, recipient), _) ⇒ + case Event(Send(msg, senderOption, recipient, _), _) ⇒ stash() stay() - // TakeOver messages are not handled here but inside the whenUnhandled block, because the procedure is exactly the - // same. Any outstanding } whenUnhandled { - case Event(Terminated(r), _) if r == reader.orNull ⇒ publishAndThrow(new EndpointDisassociatedException("Disassociated")) + case Event(Terminated(r), _) if r == reader.orNull ⇒ + publishAndThrow(new EndpointDisassociatedException("Disassociated")) case Event(TakeOver(newHandle), _) ⇒ // Shutdown old reader handle foreach { _.disassociate() } @@ -294,6 +527,11 @@ private[remote] class EndpointWriter( goto(Handoff) case Event(FlushAndStop, _) ⇒ stop() + case Event(OutboundAck(ack), _) ⇒ + lastAck = Some(ack) + trySendPureAck() + stay() + case Event(AckIdleCheckTimer, _) ⇒ stay() // Ignore } onTransition { @@ -309,7 +547,7 @@ private[remote] class EndpointWriter( onTermination { case StopEvent(_, _, _) ⇒ - // FIXME: Add a test case for this + cancelTimer(AckIdleTimerName) // It is important to call unstashAll() for the stash to work properly and maintain messages during restart. // As the FSM trait does not call super.postStop(), this call is needed unstashAll() @@ -317,16 +555,20 @@ private[remote] class EndpointWriter( eventPublisher.notifyListeners(DisassociatedEvent(localAddress, remoteAddress, inbound)) } - private def startReadEndpoint(handle: AssociationHandle): Some[ActorRef] = { + private def trySendPureAck(): Unit = for (h ← handle; ack ← lastAck) + if (h.write(codec.constructPureAck(ack))) ackDeadline = newAckDeadline + + private def startReadEndpoint(handle: AkkaProtocolHandle): Some[ActorRef] = { val newReader = context.watch(context.actorOf( - Props(new EndpointReader(localAddress, remoteAddress, transport, settings, codec, msgDispatch, inbound)), + EndpointReader(localAddress, remoteAddress, transport, settings, codec, + msgDispatch, inbound, reliableDeliverySupervisor, receiveBuffers), "endpointReader-" + AddressUrlEncoder(remoteAddress) + "-" + readerId.next())) handle.readHandlerPromise.success(ActorHandleEventListener(newReader)) Some(newReader) } - private def serializeMessage(msg: Any): MessageProtocol = handle match { + private def serializeMessage(msg: Any): SerializedMessage = handle match { case Some(h) ⇒ Serialization.currentTransportInformation.withValue(Serialization.Information(h.localAddress, context.system)) { (MessageSerializer.serialize(extendedSystem, msg.asInstanceOf[AnyRef])) @@ -337,6 +579,26 @@ private[remote] class EndpointWriter( } +/** + * INTERNAL API + */ +private[remote] object EndpointReader { + + def apply( + localAddress: Address, + remoteAddress: Address, + transport: Transport, + settings: RemoteSettings, + codec: AkkaPduCodec, + msgDispatch: InboundMessageDispatcher, + inbound: Boolean, + reliableDeliverySupervisor: Option[ActorRef], + receiveBuffers: ConcurrentHashMap[Link, AckedReceiveBuffer[Message]]): Props = + Props(classOf[EndpointReader], localAddress, remoteAddress, transport, settings, codec, msgDispatch, inbound, + reliableDeliverySupervisor, receiveBuffers) + +} + /** * INTERNAL API */ @@ -347,23 +609,73 @@ private[remote] class EndpointReader( settings: RemoteSettings, codec: AkkaPduCodec, msgDispatch: InboundMessageDispatcher, - val inbound: Boolean) extends EndpointActor(localAddress, remoteAddress, transport, settings, codec) { + val inbound: Boolean, + val reliableDeliverySupervisor: Option[ActorRef], + val receiveBuffers: ConcurrentHashMap[Link, AckedReceiveBuffer[Message]]) extends EndpointActor(localAddress, remoteAddress, transport, settings, codec) { + + import EndpointWriter.OutboundAck val provider = RARP(context.system).provider + var ackedReceiveBuffer = new AckedReceiveBuffer[Message] + + override def preStart(): Unit = { + receiveBuffers.get(Link(localAddress, remoteAddress)) match { + case null ⇒ + case buf ⇒ + ackedReceiveBuffer = buf + deliverAndAck() + } + } + + override def postStop(): Unit = { + + @tailrec + def updateSavedState(key: Link, expectedState: AckedReceiveBuffer[Message]): Unit = { + if (expectedState eq null) { + if (receiveBuffers.putIfAbsent(key, ackedReceiveBuffer) ne null) updateSavedState(key, receiveBuffers.get(key)) + } else if (!receiveBuffers.replace(key, expectedState, expectedState.mergeFrom(ackedReceiveBuffer))) + updateSavedState(key, receiveBuffers.get(key)) + } + + val key = Link(localAddress, remoteAddress) + updateSavedState(key, receiveBuffers.get(key)) + } override def receive: Receive = { case Disassociated ⇒ context.stop(self) - case InboundPayload(p) ⇒ - if (p.size > transport.maximumPayloadBytes) { - publishError(new OversizedPayloadException(s"Discarding oversized payload received: max allowed size ${transport.maximumPayloadBytes} bytes, actual size ${p.size} bytes.")) - } else { - val msg = decodePdu(p) - msgDispatch.dispatch(msg.recipient, msg.recipientAddress, msg.serializedMessage, msg.senderOption) + case InboundPayload(p) if p.size <= transport.maximumPayloadBytes ⇒ + val (ackOption, msgOption) = tryDecodeMessageAndAck(p) + + for (ack ← ackOption; reliableDelivery ← reliableDeliverySupervisor) reliableDelivery ! ack + + msgOption match { + case Some(msg) ⇒ + if (msg.reliableDeliveryEnabled) { + ackedReceiveBuffer = ackedReceiveBuffer.receive(msg) + deliverAndAck() + } else msgDispatch.dispatch(msg.recipient, msg.recipientAddress, msg.serializedMessage, msg.senderOption) + + case None ⇒ } + + case InboundPayload(oversized) ⇒ + publishError(new OversizedPayloadException(s"Discarding oversized payload received: " + + s"max allowed size [${transport.maximumPayloadBytes}] bytes, actual size [${oversized.size}] bytes.")) + } - private def decodePdu(pdu: ByteString): Message = try { + private def deliverAndAck(): Unit = { + val (updatedBuffer, deliver, ack) = ackedReceiveBuffer.extractDeliverable + ackedReceiveBuffer = updatedBuffer + // Notify writer that some messages can be acked + context.parent ! OutboundAck(ack) + deliver foreach { m ⇒ + msgDispatch.dispatch(m.recipient, m.recipientAddress, m.serializedMessage, m.senderOption) + } + } + + private def tryDecodeMessageAndAck(pdu: ByteString): (Option[Ack], Option[Message]) = try { codec.decodeMessage(pdu, provider, localAddress) } catch { case NonFatal(e) ⇒ throw new EndpointException("Error while decoding incoming Akka PDU", e) diff --git a/akka-remote/src/main/scala/akka/remote/MessageSerializer.scala b/akka-remote/src/main/scala/akka/remote/MessageSerializer.scala index 7d26131f6d..7ef626433f 100644 --- a/akka-remote/src/main/scala/akka/remote/MessageSerializer.scala +++ b/akka-remote/src/main/scala/akka/remote/MessageSerializer.scala @@ -4,7 +4,7 @@ package akka.remote -import akka.remote.RemoteProtocol._ +import akka.remote.WireFormats._ import com.google.protobuf.ByteString import akka.actor.ExtendedActorSystem import akka.serialization.SerializationExtension @@ -19,7 +19,7 @@ private[akka] object MessageSerializer { /** * Uses Akka Serialization for the specified ActorSystem to transform the given MessageProtocol to a message */ - def deserialize(system: ExtendedActorSystem, messageProtocol: MessageProtocol): AnyRef = { + def deserialize(system: ExtendedActorSystem, messageProtocol: SerializedMessage): AnyRef = { SerializationExtension(system).deserialize( messageProtocol.getMessage.toByteArray, messageProtocol.getSerializerId, @@ -29,10 +29,10 @@ private[akka] object MessageSerializer { /** * Uses Akka Serialization for the specified ActorSystem to transform the given message to a MessageProtocol */ - def serialize(system: ExtendedActorSystem, message: AnyRef): MessageProtocol = { + def serialize(system: ExtendedActorSystem, message: AnyRef): SerializedMessage = { val s = SerializationExtension(system) val serializer = s.findSerializerFor(message) - val builder = MessageProtocol.newBuilder + val builder = SerializedMessage.newBuilder builder.setMessage(ByteString.copyFrom(serializer.toBinary(message))) builder.setSerializerId(serializer.identifier) if (serializer.includeManifest) diff --git a/akka-remote/src/main/scala/akka/remote/RemoteActorRefProvider.scala b/akka-remote/src/main/scala/akka/remote/RemoteActorRefProvider.scala index b0f3d8c3b2..5d80522c90 100644 --- a/akka-remote/src/main/scala/akka/remote/RemoteActorRefProvider.scala +++ b/akka-remote/src/main/scala/akka/remote/RemoteActorRefProvider.scala @@ -14,6 +14,7 @@ import scala.util.control.NonFatal import akka.actor.SystemGuardian.{ TerminationHookDone, TerminationHook, RegisterTerminationHook } import scala.util.control.Exception.Catcher import scala.concurrent.{ ExecutionContext, Future } +import scala.concurrent.forkjoin.ThreadLocalRandom import com.typesafe.config.Config import akka.ConfigurationException @@ -74,16 +75,18 @@ private[akka] object RemoteActorRefProvider { private class RemoteDeadLetterActorRef(_provider: ActorRefProvider, _path: ActorPath, _eventStream: EventStream) extends DeadLetterActorRef(_provider, _path, _eventStream) { + import EndpointManager.Send override def !(message: Any)(implicit sender: ActorRef): Unit = message match { - case EndpointManager.Send(m, senderOption, _) ⇒ super.!(m)(senderOption.orNull) - case _ ⇒ super.!(message)(sender) - } - - override def specialHandle(msg: Any, sender: ActorRef): Boolean = msg match { - // unwrap again in case the original message was DeadLetter(EndpointManager.Send(m)) - case EndpointManager.Send(m, _, _) ⇒ super.specialHandle(m, sender) - case _ ⇒ super.specialHandle(msg, sender) + case Send(m, senderOption, _, seqOpt) ⇒ + // else ignore: it is a reliably delivered message that might be retried later, and it has not yet deserved + // the dead letter status + if (seqOpt.isEmpty) super.!(m)(senderOption.orNull) + case DeadLetter(Send(m, senderOption, recipient, seqOpt), _, _) ⇒ + // else ignore: it is a reliably delivered message that might be retried later, and it has not yet deserved + // the dead letter status + if (seqOpt.isEmpty) super.!(m)(senderOption.orNull) + case _ ⇒ super.!(message)(sender) } @throws(classOf[java.io.ObjectStreamException]) diff --git a/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala b/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala index ab2556a5fa..73614e03f1 100644 --- a/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala +++ b/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala @@ -42,6 +42,12 @@ class RemoteSettings(val config: Config) { val BackoffPeriod: FiniteDuration = Duration(getMilliseconds("akka.remote.backoff-interval"), MILLISECONDS) + val SysMsgAckTimeout: FiniteDuration = Duration(getMilliseconds("akka.remote.system-message-ack-piggyback-timeout"), MILLISECONDS) + + val SysResendTimeout: FiniteDuration = Duration(getMilliseconds("akka.remote.resend-interval"), MILLISECONDS) + + val SysMsgBufferSize: Int = getInt("akka.remote.system-message-buffer-size") + val CommandAckTimeout: Timeout = Timeout(Duration(getMilliseconds("akka.remote.command-ack-timeout"), MILLISECONDS)) diff --git a/akka-remote/src/main/scala/akka/remote/Remoting.scala b/akka-remote/src/main/scala/akka/remote/Remoting.scala index df1f93ca7b..6069ca67b4 100644 --- a/akka-remote/src/main/scala/akka/remote/Remoting.scala +++ b/akka-remote/src/main/scala/akka/remote/Remoting.scala @@ -7,7 +7,7 @@ import akka.actor.SupervisorStrategy._ import akka.actor._ import akka.event.{ Logging, LoggingAdapter } import akka.japi.Util.immutableSeq -import akka.pattern.{ gracefulStop, pipe, ask } +import akka.pattern.{ AskTimeoutException, gracefulStop, pipe, ask } import akka.remote.EndpointManager._ import akka.remote.Remoting.TransportSupervisor import akka.remote.transport.Transport.{ ActorAssociationEventListener, AssociationEventListener, InboundAssociation } @@ -21,6 +21,8 @@ import scala.concurrent.duration._ import scala.concurrent.{ Promise, Await, Future } import scala.util.control.NonFatal import scala.util.{ Failure, Success } +import akka.remote.transport.AkkaPduCodec.Message +import java.util.concurrent.ConcurrentHashMap /** * INTERNAL API @@ -223,8 +225,13 @@ private[remote] object EndpointManager { case class Listen(addressesPromise: Promise[Seq[(Transport, Address)]]) extends RemotingCommand case object StartupFinished extends RemotingCommand case object ShutdownAndFlush extends RemotingCommand - case class Send(message: Any, senderOption: Option[ActorRef], recipient: RemoteActorRef) extends RemotingCommand { + case class Send(message: Any, senderOption: Option[ActorRef], recipient: RemoteActorRef, seqOpt: Option[SeqNo] = None) + extends RemotingCommand with HasSequenceNumber { override def toString = s"Remote message $senderOption -> $recipient" + + // This MUST throw an exception to indicate that we attempted to put a nonsequenced message in one of the + // acknowledged delivery buffers + def seq = seqOpt.get } case class ManagementCommand(cmd: Any) extends RemotingCommand case class ManagementCommandAck(status: Boolean) @@ -234,6 +241,9 @@ private[remote] object EndpointManager { case class ListensResult(addressesPromise: Promise[Seq[(Transport, Address)]], results: Seq[(Transport, Address, Promise[AssociationEventListener])]) + // Helper class to store address pairs + case class Link(localAddress: Address, remoteAddress: Address) + sealed trait EndpointPolicy { /** @@ -358,29 +368,29 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends log.error("Tried to associate with invalid remote address [{}]. " + "Address is now quarantined, all messages to this address will be delivered to dead letters.", remoteAddress) endpoints.markAsFailed(sender, Deadline.now + settings.UnknownAddressGateClosedFor) + context.system.eventStream.publish(AddressTerminated(remoteAddress)) + Stop + + case e @ HopelessAssociation(localAddress, remoteAddress, uid, _) ⇒ + log.error("Association with [{}] having uid [{}] is irrecoverably failed. UID is now quarantined and all " + + "messages to this UID will be delivered to dead letters. Remote actorsystem must be restarted to recover" + + "from this situation.", remoteAddress, uid) + endpoints.markAsQuarantined(remoteAddress, e) // TODO: quarantine uid + context.system.eventStream.publish(AddressTerminated(remoteAddress)) Stop case NonFatal(e) ⇒ - // logging e match { case _: EndpointDisassociatedException | _: EndpointAssociationException ⇒ // no logging case _ ⇒ log.error(e, e.getMessage) } - - // Retrying immediately if the retry gate is disabled, and it is an endpoint used for writing. - if (!retryGateEnabled && endpoints.isWritable(sender)) { - // This strategy keeps all the messages in the stash of the endpoint so restart will transfer the queue - // to the restarted endpoint -- thus no messages are lost - Restart - } else { - // This strategy throws away all the messages enqueued in the endpoint (in its stash), registers the time of failure, - // keeps throwing away messages until the retry gate becomes open (time specified in RetryGateClosedFor) - endpoints.markAsFailed(sender, Deadline.now + settings.RetryGateClosedFor) - Stop - } + Stop } + // Structure for saving reliable delivery state across restarts of Endpoints + val receiveBuffers = new ConcurrentHashMap[Link, AckedReceiveBuffer[Message]]() + def receive = { case Listen(addressesPromise) ⇒ listens map { ListensResult(addressesPromise, _) } pipeTo self @@ -415,7 +425,7 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends } Future.fold(allStatuses)(true)(_ && _) map ManagementCommandAck pipeTo sender - case s @ Send(message, senderOption, recipientRef) ⇒ + case s @ Send(message, senderOption, recipientRef, _) ⇒ val recipientAddress = recipientRef.path.address def createAndRegisterWritingEndpoint(): ActorRef = endpoints.registerWritableEndpoint(recipientAddress, createEndpoint( @@ -423,34 +433,37 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends recipientRef.localAddressToUse, transportMapping(recipientRef.localAddressToUse), settings, - None)) + None, + writing = true)) endpoints.writableEndpointWithPolicyFor(recipientAddress) match { case Some(Pass(endpoint)) ⇒ endpoint ! s case Some(Gated(timeOfRelease)) ⇒ if (timeOfRelease.isOverdue()) createAndRegisterWritingEndpoint() ! s - else forwardToDeadLetters(s) + else extendedSystem.deadLetters ! s case Some(Quarantined(_)) ⇒ - forwardToDeadLetters(s) + extendedSystem.deadLetters ! s case None ⇒ createAndRegisterWritingEndpoint() ! s } - case InboundAssociation(handle) ⇒ endpoints.readOnlyEndpointFor(handle.remoteAddress) match { + case InboundAssociation(handle: AkkaProtocolHandle) ⇒ endpoints.readOnlyEndpointFor(handle.remoteAddress) match { case Some(endpoint) ⇒ endpoint ! EndpointWriter.TakeOver(handle) case None ⇒ if (endpoints.isQuarantined(handle.remoteAddress)) handle.disassociate() else { + val writing = settings.UsePassiveConnections && !endpoints.hasWritableEndpointFor(handle.remoteAddress) eventPublisher.notifyListeners(AssociatedEvent(handle.localAddress, handle.remoteAddress, true)) val endpoint = createEndpoint( handle.remoteAddress, handle.localAddress, transportMapping(handle.localAddress), settings, - Some(handle)) - if (settings.UsePassiveConnections && !endpoints.hasWritableEndpointFor(handle.remoteAddress)) + Some(handle), + writing) + if (writing) endpoints.registerWritableEndpoint(handle.remoteAddress, endpoint) else endpoints.registerReadOnlyEndpoint(handle.remoteAddress, endpoint) @@ -465,22 +478,19 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends val sys = context.system // Avoid closing over context Future sequence endpoints.allEndpoints.map { gracefulStop(_, settings.FlushWait, EndpointWriter.FlushAndStop) - } map { _.foldLeft(true) { _ && _ } } pipeTo sender + } map { _.foldLeft(true) { _ && _ } } recover { + case _: AskTimeoutException ⇒ false + } pipeTo sender // Ignore all other writes context.become(flushing) } def flushing: Receive = { - case s: Send ⇒ forwardToDeadLetters(s) + case s: Send ⇒ extendedSystem.deadLetters ! s case InboundAssociation(h) ⇒ h.disassociate() case Terminated(_) ⇒ // why should we care now? } - private def forwardToDeadLetters(s: Send): Unit = { - val sender = s.senderOption.getOrElse(extendedSystem.deadLetters) - extendedSystem.deadLetters.tell(DeadLetter(s.message, sender, s.recipient), sender) - } - private def listens: Future[Seq[(Transport, Address, Promise[AssociationEventListener])]] = { /* * Constructs chains of adapters on top of each driver as given in configuration. The resulting structure looks @@ -532,18 +542,28 @@ private[remote] class EndpointManager(conf: Config, log: LoggingAdapter) extends localAddress: Address, transport: Transport, endpointSettings: RemoteSettings, - handleOption: Option[AssociationHandle]): ActorRef = { + handleOption: Option[AkkaProtocolHandle], + writing: Boolean): ActorRef = { assert(transportMapping contains localAddress) - context.watch(context.actorOf(Props( - new EndpointWriter( - handleOption, - localAddress, - remoteAddress, - transport, - endpointSettings, - AkkaPduProtobufCodec)) - .withDispatcher("akka.remote.writer-dispatcher"), + if (writing) context.watch(context.actorOf(ReliableDeliverySupervisor( + handleOption, + localAddress, + remoteAddress, + transport, + endpointSettings, + AkkaPduProtobufCodec, + receiveBuffers).withDispatcher("akka.remote.writer-dispatcher"), + "reliableEndpointWriter-" + AddressUrlEncoder(remoteAddress) + "-" + endpointId.next())) + else context.watch(context.actorOf(EndpointWriter( + handleOption, + localAddress, + remoteAddress, + transport, + endpointSettings, + AkkaPduProtobufCodec, + receiveBuffers, + reliableDeliverySupervisor = None).withDispatcher("akka.remote.writer-dispatcher"), "endpointWriter-" + AddressUrlEncoder(remoteAddress) + "-" + endpointId.next())) } diff --git a/akka-remote/src/main/scala/akka/remote/serialization/DaemonMsgCreateSerializer.scala b/akka-remote/src/main/scala/akka/remote/serialization/DaemonMsgCreateSerializer.scala index d97c68bb50..41f1046e9c 100644 --- a/akka-remote/src/main/scala/akka/remote/serialization/DaemonMsgCreateSerializer.scala +++ b/akka-remote/src/main/scala/akka/remote/serialization/DaemonMsgCreateSerializer.scala @@ -10,7 +10,7 @@ import com.google.protobuf.ByteString import com.typesafe.config.{ Config, ConfigFactory } import akka.actor.{ Actor, ActorRef, Deploy, ExtendedActorSystem, NoScopeGiven, Props, Scope } import akka.remote.DaemonMsgCreate -import akka.remote.RemoteProtocol.{ DaemonMsgCreateProtocol, DeployProtocol, PropsProtocol } +import akka.remote.WireFormats.{ DaemonMsgCreateData, DeployData, PropsData } import akka.routing.{ NoRouter, RouterConfig } import scala.reflect.ClassTag import util.{ Failure, Success } @@ -36,8 +36,8 @@ private[akka] class DaemonMsgCreateSerializer(val system: ExtendedActorSystem) e def toBinary(obj: AnyRef): Array[Byte] = obj match { case DaemonMsgCreate(props, deploy, path, supervisor) ⇒ - def deployProto(d: Deploy): DeployProtocol = { - val builder = DeployProtocol.newBuilder.setPath(d.path) + def deployProto(d: Deploy): DeployData = { + val builder = DeployData.newBuilder.setPath(d.path) if (d.config != ConfigFactory.empty) builder.setConfig(serialize(d.config)) if (d.routerConfig != NoRouter) @@ -50,7 +50,7 @@ private[akka] class DaemonMsgCreateSerializer(val system: ExtendedActorSystem) e } def propsProto = { - val builder = PropsProtocol.newBuilder + val builder = PropsData.newBuilder .setClazz(props.clazz.getName) .setDeploy(deployProto(props.deploy)) props.args map serialize foreach builder.addArgs @@ -58,7 +58,7 @@ private[akka] class DaemonMsgCreateSerializer(val system: ExtendedActorSystem) e builder.build } - DaemonMsgCreateProtocol.newBuilder. + DaemonMsgCreateData.newBuilder. setProps(propsProto). setDeploy(deployProto(deploy)). setPath(path). @@ -71,9 +71,9 @@ private[akka] class DaemonMsgCreateSerializer(val system: ExtendedActorSystem) e } def fromBinary(bytes: Array[Byte], clazz: Option[Class[_]]): AnyRef = { - val proto = DaemonMsgCreateProtocol.parseFrom(bytes) + val proto = DaemonMsgCreateData.parseFrom(bytes) - def deploy(protoDeploy: DeployProtocol): Deploy = { + def deploy(protoDeploy: DeployData): Deploy = { val config = if (protoDeploy.hasConfig) deserialize(protoDeploy.getConfig, classOf[Config]) else ConfigFactory.empty diff --git a/akka-remote/src/main/scala/akka/remote/serialization/ProtobufSerializer.scala b/akka-remote/src/main/scala/akka/remote/serialization/ProtobufSerializer.scala index 42ff2bc317..cae6904c88 100644 --- a/akka-remote/src/main/scala/akka/remote/serialization/ProtobufSerializer.scala +++ b/akka-remote/src/main/scala/akka/remote/serialization/ProtobufSerializer.scala @@ -4,10 +4,10 @@ package akka.remote.serialization +import akka.actor.{ ExtendedActorSystem, ActorRef } +import akka.remote.WireFormats.ActorRefData import akka.serialization.{ Serializer, Serialization } import com.google.protobuf.Message -import akka.actor.{ ActorSystem, ActorRef, ExtendedActorSystem } -import akka.remote.RemoteProtocol.ActorRefProtocol object ProtobufSerializer { @@ -15,8 +15,8 @@ object ProtobufSerializer { * Helper to serialize an [[akka.actor.ActorRef]] to Akka's * protobuf representation. */ - def serializeActorRef(ref: ActorRef): ActorRefProtocol = { - ActorRefProtocol.newBuilder.setPath(Serialization.serializedActorPath(ref)).build + def serializeActorRef(ref: ActorRef): ActorRefData = { + ActorRefData.newBuilder.setPath(Serialization.serializedActorPath(ref)).build } /** @@ -24,7 +24,7 @@ object ProtobufSerializer { * from Akka's protobuf representation in the supplied * [[akka.actor.ActorSystem]]. */ - def deserializeActorRef(system: ExtendedActorSystem, refProtocol: ActorRefProtocol): ActorRef = + def deserializeActorRef(system: ExtendedActorSystem, refProtocol: ActorRefData): ActorRef = system.provider.resolveActorRef(refProtocol.getPath) } diff --git a/akka-remote/src/main/scala/akka/remote/transport/AkkaPduCodec.scala b/akka-remote/src/main/scala/akka/remote/transport/AkkaPduCodec.scala index 835624bbc9..979a22be97 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/AkkaPduCodec.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/AkkaPduCodec.scala @@ -5,12 +5,16 @@ package akka.remote.transport import akka.AkkaException import akka.actor.{ AddressFromURIString, InternalActorRef, Address, ActorRef } -import akka.remote.RemoteProtocol._ +import akka.remote.WireFormats._ import akka.remote.transport.AkkaPduCodec._ -import akka.remote.{ RemoteActorRefProvider, RemoteProtocol } +import akka.remote._ import akka.util.ByteString import com.google.protobuf.InvalidProtocolBufferException import com.google.protobuf.{ ByteString ⇒ PByteString } +import akka.remote.Ack +import akka.remote.transport.AkkaPduCodec.Payload +import akka.remote.transport.AkkaPduCodec.Associate +import akka.remote.transport.AkkaPduCodec.Message /** * INTERNAL API @@ -30,16 +34,21 @@ private[remote] object AkkaPduCodec { * Trait that represents decoded Akka PDUs (Protocol Data Units) */ sealed trait AkkaPdu - - case class Associate(cookie: Option[String], origin: Address) extends AkkaPdu + case class Associate(info: HandshakeInfo) extends AkkaPdu case object Disassociate extends AkkaPdu case object Heartbeat extends AkkaPdu case class Payload(bytes: ByteString) extends AkkaPdu case class Message(recipient: InternalActorRef, recipientAddress: Address, - serializedMessage: MessageProtocol, - senderOption: Option[ActorRef]) + serializedMessage: SerializedMessage, + senderOption: Option[ActorRef], + seqOption: Option[SeqNo]) extends HasSequenceNumber { + + def reliableDeliveryEnabled = seqOption.isDefined + + override def seq: SeqNo = seqOption.get + } } /** @@ -72,27 +81,31 @@ private[remote] trait AkkaPduCodec { * Encoded form as raw bytes */ def encodePdu(pdu: AkkaPdu): ByteString = pdu match { - case Associate(cookie, origin) ⇒ constructAssociate(cookie, origin) - case Payload(bytes) ⇒ constructPayload(bytes) - case Disassociate ⇒ constructDisassociate - case Heartbeat ⇒ constructHeartbeat + case Associate(info) ⇒ constructAssociate(info) + case Payload(bytes) ⇒ constructPayload(bytes) + case Disassociate ⇒ constructDisassociate + case Heartbeat ⇒ constructHeartbeat } def constructPayload(payload: ByteString): ByteString - def constructAssociate(cookie: Option[String], origin: Address): ByteString + def constructAssociate(info: HandshakeInfo): ByteString def constructDisassociate: ByteString def constructHeartbeat: ByteString - def decodeMessage(raw: ByteString, provider: RemoteActorRefProvider, localAddress: Address): Message + def decodeMessage(raw: ByteString, provider: RemoteActorRefProvider, localAddress: Address): (Option[Ack], Option[Message]) def constructMessage( localAddress: Address, recipient: ActorRef, - serializedMessage: MessageProtocol, - senderOption: Option[ActorRef]): ByteString + serializedMessage: SerializedMessage, + senderOption: Option[ActorRef], + seqOption: Option[SeqNo] = None, + ackOption: Option[Ack] = None): ByteString + + def constructPureAck(ack: Ack): ByteString } /** @@ -100,36 +113,56 @@ private[remote] trait AkkaPduCodec { */ private[remote] object AkkaPduProtobufCodec extends AkkaPduCodec { + private def ackBuilder(ack: Ack): AcknowledgementInfo.Builder = { + val ackBuilder = AcknowledgementInfo.newBuilder() + ackBuilder.setCumulativeAck(ack.cumulativeAck.rawValue) + ack.nacks foreach { nack ⇒ ackBuilder.addNacks(nack.rawValue) } + ackBuilder + } + override def constructMessage( localAddress: Address, recipient: ActorRef, - serializedMessage: MessageProtocol, - senderOption: Option[ActorRef]): ByteString = { + serializedMessage: SerializedMessage, + senderOption: Option[ActorRef], + seqOption: Option[SeqNo] = None, + ackOption: Option[Ack] = None): ByteString = { - val messageBuilder = RemoteMessageProtocol.newBuilder + val ackAndEnvelopeBuilder = AckAndEnvelopeContainer.newBuilder - messageBuilder.setRecipient(serializeActorRef(recipient.path.address, recipient)) - senderOption foreach { ref ⇒ messageBuilder.setSender(serializeActorRef(localAddress, ref)) } - messageBuilder.setMessage(serializedMessage) + val envelopeBuilder = RemoteEnvelope.newBuilder - ByteString(messageBuilder.build.toByteArray) + envelopeBuilder.setRecipient(serializeActorRef(recipient.path.address, recipient)) + senderOption foreach { ref ⇒ envelopeBuilder.setSender(serializeActorRef(localAddress, ref)) } + seqOption foreach { seq ⇒ envelopeBuilder.setSeq(seq.rawValue) } + ackOption foreach { ack ⇒ ackAndEnvelopeBuilder.setAck(ackBuilder(ack)) } + envelopeBuilder.setMessage(serializedMessage) + ackAndEnvelopeBuilder.setEnvelope(envelopeBuilder) + + ByteString(ackAndEnvelopeBuilder.build.toByteArray) } - override def constructPayload(payload: ByteString): ByteString = - ByteString(AkkaRemoteProtocol.newBuilder().setPayload(PByteString.copyFrom(payload.asByteBuffer)).build.toByteArray) + override def constructPureAck(ack: Ack): ByteString = + ByteString(AckAndEnvelopeContainer.newBuilder.setAck(ackBuilder(ack)).build().toByteArray) - override def constructAssociate(cookie: Option[String], origin: Address): ByteString = - constructControlMessagePdu(RemoteProtocol.CommandType.CONNECT, cookie, Some(origin)) + override def constructPayload(payload: ByteString): ByteString = + ByteString(AkkaProtocolMessage.newBuilder().setPayload(PByteString.copyFrom(payload.asByteBuffer)).build.toByteArray) + + override def constructAssociate(info: HandshakeInfo): ByteString = { + val handshakeInfo = AkkaHandshakeInfo.newBuilder.setOrigin(serializeAddress(info.origin)).setUid(info.uid) + info.cookie foreach handshakeInfo.setCookie + constructControlMessagePdu(WireFormats.CommandType.CONNECT, Some(handshakeInfo)) + } override val constructDisassociate: ByteString = - constructControlMessagePdu(RemoteProtocol.CommandType.SHUTDOWN, None, None) + constructControlMessagePdu(WireFormats.CommandType.SHUTDOWN, None) override val constructHeartbeat: ByteString = - constructControlMessagePdu(RemoteProtocol.CommandType.HEARTBEAT, None, None) + constructControlMessagePdu(WireFormats.CommandType.HEARTBEAT, None) override def decodePdu(raw: ByteString): AkkaPdu = { try { - val pdu = AkkaRemoteProtocol.parseFrom(raw.toArray) + val pdu = AkkaProtocolMessage.parseFrom(raw.toArray) if (pdu.hasPayload) Payload(ByteString(pdu.getPayload.asReadOnlyByteBuffer())) else if (pdu.hasInstruction) decodeControlPdu(pdu.getInstruction) else throw new PduCodecException("Error decoding Akka PDU: Neither message nor control message were contained", null) @@ -141,57 +174,75 @@ private[remote] object AkkaPduProtobufCodec extends AkkaPduCodec { override def decodeMessage( raw: ByteString, provider: RemoteActorRefProvider, - localAddress: Address): Message = { - val msgPdu = RemoteMessageProtocol.parseFrom(raw.toArray) - Message( - recipient = provider.resolveActorRefWithLocalAddress(msgPdu.getRecipient.getPath, localAddress), - recipientAddress = AddressFromURIString(msgPdu.getRecipient.getPath), - serializedMessage = msgPdu.getMessage, - senderOption = if (!msgPdu.hasSender) None - else Some(provider.resolveActorRefWithLocalAddress(msgPdu.getSender.getPath, localAddress))) + localAddress: Address): (Option[Ack], Option[Message]) = { + val ackAndEnvelope = AckAndEnvelopeContainer.parseFrom(raw.toArray) + + val ackOption = if (ackAndEnvelope.hasAck) { + import scala.collection.JavaConverters._ + Some(Ack(SeqNo(ackAndEnvelope.getAck.getCumulativeAck), ackAndEnvelope.getAck.getNacksList.asScala.map(SeqNo(_)).toSet)) + } else None + + val messageOption = if (ackAndEnvelope.hasEnvelope) { + val msgPdu = ackAndEnvelope.getEnvelope + Some(Message( + recipient = provider.resolveActorRefWithLocalAddress(msgPdu.getRecipient.getPath, localAddress), + recipientAddress = AddressFromURIString(msgPdu.getRecipient.getPath), + serializedMessage = msgPdu.getMessage, + senderOption = + if (msgPdu.hasSender) Some(provider.resolveActorRefWithLocalAddress(msgPdu.getSender.getPath, localAddress)) + else None, + seqOption = + if (msgPdu.hasSeq) Some(SeqNo(msgPdu.getSeq)) else None)) + } else None + + (ackOption, messageOption) } - private def decodeControlPdu(controlPdu: RemoteControlProtocol): AkkaPdu = { - val cookie = if (controlPdu.hasCookie) Some(controlPdu.getCookie) else None + private def decodeControlPdu(controlPdu: AkkaControlMessage): AkkaPdu = { controlPdu.getCommandType match { - case CommandType.CONNECT if controlPdu.hasOrigin ⇒ Associate(cookie, decodeAddress(controlPdu.getOrigin)) - case CommandType.SHUTDOWN ⇒ Disassociate + case CommandType.CONNECT if controlPdu.hasHandshakeInfo ⇒ + val handshakeInfo = controlPdu.getHandshakeInfo + val cookie = if (handshakeInfo.hasCookie) Some(handshakeInfo.getCookie) else None + Associate( + HandshakeInfo( + decodeAddress(handshakeInfo.getOrigin), + handshakeInfo.getUid.toInt, // 64 bits are allocated in the wire formats, but we use only 32 for now + cookie)) + case CommandType.SHUTDOWN ⇒ Disassociate case CommandType.HEARTBEAT ⇒ Heartbeat - case _ ⇒ throw new PduCodecException("Decoding of control PDU failed: format invalid", null) + case _ ⇒ throw new PduCodecException("Decoding of control PDU failed: format invalid", null) } } - private def decodeAddress(encodedAddress: AddressProtocol): Address = + private def decodeAddress(encodedAddress: AddressData): Address = Address(encodedAddress.getProtocol, encodedAddress.getSystem, encodedAddress.getHostname, encodedAddress.getPort) private def constructControlMessagePdu( - code: RemoteProtocol.CommandType, - cookie: Option[String], - origin: Option[Address]): ByteString = { - - val controlMessageBuilder = RemoteControlProtocol.newBuilder() + code: WireFormats.CommandType, + handshakeInfo: Option[AkkaHandshakeInfo.Builder]): ByteString = { + val controlMessageBuilder = AkkaControlMessage.newBuilder() controlMessageBuilder.setCommandType(code) - cookie foreach controlMessageBuilder.setCookie - for (originAddress ← origin; serialized ← serializeAddress(originAddress)) - controlMessageBuilder.setOrigin(serialized) + handshakeInfo foreach controlMessageBuilder.setHandshakeInfo - ByteString(AkkaRemoteProtocol.newBuilder().setInstruction(controlMessageBuilder.build).build.toByteArray) + ByteString(AkkaProtocolMessage.newBuilder().setInstruction(controlMessageBuilder.build).build.toByteArray) } - private def serializeActorRef(defaultAddress: Address, ref: ActorRef): ActorRefProtocol = { - ActorRefProtocol.newBuilder.setPath( + private def serializeActorRef(defaultAddress: Address, ref: ActorRef): ActorRefData = { + ActorRefData.newBuilder.setPath( if (ref.path.address.host.isDefined) ref.path.toSerializationFormat else ref.path.toSerializationFormatWithAddress(defaultAddress)).build() } - private def serializeAddress(address: Address): Option[AddressProtocol] = { - for (host ← address.host; port ← address.port) yield AddressProtocol.newBuilder - .setHostname(host) - .setPort(port) - .setSystem(address.system) - .setProtocol(address.protocol) - .build() + private def serializeAddress(address: Address): AddressData = address match { + case Address(protocol, system, Some(host), Some(port)) ⇒ + AddressData.newBuilder + .setHostname(host) + .setPort(port) + .setSystem(system) + .setProtocol(protocol) + .build() + case _ ⇒ throw new IllegalArgumentException(s"Address [${address}] could not be serialized: host or port missing.") } } diff --git a/akka-remote/src/main/scala/akka/remote/transport/AkkaProtocolTransport.scala b/akka-remote/src/main/scala/akka/remote/transport/AkkaProtocolTransport.scala index 835fb3cbdf..471ec5702c 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/AkkaProtocolTransport.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/AkkaProtocolTransport.scala @@ -38,11 +38,9 @@ private[remote] class AkkaProtocolSettings(config: Config) { Duration(TransportFailureDetectorConfig.getMilliseconds("heartbeat-interval"), MILLISECONDS) } requiring (_ > Duration.Zero, "transport-failure-detector.heartbeat-interval must be > 0") - val WaitActivityEnabled: Boolean = getBoolean("akka.remote.wait-activity-enabled") - val RequireCookie: Boolean = getBoolean("akka.remote.require-cookie") - val SecureCookie: String = getString("akka.remote.secure-cookie") + val SecureCookie: Option[String] = if (RequireCookie) Some(getString("akka.remote.secure-cookie")) else None } private[remote] object AkkaProtocolTransport { //Couldn't these go into the Remoting Extension/ RemoteSettings instead? @@ -52,6 +50,8 @@ private[remote] object AkkaProtocolTransport { //Couldn't these go into the Remo } +case class HandshakeInfo(origin: Address, uid: Int, cookie: Option[String]) + /** * Implementation of the Akka protocol as a Transport that wraps an underlying Transport instance. * @@ -59,7 +59,6 @@ private[remote] object AkkaProtocolTransport { //Couldn't these go into the Remo * - Soft-state associations via the use of heartbeats and failure detectors * - Secure-cookie handling * - Transparent origin address handling - * - Fire-And-Forget vs. implicit ack based handshake (controllable via wait-activity-enabled configuration option) * - pluggable codecs to encode and decode Akka PDUs * * It is not possible to load this transport dynamically using the configuration of remoting, because it does not @@ -116,12 +115,12 @@ private[transport] class AkkaProtocolManager( val stateActorSettings = settings val failureDetector = createTransportFailureDetector() context.actorOf(Props(new ProtocolStateActor( - stateActorLocalAddress, + HandshakeInfo(stateActorLocalAddress, RARP(context.system).provider.addressUid, stateActorSettings.SecureCookie), handle, stateActorAssociationHandler, stateActorSettings, AkkaPduProtobufCodec, - failureDetector)), actorNameFor(handle.remoteAddress)) // Why don't we watch this one? + failureDetector)), actorNameFor(handle.remoteAddress)) case AssociateUnderlying(remoteAddress, statusPromise) ⇒ val stateActorLocalAddress = localAddress @@ -129,13 +128,13 @@ private[transport] class AkkaProtocolManager( val stateActorWrappedTransport = wrappedTransport val failureDetector = createTransportFailureDetector() context.actorOf(Props(new ProtocolStateActor( - stateActorLocalAddress, + HandshakeInfo(stateActorLocalAddress, RARP(context.system).provider.addressUid, stateActorSettings.SecureCookie), remoteAddress, statusPromise, stateActorWrappedTransport, stateActorSettings, AkkaPduProtobufCodec, - failureDetector)), actorNameFor(remoteAddress)) // Why don't we watch this one? + failureDetector)), actorNameFor(remoteAddress)) } private def createTransportFailureDetector(): FailureDetector = { @@ -153,11 +152,12 @@ private[transport] class AkkaProtocolManager( } -private[transport] class AkkaProtocolHandle( +private[remote] class AkkaProtocolHandle( _localAddress: Address, _remoteAddress: Address, val readHandlerPromise: Promise[HandleEventListener], _wrappedHandle: AssociationHandle, + val handshakeInfo: HandshakeInfo, private val stateActor: ActorRef, private val codec: AkkaPduCodec) extends AbstractTransportAdapterHandle(_localAddress, _remoteAddress, _wrappedHandle, AkkaScheme) { @@ -179,12 +179,11 @@ private[transport] object ProtocolStateActor { /* * State when the underlying transport is initialized, there is an association present, and we are waiting - * for the first message. Outbound connections can skip this phase if WaitActivity configuration parameter - * is turned off. + * for the first message (has to be CONNECT if inbound). * State data can be OutboundUnderlyingAssociated (for outbound associations) or InboundUnassociated (for inbound * when upper layer is not notified yet) */ - case object WaitActivity extends AssociationState + case object WaitHandshake extends AssociationState /* * State when the underlying transport is initialized and the handshake succeeded. @@ -224,7 +223,7 @@ private[transport] object ProtocolStateActor { } private[transport] class ProtocolStateActor(initialData: InitialProtocolStateData, - private val localAddress: Address, + private val localHandshakeInfo: HandshakeInfo, private val settings: AkkaProtocolSettings, private val codec: AkkaPduCodec, private val failureDetector: FailureDetector) @@ -234,26 +233,28 @@ private[transport] class ProtocolStateActor(initialData: InitialProtocolStateDat import context.dispatcher // Outbound case - def this(localAddress: Address, + def this(handshakeInfo: HandshakeInfo, remoteAddress: Address, statusPromise: Promise[AssociationHandle], transport: Transport, settings: AkkaProtocolSettings, codec: AkkaPduCodec, failureDetector: FailureDetector) = { - this(OutboundUnassociated(remoteAddress, statusPromise, transport), localAddress, settings, codec, failureDetector) + this(OutboundUnassociated(remoteAddress, statusPromise, transport), handshakeInfo, settings, codec, failureDetector) } // Inbound case - def this(localAddress: Address, + def this(handshakeInfo: HandshakeInfo, wrappedHandle: AssociationHandle, associationListener: AssociationEventListener, settings: AkkaProtocolSettings, codec: AkkaPduCodec, failureDetector: FailureDetector) = { - this(InboundUnassociated(associationListener, wrappedHandle), localAddress, settings, codec, failureDetector) + this(InboundUnassociated(associationListener, wrappedHandle), handshakeInfo, settings, codec, failureDetector) } + val localAddress = localHandshakeInfo.origin + initialData match { case d: OutboundUnassociated ⇒ d.transport.associate(d.remoteAddress) pipeTo self @@ -261,7 +262,7 @@ private[transport] class ProtocolStateActor(initialData: InitialProtocolStateDat case d: InboundUnassociated ⇒ d.wrappedHandle.readHandlerPromise.success(ActorHandleEventListener(self)) - startWith(WaitActivity, d) + startWith(WaitHandshake, d) } when(Closed) { @@ -273,14 +274,11 @@ private[transport] class ProtocolStateActor(initialData: InitialProtocolStateDat case Event(wrappedHandle: AssociationHandle, OutboundUnassociated(_, statusPromise, _)) ⇒ wrappedHandle.readHandlerPromise.trySuccess(ActorHandleEventListener(self)) - if (sendAssociate(wrappedHandle)) { + if (sendAssociate(wrappedHandle, localHandshakeInfo)) { failureDetector.heartbeat() initTimers() + goto(WaitHandshake) using OutboundUnderlyingAssociated(statusPromise, wrappedHandle) - if (settings.WaitActivityEnabled) - goto(WaitActivity) using OutboundUnderlyingAssociated(statusPromise, wrappedHandle) - else - goto(Open) using AssociatedWaitHandler(notifyOutboundHandler(wrappedHandle, statusPromise), wrappedHandle, immutable.Queue.empty) } else { // Underlying transport was busy -- Associate could not be sent setTimer("associate-retry", wrappedHandle, RARP(context.system).provider.remoteSettings.BackoffPeriod, repeat = false) @@ -295,29 +293,28 @@ private[transport] class ProtocolStateActor(initialData: InitialProtocolStateDat } // Timeout of this state is implicitly handled by the failure detector - when(WaitActivity) { + when(WaitHandshake) { case Event(Disassociated, _) ⇒ stop() case Event(InboundPayload(p), OutboundUnderlyingAssociated(statusPromise, wrappedHandle)) ⇒ decodePdu(p) match { + case Associate(handshakeInfo) ⇒ + failureDetector.heartbeat() + goto(Open) using AssociatedWaitHandler( + notifyOutboundHandler(wrappedHandle, handshakeInfo, statusPromise), + wrappedHandle, + immutable.Queue.empty) + case Disassociate ⇒ + // After receiving Disassociate we MUST NOT send back a Disassociate (loop) stop() - // Any other activity is considered an implicit acknowledgement of the association - case Payload(payload) ⇒ - sendHeartbeat(wrappedHandle) - goto(Open) using - AssociatedWaitHandler(notifyOutboundHandler(wrappedHandle, statusPromise), wrappedHandle, immutable.Queue(payload)) + case _ ⇒ + // Expected handshake to be finished, dropping connection + sendDisassociate(wrappedHandle) + stop() - case Heartbeat ⇒ - sendHeartbeat(wrappedHandle) - failureDetector.heartbeat() - goto(Open) using - AssociatedWaitHandler(notifyOutboundHandler(wrappedHandle, statusPromise), wrappedHandle, immutable.Queue.empty) - - case _ ⇒ goto(Open) using - AssociatedWaitHandler(notifyOutboundHandler(wrappedHandle, statusPromise), wrappedHandle, immutable.Queue.empty) } case Event(HeartbeatTimer, OutboundUnderlyingAssociated(_, wrappedHandle)) ⇒ handleTimers(wrappedHandle) @@ -329,14 +326,18 @@ private[transport] class ProtocolStateActor(initialData: InitialProtocolStateDat case Disassociate ⇒ stop() // Incoming association -- implicitly ACK by a heartbeat - case Associate(cookieOption, origin) ⇒ - if (!settings.RequireCookie || cookieOption.getOrElse("") == settings.SecureCookie) { - sendHeartbeat(wrappedHandle) - + case Associate(info) ⇒ + if (!settings.RequireCookie || info.cookie == settings.SecureCookie) { + sendAssociate(wrappedHandle, localHandshakeInfo) failureDetector.heartbeat() initTimers() - goto(Open) using AssociatedWaitHandler(notifyInboundHandler(wrappedHandle, origin, associationHandler), wrappedHandle, immutable.Queue.empty) + goto(Open) using AssociatedWaitHandler( + notifyInboundHandler(wrappedHandle, info, associationHandler), + wrappedHandle, + immutable.Queue.empty) } else { + log.warning(s"Association attempt with mismatching cookie from [{}]. Expected [{}] but received [{}].", + info.origin, localHandshakeInfo.cookie.getOrElse(""), info.cookie.getOrElse("")) stop() } @@ -441,6 +442,7 @@ private[transport] class ProtocolStateActor(initialData: InitialProtocolStateDat readHandlerPromise.future.map { HandleListenerRegistered(_) } pipeTo self private def notifyOutboundHandler(wrappedHandle: AssociationHandle, + handshakeInfo: HandshakeInfo, statusPromise: Promise[AssociationHandle]): Future[HandleEventListener] = { val readHandlerPromise = Promise[HandleEventListener]() listenForListenerRegistration(readHandlerPromise) @@ -451,13 +453,14 @@ private[transport] class ProtocolStateActor(initialData: InitialProtocolStateDat wrappedHandle.remoteAddress, readHandlerPromise, wrappedHandle, + handshakeInfo, self, codec)) readHandlerPromise.future } private def notifyInboundHandler(wrappedHandle: AssociationHandle, - originAddress: Address, + handshakeInfo: HandshakeInfo, associationListener: AssociationEventListener): Future[HandleEventListener] = { val readHandlerPromise = Promise[HandleEventListener]() listenForListenerRegistration(readHandlerPromise) @@ -465,9 +468,10 @@ private[transport] class ProtocolStateActor(initialData: InitialProtocolStateDat associationListener notify InboundAssociation( new AkkaProtocolHandle( localAddress, - originAddress, + handshakeInfo.origin, readHandlerPromise, wrappedHandle, + handshakeInfo, self, codec)) readHandlerPromise.future @@ -488,9 +492,8 @@ private[transport] class ProtocolStateActor(initialData: InitialProtocolStateDat case NonFatal(e) ⇒ throw new AkkaProtocolException("Error writing DISASSOCIATE to transport", e) } - private def sendAssociate(wrappedHandle: AssociationHandle): Boolean = try { - val cookie = if (settings.RequireCookie) Some(settings.SecureCookie) else None - wrappedHandle.write(codec.constructAssociate(cookie, localAddress)) + private def sendAssociate(wrappedHandle: AssociationHandle, info: HandshakeInfo): Boolean = try { + wrappedHandle.write(codec.constructAssociate(info)) } catch { case NonFatal(e) ⇒ throw new AkkaProtocolException("Error writing ASSOCIATE to transport", e) } diff --git a/akka-remote/src/main/scala/akka/remote/transport/TestTransport.scala b/akka-remote/src/main/scala/akka/remote/transport/TestTransport.scala index ba7a347661..280d0e0099 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/TestTransport.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/TestTransport.scala @@ -75,7 +75,7 @@ class TestTransport( remoteHandlerFuture.map { _ ⇒ localHandle } case None ⇒ - Future.failed(new IllegalArgumentException(s"No registered transport: $remoteAddress")) + Future.failed(new InvalidAssociationException(s"No registered transport: $remoteAddress", null)) } } diff --git a/akka-remote/src/main/scala/akka/remote/transport/ThrottlerTransportAdapter.scala b/akka-remote/src/main/scala/akka/remote/transport/ThrottlerTransportAdapter.scala index 40102ee7c3..bf19a6e9aa 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/ThrottlerTransportAdapter.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/ThrottlerTransportAdapter.scala @@ -449,8 +449,8 @@ private[transport] class ThrottledAssociation( private def peekOrigin(b: ByteString): Option[Address] = { try { AkkaPduProtobufCodec.decodePdu(b) match { - case Associate(_, origin) ⇒ Some(origin) - case _ ⇒ None + case Associate(info) ⇒ Some(info.origin) + case _ ⇒ None } } catch { // This layer should not care about malformed packets. Also, this also useful for testing, because diff --git a/akka-remote/src/test/scala/akka/remote/AckedDeliverySpec.scala b/akka-remote/src/test/scala/akka/remote/AckedDeliverySpec.scala new file mode 100644 index 0000000000..dbd743978a --- /dev/null +++ b/akka-remote/src/test/scala/akka/remote/AckedDeliverySpec.scala @@ -0,0 +1,334 @@ +/** + * Copyright (C) 2009-2013 Typesafe Inc. + */ +package akka.remote + +import akka.testkit.AkkaSpec +import scala.annotation.tailrec +import scala.concurrent.forkjoin.ThreadLocalRandom + +object AckedDeliverySpec { + + case class Sequenced(seq: SeqNo, body: String) extends HasSequenceNumber { + override def toString = s"MSG[${seq.rawValue}]" + } + +} + +class AckedDeliverySpec extends AkkaSpec { + import AckedDeliverySpec._ + + def msg(seq: Long) = Sequenced(SeqNo(seq), "msg" + seq) + + "SeqNo" must { + + "implement simple ordering" in { + val sm1 = SeqNo(-1) + val s0 = SeqNo(0) + val s1 = SeqNo(1) + val s2 = SeqNo(2) + val s0b = SeqNo(0) + + sm1 < s0 must be(true) + sm1 > s0 must be(false) + + s0 < s1 must be(true) + s0 > s1 must be(false) + + s1 < s2 must be(true) + s1 > s2 must be(false) + + s0b == s0 must be(true) + } + + "correctly handle wrapping over" in { + val s1 = SeqNo(Long.MaxValue - 1) + val s2 = SeqNo(Long.MaxValue) + val s3 = SeqNo(Long.MinValue) + val s4 = SeqNo(Long.MinValue + 1) + + s1 < s2 must be(true) + s1 > s2 must be(false) + + s2 < s3 must be(true) + s2 > s3 must be(false) + + s3 < s4 must be(true) + s3 > s4 must be(false) + } + + "correctly handle large gaps" in { + val smin = SeqNo(Long.MinValue) + val smin2 = SeqNo(Long.MinValue + 1) + val s0 = SeqNo(0) + + s0 < smin must be(true) + s0 > smin must be(false) + + smin2 < s0 must be(true) + smin2 > s0 must be(false) + } + + } + + "SendBuffer" must { + + "aggregate unacked messages in order" in { + val b0 = new AckedSendBuffer[Sequenced](10) + val msg0 = msg(0) + val msg1 = msg(1) + val msg2 = msg(2) + + val b1 = b0.buffer(msg0) + b1.nonAcked must be === Vector(msg0) + + val b2 = b1.buffer(msg1) + b2.nonAcked must be === Vector(msg0, msg1) + + val b3 = b2.buffer(msg2) + b3.nonAcked must be === Vector(msg0, msg1, msg2) + + } + + "refuse buffering new messages if capacity reached" in { + val buffer = new AckedSendBuffer[Sequenced](4).buffer(msg(0)).buffer(msg(1)).buffer(msg(2)).buffer(msg(3)) + + intercept[ResendBufferCapacityReachedException] { + buffer buffer msg(4) + } + } + + "remove messages from buffer when cumulative ack received" in { + val b0 = new AckedSendBuffer[Sequenced](10) + val msg0 = msg(0) + val msg1 = msg(1) + val msg2 = msg(2) + val msg3 = msg(3) + val msg4 = msg(4) + + val b1 = b0.buffer(msg0) + b1.nonAcked must be === Vector(msg0) + + val b2 = b1.buffer(msg1) + b2.nonAcked must be === Vector(msg0, msg1) + + val b3 = b2.buffer(msg2) + b3.nonAcked must be === Vector(msg0, msg1, msg2) + + val b4 = b3.acknowledge(Ack(SeqNo(1))) + b4.nonAcked must be === Vector(msg2) + + val b5 = b4.buffer(msg3) + b5.nonAcked must be === Vector(msg2, msg3) + + val b6 = b5.buffer(msg4) + b6.nonAcked must be === Vector(msg2, msg3, msg4) + + val b7 = b6.acknowledge(Ack(SeqNo(1))) + b7.nonAcked must be === Vector(msg2, msg3, msg4) + + val b8 = b7.acknowledge(Ack(SeqNo(2))) + b8.nonAcked must be === Vector(msg3, msg4) + + val b9 = b8.acknowledge(Ack(SeqNo(5))) + b9.nonAcked must be === Vector.empty + + } + + "keep NACKed messages in buffer if selective nacks are received" in { + val b0 = new AckedSendBuffer[Sequenced](10) + val msg0 = msg(0) + val msg1 = msg(1) + val msg2 = msg(2) + val msg3 = msg(3) + val msg4 = msg(4) + + val b1 = b0.buffer(msg0) + b1.nonAcked must be === Vector(msg0) + + val b2 = b1.buffer(msg1) + b2.nonAcked must be === Vector(msg0, msg1) + + val b3 = b2.buffer(msg2) + b3.nonAcked must be === Vector(msg0, msg1, msg2) + + val b4 = b3.acknowledge(Ack(SeqNo(1), nacks = Set(SeqNo(0)))) + b4.nonAcked must be === Vector(msg2) + b4.nacked must be === Vector(msg0) + + val b5 = b4.buffer(msg3).buffer(msg4) + b5.nonAcked must be === Vector(msg2, msg3, msg4) + b5.nacked must be === Vector(msg0) + + val b6 = b5.acknowledge(Ack(SeqNo(4), nacks = Set(SeqNo(2), SeqNo(3)))) + b6.nonAcked must be === Vector() + b6.nacked must be === Vector(msg2, msg3) + + val b7 = b6.acknowledge(Ack(SeqNo(5))) + b7.nonAcked must be === Vector.empty + b7.nacked must be === Vector.empty + } + + } + + "ReceiveBuffer" must { + + "enqueue message in buffer if needed, return the list of deliverable messages and acks" in { + val b0 = new AckedReceiveBuffer[Sequenced] + val msg0 = msg(0) + val msg1 = msg(1) + val msg2 = msg(2) + val msg3 = msg(3) + val msg4 = msg(4) + val msg5 = msg(5) + + val (b1, deliver1, ack1) = b0.receive(msg1).extractDeliverable + deliver1 must be === Vector.empty + ack1 must be === Ack(SeqNo(1), nacks = Set(SeqNo(0))) + + val (b2, deliver2, ack2) = b1.receive(msg0).extractDeliverable + deliver2 must be === Vector(msg0, msg1) + ack2 must be === Ack(SeqNo(1)) + + val (b3, deliver3, ack3) = b2.receive(msg4).extractDeliverable + deliver3 must be === Vector.empty + ack3 must be === Ack(SeqNo(4), nacks = Set(SeqNo(2), SeqNo(3))) + + val (b4, deliver4, ack4) = b3.receive(msg2).extractDeliverable + deliver4 must be === Vector(msg2) + ack4 must be === Ack(SeqNo(4), nacks = Set(SeqNo(3))) + + val (b5, deliver5, ack5) = b4.receive(msg5).extractDeliverable + deliver5 must be === Vector.empty + ack5 must be === Ack(SeqNo(5), nacks = Set(SeqNo(3))) + + val (_, deliver6, ack6) = b5.receive(msg3).extractDeliverable + deliver6 must be === Vector(msg3, msg4, msg5) + ack6 must be === Ack(SeqNo(5)) + + } + + "handle duplicate arrivals correctly" in { + val buf = new AckedReceiveBuffer[Sequenced] + val msg0 = msg(0) + val msg1 = msg(1) + val msg2 = msg(2) + + val (buf2, _, _) = buf + .receive(msg0) + .receive(msg1) + .receive(msg2) + .extractDeliverable + + val buf3 = buf2.receive(msg0) + .receive(msg1) + .receive(msg2) + + val (_, deliver, ack) = buf3.extractDeliverable + + deliver must be === Vector.empty + ack must be === Ack(SeqNo(2)) + } + + "be able to correctly merge with another receive buffer" in { + val buf1 = new AckedReceiveBuffer[Sequenced] + val buf2 = new AckedReceiveBuffer[Sequenced] + val msg0 = msg(0) + val msg1a = msg(1) + val msg1b = msg(1) + val msg2 = msg(2) + val msg3 = msg(3) + + val buf = buf1.receive(msg1a).receive(msg2).mergeFrom( + buf2.receive(msg1b).receive(msg3)) + + val (_, deliver, ack) = buf.receive(msg0).extractDeliverable + deliver must be === Vector(msg0, msg1a, msg2, msg3) + ack must be === Ack(SeqNo(3)) + } + } + + "SendBuffer and ReceiveBuffer" must { + + def happened(p: Double) = ThreadLocalRandom.current().nextDouble() < p + + @tailrec def geom(p: Double, limit: Int = 5, acc: Int = 0): Int = + if (acc == limit) acc + else if (happened(p)) acc + else geom(p, limit, acc + 1) + + "correctly cooperate with each other" in { + val MsgCount = 1000 + val DeliveryProbability = 0.5 + val referenceList: Seq[Sequenced] = (0 until MsgCount).toSeq map { i ⇒ msg(i.toLong) } + + var toSend = referenceList + var received = Seq.empty[Sequenced] + var sndBuf = new AckedSendBuffer[Sequenced](10) + var rcvBuf = new AckedReceiveBuffer[Sequenced] + var log = Vector.empty[String] + var lastAck: Ack = Ack(SeqNo(-1)) + + def dbgLog(message: String): Unit = log :+= message + + def senderSteps(steps: Int, p: Double = 1.0) = { + val resends = (sndBuf.nacked ++ sndBuf.nonAcked).take(steps) + + val sends = if (steps - resends.size > 0) { + val tmp = toSend.take(steps - resends.size) + toSend = toSend.drop(steps - resends.size) + tmp + } else Seq.empty[Sequenced] + + (resends ++ sends) foreach { msg ⇒ + if (sends.contains(msg)) sndBuf = sndBuf.buffer(msg) + if (happened(p)) { + val (updatedRcvBuf, delivers, ack) = rcvBuf.receive(msg).extractDeliverable + rcvBuf = updatedRcvBuf + dbgLog(s"$sndBuf -- $msg --> $rcvBuf") + lastAck = ack + received ++= delivers + dbgLog(s"R: ${received.mkString(", ")}") + } else dbgLog(s"$sndBuf -- $msg --X $rcvBuf") + } + } + + def receiverStep(p: Double = 1.0) = { + if (happened(p)) { + sndBuf = sndBuf.acknowledge(lastAck) + dbgLog(s"$sndBuf <-- $lastAck -- $rcvBuf") + } else dbgLog(s"$sndBuf X-- $lastAck -- $rcvBuf") + } + + // Dropping phase + info(s"Starting unreliable delivery for $MsgCount messages, with delivery probability P = $DeliveryProbability") + var steps = MsgCount * 2 + while (steps > 0) { + val s = geom(0.3, limit = 5) + senderSteps(s, DeliveryProbability) + receiverStep(DeliveryProbability) + steps -= s + } + info(s"Successfully delivered ${received.size} messages from ${MsgCount}") + info("Entering reliable phase") + + // Finalizing phase + for (_ ← 1 to MsgCount) { + senderSteps(1, 1.0) + receiverStep(1.0) + } + + if (received != referenceList) { + println(log.mkString("\n")) + println("Received:") + println(received) + fail("Not all messages were received") + } + + info("All messages have been successfully delivered") + + } + + } + +} diff --git a/akka-remote/src/test/scala/akka/remote/RemoteConfigSpec.scala b/akka-remote/src/test/scala/akka/remote/RemoteConfigSpec.scala index a72d792083..bcf62c431e 100644 --- a/akka-remote/src/test/scala/akka/remote/RemoteConfigSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/RemoteConfigSpec.scala @@ -18,7 +18,6 @@ class RemoteConfigSpec extends AkkaSpec( akka.remote.netty.tcp.port = 0 """) { - // FIXME: These tests are ignored as it tests configuration specific to the old remoting. "Remoting" must { "contain correct configuration values in reference.conf" in { @@ -38,6 +37,9 @@ class RemoteConfigSpec extends AkkaSpec( MaximumRetriesInWindow must be(5) RetryWindow must be(3 seconds) BackoffPeriod must be(10 millis) + SysMsgAckTimeout must be(0.3 seconds) + SysResendTimeout must be(1 seconds) + SysMsgBufferSize must be(1000) CommandAckTimeout.duration must be(30 seconds) Transports.size must be(1) Transports.head._1 must be(classOf[akka.remote.transport.netty.NettyTransport].getName) @@ -63,8 +65,11 @@ class RemoteConfigSpec extends AkkaSpec( import settings._ WaitActivityEnabled must be(true) + FailureDetectorImplementationClass must be(classOf[PhiAccrualFailureDetector].getName) + AcceptableHeartBeatPause must be === 3.seconds + HeartBeatInterval must be === 1.seconds RequireCookie must be(false) - SecureCookie must be === "" + SecureCookie must be === None TransportFailureDetectorImplementationClass must be(classOf[PhiAccrualFailureDetector].getName) TransportHeartBeatInterval must be === 1.seconds diff --git a/akka-remote/src/test/scala/akka/remote/RemoteDeathWatchSpec.scala b/akka-remote/src/test/scala/akka/remote/RemoteDeathWatchSpec.scala index 768c5ea486..07fe7bdba4 100644 --- a/akka-remote/src/test/scala/akka/remote/RemoteDeathWatchSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/RemoteDeathWatchSpec.scala @@ -50,7 +50,7 @@ akka { } "receive ActorIdentity(None) when identified node is unknown host" in { - val path = RootActorPath(Address("akka.tcp", system.name, "unknownhost", 2552)) / "user" / "subject" + val path = RootActorPath(Address("akka.tcp", system.name, "unknownhost2", 2552)) / "user" / "subject" system.actorSelection(path) ! Identify(path) expectMsg(60.seconds, ActorIdentity(path, None)) } diff --git a/akka-remote/src/test/scala/akka/remote/RemotingSpec.scala b/akka-remote/src/test/scala/akka/remote/RemotingSpec.scala index beaa1d9cf4..98b83ce45b 100644 --- a/akka-remote/src/test/scala/akka/remote/RemotingSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/RemotingSpec.scala @@ -214,7 +214,7 @@ class RemotingSpec extends AkkaSpec(RemotingSpec.cfg) with ImplicitSender with D "send error message for wrong address" in { filterEvents(EventFilter.error(start = "AssociationError", occurrences = 1), - EventFilter.warning(pattern = ".*dead letter.*echo.*", occurrences = 1)) { + EventFilter.error(pattern = "Address is now quarantined", occurrences = 1)) { system.actorFor("akka.test://nonexistingsystem@localhost:12346/user/echo") ! "ping" } } diff --git a/akka-remote/src/test/scala/akka/remote/serialization/ProtobufSerializerSpec.scala b/akka-remote/src/test/scala/akka/remote/serialization/ProtobufSerializerSpec.scala index a5881c9e9e..cbdc4e8e7d 100644 --- a/akka-remote/src/test/scala/akka/remote/serialization/ProtobufSerializerSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/serialization/ProtobufSerializerSpec.scala @@ -6,7 +6,7 @@ package akka.remote.serialization import akka.serialization.SerializationExtension import akka.testkit.AkkaSpec -import akka.remote.RemoteProtocol.MessageProtocol +import akka.remote.WireFormats.SerializedMessage import akka.remote.ProtobufProtocol.MyMessage @org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner]) @@ -17,7 +17,7 @@ class ProtobufSerializerSpec extends AkkaSpec { "Serialization" must { "resolve protobuf serializer" in { - ser.serializerFor(classOf[MessageProtocol]).getClass must be(classOf[ProtobufSerializer]) + ser.serializerFor(classOf[SerializedMessage]).getClass must be(classOf[ProtobufSerializer]) ser.serializerFor(classOf[MyMessage]).getClass must be(classOf[ProtobufSerializer]) } diff --git a/akka-remote/src/test/scala/akka/remote/transport/AkkaProtocolSpec.scala b/akka-remote/src/test/scala/akka/remote/transport/AkkaProtocolSpec.scala index 3f4a9cd08f..bea24f76b1 100644 --- a/akka-remote/src/test/scala/akka/remote/transport/AkkaProtocolSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/transport/AkkaProtocolSpec.scala @@ -6,7 +6,7 @@ import akka.remote.transport.AkkaProtocolSpec.TestFailureDetector import akka.remote.transport.AssociationHandle.{ ActorHandleEventListener, Disassociated, InboundPayload } import akka.remote.transport.TestTransport._ import akka.remote.transport.Transport._ -import akka.remote.{ RemoteProtocol, RemoteActorRefProvider, FailureDetector } +import akka.remote.{ SeqNo, WireFormats, RemoteActorRefProvider, FailureDetector } import akka.testkit.{ ImplicitSender, AkkaSpec } import akka.util.ByteString import com.google.protobuf.{ ByteString ⇒ PByteString } @@ -44,8 +44,6 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re heartbeat-interval = 0.1 s } - wait-activity-enabled = on - backoff-interval = 1 s require-cookie = off @@ -70,7 +68,7 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val codec = AkkaPduProtobufCodec - val testMsg = RemoteProtocol.MessageProtocol.newBuilder().setSerializerId(0).setMessage(PByteString.copyFromUtf8("foo")).build + val testMsg = WireFormats.SerializedMessage.newBuilder().setSerializerId(0).setMessage(PByteString.copyFromUtf8("foo")).build val testEnvelope = codec.constructMessage(localAkkaAddress, testActor, testMsg, None) val testMsgPdu: ByteString = codec.constructPayload(testEnvelope) @@ -78,7 +76,8 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re def testPayload = InboundPayload(testMsgPdu) def testDisassociate = InboundPayload(codec.constructDisassociate) - def testAssociate(cookie: Option[String]) = InboundPayload(codec.constructAssociate(cookie, remoteAkkaAddress)) + def testAssociate(uid: Int, cookie: Option[String]) = + InboundPayload(codec.constructAssociate(HandshakeInfo(remoteAkkaAddress, uid, cookie))) def collaborators = { val registry = new AssociationRegistry @@ -100,11 +99,12 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re case _ ⇒ false } - def lastActivityIsAssociate(registry: AssociationRegistry, cookie: Option[String]) = + def lastActivityIsAssociate(registry: AssociationRegistry, uid: Long, cookie: Option[String]) = if (registry.logSnapshot.isEmpty) false else registry.logSnapshot.last match { case WriteAttempt(sender, recipient, payload) if sender == localAddress && recipient == remoteAddress ⇒ codec.decodePdu(payload) match { - case Associate(c, origin) if c == cookie && origin == localAddress ⇒ true + case Associate(info) ⇒ + info.cookie == cookie && info.origin == localAddress && info.uid == uid case _ ⇒ false } case _ ⇒ false @@ -126,7 +126,7 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val (failureDetector, _, _, handle) = collaborators system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = None), handle, ActorAssociationEventListener(testActor), new AkkaProtocolSettings(conf), @@ -140,19 +140,21 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val (failureDetector, registry, _, handle) = collaborators val reader = system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = None), handle, ActorAssociationEventListener(testActor), new AkkaProtocolSettings(conf), codec, failureDetector))) - reader ! testAssociate(None) + reader ! testAssociate(uid = 33, cookie = None) awaitCond(failureDetector.called) val wrappedHandle = expectMsgPF() { - case InboundAssociation(h) ⇒ h + case InboundAssociation(h: AkkaProtocolHandle) ⇒ + h.handshakeInfo.uid must be === 33 + h } wrappedHandle.readHandlerPromise.success(ActorHandleEventListener(testActor)) @@ -173,7 +175,7 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val (failureDetector, registry, _, handle) = collaborators val reader = system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = None), handle, ActorAssociationEventListener(testActor), new AkkaProtocolSettings(conf), @@ -184,7 +186,7 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re reader ! testHeartbeat // this associate will now be ignored - reader ! testAssociate(None) + reader ! testAssociate(uid = 33, cookie = None) awaitCond(registry.logSnapshot.exists { case DisassociateAttempt(requester, remote) ⇒ true @@ -192,42 +194,14 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re }) } - "serve the handle as soon as possible if WaitActivity is turned off" in { - val (failureDetector, registry, transport, handle) = collaborators - transport.associateBehavior.pushConstant(handle) - - val statusPromise: Promise[AssociationHandle] = Promise() - - system.actorOf(Props(new ProtocolStateActor( - localAddress, - remoteAddress, - statusPromise, - transport, - new AkkaProtocolSettings(ConfigFactory.parseString("akka.remote.wait-activity-enabled = off").withFallback(conf)), - codec, - failureDetector))) - - Await.result(statusPromise.future, 3.seconds) match { - case h: AssociationHandle ⇒ - h.remoteAddress must be === remoteAkkaAddress - h.localAddress must be === localAkkaAddress - - case _ ⇒ fail() - } - - lastActivityIsAssociate(registry, None) must be(true) - failureDetector.called must be(true) - - } - - "in outbound mode with WaitActivity delay readiness until activity detected" in { + "in outbound mode delay readiness until hadnshake finished" in { val (failureDetector, registry, transport, handle) = collaborators transport.associateBehavior.pushConstant(handle) val statusPromise: Promise[AssociationHandle] = Promise() val reader = system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = None), remoteAddress, statusPromise, transport, @@ -235,7 +209,7 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re codec, failureDetector))) - awaitCond(lastActivityIsAssociate(registry, None)) + awaitCond(lastActivityIsAssociate(registry, 42, None)) failureDetector.called must be(true) // keeps sending heartbeats @@ -243,13 +217,14 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re statusPromise.isCompleted must be(false) - // finish connection by sending back a payload - reader ! testPayload + // finish connection by sending back an associate message + reader ! testAssociate(33, None) Await.result(statusPromise.future, 3.seconds) match { - case h: AssociationHandle ⇒ + case h: AkkaProtocolHandle ⇒ h.remoteAddress must be === remoteAkkaAddress h.localAddress must be === localAkkaAddress + h.handshakeInfo.uid must be === 33 case _ ⇒ fail() } @@ -260,14 +235,14 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val (failureDetector, registry, _, handle) = collaborators val reader = system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = Some("abcde")), handle, ActorAssociationEventListener(testActor), new AkkaProtocolSettings(ConfigFactory.parseString("akka.remote.require-cookie = on").withFallback(conf)), codec, failureDetector))) - reader ! testAssociate(Some("xyzzy")) + reader ! testAssociate(uid = 33, Some("xyzzy")) awaitCond(registry.logSnapshot.exists { case DisassociateAttempt(requester, remote) ⇒ true @@ -279,7 +254,7 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val (failureDetector, registry, _, handle) = collaborators val reader = system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = Some("abcde")), handle, ActorAssociationEventListener(testActor), new AkkaProtocolSettings(ConfigFactory.parseString("akka.remote.require-cookie = on").withFallback(conf)), @@ -287,10 +262,13 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re failureDetector))) // Send the correct cookie - reader ! testAssociate(Some("abcde")) + reader ! testAssociate(uid = 33, Some("abcde")) val wrappedHandle = expectMsgPF() { - case InboundAssociation(h) ⇒ h + case InboundAssociation(h: AkkaProtocolHandle) ⇒ + h.handshakeInfo.uid must be === 33 + h.handshakeInfo.cookie must be === Some("abcde") + h } wrappedHandle.readHandlerPromise.success(ActorHandleEventListener(testActor)) @@ -308,27 +286,15 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val statusPromise: Promise[AssociationHandle] = Promise() system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = Some("abcde")), remoteAddress, statusPromise, transport, - new AkkaProtocolSettings(ConfigFactory.parseString( - """ - akka.remote.require-cookie = on - akka.remote.wait-activity-enabled = off - """).withFallback(conf)), + new AkkaProtocolSettings(ConfigFactory.parseString("akka.remote.require-cookie = on").withFallback(conf)), codec, failureDetector))) - Await.result(statusPromise.future, 3.seconds) match { - case h: AssociationHandle ⇒ - h.remoteAddress must be === remoteAkkaAddress - h.localAddress must be === localAkkaAddress - - case _ ⇒ fail() - } - - lastActivityIsAssociate(registry, Some("abcde")) must be(true) + awaitCond(lastActivityIsAssociate(registry, uid = 42, cookie = Some("abcde"))) } "handle explicit disassociate messages" in { @@ -338,14 +304,18 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val statusPromise: Promise[AssociationHandle] = Promise() val reader = system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = None), remoteAddress, statusPromise, transport, - new AkkaProtocolSettings(ConfigFactory.parseString("akka.remote.wait-activity-enabled = off").withFallback(conf)), + new AkkaProtocolSettings(conf), codec, failureDetector))) + awaitCond(lastActivityIsAssociate(registry, uid = 42, cookie = None)) + + reader ! testAssociate(uid = 33, cookie = None) + val wrappedHandle = Await.result(statusPromise.future, 3.seconds) match { case h: AssociationHandle ⇒ h.remoteAddress must be === remoteAkkaAddress @@ -357,8 +327,6 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re wrappedHandle.readHandlerPromise.success(ActorHandleEventListener(testActor)) - lastActivityIsAssociate(registry, None) must be(true) - reader ! testDisassociate expectMsg(Disassociated) @@ -371,7 +339,7 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val statusPromise: Promise[AssociationHandle] = Promise() val reader = system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = None), remoteAddress, statusPromise, transport, @@ -379,10 +347,9 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re codec, failureDetector))) - awaitCond(lastActivityIsAssociate(registry, None)) + awaitCond(lastActivityIsAssociate(registry, uid = 42, cookie = None)) - // Finish association with a heartbeat -- pushes state out of WaitActivity - reader ! testHeartbeat + reader ! testAssociate(uid = 33, cookie = None) val wrappedHandle = Await.result(statusPromise.future, 3.seconds) match { case h: AssociationHandle ⇒ @@ -406,15 +373,19 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re val statusPromise: Promise[AssociationHandle] = Promise() - system.actorOf(Props(new ProtocolStateActor( - localAddress, + val stateActor = system.actorOf(Props(new ProtocolStateActor( + HandshakeInfo(origin = localAddress, uid = 42, cookie = None), remoteAddress, statusPromise, transport, - new AkkaProtocolSettings(ConfigFactory.parseString("akka.remote.wait-activity-enabled = off").withFallback(conf)), + new AkkaProtocolSettings(conf), codec, failureDetector))) + awaitCond(lastActivityIsAssociate(registry, uid = 42, cookie = None)) + + stateActor ! testAssociate(uid = 33, cookie = None) + val wrappedHandle = Await.result(statusPromise.future, 3.seconds) match { case h: AssociationHandle ⇒ h.remoteAddress must be === remoteAkkaAddress @@ -426,8 +397,6 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re wrappedHandle.readHandlerPromise.success(ActorHandleEventListener(testActor)) - lastActivityIsAssociate(registry, None) must be(true) - //wait for one heartbeat awaitCond(lastActivityIsHeartbeat(registry)) @@ -437,20 +406,24 @@ class AkkaProtocolSpec extends AkkaSpec("""akka.actor.provider = "akka.remote.Re } "handle correctly when the handler is registered only after the association is already closed" in { - val (failureDetector, _, transport, handle) = collaborators + val (failureDetector, registry, transport, handle) = collaborators transport.associateBehavior.pushConstant(handle) val statusPromise: Promise[AssociationHandle] = Promise() val stateActor = system.actorOf(Props(new ProtocolStateActor( - localAddress, + HandshakeInfo(origin = localAddress, uid = 42, cookie = None), remoteAddress, statusPromise, transport, - new AkkaProtocolSettings(ConfigFactory.parseString("akka.remote.wait-activity-enabled = off").withFallback(conf)), + new AkkaProtocolSettings(conf), codec, failureDetector))) + awaitCond(lastActivityIsAssociate(registry, uid = 42, cookie = None)) + + stateActor ! testAssociate(uid = 33, cookie = None) + val wrappedHandle = Await.result(statusPromise.future, 3.seconds) match { case h: AssociationHandle ⇒ h.remoteAddress must be === remoteAkkaAddress diff --git a/akka-remote/src/test/scala/akka/remote/transport/GenericTransportSpec.scala b/akka-remote/src/test/scala/akka/remote/transport/GenericTransportSpec.scala index c60516c830..7248ef53d5 100644 --- a/akka-remote/src/test/scala/akka/remote/transport/GenericTransportSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/transport/GenericTransportSpec.scala @@ -80,8 +80,8 @@ abstract class GenericTransportSpec(withAkkaProtocol: Boolean = false) Await.result(transportA.listen, timeout.duration)._2.success(ActorAssociationEventListener(self)) awaitCond(registry.transportsReady(addressATest)) - // TestTransport throws IllegalArgumentException when trying to associate with non-existing system - intercept[IllegalArgumentException] { Await.result(transportA.associate(nonExistingAddress), timeout.duration) } + // TestTransport throws InvalidAssociationException when trying to associate with non-existing system + intercept[InvalidAssociationException] { Await.result(transportA.associate(nonExistingAddress), timeout.duration) } } "successfully send PDUs" in { diff --git a/akka-remote/src/test/scala/akka/remote/transport/SystemMessageDeliveryStressTest.scala b/akka-remote/src/test/scala/akka/remote/transport/SystemMessageDeliveryStressTest.scala new file mode 100644 index 0000000000..90853ca5d0 --- /dev/null +++ b/akka-remote/src/test/scala/akka/remote/transport/SystemMessageDeliveryStressTest.scala @@ -0,0 +1,153 @@ +/** + * Copyright (C) 2009-2013 Typesafe Inc. + */ +package akka.remote.transport + +import akka.testkit.TimingTest +import akka.testkit.DefaultTimeout +import akka.testkit.ImplicitSender +import akka.testkit.{ TimingTest, DefaultTimeout, ImplicitSender, AkkaSpec } +import com.typesafe.config.{ Config, ConfigFactory } +import AkkaProtocolStressTest._ +import akka.actor._ +import scala.concurrent.duration._ +import akka.testkit._ +import akka.remote.EndpointException +import akka.remote.{ RARP, EndpointException } +import akka.remote.transport.FailureInjectorTransportAdapter.{ One, All, Drop } +import scala.concurrent.Await +import akka.actor.ActorRef +import akka.actor.Actor +import akka.testkit.AkkaSpec +import akka.actor.ActorSystem +import akka.actor.Props +import akka.actor.ExtendedActorSystem +import akka.actor.RootActorPath +import akka.remote.transport.FailureInjectorTransportAdapter.One +import akka.remote.transport.FailureInjectorTransportAdapter.Drop +import akka.testkit.TestEvent +import akka.testkit.EventFilter +import akka.event.Logging +import akka.dispatch.sysmsg.{ Failed, SystemMessage } +import akka.pattern.pipe + +object SystemMessageDeliveryStressTest { + val baseConfig: Config = ConfigFactory parseString (""" + akka { + #loglevel = DEBUG + actor.provider = "akka.remote.RemoteActorRefProvider" + + remote.retry-gate-closed-for = 0 s + remote.log-remote-lifecycle-events = on + + remote.failure-detector { + threshold = 1.0 + max-sample-size = 2 + min-std-deviation = 1 ms + acceptable-heartbeat-pause = 0.01 s + } + remote.retry-window = 1 s + remote.maximum-retries-in-window = 1000 + remote.use-passive-connections = on + + remote.netty.tcp { + applied-adapters = ["gremlin"] + port = 0 + } + + } + """) + + class SystemMessageSequenceVerifier(system: ActorSystem, testActor: ActorRef) extends MinimalActorRef { + val provider = RARP(system).provider + val path = provider.tempPath() + + RARP(system).provider.registerTempActor(this, path) + + override def getParent = provider.tempContainer + + override def sendSystemMessage(message: SystemMessage): Unit = { + message match { + case Failed(_, _, seq) ⇒ testActor ! seq + case _ ⇒ + } + } + } + + class SystemMessageSender(val msgCount: Int, val target: ActorRef) extends Actor { + var counter = 0 + val targetRef = target.asInstanceOf[InternalActorRef] + + override def preStart(): Unit = self ! "sendnext" + + override def receive = { + case "sendnext" ⇒ + targetRef.sendSystemMessage(Failed(null, null, counter)) + counter += 1 + if (counter < msgCount) self ! "sendnext" + } + } + +} + +abstract class SystemMessageDeliveryStressTest(msg: String, cfg: String) + extends AkkaSpec(ConfigFactory.parseString(cfg).withFallback(configA)) with ImplicitSender with DefaultTimeout { + import SystemMessageDeliveryStressTest._ + + val systemB = ActorSystem("systemB", system.settings.config) + val sysMsgVerifier = new SystemMessageSequenceVerifier(system, testActor) + val MsgCount = 100 + + val address = system.asInstanceOf[ExtendedActorSystem].provider.getDefaultAddress + val addressB = systemB.asInstanceOf[ExtendedActorSystem].provider.getDefaultAddress + + val root = RootActorPath(address) + // We test internals here (system message delivery) so we are allowed to cheat + val there = RARP(systemB).provider.resolveActorRef(root / "temp" / sysMsgVerifier.path.name).asInstanceOf[InternalActorRef] + + override def atStartup() = { + system.eventStream.publish(TestEvent.Mute( + EventFilter.error(start = "AssociationError"), + EventFilter.warning(pattern = "received dead letter.*"))) + systemB.eventStream.publish(TestEvent.Mute( + EventFilter[EndpointException](), + EventFilter.error(start = "AssociationError"), + EventFilter.warning(pattern = "received dead letter.*"))) + } + + "Remoting " + msg must { + "guaranteed delivery and message ordering despite packet loss " taggedAs TimingTest in { + Await.result(RARP(systemB).provider.transport.managementCommand(One(address, Drop(0.3, 0.3))), 3.seconds.dilated) + systemB.actorOf(Props(new SystemMessageSender(MsgCount, there))) + + val toSend = (0 until MsgCount).toList + val received = expectMsgAllOf(45.seconds, toSend: _*) + + received must be === toSend + } + } + + override def beforeTermination() { + system.eventStream.publish(TestEvent.Mute( + EventFilter.warning(source = "akka://AkkaProtocolStressTest/user/$a", start = "received dead letter"), + EventFilter.warning(pattern = "received dead letter.*(InboundPayload|Disassociate)"))) + systemB.eventStream.publish(TestEvent.Mute( + EventFilter[EndpointException](), + EventFilter.error(start = "AssociationError"), + EventFilter.warning(pattern = "received dead letter.*(InboundPayload|Disassociate)"))) + } + + override def afterTermination(): Unit = systemB.shutdown() + +} + +class SystemMessageDeliveryDefault extends SystemMessageDeliveryStressTest("retry gate off, passive connections on", "") +class SystemMessageDeliveryRetryGate extends SystemMessageDeliveryStressTest("retry gate on, passive connections on", + "akka.remote.retry-gate-closed-for = 0.5 s") +class SystemMessageDeliveryNoPassive extends SystemMessageDeliveryStressTest("retry gate off, passive connections off", + "akka.remote.use-passive-connections = off") +class SystemMessageDeliveryNoPassiveRetryGate extends SystemMessageDeliveryStressTest("retry gate on, passive connections off", + """ + akka.remote.use-passive-connections = off + akka.remote.retry-gate-closed-for = 0.5 s + """) diff --git a/akka-remote/src/test/scala/akka/remote/transport/TestTransportSpec.scala b/akka-remote/src/test/scala/akka/remote/transport/TestTransportSpec.scala index c5e6cc925f..2f1935018e 100644 --- a/akka-remote/src/test/scala/akka/remote/transport/TestTransportSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/transport/TestTransportSpec.scala @@ -56,8 +56,8 @@ class TestTransportSpec extends AkkaSpec with DefaultTimeout with ImplicitSender Await.result(transportA.listen, timeout.duration)._2.success(ActorAssociationEventListener(self)) - // TestTransport throws IllegalArgumentException when trying to associate with non-existing system - intercept[IllegalArgumentException] { Await.result(transportA.associate(nonExistingAddress), timeout.duration) } + // TestTransport throws IllegalAssociationException when trying to associate with non-existing system + intercept[InvalidAssociationException] { Await.result(transportA.associate(nonExistingAddress), timeout.duration) } } diff --git a/akka-remote/src/test/scala/akka/remote/transport/ThrottlerTransportAdapterSpec.scala b/akka-remote/src/test/scala/akka/remote/transport/ThrottlerTransportAdapterSpec.scala index 282b7efdab..80abedc9a6 100644 --- a/akka-remote/src/test/scala/akka/remote/transport/ThrottlerTransportAdapterSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/transport/ThrottlerTransportAdapterSpec.scala @@ -15,12 +15,11 @@ import akka.remote.EndpointException object ThrottlerTransportAdapterSpec { val configA: Config = ConfigFactory parseString (""" akka { - #loglevel = DEBUG actor.provider = "akka.remote.RemoteActorRefProvider" remote.netty.tcp.hostname = "localhost" remote.retry-gate-closed-for = 0 s - remote.log-remote-lifecycle-events = on + remote.log-remote-lifecycle-events = off remote.netty.tcp.applied-adapters = ["trttl"] remote.netty.tcp.port = 0 From da2a23f3e9ecece746ec622ddc376c4138ab51ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Endre=20S=C3=A1ndor=20Varga?= Date: Thu, 18 Apr 2013 16:19:41 +0200 Subject: [PATCH 2/3] Fixed compile errors --- .../scala/akka/remote/transport/AkkaProtocolTransport.scala | 4 ++-- akka-remote/src/test/scala/akka/remote/RemoteConfigSpec.scala | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/akka-remote/src/main/scala/akka/remote/transport/AkkaProtocolTransport.scala b/akka-remote/src/main/scala/akka/remote/transport/AkkaProtocolTransport.scala index 471ec5702c..7c88b09e61 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/AkkaProtocolTransport.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/AkkaProtocolTransport.scala @@ -115,7 +115,7 @@ private[transport] class AkkaProtocolManager( val stateActorSettings = settings val failureDetector = createTransportFailureDetector() context.actorOf(Props(new ProtocolStateActor( - HandshakeInfo(stateActorLocalAddress, RARP(context.system).provider.addressUid, stateActorSettings.SecureCookie), + HandshakeInfo(stateActorLocalAddress, AddressUidExtension(context.system).addressUid, stateActorSettings.SecureCookie), handle, stateActorAssociationHandler, stateActorSettings, @@ -128,7 +128,7 @@ private[transport] class AkkaProtocolManager( val stateActorWrappedTransport = wrappedTransport val failureDetector = createTransportFailureDetector() context.actorOf(Props(new ProtocolStateActor( - HandshakeInfo(stateActorLocalAddress, RARP(context.system).provider.addressUid, stateActorSettings.SecureCookie), + HandshakeInfo(stateActorLocalAddress, AddressUidExtension(context.system).addressUid, stateActorSettings.SecureCookie), remoteAddress, statusPromise, stateActorWrappedTransport, diff --git a/akka-remote/src/test/scala/akka/remote/RemoteConfigSpec.scala b/akka-remote/src/test/scala/akka/remote/RemoteConfigSpec.scala index bcf62c431e..1281e7c80a 100644 --- a/akka-remote/src/test/scala/akka/remote/RemoteConfigSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/RemoteConfigSpec.scala @@ -64,10 +64,6 @@ class RemoteConfigSpec extends AkkaSpec( val settings = new AkkaProtocolSettings(RARP(system).provider.remoteSettings.config) import settings._ - WaitActivityEnabled must be(true) - FailureDetectorImplementationClass must be(classOf[PhiAccrualFailureDetector].getName) - AcceptableHeartBeatPause must be === 3.seconds - HeartBeatInterval must be === 1.seconds RequireCookie must be(false) SecureCookie must be === None From 7735cb87b91b54ffaf226eadcf29571404771b4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Endre=20S=C3=A1ndor=20Varga?= Date: Thu, 18 Apr 2013 20:31:31 +0200 Subject: [PATCH 3/3] Adding workaround for UnreachableNodeJoinsAgain - see #3247 --- .../scala/akka/cluster/UnreachableNodeJoinsAgainSpec.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/UnreachableNodeJoinsAgainSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/UnreachableNodeJoinsAgainSpec.scala index 18c3499fd7..e33428cce4 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/UnreachableNodeJoinsAgainSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/UnreachableNodeJoinsAgainSpec.scala @@ -29,7 +29,7 @@ object UnreachableNodeJoinsAgainMultiNodeConfig extends MultiNodeConfig { """ # this setting is here to limit the number of retries and failures while the # node is being blackholed - akka.remote.failure-detector.retry-gate-closed-for = 500 ms + akka.remote.retry-gate-closed-for = 500 ms akka.remote.log-remote-lifecycle-events = off akka.cluster.publish-stats-interval = 0s @@ -169,6 +169,7 @@ abstract class UnreachableNodeJoinsAgainSpec val victimAddress = system.asInstanceOf[ExtendedActorSystem].provider.getDefaultAddress system.shutdown() system.awaitTermination(10 seconds) + Thread.sleep(5000) // create new ActorSystem with same host:port val freshSystem = ActorSystem(system.name, ConfigFactory.parseString(s""" akka.remote.netty.tcp {