コード例 #1
0
        /// <summary>
        /// Разорвал с серверос соединение клиент
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void server_OnDisconnect(object sender, ServerEventArgs e)
        {
            bool blocked = false;

            try
            {
                if (mutex.WaitOne(100, false))
                {
                    blocked = true;
                    foreach (TcpAsyClient client in clients)
                    {
                        if (client.Socket.Handle == e.Socket.Handle)
                        {
                            clients.Remove(client);
                            break;
                        }
                    }
                }
            }
            finally
            {
                if (blocked)
                {
                    mutex.ReleaseMutex();
                }
            }
        }
コード例 #2
0
        public void AddUsers(object sender, ServerEventArgs args)
        {
            if (CheckEvent(args.Server))
            {
                return;
            }

            if (GuildService.Instance.Repository.GetById((long)args.Server.Id) == null)
            {
                GuildService.Instance.Repository.Add(new Guild {
                    Id = (long)args.Server.Id, Name = args.Server.Name
                });
            }

            var users = args.Server.Users.Where(user => !user.IsBot);

            foreach (var user in users)
            {
                long userId = (long)user.Id;

                if (UserService.Instance.Repository.GetById(userId) == null)
                {
                    UserService.Instance.Repository.Add(new Data.User {
                        Id = userId, Name = user.Name, Type = UserType.Default
                    });
                }

                if (!startedSessions.ContainsKey(userId) && user.Status == UserStatus.Online)
                {
                    startedSessions.Add(userId, DateTime.Now);
                }
            }
        }
