Пример #1
0
        /// <summary>
        /// If current role is public, then resend RoleMessage and GroupMessage for reconnection
        /// </summary>
        private void SendRoleAndGroupMessage(TCPMessageSender sender)
        {
            using (Synchronizer.Lock(this.m_Model.Participant.SyncRoot)) {
                if (this.m_Model.Participant.Role is PublicModel)
                {
                    //Send RoleMessage
                    UW.ClassroomPresenter.Network.Messages.Message message = RoleMessage.ForRole(this.m_Model.Participant.Role);
                    message.Group = Group.AllParticipant;
                    sender.Send(message);

                    //Send GroupMessage
                    foreach (Group group in this.m_Model.Participant.Groups)
                    {
                        message       = new ParticipantGroupAddedMessage(group);
                        message.Group = Group.AllParticipant;
                        sender.Send(message);
                    }
                }
            }
        }
Пример #2
0
        private void displayMessageEventRecursive(UW.ClassroomPresenter.Network.Messages.Message msg)
        {
            this.appendText("-----");
            string longtype  = msg.GetType().ToString();
            string shorttype = longtype.Substring(longtype.LastIndexOf(".") + 1);

            this.appendText("Type: " + shorttype);
            if (msg is DeckSlideContentMessage)
            {
                DeckSlideContentMessage dscm = msg as DeckSlideContentMessage;
                this.appendText("Content Hash: " + dscm.Content.key.ToString());
                this.m_Image = dscm.Content.image;
            }
            else if (msg is PresentationEndedMessage)
            {
                //Nothing really interesting here...
            }
            else if (msg is TableOfContentsEntryMessage)
            {
                TableOfContentsEntryMessage tocem = msg as TableOfContentsEntryMessage;
                string toDisplay = "Path From Root: ";
                int[]  path      = tocem.PathFromRoot;
                for (int i = 0; i < path.Length; i++)
                {
                    toDisplay += " " + path[i].ToString();
                }
                this.appendText(toDisplay);
            }
            else if (msg is TableOfContentsEntryRemovedMessage)
            {
                TableOfContentsEntryRemovedMessage tocerm = msg as TableOfContentsEntryRemovedMessage;
                this.appendText("Entry ID: " + tocerm.TargetId.ToString());
            }
            else if (msg is InstructorMessage)
            {
                InstructorMessage im = msg as InstructorMessage;
                this.appendText("Linked Navigation: " + im.ForcingStudentNavigationLock.ToString());
                this.appendText("Student Submissions: " + im.AcceptingStudentSubmissions.ToString());
            }
            else if (msg is StudentMessage)
            {
                //Nothing really interesting here...
            }
            else if (msg is PublicMessage)
            {
                //Nothing really interesting here...
            }
            else if (msg is InstructorCurrentPresentationChangedMessage)
            {
                InstructorCurrentPresentationChangedMessage icpcm = msg as InstructorCurrentPresentationChangedMessage;
                this.appendText("Human Name: " + icpcm.HumanName);
            }
            else if (msg is InstructorCurrentDeckTraversalChangedMessage)
            {
                InstructorCurrentDeckTraversalChangedMessage icdtcm = msg as InstructorCurrentDeckTraversalChangedMessage;
                this.appendText("Traversal ID: " + icdtcm.TargetId.ToString());
            }
            else if (msg is DeckInformationMessage)
            {
                DeckInformationMessage dim = msg as DeckInformationMessage;
                this.appendText("Disposition: " + dim.Disposition);
                this.appendText("Human Name: " + dim.HumanName);
                this.appendText("Deck BG Color: " + dim.DeckBackgroundColor);
            }
            else if (msg is SlideDeckTraversalMessage)
            {
                SlideDeckTraversalMessage sdtm = msg as SlideDeckTraversalMessage;
                this.appendText("Traversal ID: " + sdtm.TargetId.ToString());
            }
            else if (msg is DeckTraversalRemovedFromPresentationMessage)
            {
                DeckTraversalRemovedFromPresentationMessage dtrfpm = msg as DeckTraversalRemovedFromPresentationMessage;
                this.appendText("Traversal ID: " + dtrfpm.TargetId.ToString());
            }
            else if (msg is ImageSheetMessage)
            {
                ImageSheetMessage ism = msg as ImageSheetMessage;
                this.appendText("MD5: " + ism.MD5.ToString());
            }
            else if (msg is InkSheetInformationMessage)
            {
                InkSheetInformationMessage isim = msg as InkSheetInformationMessage;
                this.appendText("Disposition: " + isim.Disposition.ToString());
            }
            else if (msg is InkSheetStrokesAddedMessage)
            {
                InkSheetStrokesAddedMessage issam = msg as InkSheetStrokesAddedMessage;
                this.appendText("Disposition: " + issam.Disposition.ToString());
            }
            else if (msg is InkSheetStrokesDeletingMessage)
            {
                InkSheetStrokesDeletingMessage issdm = msg as InkSheetStrokesDeletingMessage;
                this.appendText("Disposition: " + issdm.Disposition.ToString());
            }
            else if (msg is PresentationInformationMessage)
            {
                PresentationInformationMessage pim = msg as PresentationInformationMessage;
                this.appendText("Human Name: " + pim.HumanName);
            }
            else if (msg is RealTimeInkSheetMessage)
            {
                RealTimeInkSheetMessage rtism = msg as RealTimeInkSheetMessage;
                this.appendText("Disposition: " + rtism.Disposition.ToString());
            }
            else if (msg is RealTimeInkSheetInformationMessage)
            {
                RealTimeInkSheetInformationMessage rtisim = msg as RealTimeInkSheetInformationMessage;
                this.appendText("Disposition: " + rtisim.Disposition.ToString());
            }
            else if (msg is RealTimeInkSheetDataMessage)
            {
                RealTimeInkSheetDataMessage rtisdm = msg as RealTimeInkSheetDataMessage;
                this.appendText("Stylus ID: " + rtisdm.StylusId.ToString());
                this.appendText("# of Packets: " + rtisdm.Packets.Length);
            }
            else if (msg is RealTimeInkSheetPacketsMessage)
            {
                RealTimeInkSheetPacketsMessage rtispm = msg as RealTimeInkSheetPacketsMessage;
                this.appendText("Stylus ID: " + rtispm.StylusId.ToString());
                this.appendText("# of Packets: " + rtispm.Packets.Length);
            }
            else if (msg is RealTimeInkSheetStylusUpMessage)
            {
                RealTimeInkSheetStylusUpMessage rtissup = msg as RealTimeInkSheetStylusUpMessage;
                this.appendText("Stylus ID: " + rtissup.StylusId.ToString());
                this.appendText("# of Packets: " + rtissup.Packets.Length);
            }
            else if (msg is RealTimeInkSheetStylusDownMessage)
            {
                RealTimeInkSheetStylusDownMessage rtissdm = msg as RealTimeInkSheetStylusDownMessage;
                this.appendText("Stylus ID: " + rtissdm.StylusId.ToString());
                this.appendText("# of Packets: " + rtissdm.Packets.Length);
            }
            else if (msg is SheetRemovedMessage)
            {
                SheetRemovedMessage srm = msg as SheetRemovedMessage;
                this.appendText("Disposition: " + srm.Disposition.ToString());
            }
            else if (msg is SlideInformationMessage)
            {
                SlideInformationMessage sim = msg as SlideInformationMessage;
                this.appendText("LocalID: " + sim.LocalId.ToString());
                this.appendText("Title: " + sim.Title);
                this.appendText("Zoom: " + sim.Zoom);
                this.appendText("Slide BG Color: " + sim.SlideBackgroundColor);
            }
            else if (msg is SlideDeletedMessage)
            {
                SlideDeletedMessage sdm = msg as SlideDeletedMessage;
                this.appendText("ID: " + sdm.TargetId);
            }
            else if (msg is TextSheetMessage)
            {
                //Nothing interesting here...
            }
            else
            {
                //Unknown!
            }
            //Do the recursive thing
            if (msg.Child != null)
            {
                this.displayMessageEventRecursive(msg.Child);
            }
        }
