Example #1
0
        public Instance(Args args)
        {
            using (var disposer = new Disposer())
            {
                Logger.Trace("DbPath {0}", args.DbPath);
                Logger.Trace("Downloads {0}", args.Downloads);
                Logger.Trace("RestartDelay {0}ms", args.RestartDelay);
                Logger.Trace("EndPoint {0}", args.EndPoint);
                factory = new ShellFactory();
                factory.Add(new SystemScriptable());
                factory.Add(new RunnerScriptable(args.Downloads));
                factory.Add(new DownloadScriptable(args.Downloads));
                manager = new Manager(new Manager.Args
                {
                    RestartDelay = args.RestartDelay,
                    Root         = args.Downloads,
                    Database     = args.DbPath,
                });
                disposer.Push(manager);
                factory.Add(manager);
                listener = new Listener(new Listener.Args
                {
                    ShellFactory = factory,
                    EndPoint     = args.EndPoint,
                });
                disposer.Push(listener);
                factory.Add(listener);
                endpoint = listener.EndPoint;

                disposer.Push(Dispose); //ensure cleanup order
                listener.Start();
                disposer.Clear();
            }
        }