コード例 #3
0
        public void AddChannels(object sender, ServerEventArgs args)
        {
            if (CheckEvent(args.Server))
            {
                return;
            }

            var channels = args.Server.VoiceChannels;

            foreach (var channel in channels)
            {
                long channelId = (long)channel.Id;

                if (channel.Type == ChannelType.Voice)
                {
                    if (VoiceChannelService.Instance.Repository.GetById(channelId) == null)
                    {
                        VoiceChannelService.Instance.Repository.Add(new VoiceChannel
                        {
                            Id = channelId, GuildId = (long)args.Server.Id, Name = channel.Name
                        });
                    }
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Подключился к серверу клиент
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void server_OnConnect(object sender, ServerEventArgs e)
        {
            TcpAsyClient client = new TcpAsyClient();

            client.Socket             = e.Socket;
            client.Socket.SendTimeout = 1000;

            client.Share     = shareClientMutex;
            client.OnPacket += new TcpAsyClient.PacketEventHandler(client_OnPacket);

            bool blocked = false;

            try
            {
                if (mutex.WaitOne(100, false))
                {
                    blocked = true;
                    clients.Add(client);
                }
            }
            finally
            {
                if (blocked)
                {
                    mutex.ReleaseMutex();
                }
            }
        }
コード例 #5
0
 //send event upward
 private void Server_OnServerStarted(object sender, ServerEventArgs e)
 {
     OnServerStarted.Invoke(this, new SimulatorEventArgs(e.Message));
     server.acceptClient().ContinueWith(x => {
         server.receiveSessionData();
     });
 }
コード例 #6
0
ファイル: SmoEvents.cs プロジェクト: ramnaresh/SMO
        static void Events_ServerEvent(object sender, ServerEventArgs e)
        {
            try
            {
                Console.WriteLine(
                    @"EventType: {0, -20} SPID: {1, 4} PostTime: {2, -20}",
                    e.EventType, e.Spid, e.PostTime);
                foreach (EventProperty eventProperty in e.Properties)
                {
                    if (eventProperty.Value != null)
                    {
                        Console.WriteLine("\t{0, -30} {1, -30}",
                                          eventProperty.Name,
                                          eventProperty.Value.ToString());
                    }
                    else
                    {
                        Console.WriteLine("\t{0,-30}", eventProperty.Name);
                    }
                }

                Console.WriteLine();
                Console.WriteLine(new String('=', 79));
                Console.WriteLine();
            }
            catch (ApplicationException ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
コード例 #7
0
        //should only receive END_TASK<space><CSV>
        private void Server_OnDataReceived(object sender, ServerEventArgs e)
        {
            string message = e.Message;

            //try catch because of parsing
            try
            {
                if (message.Split(' ')[0] == "END_TASK")
                {
                    //all is OK; get the data; place it as most recent


                    messages.Enqueue(message.Split(new char[] { ' ' }, 2)[1]);



                    //in the end notify anybody who might be above
                    //black bloody magic that's what this is
                    Application.Current.Dispatcher.BeginInvoke(
                        DispatcherPriority.Background,
                        new Action(() => OnDataReceived.Invoke(this, new SimulatorEventArgs("New message enqueued."))));
                }
                else
                {
                    throw new Exception("Message received from client simulator did not parse well");
                }
            }
            catch (Exception ex)
            {
            }
        }
コード例 #8
0
        protected virtual async Task OnServerEvent(object sender, ServerEventArgs args)
        {
            switch (args.ServerEventType)
            {
            case ServerEventType.Start:
                await FireEventAsync(sender, args);

                break;

            case ServerEventType.Stop:


                await StopAsync();

                await FireEventAsync(sender, args);

                Thread.Sleep(5000);
                await StartAsync();

                break;

            default:
                break;
            }
        }
コード例 #9
0
        /// <summary>
        /// Evento de recepción de mensajes del servidor.
        /// </summary>
        private void recibirMensaje(object sender, ServerEventArgs e)
        {
            string mensaje = e.Mensaje.TrimEnd('\0');

            switch (mensaje)
            {
            case "ServidorConectado":
                Mensaje.mostrarMensaje("MensajeServidorAutomatizadoConexion");
                break;

            case "ServidorDesconectado":
                Mensaje.mostrarMensaje("MensajeServidorAutomatizadoDesconexion");
                break;

            case "ErrorConexion":
                Excepcion.mostrarMensaje("ErrorServidorAutomatizadoConexion");
                break;

            case "EstadoConectado":
                Mensaje.mostrarMensaje("MensajeServidorAutomatizadoEstadoConectado");
                break;

            case "EstadoDesconectado":
                Mensaje.mostrarMensaje("MensajeServidorAutomatizadoEstadoNoConectado");
                break;

            case "EstadoError":
                Mensaje.mostrarMensaje("MensajeServidorAutomatizadoEstadoError");
                break;

            case "EstadoNoError":
                Mensaje.mostrarMensaje("MensajeServidorAutomatizadoEstadoNoError");
                break;
            }
        }
コード例 #10
0
        private void ServerReceiveStart(object sender, ServerEventArgs e)
        {
            lock (_receivingFiles)
            {
                if (e.FileData.Path != null && e.FileData.Path.Length > 0 && _receivingFiles.ContainsKey(e.FileData.Path) == false)
                {
                    Server server = sender as Server;
                    if (server != null)
                    {
                        _receivingFiles.Add(e.FileData.Path, server);
                    }
                }

                //rename ops cause issues as we are essentially editing 2 files: the old name and the new name.  To avoid conflicts,
                //add old file name to the list of files that we are receiving
                if (e.FileData.OperationType == WatcherChangeTypes.Renamed && e.FileData.OldPath != null && e.FileData.OldPath.Length > 0 && _receivingFiles.ContainsKey(e.FileData.OldPath) == false)
                {
                    Server server = sender as Server;
                    if (server != null)
                    {
                        _receivingFiles.Add(e.FileData.OldPath, server);
                    }
                }
            }
        }
コード例 #11
0
ファイル: DataCollector.cs プロジェクト: zanecodes/Mobile
        private void ResponseReceived(object sender, ServerEventArgs e)
        {
            ServerObject response = GetServerObject(e);

            switch (e.Type)
            {
            case ResponseType.All:
                HandleAllResponse(response);
                break;

            case ResponseType.Top:
                HandleTopResponse(response);
                break;

            case ResponseType.Search:
                HandleSearchResponse(response);
                break;

            case ResponseType.Authentication:
                HandleLoginResponse(response);
                break;

            case ResponseType.Error:
                HandleErrorResponse(response);
                break;

            case ResponseType.StoredProc:
                HandleStoredProcResponse(response);
                break;

            default:
                HandleLocationsResponse(response);
                break;
            }
        }
コード例 #12
0
        private void OnApplicationEvent(object sender, ServerEventArgs e)
        {
            if (!(e.ServerEvent is PropertyChangedEvent))
            {
                return;
            }

            var ev = (PropertyChangedEvent)e.ServerEvent;

            if (ev.PropertyName == "Application")
            {
                ViewModel.IsLoading = false;

                _serverApplication = (ViewerApplication)ev.Value;

                ApplicationContext.Current.ViewerVersion = _serverApplication.VersionString;

                //TODO (CR May 2010): we don't unregister these
                EventMediator.RegisterEventHandler(_serverApplication.Viewer.Identifier, OnViewerEvent);
                ToolstripViewComponent.SetIconSize(_serverApplication.Viewer.ToolStripIconSize);
                ToolstripViewComponent.SetActionModel(_serverApplication.Viewer.ToolbarActions);
                _studyView.SetImageBoxes(_serverApplication.Viewer.ImageBoxes);
                return;
            }
        }
コード例 #13
0
 protected virtual async Task FireEventAsync(object sender, ServerEventArgs args)
 {
     if (_serverEvent != null)
     {
         await _serverEvent?.Invoke(sender, args);
     }
 }
コード例 #14
0
        private void ApplicationStarted(object sender, ServerEventArgs e)
        {
            if (EventMediator == null)
            {
                return;
            }

            var ev = (ApplicationStartedEvent)e.ServerEvent;

            if (ev == null)
            {
                EventMediator.HandleCriticalError("Unexpected event type: {0}", e.ServerEvent);
                return;
            }

            Visibility = Visibility.Visible;

            if (_serverApplication != null)
            {
                // Stop the prior application, note that it may have been stopped already, still send the
                // message just in case
                EventMediator.StopApplication();
            }

            //TODO (CR May 2010): we don't unregister these
            EventMediator.RegisterEventHandler(ev.StartRequestId, OnApplicationEvent);
        }
コード例 #15
0
ファイル: SmoEvents.cs プロジェクト: rcdosado/SMO
        static void Events_ServerEvent(object sender, ServerEventArgs e)
        {
            try
            {
                Console.WriteLine(
                    @"EventType: {0, -20} SPID: {1, 4} PostTime: {2, -20}",
                    e.EventType, e.Spid, e.PostTime);
                foreach (EventProperty eventProperty in e.Properties)
                {
                    if (eventProperty.Value != null)
                    {
                        Console.WriteLine("\t{0, -30} {1, -30}",
                            eventProperty.Name,
                            eventProperty.Value.ToString());
                    }
                    else
                    {
                        Console.WriteLine("\t{0,-30}", eventProperty.Name);
                    }
                }

                Console.WriteLine();
                Console.WriteLine(new String('=', 79));
                Console.WriteLine();
            }
            catch (ApplicationException ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
コード例 #16
0
        protected virtual async Task OnServerEventAsync(object sender, ServerEventArgs args)
        {
            switch (args.ServerEventType)
            {
            case ServerEventType.Start:
                if (_timerPing != null)
                {
                    _timerPing.Dispose();
                    _timerPing = null;
                }

                await FireEventAsync(sender, args);

                _timerPing = new Timer(OnTimerPingTick, null, PING_INTERVAL_SEC * 1000, PING_INTERVAL_SEC * 1000);
                break;

            case ServerEventType.Stop:
                if (_timerPing != null)
                {
                    _timerPing.Dispose();
                    _timerPing = null;
                }

                await FireEventAsync(sender, args);

                break;

            default:
                break;
            }
        }
コード例 #17
0
 private async Task NotifyError(string errormessage)
 {
     if (Error != null)
     {
         ServerEventArgs args = new ServerEventArgs(EventType.Error, errormessage);
         await _mainPage.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, delegate { Error(this, args); });
     }
 }
コード例 #18
0
 private async void NotifyConnectionStatusChanged(ConnectionStatus status)
 {
     if (ConnectionStatusChanged != null)
     {
         ServerEventArgs args = new ServerEventArgs(EventType.ConnectionStatusChanged, status, string.Empty);
         await _mainPage.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, delegate { ConnectionStatusChanged(this, args); });;
     }
 }
コード例 #19
0
ファイル: WebUI.cs プロジェクト: djlw78/NINSS
 public void OnStop(object sender, ServerEventArgs e)
 {
     this.is_active = false;
     this.listener.Stop();
     Thread.Sleep(100);
     serverThread.Abort();
     listener = null;
 }
コード例 #20
0
ファイル: ImageViewer.xaml.cs プロジェクト: hksonngan/Xian
 private void OnSessionUpdated(object sender, ServerEventArgs ev)
 {
     UIThread.Execute(() =>
     {
         var @event = ev.ServerEvent as SessionUpdatedEvent;
         ApplicationBridge.Current.OnViewerSessionUpdated(this, @event);
     });
 }
コード例 #21
0
 private async void NotifyCriticalError(string errormessage)
 {
     if (CriticalError != null)
     {
         ServerEventArgs args = new ServerEventArgs(EventType.CriticalError, errormessage);
         _mainPage.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, delegate { CriticalError(this, args); });
     }
 }
コード例 #22
0
        private void OnImageBoxEvent(object sender, ServerEventArgs e)
        {
            if (!(e.ServerEvent is PropertyChangedEvent))
            {
                return;
            }

            OnPropertyChanged(e.ServerEvent as PropertyChangedEvent);
        }
コード例 #23
0
 public static void LeftServer(object s, ServerEventArgs e)
 {
     if (ServerData.Servers.ContainsKey(e.Server.Id))
     {
         ServerData.Servers[e.Server.Id].StopHandlers();
         ServerData.Servers.Remove(e.Server.Id);
         $"Left Server {e.Server.Name}".Log();
     }
 }
コード例 #24
0
        public void RemoveGuild(object sender, ServerEventArgs args)
        {
            if (CheckEvent(args.Server))
            {
                return;
            }

            GuildService.Instance.Repository.RemoveById((long)args.Server.Id);
        }
コード例 #25
0
        public void RemoveGuild(object sender, ServerEventArgs args)
        {
            if (CheckEvent(args.Server))
            {
                return;
            }

            mChannels.RemoveAll(channel => channel.Id == args.Server.Id);
        }
コード例 #26
0
 // 与服务端断开连接 -> 关闭摄像头及麦克风
 void client_Disconnected(object sender, ServerEventArgs e)
 {
     Console.WriteLine("{0} -> client.server.disconnect"
                       , DateTime.Now.ToString("hh:mm:ss"));
     this.Dispatcher.Invoke(new Action(() =>
     {
         this.InitializeView();
     }));
 }
コード例 #27
0
        protected virtual void OnServerStopped(ServerEventArgs e)
        {
            EventHandler <ServerEventArgs> handler = ServerStopped;

            if (handler != null)
            {
                handler(null, e);
            }
        }
コード例 #28
0
ファイル: Server.cs プロジェクト: maikebing/CassiniDev
        internal virtual void OnServerStarted(ServerEventArgs e)
        {
            EventHandler <ServerEventArgs> handler = ServerStarted;

            if (handler != null)
            {
                handler(null, e);
            }
        }
コード例 #29
0
 // 与服务端取得连接 -> 打开摄像头及麦克风
 void client_Connected(object sender, ServerEventArgs e)
 {
     this.Dispatcher.Invoke(new Action(() =>
     {
         this.barserverState.Content = "已连接";
         Console.WriteLine("-> client.server.connect");
         Audio.Instance.Start();
         Video.Instance.Start(SystemSetting.Instance.VideoDevice);
     }));
 }
コード例 #30
0
        public void AddGuild(object sender, ServerEventArgs args)
        {
            var channel = args.Server.DefaultChannel;

            if (UserService.Instance.Repository.GetById((long)channel.Server.Owner.Id).Type != UserType.Premium &&
                !mChannels.Exists(c => c.Id == channel.Id))
            {
                mChannels.Add(channel);
            }
        }
コード例 #31
0
 void HandleServerRemoved(object sender, ServerEventArgs e)
 {
     Application.Instance.AsyncInvoke(delegate
     {
         UnRegister(e.Server);
         servers.Remove(e.Server);
         Update(true);
         OnChannelChanged(EventArgs.Empty);
     });
 }
コード例 #32
0
ファイル: ActionDispatcher.cs プロジェクト: nhannd/Xian
		private void ActionUpdate(object sender, ServerEventArgs e)
		{
			PropertyChangedEvent ev = e.ServerEvent as PropertyChangedEvent;
			if (ev != null)
			{
				IActionUpdate updateObject;

				if (_map.TryGetValue(ev.SenderId, out updateObject))
				{
					updateObject.Update(ev);
				}
			}
		}
コード例 #33
0
ファイル: TraceWrapperSMO.cs プロジェクト: WrongDog/Profiler
        private static void DeadlockGraph(ServerEventArgs e)
        {
            var path = string.Format(@"C:\TEMP\{0}.xdl", Guid.NewGuid());

            var textData = e.Properties.FirstOrDefault(prop => prop.Name == "TextData");

            if (textData == null) return;

            var xml = XDocument.Parse(((string)textData.Value))
                .Elements("TextData")
                .Elements("deadlock-list")
                .FirstOrDefault();

            if (xml == null) return;

            using (var file = new StreamWriter(path)) file.Write(xml.ToString(SaveOptions.DisableFormatting));
        }
コード例 #34
0
ファイル: TraceWrapperSMO.cs プロジェクト: WrongDog/Profiler
        private static void OnDeadlock(object sender, ServerEventArgs e)
        {
            switch (e.EventType)
            {
                case EventType.DeadlockGraph:
                    DeadlockGraph(e);
                    break;
                case EventType.LockDeadlockChain:
                    LockDeadlockChain(e);
                    break;
                case EventType.LockDeadlock:
                    Console.WriteLine("{0:dd/MM/yyyy HH:mm}", e.PostTime);
                    Console.WriteLine("SPID {0}", e.Spid);
                    break;
            }

            Console.WriteLine();
        }
コード例 #35
0
        /// <summary>
        ///   See <see cref="IServer.Authenticate" />
        /// </summary>
        public virtual void Authenticate(Client client, ServerEventArgs e = null)
        {
            if (!IsRunning)
            {
                Log.Debug("Server:InvalidFunctionCall:Authenticate:Data:IP:<{0}>".format(client.GetIP));
                return;
            }

            if (e == null)
            {
                e = new ServerEventArgs(false, client);
            }
            else
            {
                e.Client = client;
            }
            AuthTable[client] = e.Success;
            Log.Info(e.Success
                         ? "Server:AuthSucceed:Data:IP:<{0}>".format(client.GetIP)
                         : "Server:AuthFail:Data:IP:<{0}>".format(client.GetIP));
            if (OnAuthenticate != null)
                OnAuthenticate(this, e);
        }
コード例 #36
0
ファイル: LMS5xx.cs プロジェクト: asimay/LMS511Laser
 void client_ServerDisconnected(object sender, ServerEventArgs e)
 {
     PrintMsg(e.ToString());
 }
コード例 #37
0
ファイル: DependencyExplorer.cs プロジェクト: rcdosado/SMO
 private void MyEventHandler(object sender, ServerEventArgs e)
 {
     this.Invoke(refreshDbTables);
 }
コード例 #38
0
ファイル: ImageBoxView.xaml.cs プロジェクト: nhannd/Xian
		private void OnImageBoxEvent(object sender, ServerEventArgs e)
		{
			if (!(e.ServerEvent is PropertyChangedEvent))
				return;

			OnPropertyChanged(e.ServerEvent as PropertyChangedEvent);
		}
コード例 #39
0
ファイル: ImageViewer.xaml.cs プロジェクト: nhannd/Xian
		private void OnViewerEvent(object sender, ServerEventArgs e)
		{
			if (!(e.ServerEvent is PropertyChangedEvent))
				return;

			var ev = (PropertyChangedEvent)e.ServerEvent;

			//TODO (CR May 2010): this is in the method above, too.  Which one works?
            if (ev.PropertyName == "Application")
            {
                _serverApplication = (ViewerApplication)ev.Value;
				//TODO (CR May 2010): we don't unregister these
                EventMediator.RegisterEventHandler(_serverApplication.Viewer.Identifier, OnViewerEvent);
                ToolstripViewComponent.SetIconSize(_serverApplication.Viewer.ToolStripIconSize);
                ToolstripViewComponent.SetActionModel(_serverApplication.Viewer.ToolbarActions);
                _studyView.SetImageBoxes(_serverApplication.Viewer.ImageBoxes);
                return;
            }

            if (ev.PropertyName == "ImageBoxes")
            {
                var imageBoxes = (Collection<ImageBox>)ev.Value;
                _serverApplication.Viewer.ImageBoxes = imageBoxes;
                _studyView.SetImageBoxes(imageBoxes);
                return;
            }

            if (ev.PropertyName == "ToolbarActions")
            {
                var actionModel = (Collection<WebActionNode>)ev.Value;
                _serverApplication.Viewer.ToolbarActions = actionModel;
                ToolstripViewComponent.SetActionModel(_serverApplication.Viewer.ToolbarActions);
                return;
            }
		}
コード例 #40
0
ファイル: TraceWrapperSMO.cs プロジェクト: WrongDog/Profiler
        private static void LockDeadlockChain(ServerEventArgs e)
        {
            var textData = e.Properties.FirstOrDefault(prop => prop.Name == "TextData");

            if (textData == null) return;

            Console.WriteLine("{0:dd/MM/yyyy HH:mm}", e.PostTime);
            Console.WriteLine(((string)textData.Value).TrimEnd());
        }
コード例 #41
0
 protected virtual void OnServerStopped(ServerEventArgs e)
 {
     EventHandler<ServerEventArgs> handler = ServerStopped;
     if (handler != null) handler(null, e);
 }
コード例 #42
0
ファイル: ImageViewer.xaml.cs プロジェクト: nhannd/Xian
        private void OnApplicationEvent(object sender, ServerEventArgs e)
        {
            if (!(e.ServerEvent is PropertyChangedEvent))
                return;

            var ev = (PropertyChangedEvent)e.ServerEvent;

            if (ev.PropertyName == "Application")
            {
                ViewModel.IsLoading = false;

                _serverApplication = (ViewerApplication)ev.Value;

                ApplicationContext.Current.ViewerVersion = _serverApplication.VersionString;

				//TODO (CR May 2010): we don't unregister these
                EventMediator.RegisterEventHandler(_serverApplication.Viewer.Identifier, OnViewerEvent);
                ToolstripViewComponent.SetIconSize(_serverApplication.Viewer.ToolStripIconSize);
                ToolstripViewComponent.SetActionModel(_serverApplication.Viewer.ToolbarActions);
                _studyView.SetImageBoxes(_serverApplication.Viewer.ImageBoxes);
                return;
            }
        }
コード例 #43
0
 /// <summary>
 ///   Called when we try to send a message to a client but that send fails.
 /// </summary>
 protected virtual void OnSendPacketException(Packet packet, string reason, Client client)
 {
     // Nothing to do if we didn't track the client
     if (!ClientTable.Contains(client))
     {
         Log.Debug(
             "Server:InvalidFunctionCall:OnSendPacketException:UnknownClient:Data:IP:<{0}>".format(
                 client.GetIP));
         return;
     }
     const bool success = false;
     var parameters = new Dictionary<string, string>
                          {
                              {"Exception:ServerException", "SendPacketFailedException"},
                              {"SendPacketFailedException:Data:Value", packet.ToString()},
                              {"SendPacketFailedException:Data:Reason", reason}
                          };
     var e = new ServerEventArgs(success, client, parameters);
     Console.WriteLine("OnSendPacketException");
     Disconnect(client, e);
 }
コード例 #44
0
ファイル: TraceWrapperSMO.cs プロジェクト: WrongDog/Profiler
        private void OnEvents(object sender, ServerEventArgs e)
        {
            DataTable result = GetResultDataTable();
            List<object> data = new List<object>();
            foreach (DataColumn dc in result.Columns)
            {
                EventProperty ep = e.Properties.FirstOrDefault((prop) => prop.Name == dc.ColumnName);
                if (ep != null)
                {
                    //if (dc.DataType == typeof(DateTime))
                    //{
                    //    DateTime datetime;
                    //    DateTime.TryParse(ep.Value.ToString(), out datetime);
                    //    data.Add(datetime);
                    //}
                    //else
                    //{
                    //    data.Add(ep.Value);
                    //}
                    data.Add(ep.Value);
                }
                else
                {
                    data.Add(null);
                }
            }
            //foreach (EventProperty ep in e.Properties.ToList<EventProperty>())
            //{
            //    if (ep.Value != null)
            //    {
            //        if (ep.Value.GetType() == typeof(System.Byte[]))
            //        {
            //            result.Columns.Add(ep.Name);
            //            data.Add(Convert.ToBase64String((Byte[])ep.Value));
            //        }
            //        else
            //        {
            //            result.Columns.Add(ep.Name, ep.Value.GetType());
            //            data.Add(ep.Value);
            //        }
            //    }
            //    else
            //    {
            //        result.Columns.Add(ep.Name);
            //        data.Add(null);
            //    }
            //}
            result.Rows.Add(data.ToArray());
            if (Handlers != null)
            {
                foreach (IResultHandler handler in Handlers) handler.OnNewTraceEvent((TraceEvent)result.Rows[0]);
                //why not working?locked?

            }
        }
コード例 #45
0
ファイル: ImageViewer.xaml.cs プロジェクト: nhannd/Xian
 private void OnSessionUpdated(object sender, ServerEventArgs ev)
 {
     UIThread.Execute(() =>
     {
         var @event = ev.ServerEvent as SessionUpdatedEvent;
         ApplicationBridge.Current.OnViewerSessionUpdated(this, @event);
     });
 }
コード例 #46
0
ファイル: ImageViewer.xaml.cs プロジェクト: nhannd/Xian
        private void OnMessageBox(object sender, ServerEventArgs ev)
        {
            var @event = ev.ServerEvent as MessageBoxShownEvent;

			//TODO (CR May 2010): can this be consolidate or split up?
            List<Button> buttonList = new List<Button>();

            if (@event != null && @event.MessageBox.Actions == WebMessageBoxActions.Ok)
            {
                var okButton = new Button { Content = Labels.ButtonOK, Margin = new Thickness(5) };
                okButton.Click += (s, e) => EventMediator.DispatchMessage(new DismissMessageBoxMessage
                                                                                                             {
                                                                                                                 TargetId = @event.MessageBox.Identifier,
                                                                                                                 Result = WebDialogBoxAction.Ok, 
                                                                                                                 Identifier = Guid.NewGuid()
                                                                                                             });
                buttonList.Add(okButton);
            }
            else if (@event != null && @event.MessageBox.Actions == WebMessageBoxActions.OkCancel)
            {
                var okButton = new Button { Content = Labels.ButtonOK, Margin = new Thickness(5) };
                okButton.Click += (s, e) => EventMediator.DispatchMessage(new DismissMessageBoxMessage
                                                                                                             {
                                                                                                                 TargetId = @event.MessageBox.Identifier,
                                                                                                                 Result = WebDialogBoxAction.Ok,
                                                                                                                 Identifier = Guid.NewGuid()
                                                                                                             });
                buttonList.Add(okButton);
                var cancelButton = new Button { Content = Labels.ButtonCancel, Margin = new Thickness(5) };
                cancelButton.Click += (s, e) => EventMediator.DispatchMessage(new DismissMessageBoxMessage
                                                                                               {
                                                                                                   TargetId = @event.MessageBox.Identifier,
                                                                                                   Result = WebDialogBoxAction.Cancel,
                                                                                                   Identifier = Guid.NewGuid()
                                                                                               });
                buttonList.Add(cancelButton);
            }
            else if (@event != null && @event.MessageBox.Actions == WebMessageBoxActions.YesNo)
            {
                var yesButton = new Button { Content = Labels.ButtonYes, Margin = new Thickness(5) };
                yesButton.Click += (s, e) => EventMediator.DispatchMessage(new DismissMessageBoxMessage
                                                                                                              {
                                                                                                                  TargetId = @event.MessageBox.Identifier,
                                                                                                                  Result = WebDialogBoxAction.Yes,
                                                                                                                  Identifier = Guid.NewGuid()
                                                                                                              });
                buttonList.Add(yesButton);
                var noButton = new Button { Content = Labels.ButtonNo, Margin = new Thickness(5) };
                noButton.Click += (s, e) => EventMediator.DispatchMessage(new DismissMessageBoxMessage
                                                                                                             {
                                                                                                                 TargetId = @event.MessageBox.Identifier,
                                                                                                                 Result = WebDialogBoxAction.No,
                                                                                                                 Identifier = Guid.NewGuid()
                                                                                                             });
                buttonList.Add(noButton);
            }
            else if (@event != null && @event.MessageBox.Actions == WebMessageBoxActions.YesNoCancel)
            {
                var yesButton = new Button { Content = Labels.ButtonYes, Margin = new Thickness(5) };
                yesButton.Click += (s, e) => EventMediator.DispatchMessage(new DismissMessageBoxMessage
                                                                                                              {
                                                                                                                  TargetId = @event.MessageBox.Identifier,
                                                                                                                  Result = WebDialogBoxAction.Yes,
                                                                                                                  Identifier = Guid.NewGuid()
                                                                                                              });
                buttonList.Add(yesButton);
                var noButton = new Button { Content = Labels.ButtonNo, Margin = new Thickness(5) };
                noButton.Click += (s, e) => EventMediator.DispatchMessage(new DismissMessageBoxMessage
                                                                                                             {
                                                                                         TargetId =
                                                                                             @event.MessageBox.
                                                                                             Identifier,
                                                                                         Result = WebDialogBoxAction.No,
                                                                                         Identifier = Guid.NewGuid()
                                                                                     });
                buttonList.Add(noButton);
                var cancelButton = new Button { Content = Labels.ButtonCancel, Margin = new Thickness(5) };
                cancelButton.Click += (s, e) => EventMediator.DispatchMessage(
                    new DismissMessageBoxMessage
                        {
                            TargetId = @event.MessageBox.Identifier,
                            Result = WebDialogBoxAction.Cancel,
                            Identifier = Guid.NewGuid()
                        });
                buttonList.Add(cancelButton);
            }
                           
            PopupHelper.PopupContent(@event.MessageBox.Title, @event.MessageBox.Message, buttonList.ToArray());      
        }
コード例 #47
0
ファイル: ImageViewer.xaml.cs プロジェクト: nhannd/Xian
		private void ApplicationStarted(object sender, ServerEventArgs e)
		{
            if (EventMediator == null)
            {
                return;
            }

			var ev = (ApplicationStartedEvent)e.ServerEvent;
            if (ev == null)
            {
                EventMediator.HandleCriticalError("Unexpected event type: {0}", e.ServerEvent);
                return;
            }

			Visibility = Visibility.Visible;

            if (_serverApplication != null)
            {
                // Stop the prior application, note that it may have been stopped already, still send the
                // message just in case
                EventMediator.StopApplication();
            }

			//TODO (CR May 2010): we don't unregister these
            EventMediator.RegisterEventHandler(ev.StartRequestId, OnApplicationEvent);
        }
コード例 #48
0
        /// <summary>
        ///   See <see cref="IServer.Disconnect" />
        /// </summary>
        public virtual void Disconnect(Client client, ServerEventArgs e = null)
        {
            if (!IsRunning)
            {
                Log.Debug("Server:InvalidFunctionCall:Disconnect:Data:IP:<{0}>".format(client.GetIP));
                return;
            }
            var success = true;
            try
            {
                ClientTable.Remove(client); // Shouldn't be a threading issue, since anyone iterating over clients will grab a copy of the list
                AuthTable.Remove(client);
            }
            catch
            {
                success = false;
            }
            e = e ?? new ServerEventArgs(success, client);

            // Disconnect has the final say on these two,
            // since it was the most recent frame from which the Event was fired
            e.Success = success;
            e.Client = client;

            Log.Info("Server:Disconnect:Data:IP:<{0}>".format(client.GetIP));
            if (OnDisconnect != null)
                OnDisconnect(this, e);
        }
コード例 #49
0
        /// <summary>
        ///   See <see cref="IServer.Connect" />
        /// </summary>
        public virtual void Connect(Client client, ServerEventArgs serverArgs = null)
        {
            if (!IsRunning) return;

            if (serverArgs == null)
                serverArgs = new ServerEventArgs(true, client);
            else
            {
                var parameters = new Dictionary<string, string>() {{"Server:Connect:Data:IP", client.GetIP}};
                serverArgs.Parameters.Merge(parameters);

                // Connect has the final say on these two,
                // since it was the most recent frame from which the Event was fired
                serverArgs.Client = client;
                serverArgs.Success = true;
            }

            ClientTable[client] = new Guid().ToString();
            client.OnReadPacket += OnClientRead;
            client.OnConnectionLost += (o, e) => Disconnect(client);

            Log.Info("Server:Connect:Data:IP:<{0}>".format(client.GetIP));

            if (OnConnect != null)
                OnConnect(this, serverArgs);
        }