private void Init() { try { using (var redis = ClientsManager.GetReadOnlyClient()) { startedAt = Stopwatch.StartNew(); serverTimeAtStart = IsSentinelSubscription ? DateTime.UtcNow : redis.GetServerTime(); } } catch (Exception ex) { if (OnError != null) { OnError(ex); } } DisposeHeartbeatTimer(); if (HeartbeatInterval != null) { heartbeatTimer = new Timer(SendHeartbeat, null, TimeSpan.FromMilliseconds(0), HeartbeatInterval.Value); } Interlocked.CompareExchange(ref lastHeartbeatTicks, DateTime.UtcNow.Ticks, lastHeartbeatTicks); if (OnInit != null) { OnInit(); } }
public static object SaveClient(Client scParam, string masterId) { object data = new { }; Client item = new Client() { ClientID = scParam.ClientID, full_name = scParam.full_name, phone = scParam.phone, phone2 = scParam.phone2, user_name = scParam.user_name, user_password = scParam.user_password, countryCode = scParam.countryCode, countryCode2 = scParam.countryCode2, user_type = scParam.user_type, send_sms = scParam.send_sms, active = true, send_email = true, date_entered = DateTime.UtcNow, Notes = scParam.Notes }; int?masterID = string.IsNullOrEmpty(masterId) ? null : (Int32?)Convert.ToInt32(masterId); int savedID = new ClientsManager().SaveItem(item, masterID); if ((item.full_name != null && item.user_name != null) || savedID > 0) { data = new { Status = true, Id = savedID, Message = Resources.AdminResources_ar.SuccessSave }; } else { data = new { Status = false, Message = Resources.AdminResources_ar.ErrorSave, Id = 0 } }; return(data); }
public void Stop() { if (Interlocked.CompareExchange(ref status, 0, 0) == Status.Disposed) { throw new ObjectDisposedException("RedisPubSubServer has been disposed"); } if (Interlocked.CompareExchange(ref status, Status.Stopping, Status.Started) == Status.Started) { Log.Debug("Stopping RedisPubSubServer..."); //Unblock current bgthread by issuing StopCommand try { using (var redis = ClientsManager.GetClient()) { Interlocked.CompareExchange(ref doOperation, Operation.Stop, doOperation); Channels.Each(x => redis.PublishMessage(x, Operation.ControlCommand)); } } catch (Exception ex) { if (this.OnError != null) { this.OnError(ex); } Log.Warn("Could not send STOP message to bg thread: " + ex.Message); } } }
private void NotifyAllSubscribers(string commandType = null) { var msg = ControlCommand.Control; if (commandType != null) { msg += ":" + commandType; } try { using (var redis = ClientsManager.GetClient()) { foreach (var channel in Channels) { redis.PublishMessage(channel, msg); } } } catch (Exception ex) { if (this.OnError != null) { this.OnError(ex); } Log.Warn("Could not send '{0}' message to bg thread: {1}".Fmt(msg, ex.Message)); } }
public BaseViewModel() { _classesManager = new ClassesManager(); _clientsManager = new ClientsManager(); _roomsManager = new RoomsManager(); _workersManager = new WorkersManager(); _workPlanManager = new WorkPlanManager(); }
public override Packet OnPacketReceive(Packet receivedPacket) { FormManager.gameView.SetDrawing((receivedPacket as ClientSendPointsPacket).Points); ClientsManager.SendPacketToEveryClients(receivedPacket); return(new ServerResponsePacket(NetworkError.None)); }
static AppContext() { m_logManager = new Log.LogManager(); m_tableManager = new TableManager(); m_settings = new Settings(); m_accessPath = new DataAccessPath(); m_datumFactory = new DataRowFactory(); m_clientsManager = new ClientsManager(); }
public ClientsViewModel() { _clientsManager = GetClientsManager(); AddClientCommand = new BaseCommand(AddClient); DeleteClientCommand = new BaseCommand(DeleteClient); SaveCommand = new BaseCommand(SaveChanges); CancelCommand = new BaseCommand(Cancel); RefreshClients(); }
public void Broadcast(Message message) { IEnumerable <Client> clients = ClientsManager.FindClientsForBroadcasting(this); foreach (Client client in clients) { client.Send(message); } }
public ClientsController( SiteManager siteManager, ClientsManager clientsManager, IStringLocalizer <CloudscribeIntegration> localizer ) { this.siteManager = siteManager; this.clientsManager = clientsManager; sr = localizer; }
public ClientsController( SiteManager siteManager, ClientsManager clientsManager, IStringLocalizer <CloudscribeIds4Resources> localizer ) { this.siteManager = siteManager; this.clientsManager = clientsManager; sr = localizer; }
public void ConnectEx() { Listener listener1 = new Listener(endPoint); Listener listener2 = new Listener(endPoint); ClientsManager clientManager1 = new ClientsManager(); ClientsManager clientManager2 = new ClientsManager(); Server server1 = new Server(listener1, clientManager1); Server server2 = new Server(listener2, clientManager2); server1.Start(); server2.Start(); Thread.Sleep(1000); }
private void OnClientDisconnect(Socket socket) { Network.Client client = ClientsManager.Find(socket); if (client != null) { ClientsManager.Clients.Remove(client); FormDispatcher.RefreshList(ClientsManager.Clients.ToArray()); FormDispatcher.AppendLog("Un Utilisateur se déconnecte" + Environment.NewLine); } }
public TestManager(ServerTest test) { this.currentTest = test; clientsManager = new ClientsManager(); clientsManager.ReceivedMessageFromClient += ClientsManagerOnReceivedMessageFromClient; if (!Directory.Exists(test.HandoverDirectory)) { Directory.CreateDirectory(test.HandoverDirectory); } clientsManager.Start(); }
public IHttpActionResult Get(string id) { log.Debug("begin"); ClientsManager clientsmanager = new ClientsManager(); Client cli = clientsmanager.GetById(id); /* * if (cli == null) * return Ok(default(Client)); */ log.Debug("end"); return(Ok(cli)); }
private void Init() { using (var redis = ClientsManager.GetReadOnlyClient()) { serverTimeAtStart = redis.GetServerTime(); startedAt = Stopwatch.StartNew(); } if (OnInit != null) { OnInit(); } }
public IHttpActionResult GetByName(string name) { log.Debug("begin"); ClientsManager clientsmanager = new ClientsManager(); Client cli = clientsmanager.GetByName(name); if (cli == null) { return(NotFound()); } log.Debug("end"); return(Ok(cli)); }
public void ClientFullDataEmpty() { Listener listener = new Listener(endPoint); ClientsManager clientsManager = new ClientsManager(); Server server = new Server(listener, clientsManager); server.Start(); protocol.Connect(endPoint, ref desktopSocket); protocol.SendObject(new Command(Command.Commands.FullData, string.Empty), desktopSocket); Command com = protocol.ReadObject(desktopSocket, typeof(Command)) as Command; server.Stop(); Assert.AreEqual(0, com.ValuesList.Count); }
protected override object Run(GetEntryTypes request) { var response = new GetEntryTypesResponse(); using (var redis = ClientsManager.GetClient()) { foreach (var key in request.Keys) { var keyType = redis.GetEntryType(key); response.KeyTypes.Add(new KeyValuePair(key, keyType.ToString())); } } return(response); }
public void AddClientConnect() { Listener listener = new Listener(endPoint); ClientsManager clientManager = new ClientsManager(); listener.NewConnection += clientManager.AddClient; listener.Start(); clientManager.Start(); protocol.Connect(endPoint, ref desktopSocket); Thread.Sleep(2000); clientManager.Stop(); listener.Stop(); Assert.Pass(); }
protected override object Run(FlushDb request) { if (request.Db == 0) { RedisNativeExec(r => r.FlushDb()); } else { using (var redisClient = ClientsManager.GetClient()) { redisClient.Db = request.Db; redisClient.FlushDb(); } } return(new FlushDbResponse()); }
private void ShowClientInformation(int Id) { var result = new ClientsManager().GetClientDetails(Id); if (result != null) { //hfID.Value = result.ClientID.ToString(); txtEmail.Text = result.ClientEmail; txtNameS.Text = result.ClientName; txtUsername.Text = result.ClientUsername; txtPassword.Text = result.ClientPassword; txtPhone.Text = result.ClientPhone; txtFax.Text = result.ClientFax; txtShortdesc.Text = result.ClientDesc; cbActive.Checked = (bool)result.Active; cbActiveSMS.Checked = result.SMSActive != null ? (bool)result.SMSActive : true; txtPriority.Text = result.Priority.ToString(); txtOpeningBalance.Text = result.OpeningBalance.ToString(); } }
public override Packet OnPacketReceive(Packet receivedPacket) { ClientSendChatMessageEventPacket p = (receivedPacket as ClientSendChatMessageEventPacket); string wordToFind = NetworkingHelper.GetInstance().Server.Room.Word; if (p.Message.RefactorText() == wordToFind.RefactorText()) { //Show to everyone that he found the word p.Message = $"{p.Time.ToShortTimeString()} : {p.Sender} a trouvé le mot"; ScoreManager.GetInstance().PlayerFoundWord(p.Sender, p.Time); } EventsManager.OnChatMessageReceive?.Invoke(new Objects.EventArgs.OnChatMessageReceiveEventArgs( p.Sender, p.Message, p.Time) ); ClientsManager.SendPacketToEveryClients(receivedPacket); return(new ServerResponsePacket(NetworkError.None)); }
public void RemoveClient() { Listener listener = new Listener(endPoint); ClientsManager clientManager = new ClientsManager(); Server server = new Server(listener, clientManager); server.Start(); protocol.Connect(endPoint, ref desktopSocket); //не подтягивается Json.dll protocol.SendObject(new Command(Command.Commands.Exit, string.Empty), desktopSocket); Command command = protocol.ReadObject(desktopSocket, typeof(Command)) as Command; server.Stop(); Assert.AreEqual("Confirm", command.CurrentCommand); }
private void RunLoop() { if (Interlocked.CompareExchange(ref status, Status.Started, Status.Starting) != Status.Starting) { return; } Interlocked.Increment(ref timesStarted); try { //RESET while (Interlocked.CompareExchange(ref status, 0, 0) == Status.Started) { using (var redis = ClientsManager.GetReadOnlyClient()) { masterClient = redis; //Record that we had a good run... Interlocked.CompareExchange(ref noOfContinuousErrors, 0, noOfContinuousErrors); using (var subscription = redis.CreateSubscription()) { subscription.OnUnSubscribe = HandleUnSubscribe; subscription.OnMessage = (channel, msg) => { if (string.IsNullOrEmpty(msg)) { return; } var ctrlMsg = msg.SplitOnFirst(':'); if (ctrlMsg[0] == ControlCommand.Control) { var op = Interlocked.CompareExchange(ref doOperation, Operation.NoOp, doOperation); var msgType = ctrlMsg.Length > 1 ? ctrlMsg[1] : null; if (OnControlCommand != null) { OnControlCommand(msgType ?? Operation.GetName(op)); } switch (op) { case Operation.Stop: if (Log.IsDebugEnabled) { Log.Debug("Stop Command Issued"); } Interlocked.CompareExchange(ref status, Status.Stopping, Status.Started); try { if (Log.IsDebugEnabled) { Log.Debug("UnSubscribe From All Channels..."); } subscription.UnSubscribeFromAllChannels(); //Un block thread. } finally { Interlocked.CompareExchange(ref status, Status.Stopped, Status.Stopping); } return; case Operation.Reset: subscription.UnSubscribeFromAllChannels(); //Un block thread. return; } switch (msgType) { case ControlCommand.Pulse: Pulse(); break; } } else { OnMessage(channel, msg); } }; //blocks thread if (ChannelsMatching != null && ChannelsMatching.Length > 0) { subscription.SubscribeToChannelsMatching(ChannelsMatching); } else { subscription.SubscribeToChannels(Channels); } masterClient = null; } } } if (OnStop != null) { OnStop(); } } catch (Exception ex) { lastExMsg = ex.Message; Interlocked.Increment(ref noOfErrors); Interlocked.Increment(ref noOfContinuousErrors); if (Interlocked.CompareExchange(ref status, Status.Stopped, Status.Started) != Status.Started) { Interlocked.CompareExchange(ref status, Status.Stopped, Status.Stopping); } if (OnStop != null) { OnStop(); } if (this.OnError != null) { this.OnError(ex); } } if (AutoRestart && Interlocked.CompareExchange(ref status, 0, 0) != Status.Disposed) { if (WaitBeforeNextRestart != null) { Thread.Sleep(WaitBeforeNextRestart.Value); } Start(); } }
private void callEvent(object serverCallback) { var methodCall = XDocument.Parse((string)serverCallback, LoadOptions.None).Root; if (methodCall == null) { return; } var methodNameElement = methodCall.Element("methodName"); if (methodNameElement == null) { return; } //Swith to the right method name and call the event. switch (methodNameElement.Value) { case "ManiaPlanet.PlayerConnect": if (PlayerConnect != null) { var playerConnectCall = new ManiaPlanetPlayerConnect(); if (playerConnectCall.ParseCallXml(methodCall)) { PlayerConnect(this, playerConnectCall); } } break; case "ManiaPlanet.PlayerDisconnect": if (PlayerDisconnect != null) { var playerDisconnectCall = new ManiaPlanetPlayerDisconnect(); if (playerDisconnectCall.ParseCallXml(methodCall)) { PlayerDisconnect(this, playerDisconnectCall); } } break; case "ManiaPlanet.PlayerChat": var playerChatCall = new ManiaPlanetPlayerChat(); if (playerChatCall.ParseCallXml(methodCall)) { if (!playerChatCall.Text.StartsWith("/")) { if (PlayerChat != null) { PlayerChat(this, playerChatCall); } } var potentialCommand = (playerChatCall.Text.TrimStart('/') + " ").ToLowerInvariant(); var command = registeredCommands.Where(cmd => potentialCommand.StartsWith(cmd.Key + " ")); if (command.Any()) { try { command.Single().Value(playerChatCall); } catch //TODO: Specify exception { ChatInterfaceManager.Get(Configuration.DefaultChat).SendToPlayer( "The command [" + playerChatCall.Text.TrimStart('/') + "] was somehow not unique.", ClientsManager.GetClientInfo(playerChatCall.ClientLogin)); } } else { ChatInterfaceManager.Get(Configuration.DefaultChat).SendToPlayer( "The command [" + playerChatCall.Text.TrimStart('/') + "] couldn't be found.", ClientsManager.GetClientInfo(playerChatCall.ClientLogin)); } } break; case "ManiaPlanet.PlayerManialinkPageAnswer": if (PlayerManialinkPageAnswer != null) { var playerManialinkPageAnswerCall = new ManiaPlanetPlayerManialinkPageAnswer(); if (playerManialinkPageAnswerCall.ParseCallXml(methodCall)) { PlayerManialinkPageAnswer(this, playerManialinkPageAnswerCall); } } break; case "ManiaPlanet.Echo": if (Echo != null) { var echoCall = new ManiaPlanetEcho(); if (echoCall.ParseCallXml(methodCall)) { Echo(this, echoCall); } } break; case "ManiaPlanet.ServerStart": if (ServerStart != null) { var serverStartCall = new ManiaPlanetServerStart(); if (serverStartCall.ParseCallXml(methodCall)) { ServerStart(this, serverStartCall); } } break; case "ManiaPlanet.ServerStop": if (ServerStop != null) { var serverStopCall = new ManiaPlanetServerStop(); if (serverStopCall.ParseCallXml(methodCall)) { ServerStop(this, serverStopCall); } } break; case "ManiaPlanet.BeginMatch": if (BeginMatch != null) { var beginMatchCall = new ManiaPlanetBeginMatch(); if (beginMatchCall.ParseCallXml(methodCall)) { BeginMatch(this, beginMatchCall); } } break; case "ManiaPlanet.EndMatch": if (EndMatch != null) { var endMatchCall = new ManiaPlanetEndMatch(); if (endMatchCall.ParseCallXml(methodCall)) { EndMatch(this, endMatchCall); } } break; case "ManiaPlanet.BeginMap": if (BeginMap != null) { var beginMapCall = new ManiaPlanetBeginMap(); if (beginMapCall.ParseCallXml(methodCall)) { BeginMap(this, beginMapCall); } } break; case "ManiaPlanet.EndMap": if (EndMap != null) { var endMapCall = new ManiaPlanetEndMap(); if (endMapCall.ParseCallXml(methodCall)) { EndMap(this, endMapCall); } } break; case "ManiaPlanet.StatusChanged": if (StatusChanged != null) { var statusChangedCall = new ManiaPlanetStatusChanged(); if (statusChangedCall.ParseCallXml(methodCall)) { StatusChanged(this, statusChangedCall); } } break; case "TrackMania.PlayerCheckpoint": Console.WriteLine("Player drove through checkpoint."); if (PlayerCheckpoint != null) { var playerCheckpointCall = new TrackManiaPlayerCheckpoint(); if (playerCheckpointCall.ParseCallXml(methodCall)) { PlayerCheckpoint(this, playerCheckpointCall); } } break; case "TrackMania.PlayerFinish": if (PlayerFinish != null) { var playerFinishCall = new TrackManiaPlayerFinish(); if (playerFinishCall.ParseCallXml(methodCall)) { PlayerFinish(this, playerFinishCall); } } break; case "TrackMania.PlayerIncoherence": if (PlayerIncoherence != null) { var playerIncoherenceCall = new TrackManiaPlayerIncoherence(); if (playerIncoherenceCall.ParseCallXml(methodCall)) { PlayerIncoherence(this, playerIncoherenceCall); } } break; case "ManiaPlanet.BillUpdated": if (BillUpdated != null) { var billUpdatedCall = new ManiaPlanetBillUpdated(); if (billUpdatedCall.ParseCallXml(methodCall)) { BillUpdated(this, billUpdatedCall); } } break; case "ManiaPlanet.TunnelDataReceived": if (TunnelDataReceived != null) { var tunnelDataReceivedCall = new ManiaPlanetTunnelDataReceived(); if (tunnelDataReceivedCall.ParseCallXml(methodCall)) { TunnelDataReceived(this, tunnelDataReceivedCall); } } break; case "ManiaPlanet.MapListModified": if (MapListModified != null) { var mapListModifiedCall = new ManiaPlanetMapListModified(); if (mapListModifiedCall.ParseCallXml(methodCall)) { MapListModified(this, mapListModifiedCall); } } break; case "ManiaPlanet.PlayerInfoChanged": if (PlayerInfoChanged != null) { var playerInfoChangedCall = new ManiaPlanetPlayerInfoChanged(); if (playerInfoChangedCall.ParseCallXml(methodCall)) { PlayerInfoChanged(this, playerInfoChangedCall); } } break; case "ManiaPlanet.VoteUpdated": if (VoteUpdated != null) { var voteUpdatedCall = new ManiaPlanetVoteUpdated(); if (voteUpdatedCall.ParseCallXml(methodCall)) { VoteUpdated(this, voteUpdatedCall); } } break; case "ManiaPlanet.PlayerAlliesChanged": if (PlayerAlliesChanged != null) { var playerAlliesChangedCall = new ManiaPlanetPlayerAlliesChanged(); if (playerAlliesChangedCall.ParseCallXml(methodCall)) { PlayerAlliesChanged(this, playerAlliesChangedCall); } } break; } }
private void loadPlugins() { Console.WriteLine("Loading Plugins..."); var pluginTypes = PluginLoader.LoadPluginsFromFolders <ControllerPlugin>(Configuration.PluginFolders); var pluginInstances = PluginLoader.InstanciatePlugins <ControllerPlugin>(pluginTypes.Append(typeof(LocalRecordsProvider))).ToList(); Console.WriteLine(); ControllerPlugin manialinkDisplayManager = null; try { manialinkDisplayManager = pluginInstances.SingleOrDefault(plugin => typeof(IManialinkDisplayManager).IsAssignableFrom(plugin.GetType())); } catch { Console.WriteLine("Multiple custom Manialink Display Managers found, using default one."); } if (manialinkDisplayManager != null) { Console.WriteLine("Using custom Manialink Display Manager: " + PluginBase.GetName(manialinkDisplayManager.GetType()) + " (" + PluginBase.GetIdentifier(manialinkDisplayManager.GetType()) + ")"); ManialinkDisplayManager = (IManialinkDisplayManager)manialinkDisplayManager; } else { Console.WriteLine("No custom Manialink Display Manager found, using default one."); manialinkDisplayManager = new ManialinkDisplayManager(); if (manialinkDisplayManager.Load(this)) { pluginInstances.Add(manialinkDisplayManager); ManialinkDisplayManager = (IManialinkDisplayManager)manialinkDisplayManager; } } Console.WriteLine(); ControllerPlugin clientsManager = null; try { clientsManager = pluginInstances.SingleOrDefault(plugin => typeof(IClientsManager).IsAssignableFrom(plugin.GetType())); } catch { Console.WriteLine("Multiple custom Clients Managers found, using default one."); } if (clientsManager != null) { Console.WriteLine("Using custom Clients Manager: " + PluginBase.GetName(clientsManager.GetType()) + " (" + PluginBase.GetIdentifier(clientsManager.GetType()) + ")"); ClientsManager = (IClientsManager)clientsManager; } else { Console.WriteLine("No custom Clients Manager found, using default one."); clientsManager = new ClientsManager(); if (clientsManager.Load(this)) { pluginInstances.Add(clientsManager); ClientsManager = (IClientsManager)clientsManager; } } plugins = pluginInstances.Select(plugin => { Console.WriteLine(PluginBase.GetName(plugin.GetType()) + " ..."); var success = plugin.Load(this); Console.WriteLine(success ? "OK" : "Failed"); return(new { Plugin = plugin, Success = success }); }) .Where(loadedPlugin => loadedPlugin.Success) .Select(loadedPlugin => loadedPlugin.Plugin) .ToDictionary(plugin => PluginBase.GetIdentifier(plugin.GetType()).Replace(' ', '_').Replace('$', '_').ToLower()); Console.WriteLine("Completed Loading Plugins."); }
public override Packet OnPacketReceive(Packet receivedPacket) { ClientsManager.SendPacketToEveryClients(receivedPacket); return(new ServerResponsePacket(NetworkError.None)); }
public Server() { ENet.Library.Initialize(); ClientsManager clients = new ClientsManager(); DatabaseManager.OnDatabaseTick += () => { List <CharacterInfo> characters = CharactersManager.Instance.characters.Values.ToList(); if (characters.Count != 0) { List <Character> charactersForUpdate = new List <Character>(); foreach (var player in characters) { if (player.Client != null) { charactersForUpdate.Add(player.Character); } } if (charactersForUpdate.Count != 0) { CharacterDB.SaveCharacters(charactersForUpdate); //ServerLogger.Log(null, "Updated database | Query time: " + (Server.Time - startTime).ToString(), LoggingLevel.PROD); } } }; using (Host server = new Host()) { Console.WriteLine("Game Server started..."); Address address = new Address(); address.SetIP("127.0.0.1"); address.Port = 2601; server.Create(address, 100); Event netEvent; while (!Console.KeyAvailable) { bool polled = false; while (!polled) { if (server.CheckEvents(out netEvent) <= 0) { if (server.Service(15, out netEvent) <= 0) { break; } polled = true; } switch (netEvent.Type) { case EventType.None: break; case EventType.Connect: Console.WriteLine("Client connected - ID: " + netEvent.Peer.ID + ", IP: " + netEvent.Peer.IP); CharacterInfo info = CharactersManager.Instance.AddCharacter(new CharacterInfo() { Character = new Hero() { Position = new System.Numerics.Vector3(1786, 3, 1769) }, ZoneId = 0 }); GameClient c = new GameClient() { Peer = netEvent.Peer, CharacterInfo = info }; c.CharacterInfo.Client = c; ClientsManager.Instance.clients.Add(netEvent.Peer.ID, c); break; case EventType.Disconnect: Console.WriteLine("Client disconnected - ID: " + netEvent.Peer.ID + ", IP: " + netEvent.Peer.IP); GameClient clientToRemove = (GameClient)ClientsManager.Instance.clients[netEvent.Peer.ID]; CharacterDB.SaveCharacters(new List <Character>() { clientToRemove.CharacterInfo.Character }); ClientsManager.Instance.clients.Remove(netEvent.Peer.ID); CharactersManager.Instance.RemoveCharacter(clientToRemove.CharacterInfo); break; case EventType.Timeout: Console.WriteLine("Client timeout - ID: " + netEvent.Peer.ID + ", IP: " + netEvent.Peer.IP); break; case EventType.Receive: //Console.WriteLine("Packet received from - ID: " + netEvent.Peer.ID + ", IP: " + netEvent.Peer.IP + ", Channel ID: " + netEvent.ChannelID + ", Data length: " + netEvent.Packet.Length); byte[] buffer = new byte[1024]; netEvent.Packet.CopyTo(buffer); GamePacketsManager.ReadBytes(ClientsManager.Instance.clients[netEvent.Peer.ID], buffer, netEvent.Packet.Length); netEvent.Packet.Dispose(); break; } } } server.Flush(); } }
/// <summary> /// This function is called when the service starts. /// The functions initialized the sercice components and starts listning to the folders. /// </summary> /// <param name="args"></param> protected override void OnStart(string[] args) { // Update the service state to Start Pending. ServiceStatus serviceStatus = new ServiceStatus(); serviceStatus.dwCurrentState = ServiceState.SERVICE_START_PENDING; serviceStatus.dwWaitHint = 100000; SetServiceStatus(this.ServiceHandle, ref serviceStatus); // What the function really does string sourceDirectoriesKey = "Handler"; string outPutDirKey = "OutputDir"; string logSourceNameKey = "SourceName"; string logNameKey = "LogName"; string thumbnailSizeKey = "ThumbnailSize"; // Define the evant log, messages from this application will be writeen to. eventLog1 = new System.Diagnostics.EventLog(); if (!System.Diagnostics.EventLog.SourceExists(this.getAppConfigValue(logSourceNameKey))) { System.Diagnostics.EventLog.CreateEventSource( this.getAppConfigValue(logSourceNameKey), this.getAppConfigValue(logNameKey)); } eventLog1.Source = this.getAppConfigValue(logSourceNameKey); eventLog1.Log = this.getAppConfigValue(logNameKey); // Defime the service's timer this.timer = new System.Timers.Timer(); this.timer.Interval = 60000; // 60 seconds this.timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimer); // Define the logger this.logging = new LoggingService(); // Regidter the the logging model event o when a part of the program // send a request to the logging model in order to write a log. // the funtion writeLog will be invoked and it will write the massage to the event viewer. this.logging.MessageRecieved += this.writeLog; // Define the logging buffer helps to send logs to the clients LogingBuffer logsBuffer = new LogingBuffer(); this.logging.MessageRecieved += logsBuffer.AddLog; // Define the ImageModel int size = int.Parse(this.getAppConfigValue(thumbnailSizeKey)); this.modal = new ImageServiceModal(this.getAppConfigValue(outPutDirKey), size); // Define the controler this.controller = new ImageController(this.modal, logsBuffer, logging); // Define the ClientsManagget that will manage the coimunication with the diffrent clients. ClientsManager managger = new ClientsManager(this.controller, this.logging); // Define the cominication server this.comServer = new ComunicationServer("127.0.0.1", 8000, managger, this.logging); // Define the server string directories = this.getAppConfigValue(sourceDirectoriesKey); string[] directoryArray = directories.Split(';'); this.m_imageServer = new ImageServer(this.logging, this.controller, directoryArray, comServer, managger); eventLog1.WriteEntry("In OnStart"); this.timer.Start(); // Update the service state to Running. serviceStatus.dwCurrentState = ServiceState.SERVICE_RUNNING; SetServiceStatus(this.ServiceHandle, ref serviceStatus); }
public void Setup() { endPoint = new IPEndPoint(IPAddress.Parse("192.168.56.1"), 8008); listener = new Listener(endPoint); clientManager = new ClientsManager(); protocol = new DesktopClient.JsonProtocol(); desktopSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); }
public Server(Listener listener, ClientsManager clientManager) { this.listener = listener; this.clientManager = clientManager; listener.NewConnection += clientManager.AddClient; }
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { NetworkManager.StopServers(); ClientsManager.UnloadAll(); }
private void RunLoop() { if (Interlocked.CompareExchange(ref status, Status.Started, Status.Starting) != Status.Starting) { return; } Interlocked.Increment(ref timesStarted); try { //RESET while (Interlocked.CompareExchange(ref status, 0, 0) == Status.Started) { using (var redis = ClientsManager.GetReadOnlyClient()) { masterClient = redis; //Record that we had a good run... Interlocked.CompareExchange(ref noOfContinuousErrors, 0, noOfContinuousErrors); using (var subscription = redis.CreateSubscription()) { subscription.OnUnSubscribe = HandleUnSubscribe; subscription.OnMessage = (channel, msg) => { if (msg == Operation.ControlCommand) { var op = Interlocked.CompareExchange(ref doOperation, Operation.NoOp, doOperation); switch (op) { case Operation.Stop: Log.Debug("Stop Command Issued"); if (Interlocked.CompareExchange(ref status, Status.Stopped, Status.Started) != Status.Started) { Interlocked.CompareExchange(ref status, Status.Stopped, Status.Stopping); } Log.Debug("UnSubscribe From All Channels..."); subscription.UnSubscribeFromAllChannels(); //Un block thread. return; case Operation.Reset: subscription.UnSubscribeFromAllChannels(); //Un block thread. return; } } if (!string.IsNullOrEmpty(msg)) { OnMessage(channel, msg); } }; subscription.SubscribeToChannels(Channels); //blocks thread masterClient = null; } } } if (OnStop != null) { OnStop(); } } catch (Exception ex) { lastExMsg = ex.Message; Interlocked.Increment(ref noOfErrors); Interlocked.Increment(ref noOfContinuousErrors); if (Interlocked.CompareExchange(ref status, Status.Stopped, Status.Started) != Status.Started) { Interlocked.CompareExchange(ref status, Status.Stopped, Status.Stopping); } if (OnStop != null) { OnStop(); } if (this.OnError != null) { this.OnError(ex); } if (KeepAliveRetryAfterMs != null) { Thread.Sleep(KeepAliveRetryAfterMs.Value); if (Interlocked.CompareExchange(ref status, 0, 0) != Status.Disposed) { Start(); } } } }
private void Awake() { Instance = this; }
public override Packet OnPacketReceive(Packet receivedPacket) { NetworkError error = ClientsManager.RemoveClient((receivedPacket as ClientUnregisterPacket).Client); return(new ServerResponsePacket(error)); }