Example #1
0
 /// <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);
         }
     }
 }
Example #2
0
        /// <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);
        }
Example #3
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);
            }
        }