forked from I2P_Developers/i2p.i2p
73 lines
1.8 KiB
Python
73 lines
1.8 KiB
Python
|
|
"""
|
|
Emulation of Python SocketServer module using I2P sockets.
|
|
|
|
The Python module is described at
|
|
http://www.python.org/doc/current/lib/module-SocketServer.html
|
|
|
|
"""
|
|
|
|
# By aum.
|
|
|
|
# Hack to keep Python from importing from current directory:
|
|
# Use pylib package, then use = signs instead of from x import y.
|
|
import pylib
|
|
SocketServer = pylib.SocketServer
|
|
|
|
import i2p.socket
|
|
class BaseServer(SocketServer.BaseServer):
|
|
pass
|
|
class TCPServer(SocketServer.TCPServer, BaseServer):
|
|
|
|
socket_type = i2p.socket.SOCK_STREAM
|
|
|
|
def __init__(self, session, RequestHandlerClass):
|
|
"""
|
|
Constructor. May be extended, do not override.
|
|
|
|
The 'session' argument indicates the SAM session
|
|
name that should be used for the server. See module
|
|
i2p.socket for details on SAM sessions.
|
|
"""
|
|
BaseServer.__init__(self, session, RequestHandlerClass)
|
|
|
|
#self.socket = socket.socket(self.address_family,
|
|
# self.socket_type)
|
|
self.session = session
|
|
self.socket = i2p.socket.socket(session, self.socket_type)
|
|
|
|
self.server_bind()
|
|
self.server_activate()
|
|
|
|
class UDPServer(TCPServer, SocketServer.UDPServer):
|
|
pass
|
|
|
|
class ForkingMixIn(SocketServer.ForkingMixIn):
|
|
pass
|
|
|
|
class ThreadingMixIn(SocketServer.ThreadingMixIn):
|
|
pass
|
|
|
|
class ForkingUDPServer(ForkingMixIn, UDPServer):
|
|
pass
|
|
|
|
class ForkingTCPServer(ForkingMixIn, TCPServer):
|
|
pass
|
|
|
|
class ThreadingUDPServer(ThreadingMixIn, UDPServer):
|
|
pass
|
|
|
|
class ThreadingTCPServer(ThreadingMixIn, TCPServer):
|
|
pass
|
|
|
|
class BaseRequestHandler(SocketServer.BaseRequestHandler):
|
|
pass
|
|
|
|
class StreamRequestHandler(SocketServer.StreamRequestHandler):
|
|
pass
|
|
|
|
class DatagramRequestHandler(SocketServer.DatagramRequestHandler):
|
|
pass
|
|
|
|
|