コード例 #1
0
ファイル: Server.cs プロジェクト: tweelisk/iop-profile-server
        public override void Shutdown()
        {
            log.Info("()");

            ShutdownSignaling.SignalShutdown();

            List <IncomingClient> clients = clientList.GetNetworkClientList();

            try
            {
                log.Info("Closing {0} existing client connections of role servers.", clients.Count);
                foreach (IncomingClient client in clients)
                {
                    client.CloseConnection();
                }
            }
            catch
            {
            }

            foreach (TcpRoleServer server in tcpServers.Values)
            {
                if (server.IsRunning)
                {
                    server.Stop();
                }
            }
            tcpServers.Clear();

            log.Info("(-)");
        }
コード例 #2
0
        public override bool Init()
        {
            log.Info("()");

            bool res = false;

            try
            {
                imageManager = this;

                Configuration.Default.AddImageFormat(new JpegFormat());
                Configuration.Default.AddImageFormat(new PngFormat());

                if (InitializeReferenceCounter() &&
                    DeleteUnusedImages())
                {
                    RegisterCronJobs();

                    res         = true;
                    Initialized = true;
                }
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #3
0
        public override bool Init()
        {
            log.Info("()");

            bool res = false;

            try
            {
                if (base.Init())
                {
                    relayList = new RelayList();

                    RegisterCronJobs();

                    res         = true;
                    Initialized = true;
                }
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #4
0
        public override bool Init()
        {
            log.Info("()");

            bool res = false;

            try
            {
                if (DeleteUninitializedNeighbors() &&
                    DeleteUninitializedFollowers() &&
                    DeleteInvalidNeighborIdentities() &&
                    DeleteInvalidNeighborhoodActions())
                {
                    res         = true;
                    Initialized = true;
                }
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #5
0
ファイル: CanApi.cs プロジェクト: tweelisk/iop-profile-server
        public override bool Init()
        {
            log.Info("()");

            bool res = false;

            try
            {
                apiUrl = string.Format("http://{0}:{1}/api/v0/", Base.Configuration.CanEndPoint.Address, Base.Configuration.CanEndPoint.Port);

                res         = true;
                Initialized = true;
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #6
0
        public override bool Init()
        {
            log.Info("()");

            bool res = false;

            try
            {
                delayedStartupThread = new Thread(new ThreadStart(DelayedStartupThread));
                delayedStartupThread.Start();

                res         = true;
                Initialized = true;
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();

                if ((delayedStartupThread != null) && !delayedStartupThreadFinished.WaitOne(10000))
                {
                    log.Error("Delayed startup thread did not terminated in 10 seconds.");
                }
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #7
0
ファイル: CanApi.cs プロジェクト: tweelisk/iop-profile-server
        public override void Shutdown()
        {
            log.Info("()");

            ShutdownSignaling.SignalShutdown();

            log.Info("(-)");
        }
コード例 #8
0
        public override void Shutdown()
        {
            log.Info("()");

            ShutdownSignaling.SignalShutdown();

            if ((initThread != null) && !initThreadFinished.WaitOne(25000))
            {
                log.Error("Init thread did not terminate in 25 seconds.");
            }

            log.Info("(-)");
        }
コード例 #9
0
        public override bool Init()
        {
            log.Info("()");

            bool res = false;

            try
            {
                foreach (CronJob job in jobDefinitions)
                {
                    job.Timer = new Timer(SignalTimerCallback, job.Event, job.StartDelay, job.Interval);
                    jobs.Add(job.Name, job);
                }

                executiveThread = new Thread(new ThreadStart(ExecutiveThread));
                executiveThread.Start();

                res         = true;
                Initialized = true;
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();

                foreach (CronJob job in jobs.Values)
                {
                    if (job.Timer != null)
                    {
                        job.Timer.Dispose();
                    }
                    job.Timer = null;
                }

                if ((executiveThread != null) && !executiveThreadFinished.WaitOne(10000))
                {
                    log.Error("Executive thread did not terminated in 10 seconds.");
                }
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #10
0
        public override bool Init()
        {
            log.Info("()");

            bool res = false;

            try
            {
                canIpnsLastSequenceNumber = Config.Configuration.CanIpnsLastSequenceNumber;
                api = new CanApi(Config.Configuration.CanEndPoint, ShutdownSignaling);

                // Construct profile server's contact information CAN object.
                canContactInformation = new CanProfileServerContact()
                {
                    PublicKey   = ProtocolHelper.ByteArrayToByteString(Config.Configuration.Keys.PublicKey),
                    IpAddress   = ProtocolHelper.ByteArrayToByteString(Config.Configuration.ExternalServerAddress.GetAddressBytes()),
                    PrimaryPort = (uint)Config.Configuration.ServerRoles.GetRolePort((uint)ServerRole.Primary)
                };


                initThread = new Thread(new ThreadStart(InitThread));
                initThread.Start();

                RegisterCronJobs();

                res         = true;
                Initialized = true;
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();

                if ((initThread != null) && !initThreadFinished.WaitOne(25000))
                {
                    log.Error("Init thread did not terminated in 25 seconds.");
                }
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #11
0
        public override void Shutdown()
        {
            log.Info("()");

            ShutdownSignaling.SignalShutdown();

            if (client != null)
            {
                client.Dispose();
            }

            if ((locConnectionThread != null) && !locConnectionThreadFinished.WaitOne(10000))
            {
                log.Error("LOC connection thread did not terminated in 10 seconds.");
            }

            log.Info("(-)");
        }
コード例 #12
0
        public override bool Init()
        {
            log.Info("()");

            bool res = false;

            try
            {
                canApi = (CanApi)Base.ComponentDictionary["Network.ContentAddressNetwork.CanApi"];

                // Construct profile server's contact information CAN object.
                canContactInformation = new CanProfileServerContact()
                {
                    PublicKey   = ProtocolHelper.ByteArrayToByteString(Base.Configuration.Keys.PublicKey),
                    IpAddress   = ProtocolHelper.ByteArrayToByteString(Base.Configuration.ServerInterface.GetAddressBytes()),
                    PrimaryPort = (uint)Base.Configuration.ServerRoles.GetRolePort(ServerRole.Primary)
                };


                initThread = new Thread(new ThreadStart(InitThread));
                initThread.Start();

                res         = true;
                Initialized = true;
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();

                if ((initThread != null) && !initThreadFinished.WaitOne(25000))
                {
                    log.Error("Init thread did not terminated in 25 seconds.");
                }
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #13
0
ファイル: Server.cs プロジェクト: furszy/iop-profile-server
        public override void Shutdown()
        {
            log.Info("()");

            ShutdownSignaling.SignalShutdown();

            if (checkInactiveClientConnectionsTimer != null)
            {
                checkInactiveClientConnectionsTimer.Dispose();
            }
            checkInactiveClientConnectionsTimer = null;

            if ((serversMaintenanceThread != null) && !serversMaintenanceThreadFinished.WaitOne(10000))
            {
                log.Error("Servers maintenance thread did not terminated in 10 seconds.");
            }

            List <Client> clients = clientList.GetNetworkClientList();

            try
            {
                log.Info("Closing {0} existing client connections of role servers.", clients.Count);
                foreach (Client client in clients)
                {
                    client.CloseConnection().Wait();
                }
            }
            catch
            {
            }

            foreach (TcpRoleServer server in tcpServers.Values)
            {
                if (server.IsRunning)
                {
                    server.Stop();
                }
            }
            tcpServers.Clear();

            log.Info("(-)");
        }
コード例 #14
0
        public override void Shutdown()
        {
            log.Info("()");

            ShutdownSignaling.SignalShutdown();

            lock (jobsLock)
            {
                foreach (CronJob job in jobs.Values)
                {
                    job.Dispose();
                }
            }

            if ((executiveThread != null) && !executiveThreadFinished.WaitOne(10000))
            {
                log.Error("Executive thread did not terminated in 10 seconds.");
            }

            log.Info("(-)");
        }
コード例 #15
0
        public override bool Init()
        {
            log.Info("()");

            bool res = false;

            try
            {
                client = new LocClient(Config.Configuration.LocEndPoint, new LocMessageProcessor(), ShutdownSignaling);

                this.Location = Config.Configuration.LocLocation;

                locConnectionThread = new Thread(new ThreadStart(LocConnectionThread));
                locConnectionThread.Start();

                RegisterCronJobs();

                res         = true;
                Initialized = true;
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();

                if ((locConnectionThread != null) && !locConnectionThreadFinished.WaitOne(10000))
                {
                    log.Error("LOC connection thread did not terminated in 10 seconds.");
                }
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #16
0
ファイル: Server.cs プロジェクト: furszy/iop-profile-server
        public override bool Init()
        {
            log.Info("()");

            bool res   = false;
            bool error = false;

            try
            {
                clientList = new ClientList();

                checkInactiveClientConnectionsTimer = new Timer(CheckInactiveClientConnectionsTimerCallback, null, CheckInactiveClientConnectionsTimerInterval, CheckInactiveClientConnectionsTimerInterval);

                serversMaintenanceThread = new Thread(new ThreadStart(ServersMaintenanceThread));
                serversMaintenanceThread.Start();

                foreach (RoleServerConfiguration roleServer in Base.Configuration.ServerRoles.RoleServers.Values)
                {
                    if (roleServer.IsTcpServer)
                    {
                        IPEndPoint    endPoint = new IPEndPoint(Base.Configuration.ServerInterface, roleServer.Port);
                        TcpRoleServer server   = new TcpRoleServer(endPoint, roleServer.Encrypted, roleServer.Roles);
                        tcpServers.Add(server.EndPoint.Port, server);
                    }
                    else
                    {
                        log.Fatal("UDP servers are not implemented.");
                        error = true;
                        break;
                    }
                }


                foreach (TcpRoleServer server in tcpServers.Values)
                {
                    if (!server.Start())
                    {
                        log.Error("Unable to start TCP server {0}.", server.EndPoint);
                        error = true;
                        break;
                    }
                }

                if (!error)
                {
                    res         = true;
                    Initialized = true;
                }
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();

                if (checkInactiveClientConnectionsTimer != null)
                {
                    checkInactiveClientConnectionsTimer.Dispose();
                }
                checkInactiveClientConnectionsTimer = null;

                foreach (TcpRoleServer server in tcpServers.Values)
                {
                    if (server.IsRunning)
                    {
                        server.Stop();
                    }
                }
                tcpServers.Clear();
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #17
0
        public override bool Init()
        {
            log.Info("()");

            bool res   = false;
            bool error = false;

            try
            {
                ConfigBase config = (ConfigBase)Base.ComponentDictionary[ConfigBase.ComponentName];
                serverId   = Crypto.Sha256(((KeysEd25519)config.Settings["Keys"]).PublicKey);
                clientList = new IncomingClientList();

                foreach (RoleServerConfiguration roleServer in ((ConfigServerRoles)config.Settings["ServerRoles"]).RoleServers.Values)
                {
                    if (roleServer.IsTcpServer)
                    {
                        IPEndPoint endPoint = new IPEndPoint((IPAddress)config.Settings["BindToInterface"], roleServer.Port);
                        TcpRoleServer <TIncomingClient> server = new TcpRoleServer <TIncomingClient>(endPoint, roleServer.Encrypted, roleServer.Roles, roleServer.ClientKeepAliveTimeoutMs);
                        tcpServers.Add(server.EndPoint.Port, server);
                    }
                    else
                    {
                        log.Fatal("UDP servers are not supported.");
                        error = true;
                        break;
                    }
                }


                foreach (TcpRoleServer <TIncomingClient> server in tcpServers.Values)
                {
                    if (!server.Start())
                    {
                        log.Error("Unable to start TCP server {0}.", server.EndPoint);
                        error = true;
                        break;
                    }
                }

                if (!error)
                {
                    res         = true;
                    Initialized = true;
                }
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();

                foreach (TcpRoleServer <TIncomingClient> server in tcpServers.Values)
                {
                    if (server.IsRunning)
                    {
                        server.Stop();
                    }
                }
                tcpServers.Clear();
            }

            log.Info("(-):{0}", res);
            return(res);
        }
コード例 #18
0
ファイル: Server.cs プロジェクト: tweelisk/iop-profile-server
        public override bool Init()
        {
            log.Info("()");

            bool res   = false;
            bool error = false;

            try
            {
                serverId   = ProfileServerCrypto.Crypto.Sha256(Base.Configuration.Keys.PublicKey);
                clientList = new IncomingClientList();

                foreach (RoleServerConfiguration roleServer in Base.Configuration.ServerRoles.RoleServers.Values)
                {
                    if (roleServer.IsTcpServer)
                    {
                        IPEndPoint    endPoint = new IPEndPoint(Base.Configuration.ServerInterface, roleServer.Port);
                        TcpRoleServer server   = new TcpRoleServer(endPoint, roleServer.Encrypted, roleServer.Roles);
                        tcpServers.Add(server.EndPoint.Port, server);
                    }
                    else
                    {
                        log.Fatal("UDP servers are not supported.");
                        error = true;
                        break;
                    }
                }


                foreach (TcpRoleServer server in tcpServers.Values)
                {
                    if (!server.Start())
                    {
                        log.Error("Unable to start TCP server {0}.", server.EndPoint);
                        error = true;
                        break;
                    }
                }

                if (!error)
                {
                    res         = true;
                    Initialized = true;
                }
            }
            catch (Exception e)
            {
                log.Error("Exception occurred: {0}", e.ToString());
            }

            if (!res)
            {
                ShutdownSignaling.SignalShutdown();

                foreach (TcpRoleServer server in tcpServers.Values)
                {
                    if (server.IsRunning)
                    {
                        server.Stop();
                    }
                }
                tcpServers.Clear();
            }

            log.Info("(-):{0}", res);
            return(res);
        }