Пример #1
0
        private static void Run(RunOptions options)
        {
            var log      = new ConsoleLog();
            var instance = new TerabInstance(log);

            var config = new TerabConfig
            {
                Layer1Path = options.Layer1Path,
                Layer3Path = string.Empty,
                Port       = 0, // auto-selecting port
            };

            instance.SetupStores(config);
            instance.SetupNetwork(config);
            instance.SetupControllers();

            try
            {
                instance.Start();
                Thread.Sleep(500);

                var localEndpoint = new IPEndPoint(IPAddress.Loopback, instance.Port);
                DoBenchmark(localEndpoint, log);
            }
            finally
            {
                instance.Stop();
            }
        }
Пример #2
0
        public static void Init(InitOptions options)
        {
            const long gb = 1_000_000_000;

            _log = new ConsoleLog();
            _log.Log(LogSeverity.Info, " ### Initialize terab using config file ### ");
            var config = TerabConfigReader.Read(options.ConfigFullPath);

            TerabInstance.InitializeFiles(config, options.Layer1SizeInGB * gb, options.Layer2SizeInGB * gb, _log);
            var instance = new TerabInstance(_log);

            instance.SetupStores(config);
            _log.Log(LogSeverity.Info, " ### Initialization done. ### ");
        }
Пример #3
0
        public static void Run(RunOptions options)
        {
            _log = new ConsoleLog();
            _log.Log(LogSeverity.Info, " ### Running the server ### ");
            _log.Log(LogSeverity.Info, $"   ProcessID: {Process.GetCurrentProcess().Id}");

            var config = TerabConfigReader.Read(options.ConfigFullPath);

            var terab = new TerabInstance(_log);

            terab.SetupNetwork(config);
            terab.SetupStores(config);
            terab.SetupControllers();

            _log.Log(LogSeverity.Info, $"Starting the server listening to {config.IpAddress} on port {config.Port}");
            terab.Start();

            _log.Log(LogSeverity.Info, $"Server started - press Ctrl-C to exit");

            AppDomain.CurrentDomain.ProcessExit += (sender, args) => _log.Log(LogSeverity.Info, "App domain exit");

            var readLoop = new CancellationTokenSource();

            Console.CancelKeyPress += (o, args) =>
            {
                terab.Stop();
                readLoop.Cancel();
            };
            try
            {
                while (!readLoop.IsCancellationRequested)
                {
                    Console.ReadKey();
                }
            }
            catch (Exception e)
            {
                _log.Log(LogSeverity.Error, "an error occurred");
                _log.Log(LogSeverity.Error, e.Message);
            }
            finally
            {
                _log.Log(LogSeverity.Info, "bye bye");
            }
        }
Пример #4
0
        private TerabInstance GetInstance()
        {
            var instance = new TerabInstance(_log);

            instance.OutpointHash = new IdentityHash();

            instance.ChainStore = new VolatileChainStore();

            instance.CoinStores = new ICoinStore[4];
            for (var i = 0; i < instance.CoinStores.Length; i++)
            {
                instance.CoinStores[i] = new VolatileCoinStore();
            }

            instance.SetupControllers();

            return(instance);
        }
Пример #5
0
        private static void Init(InitOptions options)
        {
            var log = new ConsoleLog();

            var config = new TerabConfig
            {
                Layer1Path = options.Layer1Path,
                Layer3Path = string.Empty,
                Port       = 0, // auto-selecting port
            };

            TerabInstance.InitializeFiles(config, (long)(options.Layer1SizeInGB * 1e9), log: log);

            var instance = new TerabInstance(log);

            // Inner initialization triggered by 'SetupStores'.
            instance.SetupStores(config);
        }