/// <summary> /// Release any peer class resources. /// </summary> public void Close() { try { _closeGuardMutex.WaitOne(); if (Connected) { Log.Logger.Info($"Closing down Peer {Encoding.ASCII.GetString(RemotePeerID)}..."); Tc.UnMergePieceBitfield(this); if (Tc.peerSwarm.ContainsKey(Ip)) { if (Tc.peerSwarm.TryRemove(Ip, out Peer _)) { Log.Logger.Info($"Dead Peer {Ip} removed from swarm."); } } Connected = false; Log.Logger.Info($"Closed down {Encoding.ASCII.GetString(RemotePeerID)}."); } } catch (Exception ex) { Log.Logger.Error(ex); } _network?.Close(); _network = null; _closeGuardMutex.ReleaseMutex(); }
static void Main(string[] args) { var serviceProvider = ConfigureForMongoDB("DigitalCurrency", 10500); //var serviceProvider = ConfigureForLiteDb("node.db", 10500); _host = serviceProvider.GetService <IBlockchainNode>(); _miner = serviceProvider.GetService <IBlockMiner>(); _network = serviceProvider.GetService <IPeerNetwork>(); _sigService = serviceProvider.GetService <ISignatureService>(); _addressEncoder = serviceProvider.GetService <IAddressEncoder>(); _txnRepo = serviceProvider.GetService <ICustomInstructionRepository>(); _blockRepo = serviceProvider.GetService <IBlockRepository>(); _txnBuilder = serviceProvider.GetService <ITransactionBuilder>(); Console.Write("Enter passphrase:"); var phrase = Console.ReadLine(); var keys = _sigService.GetKeyPairFromPhrase(phrase); var address = _addressEncoder.EncodeAddress(keys.PublicKey, 0); Console.WriteLine($"Your address is {address}"); _network.Open(); PrintHelp(); while (true) { Console.Write(">"); var command = Console.ReadLine(); if (command == "exit") { break; } RunCommand(command, keys); } _network.Close(); }