better names for twisted examples; removed outdated example; changed xcap proxy to use join_reactor and the latest version of xcaplib

This commit is contained in:
Denis Bilenko
2008-10-30 02:56:30 +06:00
parent bb228f4171
commit f5dec4c58b
4 changed files with 3 additions and 108 deletions

View File

@@ -1,94 +0,0 @@
from twisted.internet import pollreactor; pollreactor.install()
from twisted.internet.protocol import Factory
from twisted.internet import reactor
from twisted.protocols import basic
from twisted.internet.error import ConnectionDone
from xcaplib.client import XCAPClient
from eventlet.api import spawn, get_hub
from eventlet.channel import channel
class LineOnlyReceiver(basic.LineOnlyReceiver):
def __init__(self, channel):
self.channel = channel
def lineReceived(self, line):
spawn(self.channel.send, line)
def connectionLost(self, reason):
self.channel.send_exception(reason.value)
class line_only_receiver:
def __init__(self, protocol, channel):
self.protocol = protocol
self.channel = channel
def readline(self):
return self.channel.receive()
def send(self, data):
self.protocol.transport.write(data)
def sendline(self, line):
self.protocol.sendLine(line)
# iterator protocol:
def __iter__(self):
return self
def next(self):
try:
return self.readline()
except ConnectionDone:
raise StopIteration
class MyFactory(Factory):
protocol = LineOnlyReceiver
def __init__(self, handler):
self.handler = handler
def buildProtocol(self, addr):
ch = channel()
p = self.protocol(ch)
p.factory = self
spawn(self.handler, line_only_receiver(p, ch))
return p
def xcaplib_enable_eventlet():
from eventlet.green import urllib2
from xcaplib import httpclient
# replacing all the references to the old urllib2 in xcaplib:
httpclient.urllib2 = urllib2
httpclient.HTTPRequest.__bases__ = (urllib2.Request,)
xcaplib_enable_eventlet()
client = XCAPClient('https://xcap.sipthor.net/xcap-root', 'alice@example.com', '123')
def perform_request(line):
app, context, node = (line + ' ').split(' ', 3)
context = {'u' : 'users', 'g': 'global'}.get(context, context)
try:
return str(client._get(app, node, globaltree=context=='global'))
except Exception, ex:
return str(ex)
def handler(conn):
peer = conn.protocol.transport.getPeer()
print 'new connection from %s' % (peer, )
try:
for line in conn:
print 'received from %s: %s' % (peer, line)
conn.protocol.transport.write(perform_request(line))
print peer, 'connection done'
except Exception, ex:
print peer, ex
reactor.listenTCP(8007, MyFactory(handler))
get_hub().switch()

View File

@@ -1,13 +1,11 @@
from twisted.internet import pollreactor; pollreactor.install()
from twisted.internet.protocol import Factory from twisted.internet.protocol import Factory
from twisted.internet import reactor from twisted.internet import reactor
from twisted.protocols import basic from twisted.protocols import basic
from xcaplib.client import XCAPClient from xcaplib.green import XCAPClient
from eventlet.api import get_hub
from eventlet.twisteds.util import callInGreenThread from eventlet.twisteds.util import callInGreenThread
from eventlet.twisteds import join_reactor
class LineOnlyReceiver(basic.LineOnlyReceiver): class LineOnlyReceiver(basic.LineOnlyReceiver):
@@ -28,15 +26,6 @@ class LineOnlyReceiver(basic.LineOnlyReceiver):
class MyFactory(Factory): class MyFactory(Factory):
protocol = LineOnlyReceiver protocol = LineOnlyReceiver
def xcaplib_enable_eventlet():
from eventlet.green import urllib2
from xcaplib import httpclient
# replacing all the references to the old urllib2 in xcaplib:
httpclient.urllib2 = urllib2
httpclient.HTTPRequest.__bases__ = (urllib2.Request,)
xcaplib_enable_eventlet()
client = XCAPClient('https://xcap.sipthor.net/xcap-root', 'alice@example.com', '123') client = XCAPClient('https://xcap.sipthor.net/xcap-root', 'alice@example.com', '123')
reactor.listenTCP(8007, MyFactory()) reactor.listenTCP(8007, MyFactory())
get_hub().switch() reactor.run()