Exemplo n.º 1
0
        public void JoinResponseMessageClear()
        {
            JoinResponseMessage originalMessage = new JoinResponseMessage();

            originalMessage.RequestMessageId = 1;
            originalMessage.FailureCode      = 2;

            originalMessage.BubbleId              = Guid.Empty;
            originalMessage.ParticipantId         = Guid.Empty;
            originalMessage.AvatarId              = Guid.Empty;
            originalMessage.BubbleName            = "TestBubbleName";
            originalMessage.BubbleAssetCacheUrl   = "TestBubbleAssetCacheUrl";
            originalMessage.BubbleRange           = 3;
            originalMessage.BubblePerceptionRange = 4;
            originalMessage.BubbleRealTime        = 5;

            originalMessage.ProgramName            = "TestProgramName";
            originalMessage.ProgramMajorVersion    = 6;
            originalMessage.ProgramMinorVersion    = 7;
            originalMessage.ProtocolMajorVersion   = 8;
            originalMessage.ProtocolMinorVersion   = 9;
            originalMessage.ProtocolSourceRevision = 10;

            originalMessage.Clear();
            JoinResponseMessage emptyMessage = new JoinResponseMessage();

            emptyMessage.MessageId = originalMessage.MessageId;
            Assert.AreEqual(originalMessage.ToString(), emptyMessage.ToString());
        }
Exemplo n.º 2
0
        public void OnConnected(JoinResponseMessage message)
        {
            DeckProgram.CloudView.RequestLinkedBubbleList();

            if (!m_isHandoverConnect)
            {
                InjectRequestMessage injectRequest = new InjectRequestMessage();
                injectRequest.ObjectFragment.ObjectId             = AvatarId;
                injectRequest.ObjectFragment.ObjectName           = ParticipantNickName;
                injectRequest.ObjectFragment.TypeName             = "Avatar";
                injectRequest.ObjectFragment.BoundingSphereRadius = 2f;
                injectRequest.ObjectFragment.Mass = 2f;
                OmModelPrimitiveExt modelPrimitiveExt = new OmModelPrimitiveExt();
                modelPrimitiveExt.ModelUrl = "http://assets.bubblecloud.org/Collada/Seymour/Seymour_triangulate.dae";
                modelPrimitiveExt.Scale    = 0.1f;
                injectRequest.SetExtension(modelPrimitiveExt);
                DeckProgram.CloudView.InjectObject(injectRequest);
            }
            m_isHandoverConnect = false;

            LogUtil.Info("DeckEngine connected.");

            ExpectedObjectSynchronizationCount = int.MaxValue; // This is overriden later by synchronization begin event.
            CurrentObjectSynchronizationCount  = 0;

            ParticipantId = message.ParticipantId;
            DeckProgram.HudForm.SetBubbleInformation(
                message.ProgramName + " / " + message.BubbleName + " ( Hub Software Version " + message.ProgramMajorVersion + "." + message.ProgramMinorVersion +
                ", Hub Protocol Version " + message.ProtocolMajorVersion + "." + message.ProtocolMinorVersion + ", Source Revision " + message.ProtocolSourceRevision + " )");
        }
Exemplo n.º 3
0
        private void AcceptConnection(Session session, JoinRequestMessage joinRequestMessage, UUID mxpSessionID, UUID userId)
        {
            JoinResponseMessage joinResponseMessage = (JoinResponseMessage)MessageFactory.Current.ReserveMessage(typeof(JoinResponseMessage));

            joinResponseMessage.RequestMessageId    = joinRequestMessage.MessageId;
            joinResponseMessage.FailureCode         = MxpResponseCodes.SUCCESS;
            joinResponseMessage.BubbleId            = joinRequestMessage.BubbleId;
            joinResponseMessage.ParticipantId       = userId.Guid;
            joinResponseMessage.AvatarId            = userId.Guid;
            joinResponseMessage.BubbleAssetCacheUrl = "http://" + NetworkUtil.GetHostFor(session.RemoteEndPoint.Address,
                                                                                         m_scenes[new UUID(joinRequestMessage.BubbleId)].RegionInfo.ExternalHostName) + ":" + m_scenes[new UUID(joinRequestMessage.BubbleId)].RegionInfo.HttpPort + "/assets/";

            joinResponseMessage.BubbleName             = m_scenes[new UUID(joinRequestMessage.BubbleId)].RegionInfo.RegionName;
            joinResponseMessage.BubbleRange            = 128;
            joinResponseMessage.BubblePerceptionRange  = 128 + 256;
            joinResponseMessage.BubbleRealTime         = 0;
            joinResponseMessage.ProgramName            = m_programName;
            joinResponseMessage.ProgramMajorVersion    = m_programMajorVersion;
            joinResponseMessage.ProgramMinorVersion    = m_programMinorVersion;
            joinResponseMessage.ProtocolMajorVersion   = MxpConstants.ProtocolMajorVersion;
            joinResponseMessage.ProtocolMinorVersion   = MxpConstants.ProtocolMinorVersion;
            joinResponseMessage.ProtocolSourceRevision = MxpConstants.ProtocolSourceRevision;
            session.Send(joinResponseMessage);
            session.SetStateConnected();
        }
Exemplo n.º 4
0
        private void DeclineConnection(Session session, Message joinRequestMessage)
        {
            JoinResponseMessage joinResponseMessage = (JoinResponseMessage)MessageFactory.Current.ReserveMessage(typeof(JoinResponseMessage));

            joinResponseMessage.RequestMessageId       = joinRequestMessage.MessageId;
            joinResponseMessage.FailureCode            = MxpResponseCodes.UNAUTHORIZED_OPERATION;
            joinResponseMessage.ProgramName            = m_programName;
            joinResponseMessage.ProgramMajorVersion    = m_programMajorVersion;
            joinResponseMessage.ProgramMinorVersion    = m_programMinorVersion;
            joinResponseMessage.ProtocolMajorVersion   = MxpConstants.ProtocolMajorVersion;
            joinResponseMessage.ProtocolMinorVersion   = MxpConstants.ProtocolMinorVersion;
            joinResponseMessage.ProtocolSourceRevision = MxpConstants.ProtocolSourceRevision;
            session.Send(joinResponseMessage);
            session.SetStateDisconnected();
        }
