/// <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); } } } }
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); } }
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); } }