1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#!/usr/bin/env python
from datetime import datetime
from optparse import OptionParser
from circuits import Component, Debugger, Event, Timer
from circuits.node import Node
__version__ = '0.0.1'
USAGE = '%prog [options]'
VERSION = '%prog v' + __version__
def parse_options():
parser = OptionParser(usage=USAGE, version=VERSION)
parser.add_option(
'-b',
'--bind',
action='store',
type='string',
default='0.0.0.0:8000',
dest='bind',
help='Bind to address:[port]',
)
parser.add_option(
'-d',
'--debug',
action='store_true',
default=False,
dest='debug',
help='Enable debug mode',
)
opts, args = parser.parse_args()
return opts, args
class send_all_event(Event):
def __init__(self, infos):
super().__init__(infos)
class NodeServer(Component):
def init(self, args, opts):
if opts.debug:
Debugger().register(self)
if ':' in opts.bind:
address, port = opts.bind.split(':')
port = int(port)
else:
address, port = opts.bind, 8000
self.node = Node(port=port, server_ip=address).register(self)
def connect(self, sock, host, port):
print('Peer connected: %s:%d' % (host, port))
def disconnect(self, sock):
print('Peer disconnected: %s' % sock)
def ready(self, server, bind):
print('Server ready: %s:%d' % bind)
Timer(3, Event.create('send_all'), persist=True).register(self)
def send_all(self):
event = send_all_event(str(datetime.now()))
print('send: %s' % event)
self.node.server.send_all(event)
def main():
opts, args = parse_options()
# Configure and "run" the System.
NodeServer(args, opts).run()
if __name__ == '__main__':
main()
|