Exemplo n.º 5
0
        private async void JoinRoomResponse(JoinResponseMessage obj)
        {
            PlayerNames = obj.PlayerNames;
            switch (obj.Response)
            {
            case ResponseStatusEnum.GroupDoesNotExist:
                NotificationService.ReportError("Room doesn't exist, create?", "Create", JoinRoomAsync);
                break;

            case ResponseStatusEnum.GroupExists:
                JoinRoomAsync(null);
                break;

            case ResponseStatusEnum.InvalidPassword:
                NotificationService.ReportError("Invalid password!");
                break;
            }
        }
Exemplo n.º 6
0
        public void JoinResponseMessageEncoding()
        {
            JoinResponseMessage originalMessage = new JoinResponseMessage();


            originalMessage.RequestMessageId = 1;
            originalMessage.FailureCode      = 2;

            originalMessage.BubbleId              = Guid.Empty;
            originalMessage.ParticipantId         = Guid.Empty;
            originalMessage.AvatarId              = Guid.Empty;
            originalMessage.BubbleName            = "TestBubbleName";
            originalMessage.BubbleAssetCacheUrl   = "TestBubbleAssetCacheUrl";
            originalMessage.BubbleRange           = 3;
            originalMessage.BubblePerceptionRange = 4;
            originalMessage.BubbleRealTime        = 5;

            originalMessage.ProgramName            = "TestProgramName";
            originalMessage.ProgramMajorVersion    = 6;
            originalMessage.ProgramMinorVersion    = 7;
            originalMessage.ProtocolMajorVersion   = 8;
            originalMessage.ProtocolMinorVersion   = 9;
            originalMessage.ProtocolSourceRevision = 10;

            byte[] encodedBytes = new byte[originalMessage.FrameDataSize(0)];

            int dataLength = originalMessage.EncodeFrameData(0, encodedBytes, 0);

            JoinResponseMessage decodedMessage = new JoinResponseMessage();

            decodedMessage.DecodeFrameData(0, encodedBytes, 0, dataLength);



            decodedMessage.MessageId = originalMessage.MessageId;


            String originalMessageString = originalMessage.ToString();
            String decodedMessageString  = decodedMessage.ToString();

            Assert.AreEqual(originalMessageString, decodedMessageString);
        }
