Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        public Connection(IPAddress localIp, IPAddress serverIp, int serverPort)
        {
            bool hostCreated = false;

            while (!hostCreated)
            {
                try
                {
                    LocalUri            = RemoteConnection.CreateUri(localIp, Port++);
                    CheckConnectionHost = RemoteConnection.CreateHost(UriTemplates.CreateCheckConnectionUri(LocalUri), typeof(ICheckConnection), typeof(CheckConnection));
                    CheckConnectionHost.Open();
                    hostCreated = true;
                }
                catch
                {
                }
            }
            ServerUri = RemoteConnection.CreateUri(serverIp, serverPort);
        }
Ejemplo n.º 3
0
        private void Control()
        {
            var service = RemoteConnection.CreateProxy <ICheckConnection>(UriTemplates.CreateCheckConnectionUri(ServerUri));

            while (Connected)
            {
                try
                {
                    service.Check();
                }
                catch
                {
                    Connected = false;
                }
                Thread.Sleep(TimeOut);
            }
            if (!Disconnected)
            {
                Logging.WriteLog("Connection lost");
                Connection.Dispose();
            }
        }
Ejemplo n.º 4
0
 public ConnectionMeasuring(Uri connection)
 {
     CheckedConnection = UriTemplates.CreateCheckConnectionUri(connection);
 }
Ejemplo n.º 5
0
        public void Control()
        {
            List <Uri> removedClientConnections = new List <Uri>();
            List <Uri> removedWorkerConnections = new List <Uri>();

            while (WorkerConnections.Count != 0 && ClientConnections.Count != 0)
            {
                removedWorkerConnections.Clear();
                removedClientConnections.Clear();
                lock (WorkerConnections)
                {
                    foreach (Uri connection in WorkerConnections)
                    {
                        try
                        {
                            var service = RemoteConnection.CreateProxy <ICheckConnection>(UriTemplates.CreateCheckConnectionUri(connection));
                            service.Check();
                        }
                        catch
                        {
                            removedWorkerConnections.Add(connection);
                        }
                    }
                    lock (Server.Workers)
                    {
                        foreach (Uri connection in removedWorkerConnections)
                        {
                            WorkerConnections.Remove(connection);
                            Server.Workers.Remove(Server.Workers.Find(info => info.WorkerUri == connection));
                        }
                    }
                }
                lock (ClientConnections)
                {
                    foreach (Uri connection in ClientConnections)
                    {
                        try
                        {
                            var service = RemoteConnection.CreateProxy <ICheckConnection>(UriTemplates.CreateCheckConnectionUri(connection));
                            service.Check();
                        }
                        catch
                        {
                            removedClientConnections.Add(connection);
                        }
                    }
                    lock (Server.Clients)
                    {
                        foreach (Uri connection in removedClientConnections)
                        {
                            ClientConnections.Remove(connection);
                            Server.Clients.Remove(Server.Clients.Find(uri => uri == connection));
                        }
                        if (Server.Clients.Count == 0)
                        {
                            Server.CloseClientConnection();
                        }
                    }
                }
                Thread.Sleep(TimeOut);
            }
        }