Skip to content

Commit

Permalink
Replaced StreamServer with ChannelServer
Browse files Browse the repository at this point in the history
  • Loading branch information
danielnorberg committed Dec 25, 2010
1 parent 9f5438d commit 9ffcf3e
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 1,869 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from setuptools import setup
from setuptools.extension import Extension

modules = ['ropebuffer', 'broadcast', 'channel', 'messenger', 'streamserver']
modules = ['ropebuffer', 'broadcast', 'channel', 'messenger']

extensions = [Extension(
name ='socketless.%s' % module,
Expand Down
4 changes: 2 additions & 2 deletions socketless/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
__all__ = ['ropebuffer', 'channel', 'messenger', 'broadcast', 'streamserver']
__all__ = ['ropebuffer', 'channel', 'messenger', 'broadcast', 'channelserver']

import ropebuffer
import messenger
import streamserver
import channelserver
import broadcast
36 changes: 36 additions & 0 deletions socketless/channelserver.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import socket

from syncless import coio

from channel import Channel

class ChannelServer(object):
"""docstring for ChannelServer"""
def __init__(self, listener, handle_connection=None, listen_backlog=1024):
super(ChannelServer, self).__init__()
self.listening_tasklet = None
self.listening_socket = None
self.listen_backlog = listen_backlog
self.listener = listener
if handle_connection:
self.handle_connection = handle_connection

def serve(self):
self.listening_tasklet = coio.stackless.tasklet(self._serve)()

def _serve(self):
self.listening_socket = coio.nbsocket(socket.AF_INET, socket.SOCK_STREAM)
self.listening_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.listening_socket.bind(self.listener)
self.listening_socket.listen(self.listen_backlog)
while True:
conn, addr = self.listening_socket.accept()
coio.stackless.tasklet(self.handle_connection)(Channel(conn), addr)
coio.stackless.schedule()

def stop(self):
self.listening_tasklet.kill()
self.listening_tasklet = None

def serve_forever(self):
self._serve()
Loading

0 comments on commit 9ffcf3e

Please sign in to comment.