Exemplo n.º 7
0
        public void ProcessMessages()
        {
            if (transmitter.PendingSessionCount > 0)
            {
                sessions.Add(transmitter.AcceptPendingSession());
            }

            for (int i = 0; i < sessions.Count; i++)
            {
                int     messagesProcessedCount = 0;
                Session session = sessions[i];
                while (session.AvailableMessages > 0)
                {
                    Message message = session.Receive();

                    if (message.GetType() == typeof(JoinRequestMessage))
                    {
                        JoinRequestMessage joinRequestMessage = (JoinRequestMessage)message;

                        if (Bubbles.ContainsKey(joinRequestMessage.BubbleId))
                        {
                            session.Bubble = Bubbles[joinRequestMessage.BubbleId];
                        }

                        Guid participantId = Guid.Empty;
                        Guid avatarId      = Guid.Empty;
                        bool success       = session.Bubble != null && session.Bubble.ParticipantConnectAuthorize(
                            session, joinRequestMessage, out participantId, out avatarId);

                        if (success)
                        {
                            //LogUtil.Info("Participant connect success: " + joinRequestMessage.ParticipantIdentifier + " (" + session.IncomingSessionId + " " + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + session.RemoteEndPoint.Port + ")");

                            JoinResponseMessage joinResponseMessage = (JoinResponseMessage)MessageFactory.Current.ReserveMessage(
                                typeof(JoinResponseMessage));

                            joinResponseMessage.RequestMessageId = joinRequestMessage.MessageId;
                            joinResponseMessage.FailureCode      = 0;

                            joinResponseMessage.ParticipantId          = participantId;
                            joinResponseMessage.AvatarId               = avatarId;
                            joinResponseMessage.BubbleAssetCacheUrl    = assetCacheUrl;
                            joinResponseMessage.BubbleId               = session.Bubble.BubbleId;
                            joinResponseMessage.BubbleName             = session.Bubble.BubbleName;
                            joinResponseMessage.BubbleRealTime         = 0;
                            joinResponseMessage.ProgramName            = programName;
                            joinResponseMessage.ProgramMajorVersion    = programMajorVersion;
                            joinResponseMessage.ProgramMinorVersion    = programMinorVersion;
                            joinResponseMessage.ProtocolMajorVersion   = MxpConstants.ProtocolMajorVersion;
                            joinResponseMessage.ProtocolMinorVersion   = MxpConstants.ProtocolMinorVersion;
                            joinResponseMessage.ProtocolSourceRevision = MxpConstants.ProtocolSourceRevision;

                            session.Send(joinResponseMessage);

                            session.SetStateConnected();

                            session.Bubble.ParticipantConnected(session, joinRequestMessage, participantId, avatarId);
                        }
                        else
                        {
                            //LogUtil.Info("Participant connect failure failure: " + joinRequestMessage.ParticipantIdentifier + " (" + session.IncomingSessionId + " " + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + session.RemoteEndPoint.Port + ")");

                            JoinResponseMessage joinResponseMessage = (JoinResponseMessage)MessageFactory.Current.ReserveMessage(typeof(JoinResponseMessage));

                            joinResponseMessage.RequestMessageId = joinRequestMessage.MessageId;
                            joinResponseMessage.FailureCode      = 1;

                            joinResponseMessage.BubbleAssetCacheUrl = assetCacheUrl;

                            if (session.Bubble != null)
                            {
                                joinResponseMessage.BubbleName = session.Bubble.BubbleName;
                                joinResponseMessage.BubbleId   = session.Bubble.BubbleId;
                            }
                            else
                            {
                                joinResponseMessage.BubbleName = "";
                                joinResponseMessage.BubbleId   = Guid.Empty;
                            }

                            joinResponseMessage.BubbleRealTime         = 0;
                            joinResponseMessage.ProgramName            = programName;
                            joinResponseMessage.ProgramMajorVersion    = programMajorVersion;
                            joinResponseMessage.ProgramMinorVersion    = programMinorVersion;
                            joinResponseMessage.ProtocolMajorVersion   = MxpConstants.ProtocolMajorVersion;
                            joinResponseMessage.ProtocolMinorVersion   = MxpConstants.ProtocolMinorVersion;
                            joinResponseMessage.ProtocolSourceRevision = MxpConstants.ProtocolSourceRevision;

                            session.Send(joinResponseMessage);

                            session.SetStateDisconnected();

                            if (session.Bubble != null)
                            {
                                session.Bubble.ParticipantConnectFailure(session, message);
                            }
                        }
                    }
                    if (message.GetType() == typeof(LeaveRequestMessage))
                    {
                        LeaveResponseMessage leaveResponseMessage = (LeaveResponseMessage)MessageFactory.Current.ReserveMessage(
                            typeof(LeaveResponseMessage));

                        //LogUtil.Info("Session leave request: " + session.IncomingSessionId + " (" + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + session.RemoteEndPoint.Port + ")");

                        leaveResponseMessage.RequestMessageId = message.MessageId;
                        leaveResponseMessage.FailureCode      = 0;
                        session.Send(leaveResponseMessage);

                        /*if (session.SessionState != SessionState.Disconnected)
                         * {
                         *  session.SetStateDisconnected();
                         * }*/
                    }
                    if (message.GetType() == typeof(LeaveResponseMessage))
                    {
                        LeaveResponseMessage leaveResponseMessage = (LeaveResponseMessage)message;

                        //LogUtil.Info("Session leave response: " + session.IncomingSessionId + " (" + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + session.RemoteEndPoint.Port + ")");

                        if (leaveResponseMessage.FailureCode == 0)
                        {
                            session.SetStateDisconnected();
                        }
                    }
                    else
                    {
                        if (session.Bubble != null)
                        {
                            session.Bubble.ParticipantMessageReceived(session, message);
                        }
                    }

                    MessageFactory.Current.ReleaseMessage(message);
                    messagesProcessedCount++;
                    if (messagesProcessedCount > 1000)
                    {
                        break;
                    }
                }
            }
        }
