/// <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(); } } }
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); } } }
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 }); } } } }
/// <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(); } } }
//send event upward private void Server_OnServerStarted(object sender, ServerEventArgs e) { OnServerStarted.Invoke(this, new SimulatorEventArgs(e.Message)); server.acceptClient().ContinueWith(x => { server.receiveSessionData(); }); }
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()); } }
//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) { } }
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; } }
/// <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; } }
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); } } } }
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; } }
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; } }
protected virtual async Task FireEventAsync(object sender, ServerEventArgs args) { if (_serverEvent != null) { await _serverEvent?.Invoke(sender, args); } }
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); }
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; } }
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); }); } }
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); });; } }
public void OnStop(object sender, ServerEventArgs e) { this.is_active = false; this.listener.Stop(); Thread.Sleep(100); serverThread.Abort(); listener = null; }
private void OnSessionUpdated(object sender, ServerEventArgs ev) { UIThread.Execute(() => { var @event = ev.ServerEvent as SessionUpdatedEvent; ApplicationBridge.Current.OnViewerSessionUpdated(this, @event); }); }
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); }); } }
private void OnImageBoxEvent(object sender, ServerEventArgs e) { if (!(e.ServerEvent is PropertyChangedEvent)) { return; } OnPropertyChanged(e.ServerEvent as PropertyChangedEvent); }
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(); } }
public void RemoveGuild(object sender, ServerEventArgs args) { if (CheckEvent(args.Server)) { return; } GuildService.Instance.Repository.RemoveById((long)args.Server.Id); }
public void RemoveGuild(object sender, ServerEventArgs args) { if (CheckEvent(args.Server)) { return; } mChannels.RemoveAll(channel => channel.Id == args.Server.Id); }
// 与服务端断开连接 -> 关闭摄像头及麦克风 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(); })); }
protected virtual void OnServerStopped(ServerEventArgs e) { EventHandler <ServerEventArgs> handler = ServerStopped; if (handler != null) { handler(null, e); } }
internal virtual void OnServerStarted(ServerEventArgs e) { EventHandler <ServerEventArgs> handler = ServerStarted; if (handler != null) { handler(null, e); } }
// 与服务端取得连接 -> 打开摄像头及麦克风 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); })); }
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); } }
void HandleServerRemoved(object sender, ServerEventArgs e) { Application.Instance.AsyncInvoke(delegate { UnRegister(e.Server); servers.Remove(e.Server); Update(true); OnChannelChanged(EventArgs.Empty); }); }
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); } } }
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)); }
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(); }
/// <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); }
void client_ServerDisconnected(object sender, ServerEventArgs e) { PrintMsg(e.ToString()); }
private void MyEventHandler(object sender, ServerEventArgs e) { this.Invoke(refreshDbTables); }
private void OnImageBoxEvent(object sender, ServerEventArgs e) { if (!(e.ServerEvent is PropertyChangedEvent)) return; OnPropertyChanged(e.ServerEvent as PropertyChangedEvent); }
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; } }
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()); }
protected virtual void OnServerStopped(ServerEventArgs e) { EventHandler<ServerEventArgs> handler = ServerStopped; if (handler != null) handler(null, e); }
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; } }
/// <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); }
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? } }
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()); }
/// <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); }
/// <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); }