Ejemplo n.º 1
0
        public void EndConnection()
        {
            //make sure we're not calling this multiple times
            if (this.CurrentState != SystemState.LoggedOut)
            {
                this.CurrentState = SystemState.LoggedOut;

                //reset UI after changing SystemState
                P2pWorker.ReportProgress(0, ThreadMessage.Create(UiMessage.ToggleUi, string.Empty));

                //close and set classes to null
                if (p2p != null)
                {
                    p2p.Close();
                    p2p = null;
                }

                if (videoHttpListener != null)
                {
                    videoHttpListener.Stop();
                    videoHttpListener.Quit();
                    videoHttpListener = null;
                }

                if (P2pWorker != null)
                {
                    P2pWorker.CancelAsync();
                }
            }
        }
Ejemplo n.º 2
0
        protected void P2PLib_ChatChanged(object sender, ChatChangedEventArgs e)
        {
            //Sends text to chat window
            P2pWorker.ReportProgress(100, ThreadMessage.Create(UiMessage.Log, e.Message));

            if (e.Message.StartsWith("machine"))
            {
                return; //exit
            }

            ChatMessage msg = ChatMessage.P2PLibParse(e.Message);

            if (App.IsServerMode)
            {
                ProcessServerCommand(msg);
            }
            else
            {
                if (msg.CommandType == ChatCommand.ReturnList)
                {
                    ChatMessage.P2PLibParse(e.Message);
                    P2pWorker.ReportProgress(100, ThreadMessage.Create(UiMessage.ReceivedVideoList, msg.Message));
                }
            }
        }
Ejemplo n.º 3
0
        void P2PWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            //update progress bar
            progressBar1.Value = e.ProgressPercentage;

            //Read messages from the Network Manager
            if (e.UserState != null)
            {
                ThreadMessage message = (ThreadMessage)(e.UserState);
                switch (message.MessageType)
                {
                case UiMessage.UpdateStatus:
                    StatusValue.Content = message.Message;
                    break;

                case UiMessage.Log:
                    Messages.Items.Add(message.Message);
                    break;

                case UiMessage.StreamVideo:
                    PlayVideo(message.Message);
                    break;

                case UiMessage.ReceivedVideoList:
                    UpdateVideoList(message.Message);
                    break;

                case UiMessage.ToggleUi:
                    ToggleUi();
                    break;
                }
            }
        }
Ejemplo n.º 4
0
        void P2PLib_StreamChanged(object sender, StreamedChangedEventArgs e)
        {
            //take packet from server & use videoHttpListener to write to localhost
            videoHttpListener.StreamedChanged(e);

            //set client to listen to stream
            if (e.StreamedPacket.packetNumber == 0)
            {
                string file = StreamingHttpListener.SafeHttpString(e.StreamedPacket.fileName);
                string url  = String.Format(@"http://localhost:8088/{0}/video/{1}", userName, file);
                P2pWorker.ReportProgress(100, ThreadMessage.Create(UiMessage.StreamVideo, url));
            }
        }
Ejemplo n.º 5
0
        protected void P2PLib_StatusChanged(object sender, StatusChangedEventArgs e)
        {
            if (userName == e.Member)
            {
                if (e.NewNodeJoined)
                {
                    this.CurrentState = SystemState.LoggedIn;
                    P2pWorker.ReportProgress(100, ThreadMessage.Create(UiMessage.UpdateStatus, "Connected"));
                }

                if (e.NodeLeft)
                {
                    P2pWorker.ReportProgress(0, ThreadMessage.Create(UiMessage.UpdateStatus, "Disconnected..."));
                    this.CurrentState = SystemState.LoggedOut;
                }
            }
        }
Ejemplo n.º 6
0
        private void P2pWorkerAsync(object sender, DoWorkEventArgs doWorkArgs)
        {
            //Send back a text that we're logging in
            P2pWorker.ReportProgress(0, ThreadMessage.Create(UiMessage.ToggleUi, string.Empty));

            //Create new p2p
            p2p = new P2PLib();

            //Connect to the PeerChannel
            bool start = p2p.PeerChannelWrapperStart(userName, networkName, password);

            //check for connection error
            if (!start)
            {
                EndConnection();
            }

            SubscribeToPeerChannelEvents();

            //PeerChannel connection may take a while so cycle the ProgressBar
            CycleProgressBarUntilConnected();

            SitAndWait();
        }
Ejemplo n.º 7
0
 public void LogMessage(string msg)
 {
     P2pWorker.ReportProgress(100, ThreadMessage.Create(UiMessage.Log, msg));
 }