Exemplo n.º 8
0
        public void OnMessage(Message message)
        {
            if (message.GetType() == typeof(JoinResponseMessage))
            {
                JoinResponseMessage joinResponse = (JoinResponseMessage)message;
                if (joinResponse.FailureCode == MxpResponseCodes.SUCCESS)
                {
                    Bubble.BubbleName                   = joinResponse.BubbleName;
                    Bubble.CloudUrl                     = joinResponse.BubbleAssetCacheUrl;
                    Bubble.ServerProgramName            = joinResponse.ProgramName;
                    Bubble.ServerProgramMajorVersion    = joinResponse.ProgramMajorVersion;
                    Bubble.ServerProgramMinorVersion    = joinResponse.ProgramMinorVersion;
                    Bubble.ServerProtocolMajorVersion   = joinResponse.ProtocolMajorVersion;
                    Bubble.ServerProtocolMinorVersion   = joinResponse.ProtocolMinorVersion;
                    Bubble.ServerProtocolSourceRevision = (int)joinResponse.ProtocolSourceRevision;
                    Bubble.BubbleRange                  = 100;
                }
            }

            if (message.GetType() == typeof(PerceptionEventMessage))
            {
                PerceptionEventMessage perception = (PerceptionEventMessage)message;
                ObjectFragment         fragment   = perception.ObjectFragment;

                DeckObject obj = null;
                if (!Bubble.Objects.ContainsKey(fragment.ObjectIndex))
                {
                    obj = new DeckObject();
                    Bubble.Objects.Add(fragment.ObjectIndex, obj);
                    Bubble.IdObjectDictionary.Add(fragment.ObjectId, obj);
                }
                else
                {
                    obj = Bubble.Objects[fragment.ObjectIndex];
                }

                obj.SetValues(fragment);

                if (perception.ObjectFragment.ObjectId == deck.AvatarId)
                {
                    deck.ReceivedAvatarObject = obj;
                }
            }

            if (message.GetType() == typeof(MovementEventMessage))
            {
                MovementEventMessage movement = (MovementEventMessage)message;

                DeckObject obj = null;
                if (Bubble.Objects.ContainsKey(movement.ObjectIndex))
                {
                    obj = Bubble.Objects[movement.ObjectIndex];
                    obj.SetValues(movement);
                }
            }

            if (message.GetType() == typeof(DisappearanceEventMessage))
            {
                DisappearanceEventMessage disappearance = (DisappearanceEventMessage)message;
                if (Bubble.Objects.ContainsKey(disappearance.ObjectIndex))
                {
                    if (Bubble.Objects.ContainsKey(disappearance.ObjectIndex))
                    {
                        DeckObject obj = Bubble.Objects[disappearance.ObjectIndex];
                        Bubble.IdObjectDictionary.Remove(obj.ObjectId);
                        Bubble.Objects.Remove(disappearance.ObjectIndex);
                    }
                }
            }

            if (message.GetType() == typeof(ActionEventMessage))
            {
                ActionEventMessage actionEvent            = (ActionEventMessage)message;
                String             sourceObjectIdentifier = null;
                if (Bubble.IdObjectDictionary.ContainsKey(actionEvent.ActionFragment.SourceObjectId))
                {
                    DeckObject obj = Bubble.IdObjectDictionary[actionEvent.ActionFragment.SourceObjectId];
                    sourceObjectIdentifier = obj.ObjectName;
                }
                else
                {
                    sourceObjectIdentifier = actionEvent.ActionFragment.SourceObjectId.ToString();
                }
                deck.ConsoleLines.Add(sourceObjectIdentifier + " " + actionEvent.ActionFragment.ActionName + " (" + actionEvent.ActionFragment.ExtensionDialect + "): " + Encoding.UTF8.GetString(actionEvent.ActionFragment.GetExtensionData(), 0, (int)actionEvent.ActionFragment.ExtensionLength));
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Executes client processing like message handling and session management
        /// </summary>
        public void Process()
        {
            int messagesProcessedCount = 0;

            while (session != null && session.AvailableMessages > 0)
            {
                Message message = session.Receive();

                if (message.GetType() == typeof(JoinResponseMessage))
                {
                    JoinResponseMessage joinResponseMessage = (JoinResponseMessage)message;
                    participantId = joinResponseMessage.ParticipantId;
                    avatarId      = joinResponseMessage.AvatarId;
                    bubbleId      = joinResponseMessage.BubbleId;
                    if (joinResponseMessage.FailureCode == 0)
                    {
                        session.SetStateConnected();
                        ConnectionSuccess(joinResponseMessage);
                    }
                    else
                    {
                        session.SetStateDisconnected();
                        ConnectionFailure(joinResponseMessage);
                    }
                }
                else if (message.GetType() == typeof(LeaveRequestMessage))
                {
                    LeaveResponseMessage leaveResponse = (LeaveResponseMessage)MessageFactory.Current.ReserveMessage(typeof(LeaveResponseMessage));
                    leaveResponse.RequestMessageId = leaveResponse.MessageId;
                    leaveResponse.FailureCode      = MxpResponseCodes.SUCCESS;

                    session.Send(leaveResponse);

                    ServerDisconnected(message);

                    Shutdown();
                }
                else if (message.GetType() == typeof(LeaveResponseMessage))
                {
                    LeaveResponseMessage leaveResponseMessage = (LeaveResponseMessage)message;
                    if (leaveResponseMessage.FailureCode == 0)
                    {
                        ServerDisconnected(message);

                        Shutdown();
                    }
                }

                ServerMessageReceived(message);

                MessageFactory.Current.ReleaseMessage(message);

                messagesProcessedCount++;

                //if (messagesProcessedCount > 1000)
                if (messagesProcessedCount > 5 && session.AvailableMessages < 30)
                {
                    break;
                }
            }

            if (session != null && session.SessionState == SessionState.Disconnected)
            {
                ServerDisconnected(null);

                Shutdown();
            }
        }
Exemplo n.º 10
0
        private void LoadReferenceMessages()
        {
            udpClient = new UdpClient(UdpClientPort);

            // Control messages
            {
                AcknowledgeMessage originalMessage = new AcknowledgeMessage();
                originalMessage.MessageId = 1;
                originalMessage.AddPacketId(1);
                originalMessage.AddPacketId(2);
                originalMessage.AddPacketId(3);
                originalMessage.AddPacketId(4);
                originalMessage.AddPacketId(5);
                SerializeReferenceMessage(originalMessage);
            }
            {
                AttachRequestMessage originalMessage = new AttachRequestMessage();
                originalMessage.MessageId      = 1;
                originalMessage.TargetBubbleId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.SourceBubbleFragment.BubbleId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.SourceBubbleFragment.BubbleName            = "TestBubble1";
                originalMessage.SourceBubbleFragment.BubbleAssetCacheUrl   = "TestCloudUrl";
                originalMessage.SourceBubbleFragment.BubbleAddress         = "TestBubbleAddress";
                originalMessage.SourceBubbleFragment.BubblePort            = 1;
                originalMessage.SourceBubbleFragment.BubbleCenter.X        = 2;
                originalMessage.SourceBubbleFragment.BubbleCenter.Y        = 3;
                originalMessage.SourceBubbleFragment.BubbleCenter.Z        = 4;
                originalMessage.SourceBubbleFragment.BubbleRange           = 5;
                originalMessage.SourceBubbleFragment.BubblePerceptionRange = 6;
                originalMessage.SourceBubbleFragment.BubbleRealTime        = 7;
                originalMessage.ProgramName            = "TestProgramName";
                originalMessage.ProgramMajorVersion    = 1;
                originalMessage.ProgramMinorVersion    = 2;
                originalMessage.ProtocolMajorVersion   = 3;
                originalMessage.ProtocolMinorVersion   = 4;
                originalMessage.ProtocolSourceRevision = 5;
                SerializeReferenceMessage(originalMessage);
            }
            {
                AttachResponseMessage originalMessage = new AttachResponseMessage();
                originalMessage.MessageId        = 1;
                originalMessage.RequestMessageId = 1;
                originalMessage.FailureCode      = 2;
                originalMessage.TargetBubbleFragment.BubbleId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.TargetBubbleFragment.BubbleName            = "TestBubble1";
                originalMessage.TargetBubbleFragment.BubbleAssetCacheUrl   = "TestCloudUrl";
                originalMessage.TargetBubbleFragment.BubbleAddress         = "TestBubbleAddress";
                originalMessage.TargetBubbleFragment.BubblePort            = 1;
                originalMessage.TargetBubbleFragment.BubbleCenter.X        = 2;
                originalMessage.TargetBubbleFragment.BubbleCenter.Y        = 3;
                originalMessage.TargetBubbleFragment.BubbleCenter.Z        = 4;
                originalMessage.TargetBubbleFragment.BubbleRange           = 5;
                originalMessage.TargetBubbleFragment.BubblePerceptionRange = 6;
                originalMessage.TargetBubbleFragment.BubbleRealTime        = 7;
                originalMessage.ProgramName            = "TestProgramName";
                originalMessage.ProgramMajorVersion    = 1;
                originalMessage.ProgramMinorVersion    = 2;
                originalMessage.ProtocolMajorVersion   = 3;
                originalMessage.ProtocolMinorVersion   = 4;
                originalMessage.ProtocolSourceRevision = 5;
                SerializeReferenceMessage(originalMessage);
            }
            {
                ChallengeRequestMessage originalMessage = new ChallengeRequestMessage();
                originalMessage.MessageId = 1;
                for (int i = 0; i < originalMessage.ChallengeRequestBytes.Length; i++)
                {
                    originalMessage.ChallengeRequestBytes[i] = (byte)i;
                }
                SerializeReferenceMessage(originalMessage);
            }
            {
                ChallengeResponseMessage originalMessage = new ChallengeResponseMessage();
                originalMessage.MessageId = 1;
                for (int i = 0; i < originalMessage.ChallengeResponseBytes.Length; i++)
                {
                    originalMessage.ChallengeResponseBytes[i] = (byte)i;
                }
                SerializeReferenceMessage(originalMessage);
            }
            {
                DetachRequestMessage originalMessage = new DetachRequestMessage();
                originalMessage.MessageId = 1;
                SerializeReferenceMessage(originalMessage);
            }
            {
                DetachResponseMessage originalMessage = new DetachResponseMessage();
                originalMessage.MessageId        = 1;
                originalMessage.RequestMessageId = 1;
                originalMessage.FailureCode      = 2;
                SerializeReferenceMessage(originalMessage);
            }
            {
                JoinRequestMessage originalMessage = new JoinRequestMessage();
                originalMessage.MessageId              = 1;
                originalMessage.BubbleId               = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.BubbleName             = "TestBubbleName";
                originalMessage.LocationName           = "TestLocation";
                originalMessage.IdentityProviderUrl    = "IdentityProviderUrl";
                originalMessage.ParticipantIdentifier  = "TestParticipantName";
                originalMessage.ParticipantSecret      = "TestParticipantPassphrase";
                originalMessage.ParticipantRealTime    = 10;
                originalMessage.ProgramName            = "TestProgramName";
                originalMessage.ProgramMajorVersion    = 1;
                originalMessage.ProgramMinorVersion    = 2;
                originalMessage.ProtocolMajorVersion   = 3;
                originalMessage.ProtocolMinorVersion   = 4;
                originalMessage.ProtocolSourceRevision = 5;
                SerializeReferenceMessage(originalMessage);
            }
            {
                JoinResponseMessage originalMessage = new JoinResponseMessage();
                originalMessage.MessageId              = 1;
                originalMessage.RequestMessageId       = 1;
                originalMessage.FailureCode            = 2;
                originalMessage.BubbleId               = Guid.Empty;
                originalMessage.ParticipantId          = Guid.Empty;
                originalMessage.AvatarId               = Guid.Empty;
                originalMessage.BubbleName             = "TestBubbleName";
                originalMessage.BubbleAssetCacheUrl    = "TestBubbleAssetCacheUrl";
                originalMessage.BubbleRange            = 3;
                originalMessage.BubblePerceptionRange  = 4;
                originalMessage.BubbleRealTime         = 5;
                originalMessage.ProgramName            = "TestProgramName";
                originalMessage.ProgramMajorVersion    = 6;
                originalMessage.ProgramMinorVersion    = 7;
                originalMessage.ProtocolMajorVersion   = 8;
                originalMessage.ProtocolMinorVersion   = 9;
                originalMessage.ProtocolSourceRevision = 10;
                SerializeReferenceMessage(originalMessage);
            }
            {
                KeepaliveMessage originalMessage = new KeepaliveMessage();
                originalMessage.MessageId = 1;
                SerializeReferenceMessage(originalMessage);
            }
            {
                LeaveRequestMessage originalMessage = new LeaveRequestMessage();
                originalMessage.MessageId = 1;
                SerializeReferenceMessage(originalMessage);
            }
            {
                LeaveResponseMessage originalMessage = new LeaveResponseMessage();
                originalMessage.MessageId        = 1;
                originalMessage.RequestMessageId = 1;
                originalMessage.FailureCode      = 2;
                SerializeReferenceMessage(originalMessage);
            }
            {
                ListBubblesRequest originalMessage = new ListBubblesRequest();
                originalMessage.MessageId = 1;
                originalMessage.ListType  = ListBubblesRequest.ListTypeHosted;
                SerializeReferenceMessage(originalMessage);
            }
            {
                ListBubblesResponse originalMessage = new ListBubblesResponse();
                originalMessage.MessageId = 1;
                {
                    BubbleFragment bubbleEntry = new BubbleFragment();
                    bubbleEntry.BubbleId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                    bubbleEntry.BubbleName            = "TestBubble1";
                    bubbleEntry.BubbleAssetCacheUrl   = "TestCloudUrl";
                    bubbleEntry.BubbleAddress         = "TestBubbleAddress";
                    bubbleEntry.BubblePort            = 1;
                    bubbleEntry.BubbleCenter.X        = 2;
                    bubbleEntry.BubbleCenter.Y        = 3;
                    bubbleEntry.BubbleCenter.Z        = 4;
                    bubbleEntry.BubbleRange           = 5;
                    bubbleEntry.BubblePerceptionRange = 6;
                    bubbleEntry.BubbleRealTime        = 7;
                    originalMessage.AddBubbleFragment(bubbleEntry);
                }
                {
                    BubbleFragment bubbleEntry = new BubbleFragment();
                    bubbleEntry.BubbleId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                    bubbleEntry.BubbleName            = "TestBubble2";
                    bubbleEntry.BubbleAssetCacheUrl   = "TestCloudUrl";
                    bubbleEntry.BubbleAddress         = "TestBubbleAddress";
                    bubbleEntry.BubblePort            = 1;
                    bubbleEntry.BubbleCenter.X        = 2;
                    bubbleEntry.BubbleCenter.Y        = 3;
                    bubbleEntry.BubbleCenter.Z        = 4;
                    bubbleEntry.BubbleRange           = 5;
                    bubbleEntry.BubblePerceptionRange = 6;
                    bubbleEntry.BubbleRealTime        = 7;
                    originalMessage.AddBubbleFragment(bubbleEntry);
                }
                {
                    BubbleFragment bubbleEntry = new BubbleFragment();
                    bubbleEntry.BubbleId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                    bubbleEntry.BubbleName            = "TestBubble3";
                    bubbleEntry.BubbleAssetCacheUrl   = "TestCloudUrl";
                    bubbleEntry.BubbleAddress         = "TestBubbleAddress";
                    bubbleEntry.BubblePort            = 1;
                    bubbleEntry.BubbleCenter.X        = 2;
                    bubbleEntry.BubbleCenter.Y        = 3;
                    bubbleEntry.BubbleCenter.Z        = 4;
                    bubbleEntry.BubbleRange           = 5;
                    bubbleEntry.BubblePerceptionRange = 6;
                    bubbleEntry.BubbleRealTime        = 7;
                    originalMessage.AddBubbleFragment(bubbleEntry);
                }
                {
                    BubbleFragment bubbleEntry = new BubbleFragment();
                    bubbleEntry.BubbleId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                    bubbleEntry.BubbleName            = "TestBubble4";
                    bubbleEntry.BubbleAssetCacheUrl   = "TestCloudUrl";
                    bubbleEntry.BubbleAddress         = "TestBubbleAddress";
                    bubbleEntry.BubblePort            = 1;
                    bubbleEntry.BubbleCenter.X        = 2;
                    bubbleEntry.BubbleCenter.Y        = 3;
                    bubbleEntry.BubbleCenter.Z        = 4;
                    bubbleEntry.BubbleRange           = 5;
                    bubbleEntry.BubblePerceptionRange = 6;
                    bubbleEntry.BubbleRealTime        = 7;
                    originalMessage.AddBubbleFragment(bubbleEntry);
                }
                {
                    BubbleFragment bubbleEntry = new BubbleFragment();
                    bubbleEntry.BubbleId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                    bubbleEntry.BubbleName            = "TestBubble5";
                    bubbleEntry.BubbleAssetCacheUrl   = "TestCloudUrl";
                    bubbleEntry.BubbleAddress         = "TestBubbleAddress";
                    bubbleEntry.BubblePort            = 1;
                    bubbleEntry.BubbleCenter.X        = 2;
                    bubbleEntry.BubbleCenter.Y        = 3;
                    bubbleEntry.BubbleCenter.Z        = 4;
                    bubbleEntry.BubbleRange           = 5;
                    bubbleEntry.BubblePerceptionRange = 6;
                    bubbleEntry.BubbleRealTime        = 7;
                    originalMessage.AddBubbleFragment(bubbleEntry);
                }
                SerializeReferenceMessage(originalMessage);
            }
            {
                ThrottleMessage originalMessage = new ThrottleMessage();
                originalMessage.MessageId      = 1;
                originalMessage.BytesPerSecond = 10000;
                SerializeReferenceMessage(originalMessage);
            }

            // Command messages
            {
                EjectRequestMessage originalMessage = new EjectRequestMessage();
                originalMessage.MessageId = 1;
                originalMessage.ObjectId  = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                SerializeReferenceMessage(originalMessage);
            }
            {
                EjectResponseMessage originalMessage = new EjectResponseMessage();
                originalMessage.MessageId        = 1;
                originalMessage.RequestMessageId = 1;
                originalMessage.FailureCode      = 2;
                SerializeReferenceMessage(originalMessage);
            }
            {
                ExamineRequestMessage originalMessage = new ExamineRequestMessage();
                originalMessage.MessageId   = 1;
                originalMessage.ObjectId    = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectIndex = 1;
                SerializeReferenceMessage(originalMessage);
            }
            {
                ExamineResponseMessage originalMessage = new ExamineResponseMessage();
                originalMessage.MessageId                            = 1;
                originalMessage.RequestMessageId                     = 1;
                originalMessage.FailureCode                          = 2;
                originalMessage.ObjectFragment.ObjectId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectIndex           = 1;
                originalMessage.ObjectFragment.TypeId                = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectName            = "TestObjectName";
                originalMessage.ObjectFragment.TypeName              = "TestTypeName";
                originalMessage.ObjectFragment.OwnerId               = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.Location.X            = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3;
                originalMessage.ObjectFragment.Velocity.X            = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6;
                originalMessage.ObjectFragment.Acceleration.X        = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9;
                originalMessage.ObjectFragment.Orientation.X         = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13;
                originalMessage.ObjectFragment.AngularVelocity.X     = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17;
                originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21;
                originalMessage.ObjectFragment.BoundingSphereRadius  = 22;
                originalMessage.ObjectFragment.Mass                  = 23;
                originalMessage.ObjectFragment.ExtensionDialect      = "TEST";
                originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes(
                                                                    "1234567890123456789012345678901234567890"));
                SerializeReferenceMessage(originalMessage);
            }
            {
                HandoverRequestMessage originalMessage = new HandoverRequestMessage();
                originalMessage.MessageId                            = 1;
                originalMessage.SourceBubbleId                       = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.TargetBubbleId                       = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectIndex           = 1;
                originalMessage.ObjectFragment.TypeId                = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectName            = "TestObjectName";
                originalMessage.ObjectFragment.TypeName              = "TestTypeName";
                originalMessage.ObjectFragment.OwnerId               = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.Location.X            = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3;
                originalMessage.ObjectFragment.Velocity.X            = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6;
                originalMessage.ObjectFragment.Acceleration.X        = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9;
                originalMessage.ObjectFragment.Orientation.X         = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13;
                originalMessage.ObjectFragment.AngularVelocity.X     = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17;
                originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21;
                originalMessage.ObjectFragment.BoundingSphereRadius  = 22;
                originalMessage.ObjectFragment.Mass                  = 23;
                originalMessage.ObjectFragment.ExtensionDialect      = "TEST";
                originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes(
                                                                    "1234567890123"));
                SerializeReferenceMessage(originalMessage);
            }
            {
                HandoverResponseMessage originalMessage = new HandoverResponseMessage();
                originalMessage.MessageId        = 1;
                originalMessage.RequestMessageId = 1;
                originalMessage.FailureCode      = 2;
                SerializeReferenceMessage(originalMessage);
            }
            {
                InjectRequestMessage originalMessage = new InjectRequestMessage();
                originalMessage.MessageId = 1;
                originalMessage.ObjectFragment.ObjectId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectIndex           = 1;
                originalMessage.ObjectFragment.TypeId                = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectName            = "TestObjectName";
                originalMessage.ObjectFragment.TypeName              = "TestTypeName";
                originalMessage.ObjectFragment.OwnerId               = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.Location.X            = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3;
                originalMessage.ObjectFragment.Velocity.X            = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6;
                originalMessage.ObjectFragment.Acceleration.X        = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9;
                originalMessage.ObjectFragment.Orientation.X         = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13;
                originalMessage.ObjectFragment.AngularVelocity.X     = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17;
                originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21;
                originalMessage.ObjectFragment.BoundingSphereRadius  = 22;
                originalMessage.ObjectFragment.Mass                         = 23;
                originalMessage.ObjectFragment.ExtensionDialect             = "TEST";
                originalMessage.ObjectFragment.ExtensionDialectMajorVersion = 24;
                originalMessage.ObjectFragment.ExtensionDialectMinorVersion = 25;
                originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes(
                                                                    "123456789012345678901234567890123456789012345"));
                SerializeReferenceMessage(originalMessage);
            }
            {
                InjectResponseMessage originalMessage = new InjectResponseMessage();
                originalMessage.MessageId        = 1;
                originalMessage.RequestMessageId = 1;
                originalMessage.FailureCode      = 2;
                SerializeReferenceMessage(originalMessage);
            }
            {
                InteractRequestMessage originalMessage = new InteractRequestMessage();
                originalMessage.MessageId = 1;
                originalMessage.InteractionFragment.InteractionName     = "TestInteractionName";
                originalMessage.InteractionFragment.SourceParticipantId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.InteractionFragment.SourceObjectId      = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.InteractionFragment.TargetParticipantId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.InteractionFragment.TargetObjectId      = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.InteractionFragment.ExtensionDialect    = "TEST";
                originalMessage.SetInteractionPayloadData(UTF8Encoding.UTF8.GetBytes(
                                                              "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" +
                                                              "1234567890123456789012345678901234567890123456789012345678901"));
                SerializeReferenceMessage(originalMessage);
            }
            {
                InteractResponseMessage originalMessage = new InteractResponseMessage();
                originalMessage.MessageId        = 1;
                originalMessage.RequestMessageId = 1;
                originalMessage.FailureCode      = 2;
                originalMessage.InteractionFragment.InteractionName     = "TestInteractionName";
                originalMessage.InteractionFragment.SourceParticipantId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.InteractionFragment.SourceObjectId      = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.InteractionFragment.TargetParticipantId = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.InteractionFragment.TargetObjectId      = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.InteractionFragment.ExtensionDialect    = "TEST";
                originalMessage.SetInteractionPayloadData(UTF8Encoding.UTF8.GetBytes(
                                                              "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" +
                                                              "12345678901234567890123456789012345678901234567890123456"));
                SerializeReferenceMessage(originalMessage);
            }
            {
                ModifyRequestMessage originalMessage = new ModifyRequestMessage();
                originalMessage.MessageId = 1;
                originalMessage.ObjectFragment.ObjectId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectIndex           = 1;
                originalMessage.ObjectFragment.TypeId                = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectName            = "TestObjectName";
                originalMessage.ObjectFragment.TypeName              = "TestTypeName";
                originalMessage.ObjectFragment.OwnerId               = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.Location.X            = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3;
                originalMessage.ObjectFragment.Velocity.X            = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6;
                originalMessage.ObjectFragment.Acceleration.X        = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9;
                originalMessage.ObjectFragment.Orientation.X         = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13;
                originalMessage.ObjectFragment.AngularVelocity.X     = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17;
                originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21;
                originalMessage.ObjectFragment.BoundingSphereRadius  = 22;
                originalMessage.ObjectFragment.Mass             = 23;
                originalMessage.ObjectFragment.ExtensionDialect = "TEST";
                originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes(
                                                                    "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" +
                                                                    "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" +
                                                                    "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" +
                                                                    "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678"));
                SerializeReferenceMessage(originalMessage);
            }
            {
                ModifyResponseMessage originalMessage = new ModifyResponseMessage();
                originalMessage.MessageId        = 1;
                originalMessage.RequestMessageId = 1;
                originalMessage.FailureCode      = 2;
                SerializeReferenceMessage(originalMessage);
            }

            // Event messages
            {
                ActionEventMessage originalMessage = new ActionEventMessage();
                originalMessage.MessageId = 1;
                originalMessage.ActionFragment.ActionName                   = "TestInteractionName";
                originalMessage.ActionFragment.SourceObjectId               = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ActionFragment.ObservationRadius            = 100;
                originalMessage.ActionFragment.ExtensionDialect             = "TEST";
                originalMessage.ActionFragment.ExtensionDialectMajorVersion = 1;
                originalMessage.ActionFragment.ExtensionDialectMinorVersion = 2;
                originalMessage.SetPayloadData(UTF8Encoding.UTF8.GetBytes(
                                                   "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" +
                                                   "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" +
                                                   "12345"));
                SerializeReferenceMessage(originalMessage);
            }
            {
                DisappearanceEventMessage originalMessage = new DisappearanceEventMessage();
                originalMessage.MessageId   = 1;
                originalMessage.ObjectIndex = 1;
                SerializeReferenceMessage(originalMessage);
            }
            {
                HandoverEventMessage originalMessage = new HandoverEventMessage();
                originalMessage.MessageId                            = 1;
                originalMessage.SourceBubbleId                       = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.TargetBubbleId                       = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectIndex           = 1;
                originalMessage.ObjectFragment.TypeId                = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectName            = "TestObjectName";
                originalMessage.ObjectFragment.TypeName              = "TestTypeName";
                originalMessage.ObjectFragment.OwnerId               = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.Location.X            = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3;
                originalMessage.ObjectFragment.Velocity.X            = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6;
                originalMessage.ObjectFragment.Acceleration.X        = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9;
                originalMessage.ObjectFragment.Orientation.X         = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13;
                originalMessage.ObjectFragment.AngularVelocity.X     = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17;
                originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21;
                originalMessage.ObjectFragment.BoundingSphereRadius  = 22;
                originalMessage.ObjectFragment.Mass                  = 23;
                originalMessage.ObjectFragment.ExtensionDialect      = "TEST";
                originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes(
                                                                    "1234567890123"));
                SerializeReferenceMessage(originalMessage);
            }
            {
                MovementEventMessage originalMessage = new MovementEventMessage();
                originalMessage.MessageId     = 1;
                originalMessage.ObjectIndex   = 1;
                originalMessage.Location.X    = 1; originalMessage.Location.Y = 2; originalMessage.Location.Z = 3;
                originalMessage.Orientation.X = 10; originalMessage.Orientation.Y = 11; originalMessage.Orientation.Z = 12; originalMessage.Orientation.W = 13;

                SerializeReferenceMessage(originalMessage);
            }
            {
                PerceptionEventMessage originalMessage = new PerceptionEventMessage();
                originalMessage.MessageId = 1;
                originalMessage.ObjectFragment.ObjectId              = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectIndex           = 1;
                originalMessage.ObjectFragment.TypeId                = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.ObjectName            = "TestObjectName";
                originalMessage.ObjectFragment.TypeName              = "TestTypeName";
                originalMessage.ObjectFragment.OwnerId               = new Guid("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
                originalMessage.ObjectFragment.Location.X            = 1; originalMessage.ObjectFragment.Location.Y = 2; originalMessage.ObjectFragment.Location.Z = 3;
                originalMessage.ObjectFragment.Velocity.X            = 4; originalMessage.ObjectFragment.Velocity.Y = 5; originalMessage.ObjectFragment.Velocity.Z = 6;
                originalMessage.ObjectFragment.Acceleration.X        = 7; originalMessage.ObjectFragment.Acceleration.Y = 8; originalMessage.ObjectFragment.Acceleration.Z = 9;
                originalMessage.ObjectFragment.Orientation.X         = 10; originalMessage.ObjectFragment.Orientation.Y = 11; originalMessage.ObjectFragment.Orientation.Z = 12; originalMessage.ObjectFragment.Orientation.W = 13;
                originalMessage.ObjectFragment.AngularVelocity.X     = 14; originalMessage.ObjectFragment.AngularVelocity.Y = 15; originalMessage.ObjectFragment.AngularVelocity.Z = 16; originalMessage.ObjectFragment.AngularVelocity.W = 17;
                originalMessage.ObjectFragment.AngularAcceleration.X = 18; originalMessage.ObjectFragment.AngularAcceleration.Y = 19; originalMessage.ObjectFragment.AngularAcceleration.Z = 20; originalMessage.ObjectFragment.AngularAcceleration.W = 21;
                originalMessage.ObjectFragment.BoundingSphereRadius  = 22;
                originalMessage.ObjectFragment.Mass             = 23;
                originalMessage.ObjectFragment.ExtensionDialect = "TEST";
                originalMessage.ObjectFragment.SetExtensionData(UTF8Encoding.UTF8.GetBytes(
                                                                    "123456789012345678901234567890123456789012345"));
                SerializeReferenceMessage(originalMessage);
            }
            {
                SynchronizationBeginEventMessage originalMessage = new SynchronizationBeginEventMessage();
                originalMessage.MessageId   = 1;
                originalMessage.ObjectCount = 1;
                SerializeReferenceMessage(originalMessage);
            }
            {
                SynchronizationEndEventMessage originalMessage = new SynchronizationEndEventMessage();
                originalMessage.MessageId = 1;
                SerializeReferenceMessage(originalMessage);
            }

            udpClient.Close();
            udpClient = null;
        }