Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: third_party/twisted_8_1/twisted/web/distrib.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/twisted_8_1/twisted/web/demo.py ('k') | third_party/twisted_8_1/twisted/web/domhelpers.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/twisted_8_1/twisted/web/distrib.py
diff --git a/third_party/twisted_8_1/twisted/web/distrib.py b/third_party/twisted_8_1/twisted/web/distrib.py
deleted file mode 100644
index df2141be77bbae64a1cf1effd0a473e7422308a5..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/web/distrib.py
+++ /dev/null
@@ -1,303 +0,0 @@
-# -*- test-case-name: twisted.web.test.test_web -*-
-
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-
-"""Distributed web servers.
-
-This is going to have to be refactored so that argument parsing is done
-by each subprocess and not by the main web server (i.e. GET, POST etc.).
-"""
-
-# System Imports
-import types, os, copy, string, cStringIO
-if (os.sys.platform != 'win32') and (os.name != 'java'):
- import pwd
-
-# Twisted Imports
-from twisted.spread import pb
-from twisted.web import http
-from twisted.python import log
-from twisted.persisted import styles
-from twisted.web.woven import page
-from twisted.internet import address, reactor
-
-# Sibling Imports
-import resource
-import server
-import error
-import html
-import static
-from server import NOT_DONE_YET
-
-class _ReferenceableProducerWrapper(pb.Referenceable):
- def __init__(self, producer):
- self.producer = producer
-
- def remote_resumeProducing(self):
- self.producer.resumeProducing()
-
- def remote_pauseProducing(self):
- self.producer.pauseProducing()
-
- def remote_stopProducing(self):
- self.producer.stopProducing()
-
-
-class Request(pb.RemoteCopy, server.Request):
- def setCopyableState(self, state):
- for k in 'host', 'client':
- tup = state[k]
- addrdesc = {'INET': 'TCP', 'UNIX': 'UNIX'}[tup[0]]
- addr = {'TCP': lambda: address.IPv4Address(addrdesc,
- tup[1], tup[2],
- _bwHack='INET'),
- 'UNIX': lambda: address.UNIXAddress(tup[1])}[addrdesc]()
- state[k] = addr
- pb.RemoteCopy.setCopyableState(self, state)
- # Emulate the local request interface --
- self.content = cStringIO.StringIO(self.content_data)
- self.write = self.remote.remoteMethod('write')
- self.finish = self.remote.remoteMethod('finish')
- self.setHeader = self.remote.remoteMethod('setHeader')
- self.addCookie = self.remote.remoteMethod('addCookie')
- self.setETag = self.remote.remoteMethod('setETag')
- self.setResponseCode = self.remote.remoteMethod('setResponseCode')
- self.setLastModified = self.remote.remoteMethod('setLastModified')
-
- def registerProducer(self, producer, streaming):
- self.remote.callRemote("registerProducer",
- _ReferenceableProducerWrapper(producer),
- streaming).addErrback(self.fail)
-
- def unregisterProducer(self):
- self.remote.callRemote("unregisterProducer").addErrback(self.fail)
-
- def fail(self, failure):
- log.err(failure)
-
-
-pb.setCopierForClass(server.Request, Request)
-
-class Issue:
- def __init__(self, request):
- self.request = request
-
- def finished(self, result):
- if result != NOT_DONE_YET:
- assert isinstance(result, types.StringType),\
- "return value not a string"
- self.request.write(result)
- self.request.finish()
-
- def failed(self, failure):
- #XXX: Argh. FIXME.
- failure = str(failure)
- self.request.write(
- error.ErrorPage(http.INTERNAL_SERVER_ERROR,
- "Server Connection Lost",
- "Connection to distributed server lost:" +
- html.PRE(failure)).
- render(self.request))
- self.request.finish()
- log.msg(failure)
-
-
-class ResourceSubscription(resource.Resource):
- isLeaf = 1
- waiting = 0
- def __init__(self, host, port):
- resource.Resource.__init__(self)
- self.host = host
- self.port = port
- self.pending = []
- self.publisher = None
-
- def __getstate__(self):
- """Get persistent state for this ResourceSubscription.
- """
- # When I unserialize,
- state = copy.copy(self.__dict__)
- # Publisher won't be connected...
- state['publisher'] = None
- # I won't be making a connection
- state['waiting'] = 0
- # There will be no pending requests.
- state['pending'] = []
- return state
-
- def connected(self, publisher):
- """I've connected to a publisher; I'll now send all my requests.
- """
- log.msg('connected to publisher')
- publisher.broker.notifyOnDisconnect(self.booted)
- self.publisher = publisher
- self.waiting = 0
- for request in self.pending:
- self.render(request)
- self.pending = []
-
- def notConnected(self, msg):
- """I can't connect to a publisher; I'll now reply to all pending
- requests.
- """
- log.msg("could not connect to distributed web service: %s" % msg)
- self.waiting = 0
- self.publisher = None
- for request in self.pending:
- request.write("Unable to connect to distributed server.")
- request.finish()
- self.pending = []
-
- def booted(self):
- self.notConnected("connection dropped")
-
- def render(self, request):
- """Render this request, from my server.
-
- This will always be asynchronous, and therefore return NOT_DONE_YET.
- It spins off a request to the pb client, and either adds it to the list
- of pending issues or requests it immediately, depending on if the
- client is already connected.
- """
- if not self.publisher:
- self.pending.append(request)
- if not self.waiting:
- self.waiting = 1
- bf = pb.PBClientFactory()
- timeout = 10
- if self.host == "unix":
- reactor.connectUNIX(self.port, bf, timeout)
- else:
- reactor.connectTCP(self.host, self.port, bf, timeout)
- d = bf.getRootObject()
- d.addCallbacks(self.connected, self.notConnected)
-
- else:
- i = Issue(request)
- self.publisher.callRemote('request', request).addCallbacks(i.finished, i.failed)
- return NOT_DONE_YET
-
-class ResourcePublisher(pb.Root, styles.Versioned):
- def __init__(self, site):
- self.site = site
-
- persistenceVersion = 2
-
- def upgradeToVersion2(self):
- self.application.authorizer.removeIdentity("web")
- del self.application.services[self.serviceName]
- del self.serviceName
- del self.application
- del self.perspectiveName
-
- def getPerspectiveNamed(self, name):
- return self
-
- def remote_request(self, request):
- res = self.site.getResourceFor(request)
- log.msg( request )
- return res.render(request)
-
-class UserDirectory(page.Page):
- userDirName = 'public_html'
- userSocketName = '.twistd-web-pb'
-
- template = """
-<html>
- <head>
- <title>twisted.web.distrib.UserDirectory</title>
- <style>
-
- a
- {
- font-family: Lucida, Verdana, Helvetica, Arial, sans-serif;
- color: #369;
- text-decoration: none;
- }
-
- th
- {
- font-family: Lucida, Verdana, Helvetica, Arial, sans-serif;
- font-weight: bold;
- text-decoration: none;
- text-align: left;
- }
-
- pre, code
- {
- font-family: "Courier New", Courier, monospace;
- }
-
- p, body, td, ol, ul, menu, blockquote, div
- {
- font-family: Lucida, Verdana, Helvetica, Arial, sans-serif;
- color: #000;
- }
-
- </style>
- <base view="Attributes" model="base" />
- </head>
-
- <body>
- <h1>twisted.web.distrib.UserDirectory</h1>
-
- <ul view="List" model="directory">
- <li pattern="listItem"><a view="Link" /> </li>
- </ul>
-</body>
-</html>
- """
-
- def wmfactory_base(self, request):
- return {'href':request.prePathURL()}
-
- def wmfactory_directory(self, request):
- m = []
- for user in pwd.getpwall():
- pw_name, pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell \
- = user
- realname = string.split(pw_gecos,',')[0]
- if not realname:
- realname = pw_name
- if os.path.exists(os.path.join(pw_dir, self.userDirName)):
- m.append({
- 'href':'%s/'%pw_name,
- 'text':'%s (file)'%realname
- })
- twistdsock = os.path.join(pw_dir, self.userSocketName)
- if os.path.exists(twistdsock):
- linknm = '%s.twistd' % pw_name
- m.append({
- 'href':'%s/'%linknm,
- 'text':'%s (twistd)'%realname})
- return m
-
- def getChild(self, name, request):
- if name == '':
- return self
-
- td = '.twistd'
-
- if name[-len(td):] == td:
- username = name[:-len(td)]
- sub = 1
- else:
- username = name
- sub = 0
- try:
- pw_name, pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell \
- = pwd.getpwnam(username)
- except KeyError:
- return error.NoResource()
- if sub:
- twistdsock = os.path.join(pw_dir, self.userSocketName)
- rs = ResourceSubscription('unix',twistdsock)
- self.putChild(name, rs)
- return rs
- else:
- path = os.path.join(pw_dir, self.userDirName)
- if not os.path.exists(path):
- return error.NoResource()
- return static.File(path)
« no previous file with comments | « third_party/twisted_8_1/twisted/web/demo.py ('k') | third_party/twisted_8_1/twisted/web/domhelpers.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698