Example #1
0
		/// <summary>
		/// Configure the components of the wallet
		/// </summary>
		/// <param name="group">The group to use</param>
		public void Configure(NodesGroup group)
		{
			if(group == null)
				throw new ArgumentNullException("group");

			var parameters = group.NodeConnectionParameters;
			group.Requirements.MinVersion = ProtocolVersion.PROTOCOL_VERSION;
			group.Requirements.RequiredServices |= NodeServices.Network;

			var chain = parameters.TemplateBehaviors.Find<ChainBehavior>();
			if(chain == null)
			{
				chain = new ChainBehavior(new ConcurrentChain(_Parameters.Network));
				parameters.TemplateBehaviors.Add(chain);
			}
			if(chain.Chain.Genesis.HashBlock != _Parameters.Network.GetGenesis().GetHash())
				throw new InvalidOperationException("ChainBehavior with invalid network chain detected");

			var addrman = parameters.TemplateBehaviors.Find<AddressManagerBehavior>();
			if(addrman == null)
			{
				addrman = new AddressManagerBehavior(new AddressManager());
				parameters.TemplateBehaviors.Add(addrman);
			}

			var tracker = parameters.TemplateBehaviors.Find<TrackerBehavior>();
			if(tracker == null)
			{
				tracker = new TrackerBehavior(new Tracker(), chain.Chain);
				parameters.TemplateBehaviors.Add(tracker);
			}
			var wallet = FindWalletBehavior(parameters.TemplateBehaviors);
			if(wallet == null)
			{
				wallet = new WalletBehavior(this);
				parameters.TemplateBehaviors.Add(wallet);
			}
			var broadcast = parameters.TemplateBehaviors.Find<BroadcastHubBehavior>();
			if(broadcast == null)
			{
				broadcast = new BroadcastHubBehavior();
				parameters.TemplateBehaviors.Add(broadcast);
			}

			_Group = group;
			if(_ListenedTracker != null)
			{
				_ListenedTracker.NewOperation -= _ListenerTracked_NewOperation;
			}
			_ListenedTracker = tracker.Tracker;
			_ListenedTracker.NewOperation += _ListenerTracked_NewOperation;
		}
Example #2
0
        /// <summary>
        /// Configure the components of the wallet
        /// </summary>
        /// <param name="group">The group to use</param>
        public void Configure(NodesGroup group)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }

            var parameters = group.NodeConnectionParameters;

            group.Requirements.SupportSPV = true;

            var chain = parameters.TemplateBehaviors.Find <ChainBehavior>();

            if (chain == null)
            {
                chain = new ChainBehavior(new ConcurrentChain(_Parameters.Network));
                parameters.TemplateBehaviors.Add(chain);
            }
            if (chain.Chain.Genesis.HashBlock != _Parameters.Network.GetGenesis().GetHash())
            {
                throw new InvalidOperationException("ChainBehavior with invalid network chain detected");
            }

            var addrman = parameters.TemplateBehaviors.Find <AddressManagerBehavior>();

            if (addrman == null)
            {
                addrman = new AddressManagerBehavior(new AddressManager());
                parameters.TemplateBehaviors.Add(addrman);
            }

            var tracker = parameters.TemplateBehaviors.Find <TrackerBehavior>();

            if (tracker == null)
            {
                tracker = new TrackerBehavior(new Tracker(), chain.Chain);
                parameters.TemplateBehaviors.Add(tracker);
            }
            var wallet = FindWalletBehavior(parameters.TemplateBehaviors);

            if (wallet == null)
            {
                wallet = new WalletBehavior(this);
                parameters.TemplateBehaviors.Add(wallet);
            }
            var broadcast = parameters.TemplateBehaviors.Find <BroadcastHubBehavior>();

            if (broadcast == null)
            {
                broadcast = new BroadcastHubBehavior();
                parameters.TemplateBehaviors.Add(broadcast);
            }

            _Group = group;
            if (_ListenedTracker != null)
            {
                _ListenedTracker.NewOperation -= _ListenerTracked_NewOperation;
            }
            _ListenedTracker = tracker.Tracker;
            _ListenedTracker.NewOperation += _ListenerTracked_NewOperation;
        }