def main (
    database=':memory:', host='127.0.0.2', port=3999,
    precision=1.0, inactive=3.0, local=512, private=1, public=1,
    log_buffer_size=4096, anetlog_host='', anetlog_port=3998
    ):
    import time
    started = time.time ()
    from allegra import netstring, loginfo, tcp_server, ansqlite
    if anetlog_host:
            from allegra import anetlog
            anetlog.stdoe ((anetlog_host, anetlog_port))
    loginfo.log (
        'ansqlite - Copyright 2007 Laurent Szyster | Copyleft GPL 2.0', 'info'
        )
    conn, Dispatcher = ansqlite.open (database)
    ansql = Dispatcher.ansql 
    loads = ansqlite.loads
    for data in netstring.netpipe ((
        lambda r=sys.stdin.read: r (log_buffer_size)
        )):
        ansql (*loads(data)).close ()
    del ansql, loads
    listen = tcp_server.decorate (tcp_server.Listen (
        Dispatcher, (host, port), precision, max=5
        ), inactive, local, private, public)
    async_loop.catch (listen.server_shutdown)
    def finalize (listen):
        anetlog.disconnect ()
        conn.close ()
        
    listen.finalization = finalize
    del listen
    loginfo.log ('loaded in %f seconds' % (time.time () - started), 'info')
def main(database=':memory:',
         host='127.0.0.2',
         port=3999,
         precision=1.0,
         inactive=3.0,
         local=512,
         private=1,
         public=1,
         log_buffer_size=4096,
         anetlog_host='',
         anetlog_port=3998):
    import time
    started = time.time()
    from allegra import netstring, loginfo, tcp_server, ansqlite
    if anetlog_host:
        from allegra import anetlog
        anetlog.stdoe((anetlog_host, anetlog_port))
    loginfo.log('ansqlite - Copyright 2007 Laurent Szyster | Copyleft GPL 2.0',
                'info')
    conn, Dispatcher = ansqlite.open(database)
    ansql = Dispatcher.ansql
    loads = ansqlite.loads
    for data in netstring.netpipe(
        (lambda r=sys.stdin.read: r(log_buffer_size))):
        ansql(*loads(data)).close()
    del ansql, loads
    listen = tcp_server.decorate(
        tcp_server.Listen(Dispatcher, (host, port), precision, max=5),
        inactive, local, private, public)
    async_loop.catch(listen.server_shutdown)

    def finalize(listen):
        anetlog.disconnect()
        conn.close()

    listen.finalization = finalize
    del listen
    loginfo.log('loaded in %f seconds' % (time.time() - started), 'info')
def main (
    root='./log', host='127.0.0.2', port=3998, 
    mkdir=False, mkclean=False, precision=3.0
    ):
    import os, stat
    from allegra import loginfo, async_loop, async_server
    loginfo.log (
        'anetlog'
        ' - Copyright 2006-2007 Laurent A.V. Szyster'
        ' | Copyleft GPL 2.0', 'info'
        )
    paths = ('tmp', 'new')
    for path in ('/'.join((root, p)) for p in paths):
        try:
            assert stat.S_ISDIR (os.stat (path)[0])
        except:
            if mkdir:
                os.makedirs (path)
            else:
                raise Exception (path + ' does not exist')
            
    if mkclean:
        import glob
        for path in ('/'.join((root, p, '*')) for p in paths):
            for fn in glob.glob(path):
                os.remove (fn)
    if hasattr (os, 'link'):
        _mode = 'w'
        _link = os.link
    elif os.name == 'nt':
        _mode = 'wb'
        import win32file
        def _link (from_name, to_name):
            win32file.CopyFileW (from_name, to_name, True)
            
    else:
        raise Exception ('os.link or equivalent interface not available')

    if __debug__:
        from allegra import netstring, async_net
        class Dispatcher (async_net.Dispatcher):
            def writable (self): 
                return False
            
            def async_net_continue (self, data):
                self.anetlog ('%d:%s,' % (len (data), data))
                loginfo.log (data, '%s:%d' % self.addr)

    else:
        from allegra import async_core
        class Dispatcher (async_core.Dispatcher):
            def writable (self):
                return False
            
            def handle_read (self): 
                self.anetlog (self.recv (16384))
            
    class Listen (async_server.Listen):
        def server_accept (self, conn, addr, name):
            dispatcher = async_server.Listen.server_accept (
                self, conn, addr, name
            )
            dispatcher.anetlog_name = filename = '%s_%f' % (
                '%s_%d' % dispatcher.addr, dispatcher.server_when
                )
            dispatcher.anetlog_file = file = open (
                '/'.join ((root, 'tmp', filename)), _mode
                )
            dispatcher.anetlog = file.write
            return dispatcher
      
        def server_close (self, dispatcher):
            async_server.Listen.server_close (self, dispatcher)
            dispatcher.anetlog_file.close ()
            _link (
                '/'.join ((root, 'tmp', dispatcher.anetlog_name)), 
                '/'.join ((root, 'new', dispatcher.anetlog_name))
                )
            
    async_loop.catch (
        Listen (Dispatcher, (host, port), precision, 5).server_shutdown
        )
import socket

from allegra import (
    async_loop, finalization,
    async_net, async_chat, async_server
    )
        
