public void AddProject(RenderProject project) { project.ProjectId = (RenderProject.NextProjectId++); project.Owner = User; project.GenerateRenderJobs(); ServerServices.AddProject(project); }
public void Startup() { ServerServices.AddMessage(0, "Unlimited nodes."); CheckTimeoutThread = new Thread(CheckTimeout); CheckTimeoutThread.IsBackground = true; CheckTimeoutThread.Start(); ServerServices.AddMessage(0, "Starting up..."); ServerServices.AddMessage(0, "Finding LW supported file formats..."); LoadFileFormats(); ServerServices.AddMessage(0, "Setting up the server..."); SetupService(); AutoSetupServer = new BroadcastListener(Port); ServerServices.AddMessage(0, "Autodiscovery server running at UDP port 61111"); if (OfferWeb) { WebServer = new WebServer(this, OfferWebPort); } foreach (MapDrive mapDrive in _mappedDrives) { mapDrive.Mount(); } }
private void CheckTimeout() { while (true) { Thread.Sleep(300); ServerServices.CheckTimedOutClients(); } }
private void SetupService() { if (AutoOfferPort) { for (Port = 2080; Port < 60000; Port++) { try { BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider(); serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider(); IDictionary props = new Hashtable(); props["port"] = Port; Channel = new TcpChannel(props, clientProv, serverProv); break; } catch (Exception ex) { logger.Error(ex, "Error finding free port"); } } } else { try { BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider(); serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider(); IDictionary props = new Hashtable(); props["port"] = Port; Channel = new TcpChannel(props, clientProv, serverProv); } catch (Exception ex) { logger.Error(ex, "Error opening TCP channel"); ServerServices.AddMessage(1, "Cannot use port " + Port); return; } } ChannelServices.RegisterChannel(Channel, false); // Register ServerServices if (!RemotingConfiguration.IsActivationAllowed(typeof(ServerServices))) { RemotingConfiguration.RegisterActivatedServiceType(typeof(ServerServices)); } // Register MasterServer if (!RemotingConfiguration.IsActivationAllowed(typeof(MasterServer))) { RemotingConfiguration.RegisterActivatedServiceType(typeof(MasterServer)); } ServerServices.AddMessage(0, "Server running at port " + Port); }
public void Shutdown() { foreach (MapDrive mapDrive in _mappedDrives) { mapDrive.Unmount(); } ServerServices.SaveAllNodeConfig(); ChannelServices.UnregisterChannel(Channel); AddMessage(0, "Shutting down..."); }
public EventBridge(ServerServices.StatusClientChange clientStatus, ServerServices.StatusProjectChange projectStatus, ServerServices.StatusFinishedChange finishedStatus, ServerServices.StatusFinishedFrameChange imagePreview, ServerServices.StatusStringChange messageConsumer, SendLogJob.LogReceiver logReceiver) { _clientStatus = clientStatus; _projectStatus = projectStatus; _finishedStatus = finishedStatus; _imagePreview = imagePreview; _messageConsumer = messageConsumer; _logReceiver = logReceiver; }
public void ReplaceConfigs(List <ConfigSet> configs) { MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, configs); stream.Position = 0; List <ConfigSet> newConfigs = (List <ConfigSet>)formatter.Deserialize(stream); stream.Dispose(); ServerServices.Configs = newConfigs; ServerServices.CheckClientConfigs(); }
public WebServer(MasterServer server, int port) { _server = server; try { _listener = new TcpListener(IPAddress.Any, port); _listener.Start(10); _needToStop = false; _threadListener = new Thread(StartAccepting); _threadListener.IsBackground = true; _threadListener.Start(); } catch (Exception ex) { Debug.WriteLine("Cannot start web server: " + ex); ServerServices.AddMessage(1, "Cannot start web server on port " + port); return; } ServerServices.AddMessage(0, "Web server ready to accept connections on port " + port); }
private bool AttemptServerConnect(string server, int port) { for (int i = 0; i < 3; i++) { try { _server = (ServerServices)Activator.CreateInstance(typeof(ServerServices), null, new object[] { new UrlAttribute("tcp://" + server + ":" + port) }); if (_server.IsWorking()) { return(true); } Thread.Sleep(100); } catch (Exception ex) { _server = null; logger.Error(ex, "Error connecting to the server"); } } return(false); }
public void SetClientActivationTime(int id, string activationTime) { ServerServices.SetClientActivationTime(id, activationTime); }
public void SetClientConfig(int id, int newConfig) { ServerServices.SetClientConfig(id, newConfig); }
public void SetClientPriority(int id, ProcessPriorityClass priority) { ServerServices.SetClientPriority(id, priority); }
public void ResumeProject(int id) { ServerServices.ResumeProject(id); }
public void AddFinishedStatus(ServerServices.StatusFinishedChange finishedStatus) { _finishedStatus = finishedStatus; ServerServices.FinishedStatus += finishedStatus; }
public List <string> GetOldMessages() { return(ServerServices.GetOldMessages()); }
public void AddProjectStatus(ServerServices.StatusProjectChange projectStatus) { _projectStatus = projectStatus; ServerServices.ProjectStatus += projectStatus; }
public void AddMessageConsumer(ServerServices.StatusStringChange messageConsumer) { _messageConsumer = messageConsumer; ServerServices.MessageConsumer += messageConsumer; }
public void AddImagePreview(ServerServices.StatusFinishedFrameChange imagePreview) { _imagePreview = imagePreview; ServerServices.ImagePreviewStatus += imagePreview; }
private void ConnectToServer(object obj) { if (Settings.ServerHost == "" || Settings.AutoServerFinder) { BroadcastFinder finder = new BroadcastFinder(); Settings.ServerPort = finder.Port; Settings.ServerHost = finder.Server; } if (_channel == null) { _channel = new TcpChannel(); ChannelServices.RegisterChannel(_channel, false); } for (int i = 0; i < 10; i++) { try { _server = (ServerServices)Activator.CreateInstance(typeof(ServerServices), null, new object[] { new UrlAttribute("tcp://" + Settings.ServerHost + ":" + Settings.ServerPort) }); if (_server.IsWorking()) break; Thread.Sleep(100); } catch (Exception) { _server = null; // Don't log this error as this is expected if the server isn't runningB } } if (_server == null) { if (_setupToDo) AddMessage(1, "Cannot connect to the server. Will retry in 5 seconds."); Thread.Sleep(5000); ThreadPool.QueueUserWorkItem(ConnectToServer); } else { lock (_lock) { int bitsize = Environment.Is64BitOperatingSystem ? 64 : 32; _server.RegisterClient(Environment.MachineName, GetIP(), Settings.RenderPriority, bitsize); } AddMessage(0, "Connected to the server " + Settings.ServerHost + " on port " + Settings.ServerPort + "."); try { if (_setupToDo) _server.SetCurrentJob("Starting up"); } catch (Exception ex) { _server = null; if (_setupToDo) AddMessage(1, "Cannot connect to the server. Will retry in 5 seconds."); Thread.Sleep(5000); ThreadPool.QueueUserWorkItem(ConnectToServer); logger.Error(ex, "Error connecting to the server"); } } }
public List <ClientConnection> GetConnectedHosts() { return(ServerServices.GetConnectedHosts()); }
public void AddClientStatus(ServerServices.StatusClientChange clientStatus) { _clientStatus = clientStatus; ServerServices.ClientStatus += clientStatus; }
public List <FinishedFrame> GetOldFrames() { return(ServerServices.GetOldFrames()); }
public void AddPriorityJob(int clientId, Job j) { ServerServices.AddPriorityJob(clientId, j); }
public List <RenderProject> GetProjects() { return(ServerServices.GetProjects()); }
public RenderProject GetProject(int projectId) { return(ServerServices.GetProject(projectId)); }
public void PauseProject(int id) { ServerServices.PauseProject(id); }
public bool IsProjectPaused(int id) { return(ServerServices.IsProjectPaused(id)); }
public void StopProject(int id) { ServerServices.StopProject(id); }
public void ResumeClient(int id) { ServerServices.ResumeClient(id); }
public ProcessPriorityClass GetClientPriority(int id) { return(ServerServices.GetClientPriority(id)); }
private void RetreiveJobs() { if (_server == null) return; try { if (_server.KeepAlive() == false) { try { _server.Unregister(); } catch (Exception ex) { logger.Error(ex, "Error server.Unregister"); } _server = null; ThreadPool.QueueUserWorkItem(ConnectToServer); return; } // Checks if we have any priority jobs to execute. If yes do it ASAP if (_server.HasPriorityJobs()) { List<Job> newJobs = _server.GetPriorityJobs(); foreach (Job j in newJobs) { j.SetServer(_server); j.ExecuteJob(AddMessage, _jobs); } } lock (_jobs) { if (_setupToDo) DoSetup(); else if (!_readyToStart && !_setupToDo && _jobs.Count == 0) { AddMessage(0, "Client ready."); _setupTime.Stop(); AddMessage(0, "Startup and setup took " + _setupTime.Elapsed.TotalSeconds + " sec(s)."); _readyToStart = true; } else if (_jobs.Count > 0) return; } if (IsWorking) return; // Checks if we have new jobs to do if (_server.HasJobs()) { // If yes, lock the jobs queue and add the new one lock (_jobs) { List<Job> newJobs = _server.GetJobs(); foreach (Job j in newJobs) _jobs.Enqueue(j); } } } catch (Exception ex) { logger.Error(ex, "Error retrieving jobs"); try { if (_server != null) _server.KeepAlive(); } catch { _server = null; AddMessage(1, "Lost contact with Server"); ThreadPool.QueueUserWorkItem(ConnectToServer); } } }
public void PauseClient(int id) { ServerServices.PauseClient(id); }
public void RemoveFinished(RenderProject project) { ServerServices.RemoveFinished(project, true); }
public bool IsClientPaused(int id) { return(ServerServices.IsClientPaused(id)); }
public void RemoveAllFinished() { ServerServices.RemoveAllFinished(true); }
public string GetClientActivationTime(int id) { return(ServerServices.GetClientActivationTime(id)); }
public void ReplaceProject(int projectId, RenderProject project) { project.GenerateRenderJobs(); ServerServices.ReplaceProject(projectId, project); }
public void AddMessage(int icon, string msg) { ServerServices.AddMessage(icon, msg); }
private bool AttemptServerConnect(string server, int port) { for (int i = 0; i < 3; i++) { try { _server = (ServerServices) Activator.CreateInstance(typeof (ServerServices), null, new object[] {new UrlAttribute("tcp://" + server + ":" + port)}); if (_server.IsWorking()) return true; Thread.Sleep(100); } catch (Exception ex) { _server = null; logger.Error(ex, "Error connecting to the server"); } } return false; }