added --outgoing-conns argument for people who want to decrease bandwidth usage 9.0
authorForrest Voight <forrest@forre.st>
Thu, 8 Nov 2012 18:54:28 +0000 (13:54 -0500)
committerForrest Voight <forrest@forre.st>
Thu, 8 Nov 2012 18:56:03 +0000 (13:56 -0500)
p2pool/main.py
p2pool/node.py
p2pool/test/test_node.py

index 7eb6d3e..139c75d 100644 (file)
@@ -173,7 +173,13 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint):
             except:
                 log.err()
         
-        node.p2p_node = p2pool_node.P2PNode(node, args.p2pool_port, args.p2pool_conns, addrs, connect_addrs)
+        node.p2p_node = p2pool_node.P2PNode(node,
+            port=args.p2pool_port,
+            max_incoming_conns=args.p2pool_conns,
+            addr_store=addrs,
+            connect_addrs=connect_addrs,
+            desired_outgoing_conns=args.p2pool_outgoing_conns,
+        )
         node.p2p_node.start()
         
         def save_addrs():
@@ -392,6 +398,9 @@ def run():
     p2pool_group.add_argument('--max-conns', metavar='CONNS',
         help='maximum incoming connections (default: 40)',
         type=int, action='store', default=40, dest='p2pool_conns')
+    p2pool_group.add_argument('--outgoing-conns', metavar='CONNS',
+        help='outgoing connections (default: 10)',
+        type=int, action='store', default=10, dest='p2pool_outgoing_conns')
     
     worker_group = parser.add_argument_group('worker interface')
     worker_group.add_argument('-w', '--worker-port', metavar='PORT or ADDR:PORT',
@@ -478,6 +487,9 @@ def run():
     if args.p2pool_port is None:
         args.p2pool_port = net.P2P_PORT
     
+    if args.p2pool_outgoing_conns > 10:
+        parser.error('''--outgoing-conns can't be more than 10''')
+    
     if args.worker_endpoint is None:
         worker_endpoint = '', net.WORKER_PORT
     elif ':' not in args.worker_endpoint:
index 729438b..ef60fb1 100644 (file)
@@ -11,18 +11,14 @@ from p2pool.util import deferral, variable
 
 
 class P2PNode(p2p.Node):
-    def __init__(self, node, p2pool_port, p2pool_conns, addrs, connect_addrs):
+    def __init__(self, node, **kwargs):
         self.node = node
         p2p.Node.__init__(self,
             best_share_hash_func=lambda: node.best_share_var.value,
-            port=p2pool_port,
             net=node.net,
-            addr_store=addrs,
-            connect_addrs=connect_addrs,
-            max_incoming_conns=p2pool_conns,
             known_txs_var=node.known_txs_var,
             mining_txs_var=node.mining_txs_var,
-        )
+        **kwargs)
     
     def handle_shares(self, shares, peer):
         if len(shares) > 5:
index fe5226a..3f53200 100644 (file)
@@ -140,7 +140,7 @@ class MiniNode(object):
         self.n = node.Node(factory, bitcoind, [], [], net)
         yield self.n.start()
         
-        self.n.p2p_node = node.P2PNode(self.n, 0, 1000000, {}, [('127.0.0.1', peer_port) for peer_port in peer_ports])
+        self.n.p2p_node = node.P2PNode(self.n, port=0, max_incoming_conns=1000000, addr_store={}, connect_addrs=[('127.0.0.1', peer_port) for peer_port in peer_ports])
         self.n.p2p_node.start()
         
         wb = work.WorkerBridge(node=self.n, my_pubkey_hash=random.randrange(2**160), donation_percentage=random.uniform(0, 10), merged_urls=merged_urls, worker_fee=3)