public Server(IPAddress serverIp) { Workers = new List <WorkerInfo>(); Clients = new List <Uri>(); TaskService = new ServerTaskService(this); ClientRegistrationService = new ClientRegistrationService(this); WorkerRegistrationService = new WorkerRegistrationService(this); ConnectionControl = new ServerConnectionControl(this); TaskLibraryManager = new TaskLibraryManager(); TaskLibraryManager.Load(); bool hostCreated = false; while (!hostCreated) { try { ServerUri = RemoteConnection.CreateUri(serverIp, Port++); CheckConnectionHost = RemoteConnection.CreateHost(UriTemplates.CreateCheckConnectionUri(ServerUri), typeof(ICheckConnection), typeof(CheckConnection)); hostCreated = true; } catch { } } TaskServiceHost = RemoteConnection.CreateHost(UriTemplates.CreateTasksUri(ServerUri), typeof(IServerTaskService), TaskService); ClientRegistrationHost = RemoteConnection.CreateHost(UriTemplates.CreateClientRegistrationUri(ServerUri), typeof(IClientRegistrationService), ClientRegistrationService); WorkerRegistrationHost = RemoteConnection.CreateHost(UriTemplates.CreateWorkerRegistrationUri(ServerUri), typeof(IWorkerRegistrationService), WorkerRegistrationService); TaskLibraryHost = RemoteConnection.CreateHost(UriTemplates.CreateLibrariesUri(ServerUri), typeof(IDistributedTaskLibraryService), typeof(DistributedTaskLibraryService)); CheckConnectionHost = RemoteConnection.CreateHost(UriTemplates.CreateCheckConnectionUri(ServerUri), typeof(ICheckConnection), typeof(CheckConnection)); CheckConnectionHost.Open(); WorkerRegistrationHost.Open(); TaskLibraryHost.Open(); }
public void Close() { var registration = RemoteConnection.CreateProxy <IClientRegistrationService>(UriTemplates.CreateClientRegistrationUri(ServerUri)); registration.Disconnect(LocalUri); DistributedTaskLibraryHost.Close(); ConnectionControl.Disconnect(); Dispose(); }
public ClientServerConnection(IPAddress localIp, IPAddress serverIp, int serverPort) : base(localIp, serverIp, serverPort) { Logging.WriteLog("Connecting to server on " + ServerUri); DistributedTaskLibraryHost = RemoteConnection.CreateHost(UriTemplates.CreateLibrariesUri(LocalUri), typeof(IDistributedTaskLibraryService), typeof(DistributedTaskLibraryService)); DistributedTaskLibraryHost.Open(); try { var registration = RemoteConnection.CreateProxy <IClientRegistrationService>(UriTemplates.CreateClientRegistrationUri(ServerUri)); registration.Connect(LocalUri); } catch (Exception e) { DistributedTaskLibraryHost.Close(); Dispose(); throw new NoServerConnectionException(); } ConnectionControl = new ConnectionControl(this, ServerUri); }