예제 #1
0
파일: Program.cs 프로젝트: treverson/prime
        static void Main(string[] args)
        {
            var logger = new ConsoleLogger();

            var dir = new DirectoryInfo("c://tmp//ipfs-ext");

            var pc = new ServerContext("..//..//..//..//..//..//instance/prime-server.config");

            var ctx = new IpfsInstanceContext(pc, new IpfsWin64(new IpfsWin64Extension()))
            {
                Logger = logger
            };

            var ipfs = new IpfsInstance(ctx);

            ipfs.Daemon.Start();

            /* cleanup */
            bool ConsoleEventCallback(int eventType)
            {
                if (eventType == 2)
                {
                    Stop(ipfs);
                }
                return(false);
            }

            handler = new ConsoleEventDelegate(ConsoleEventCallback);
            SetConsoleCtrlHandler(handler, true);
            /* cleanup */

            Console.ReadLine();
            Stop(ipfs);
        }
예제 #2
0
파일: IpfsWin.cs 프로젝트: renwoox/prime
        public override void Install(IpfsInstance instance)
        {
            if (!PackageInstallName.EndsWith(".zip"))
            {
                throw new Exception("The package specified '" + PackageInstallName + "' is not the expected .zip file.");
            }

            var zipInfo = new FileInfo(Path.Combine(instance.ExecutingDirectory.FullName, PackageInstallName));

            if (!zipInfo.Exists)
            {
                throw new Exception(zipInfo.FullName + " does not exist, unable to install IPFS for Windows.");
            }

            var tmp = instance.TempDirectory.EnsureTempSubDirectory();

            System.IO.Compression.ZipFile.ExtractToDirectory(zipInfo.FullName, tmp.FullName);

            var exe = new FileInfo(Path.Combine(tmp.FullName, Path.Combine("go-ipfs", NativeExecutable)));

            if (!exe.Exists)
            {
                throw new Exception(exe.FullName + " does not exist, package archive has unexpected structure. Unable to install IPFS for Windows.");
            }

            File.Copy(exe.FullName, instance.NativeExecutable.FullName);
            instance.NativeExecutable.Refresh();

            tmp.Delete(true);

            FirewallHelper.Instance.GrantAuthorization(instance.NativeExecutable.FullName, "prime-ipfs");
        }
예제 #3
0
        public void Main(ServerContext context)
        {
            var ctx = new IpfsInstanceContext(context, GetPlatformBase());

            IpfsInstance = new IpfsInstance(ctx);
            IpfsInstance.Start();
        }
예제 #4
0
        public void Main(ServerContext context)
        {
            var ctx  = new IpfsInstanceContext(context, GetPlatformBase());
            var ipfs = new IpfsInstance(ctx);

            Messenger = new IpfsMessenger(context, ipfs);
        }
예제 #5
0
파일: Program.cs 프로젝트: treverson/prime
 private static void Stop(IpfsInstance ipfs)
 {
     ipfs.Daemon.Stop();
     do
     {
         Thread.Sleep(1);
     } while (ipfs.Daemon.State() != IpFsDaemonState.Stopped && ipfs.Daemon.State() != IpFsDaemonState.System);
 }
예제 #6
0
 public IpfsMessenger(ServerContext context, IpfsInstance ipfs)
 {
     _context = context;
     _ipfs    = ipfs;
     _m       = context.M;
     _m.RegisterAsync <IpfsVersionRequest>(this, x => { _m.SendAsync(new IpfsVersionResponse()
         {
             Version = "Hello IPFS world!"
         }); });
 }
예제 #7
0
 public IpfsWindowsDaemon(IpfsInstance instance) : base(instance)
 {
     _instance    = instance;
     CurrentState = DaemonState.Stopped;
 }
예제 #8
0
파일: IpfsWin.cs 프로젝트: renwoox/prime
 public override IpfsDaemonBase GetDaemon(IpfsInstance instance)
 {
     return(new IpfsWindowsDaemon(instance));
 }
예제 #9
0
 public static void WaitTillRunning(this IpfsInstance instance, Action onRunning)
 {
     instance.Daemon.WaitTillRunning(onRunning);
 }
예제 #10
0
 public static T WaitTillRunning <T>(this IpfsInstance instance, Func <T> onRunning)
 {
     return(instance.Daemon.WaitTillRunning(onRunning));
 }
예제 #11
0
 public abstract void Install(IpfsInstance instance);
예제 #12
0
 public abstract IpfsDaemonBase GetDaemon(IpfsInstance instance);
예제 #13
0
파일: IpfsApi.cs 프로젝트: treverson/prime
 public IpfsApi(IpfsInstance instance)
 {
     _instance = instance;
 }
예제 #14
0
 protected IpfsDaemonBase(IpfsInstance instance)
 {
     Instance = instance;
 }