Example #1
0
        private static byte[] ConstructHandshakePacketContent(HandshakeInfo handshakeInfo)
        {
            using (var builder = new PacketBuilder())
            {
                builder.WriteInt16(handshakeInfo.Version);
                builder.WriteLengthString(handshakeInfo.Subversion);
                builder.WriteBytes(handshakeInfo.ServerIv);
                builder.WriteBytes(handshakeInfo.ClientIv);

                // Locale ID (used for localizations and test servers)
                builder.WriteByte(handshakeInfo.LocaleId);

                return(builder.ToByteArray());
            }
        }
Example #2
0
        /// <inheritdoc />
        /// <exception cref="ArgumentNullException">
        /// Thrown if <paramref name="endpointCrypto"/> or <paramref name="handshakeInfo"/> are <see langword="null"/>.
        /// </exception>
        public void Start(EndpointCrypto endpointCrypto, HandshakeInfo handshakeInfo)
        {
            if (endpointCrypto == null)
            {
                throw new ArgumentNullException(nameof(endpointCrypto));
            }
            if (handshakeInfo == null)
            {
                throw new ArgumentNullException(nameof(handshakeInfo));
            }

            ThrowIfNoPacketReceivedSubscriber();

            Crypto = endpointCrypto;

            byte[] handshake = ConstructHandshakePacket(handshakeInfo);
            BaseSession.Start();
            BaseSession.Write(handshake);
        }
Example #3
0
        private static byte[] ConstructHandshakePacket(HandshakeInfo handshakeInfo)
        {
            var content = ConstructHandshakePacketContent(handshakeInfo);

            using (var builder = new PacketBuilder())
            {
                if (handshakeInfo.Header.HasValue)
                {
                    builder.WriteInt16(handshakeInfo.Header.Value);
                }
                else
                {
                    builder.WriteInt16((ushort)content.Length);
                }

                builder.WriteBytes(content);

                return(builder.ToByteArray());
            }
        }
Example #4
0
 public Associate(HandshakeInfo info)
 {
     Info = info;
 }
Example #5
0
        public override ByteString ConstructAssociate(HandshakeInfo info)
        {
            var handshakeInfo = AkkaHandshakeInfo.CreateBuilder()
                .SetOrigin(SerializeAddress(info.Origin))
                .SetUid((ulong)info.Uid);

            return ConstructControlMessagePdu(CommandType.ASSOCIATE, handshakeInfo);
        }
Example #6
0
 public abstract ByteString ConstructAssociate(HandshakeInfo info);