/// <summary> /// Create the normal beacon message /// </summary> /// <returns></returns> protected Message InstructorMakeBeaconMessage() { using (Synchronizer.Lock(this.m_Model.Participant.SyncRoot)) { using (Synchronizer.Lock(this.m_Model.Participant.Role.SyncRoot)) { Message role = RoleMessage.ForRole(this.m_Model.Participant.Role); InstructorModel instructor = ((InstructorModel)this.m_Model.Participant.Role); if (instructor.CurrentPresentation != null) { role.InsertChild(new InstructorCurrentPresentationChangedMessage(instructor.CurrentPresentation)); } if (instructor.CurrentDeckTraversal != null) { using (Synchronizer.Lock(instructor.CurrentDeckTraversal.SyncRoot)) { Message traversal = new InstructorCurrentDeckTraversalChangedMessage(instructor.CurrentDeckTraversal); Message predecessor = traversal.Predecessor; traversal.Predecessor = new SlideInformationMessage(instructor.CurrentDeckTraversal.Current.Slide); traversal.Predecessor.InsertChild(new TableOfContentsEntryMessage(instructor.CurrentDeckTraversal.Current)); traversal.Predecessor.AddOldestPredecessor(predecessor); role.InsertChild(traversal); } } return(role); } } }
/// <summary> /// Even though we are not an instructor, here we fake an instructor beacon message for the purpose of unicast to multicast /// bridging. /// </summary> /// <returns></returns> protected Message NonInstructorMakeBeaconMessage() { InstructorModel instructor = new InstructorModel(m_NonInstructorId); Message role = RoleMessage.ForRole(instructor); using (Synchronizer.Lock(this.m_Model.Workspace)) { if (this.m_Model.Workspace.CurrentPresentation != null) { using (Synchronizer.Lock(this.m_Model.Workspace.CurrentPresentation.SyncRoot)) { if (this.m_Model.Workspace.CurrentPresentation.Value != null) { role.InsertChild(new InstructorCurrentPresentationChangedMessage(this.m_Model.Workspace.CurrentPresentation)); } } } if (this.m_Model.Workspace.CurrentDeckTraversal != null) { using (Synchronizer.Lock(this.m_Model.Workspace.CurrentDeckTraversal.SyncRoot)) { if (this.m_Model.Workspace.CurrentDeckTraversal.Value != null) { Message traversal = new InstructorCurrentDeckTraversalChangedMessage(this.m_Model.Workspace.CurrentDeckTraversal.Value, false); Message predecessor = traversal.Predecessor; using (Synchronizer.Lock((~this.m_Model.Workspace.CurrentDeckTraversal).SyncRoot)) { using (Synchronizer.Lock((~this.m_Model.Workspace.CurrentDeckTraversal).Current.SyncRoot)) { traversal.Predecessor = new SlideInformationMessage((~this.m_Model.Workspace.CurrentDeckTraversal).Current.Slide); TableOfContentsModel.Entry entry = (~this.m_Model.Workspace.CurrentDeckTraversal).Current; if (entry != null) { traversal.Predecessor.InsertChild(new TableOfContentsEntryMessage(entry)); } traversal.Predecessor.AddOldestPredecessor(predecessor); role.InsertChild(traversal); } } } } } } return(role); }
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); } }