loglines = async_server.Listen (
    async_chat.Dispatcher, ('127.0.0.1', 1234),
    6.0, 5, socket.AF_INET 
    )
async_loop.catch (loglines.server_shutdown)
del loglines
    
lognet = async_server.Listen (
    async_net.Dispatcher, ('127.0.0.1', 2345),
    6.0, 5, socket.AF_INET 
    )
async_server.accept_named (lognet, 512)
async_server.inactive (lognet, 6)
async_loop.catch (lognet.server_shutdown)
del lognet
    
loglines = async_server.Listen (
    async_chat.Dispatcher, ('127.0.0.1', 3456),
    3.0, 5, socket.AF_INET 
    )
loglines.server_resolved = (lambda addr: addr[0])
async_server.accept_named (loglines, 2)
async_server.rationed (loglines, 6.0, 1<<14, 1<<16)
async_loop.catch (loglines.server_shutdown)
import socket

from allegra import (async_loop, finalization, async_net, async_chat,
                     async_server)

loglines = async_server.Listen(async_chat.Dispatcher, ('127.0.0.1', 1234), 6.0,
                               5, socket.AF_INET)
async_loop.catch(loglines.server_shutdown)
del loglines

lognet = async_server.Listen(async_net.Dispatcher, ('127.0.0.1', 2345), 6.0, 5,
                             socket.AF_INET)
async_server.accept_named(lognet, 512)
async_server.inactive(lognet, 6)
async_loop.catch(lognet.server_shutdown)
del lognet

loglines = async_server.Listen(async_chat.Dispatcher, ('127.0.0.1', 3456), 3.0,
                               5, socket.AF_INET)
loglines.server_resolved = (lambda addr: addr[0])
async_server.accept_named(loglines, 2)
async_server.rationed(loglines, 6.0, 1 << 14, 1 << 16)
async_loop.catch(loglines.server_shutdown)
del loglines

async_loop.dispatch()
finalization.collect()
Exemple #6
0
import sys

from allegra import async_loop, async_core, async_server

try:
        TCP_WINDOW_SIZE = 1 << int (sys.argv[1])
except:
        TCP_WINDOW_SIZE = 1 << 14
TCP_OVERFLOW_DATA = 'x' * (TCP_WINDOW_SIZE*2)

class Flaking (async_core.Dispatcher):
        
        def handle_write (self):
                self.send (TCP_OVERFLOW_DATA)
                
        def handle_read (self):
                self.recv (TCP_WINDOW_SIZE/2)
                
        def close_when_done (self):
                self.close ()
                
flaking = async_server.Listen (
        Flaking, ('127.0.0.1', 1234), 6.0, 5
        )
async_loop.catch (flaking.server_shutdown)        
async_loop.dispatch ()
Exemple #7
0
def main(root='./log',
         host='127.0.0.2',
         port=3998,
         mkdir=False,
         mkclean=False,
         precision=3.0):
    import os, stat
    from allegra import loginfo, async_loop, async_server
    loginfo.log(
        'anetlog'
        ' - Copyright 2006-2007 Laurent A.V. Szyster'
        ' | Copyleft GPL 2.0', 'info')
    paths = ('tmp', 'new')
    for path in ('/'.join((root, p)) for p in paths):
        try:
            assert stat.S_ISDIR(os.stat(path)[0])
        except:
            if mkdir:
                os.makedirs(path)
            else:
                raise Exception(path + ' does not exist')

    if mkclean:
        import glob
        for path in ('/'.join((root, p, '*')) for p in paths):
            for fn in glob.glob(path):
                os.remove(fn)
    if hasattr(os, 'link'):
        _mode = 'w'
        _link = os.link
    elif os.name == 'nt':
        _mode = 'wb'
        import win32file

        def _link(from_name, to_name):
            win32file.CopyFileW(from_name, to_name, True)

    else:
        raise Exception('os.link or equivalent interface not available')

    if __debug__:
        from allegra import netstring, async_net

        class Dispatcher(async_net.Dispatcher):
            def writable(self):
                return False

            def async_net_continue(self, data):
                self.anetlog('%d:%s,' % (len(data), data))
                loginfo.log(data, '%s:%d' % self.addr)

    else:
        from allegra import async_core

        class Dispatcher(async_core.Dispatcher):
            def writable(self):
                return False

            def handle_read(self):
                self.anetlog(self.recv(16384))

    class Listen(async_server.Listen):
        def server_accept(self, conn, addr, name):
            dispatcher = async_server.Listen.server_accept(
                self, conn, addr, name)
            dispatcher.anetlog_name = filename = '%s_%f' % (
                '%s_%d' % dispatcher.addr, dispatcher.server_when)
            dispatcher.anetlog_file = file = open(
                '/'.join((root, 'tmp', filename)), _mode)
            dispatcher.anetlog = file.write
            return dispatcher

        def server_close(self, dispatcher):
            async_server.Listen.server_close(self, dispatcher)
            dispatcher.anetlog_file.close()
            _link('/'.join((root, 'tmp', dispatcher.anetlog_name)), '/'.join(
                (root, 'new', dispatcher.anetlog_name)))

    async_loop.catch(
        Listen(Dispatcher, (host, port), precision, 5).server_shutdown)