Пример #3
0
        public static IGenericSerializable DecodeMessage(Messages.Message parent, SerializedPacket p)
        {
            switch (p.Type)
            {
            case MessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case GroupInformationMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case ParticipantGroupAddedMessageId:
                return(new Messages.Network.ParticipantGroupAddedMessage(parent, p));

            case ParticipantGroupRemovedMessageId:
                return(new Messages.Network.ParticipantGroupRemovedMessage(parent, p));

            case RoleMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case InstructorMessageId:
                return(new Messages.Network.InstructorMessage(parent, p));

            case StudentMessageId:
                return(new Messages.Network.StudentMessage(parent, p));

            case PublicMessageId:
                return(new Messages.Network.PublicMessage(parent, p));

            case PresentationMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case InstructorCurrentPresentationChangedMessageId:
                return(new Messages.Network.InstructorCurrentPresentationChangedMessage(parent, p));

            case PresentationInformationMessageId:
                return(new Messages.Presentation.PresentationInformationMessage(parent, p));

            case PresentationEndedMessageId:
                return(new Messages.Presentation.PresentationEndedMessage(parent, p));

            case DeckTraversalMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case InstructorCurrentDeckTraversalChangedMessageId:
                return(new Messages.Network.InstructorCurrentDeckTraversalChangedMessage(parent, p));

            case SlideDeckTraversalMessageId:
                return(new Messages.Presentation.SlideDeckTraversalMessage(parent, p));

            case DeckTraversalRemovedFromPresentationMessageId:
                return(new Messages.Presentation.DeckTraversalRemovedFromPresentationMessage(parent, p));

            case ExecuteScriptMessageId:
                return(new Messages.ExecuteScriptMessage(parent, p));

            case SynchronizationMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case SyncBeginMessageId:
                return(new Messages.SyncBeginMessage(parent, p));

            case SyncPingMessageId:
                return(new Messages.SyncPingMessage(parent, p));

            case SyncPongMessageId:
                return(new Messages.SyncPongMessage(parent, p));

            case DeckMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case DeckInformationMessageId:
                return(new Messages.Presentation.DeckInformationMessage(parent, p));

            case SheetMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case SheetRemovedMessageId:
                return(new Messages.Presentation.SheetRemovedMessage(parent, p));

            case ImageSheetMessageId:
                return(new Messages.Presentation.ImageSheetMessage(parent, p));

            case TextSheetMessageId:
                return(new Messages.Presentation.TextSheetMessage(parent, p));

            case InkSheetMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case InkSheetInformationMessageId:
                return(new Messages.Presentation.InkSheetInformationMessage(parent, p));

            case InkSheetStrokesAddedMessageId:
                return(new Messages.Presentation.InkSheetStrokesAddedMessage(parent, p));

            case InkSheetStrokesDeletingMessageId:
                return(new Messages.Presentation.InkSheetStrokesDeletingMessage(parent, p));

            case RealTimeInkSheetMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case RealTimeInkSheetInformationMessageId:
                return(new Messages.Presentation.RealTimeInkSheetInformationMessage(parent, p));

            case RealTimeInkSheetDataMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case RealTimeInkSheetPacketsMessageId:
                return(new Messages.Presentation.RealTimeInkSheetPacketsMessage(parent, p));

            case RealTimeInkSheetStylusUpMessageId:
                return(new Messages.Presentation.RealTimeInkSheetStylusUpMessage(parent, p));

            case RealTimeInkSheetStylusDownMessageId:
                return(new Messages.Presentation.RealTimeInkSheetStylusDownMessage(parent, p));

            case SlideMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case SlideInformationMessageId:
                return(new Messages.Presentation.SlideInformationMessage(parent, p));

            case SlideDeletedMessageId:
                return(new Messages.Presentation.SlideDeletedMessage(parent, p));

            case StudentSubmissionSlideMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case StudentSubmissionSlideInformationMessageId:
                return(new Messages.Presentation.StudentSubmissionSlideInformationMessage(parent, p));

            case SubmissionStatusMessageId:
                return(new Messages.Presentation.SubmissionStatusMessage(parent, p));

            case TableOfContentsEntryMessageId:
                return(new Messages.Presentation.TableOfContentsEntryMessage(parent, p));

            case TableOfContentsEntryRemovedMessageId:
                return(new Messages.Presentation.TableOfContentsEntryRemovedMessage(parent, p));

            case DeckSlideContentMessageId:
                return(new Messages.Presentation.DeckSlideContentMessage(parent, p));

            case BroadcastMessageId:
                return(new Broadcast.BroadcastMessage(p));

            case ChunkId:
                return(new Chunking.Chunk(p));

            case TCPHandshakeMessageId:
                return(new TCP.TCPHandshakeMessage(p));

            case TCPHeartbeatMessageId:
                return(new TCP.TCPHeartbeatMessage(p));

            case VersionRequestMessageId:
                return(new Messages.Network.VersionRequestMessage(parent, p));

            case VersionResponseMessageId:
                return(new Messages.Network.VersionResponseMessage(parent, p));

            case QuickPollMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case QuickPollInformationMessageId:
                return(new Messages.Presentation.QuickPollInformationMessage(parent, p));

            case QuickPollResultMessageId:
                throw new Exception("Cannot deserialize an abstract class!");

            case QuickPollResultInformationMessageId:
                return(new Messages.Presentation.QuickPollResultInformationMessage(parent, p));

            case QuickPollResultRemovedMessageId:
                return(new Messages.Presentation.QuickPollResultRemovedMessage(parent, p));

            case QuickPollSheetMessageId:
                return(new Messages.Presentation.QuickPollSheetMessage(parent, p));

            default:
                throw new Exception("Unknown Packet ID: " + p.Type);
            }
        }