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

Unified Diff: third_party/twisted_8_1/twisted/pair/tuntap.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
Index: third_party/twisted_8_1/twisted/pair/tuntap.py
diff --git a/third_party/twisted_8_1/twisted/pair/tuntap.py b/third_party/twisted_8_1/twisted/pair/tuntap.py
deleted file mode 100644
index a8da85e0846ed43015098aabcd8921453b2be3c1..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/pair/tuntap.py
+++ /dev/null
@@ -1,170 +0,0 @@
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-#
-import errno, os
-from twisted.python import log, reflect, components
-from twisted.internet import base, fdesc, error
-from twisted.pair import ethernet, ip
-
-"""
-You need Eunuchs for twisted.pair.tuntap to work.
-
-Eunuchs is a library containing the missing manly parts of
-UNIX API for Python.
-
-Eunuchs is a library of Python extension that complement the standard
-libraries in parts where full support for the UNIX API (or the Linux
-API) is missing.
-
-Most of the functions wrapped by Eunuchs are low-level, dirty, but
-absolutely necessary functions for real systems programming. The aim is
-to have the functions added to mainstream Python libraries.
-
-Current list of functions included:
-
- - fchdir(2)
- - recvmsg(2) and sendmsg(2), including use of cmsg(3)
- - socketpair(2)
- - support for TUN/TAP virtual network interfaces
-
-Eunuchs doesn't have a proper web home right now, but you can fetch
-the source from http://ftp.debian.org/debian/pool/main/e/eunuch
--- debian users can just use 'apt-get install python-eunuchs'.
-
-"""
-from eunuchs.tuntap import opentuntap, TuntapPacketInfo, makePacketInfo
-
-class TuntapPort(base.BasePort):
- """A Port that reads and writes packets from/to a TUN/TAP-device.
-
- TODO: Share general start/stop etc implementation details with
- twisted.internet.udp.Port.
- """
- maxThroughput = 256 * 1024 # max bytes we read in one eventloop iteration
-
- def __init__(self, interface, proto, maxPacketSize=8192, reactor=None):
- if components.implements(proto, ethernet.IEthernetProtocol):
- self.ethernet = 1
- else:
- self.ethernet = 0
- assert components.implements(proto, ip.IIPProtocol) # XXX: fix me
- base.BasePort.__init__(self, reactor)
- self.interface = interface
- self.protocol = proto
- self.maxPacketSize = maxPacketSize
- self.setLogStr()
-
- def __repr__(self):
- return "<%s on %s>" % (self.protocol.__class__, self.interface)
-
- def startListening(self):
- """Create and bind my socket, and begin listening on it.
-
- This is called on unserialization, and must be called after creating a
- server to begin listening on the specified port.
- """
- self._bindSocket()
- self._connectToProtocol()
-
- def _bindSocket(self):
- log.msg("%s starting on %s"%(self.protocol.__class__, self.interface))
- try:
- fd, name = opentuntap(name=self.interface,
- ethernet=self.ethernet,
- packetinfo=0)
- except OSError, e:
- raise error.CannotListenError, (None, self.interface, e)
- fdesc.setNonBlocking(fd)
- self.interface = name
- self.connected = 1
- self.fd = fd
-
- def fileno(self):
- return self.fd
-
- def _connectToProtocol(self):
- self.protocol.makeConnection(self)
- self.startReading()
-
- def doRead(self):
- """Called when my socket is ready for reading."""
- read = 0
- while read < self.maxThroughput:
- try:
- data = os.read(self.fd, self.maxPacketSize)
- read += len(data)
-# pkt = TuntapPacketInfo(data)
- self.protocol.datagramReceived(data,
- partial=0 # pkt.isPartial(),
- )
- except OSError, e:
- if e.errno in (errno.EWOULDBLOCK,):
- return
- else:
- raise
- except IOError, e:
- if e.errno in (errno.EAGAIN, errno.EINTR):
- return
- else:
- raise
- except:
- log.deferr()
-
- def write(self, datagram):
- """Write a datagram."""
-# header = makePacketInfo(0, 0)
- try:
- return os.write(self.fd, datagram)
- except IOError, e:
- if e.errno == errno.EINTR:
- return self.write(datagram)
- elif e.errno == errno.EMSGSIZE:
- raise error.MessageLengthError, "message too long"
- elif e.errno == errno.ECONNREFUSED:
- raise error.ConnectionRefusedError
- else:
- raise
-
- def writeSequence(self, seq):
- self.write("".join(seq))
-
- def loseConnection(self):
- """Stop accepting connections on this port.
-
- This will shut down my socket and call self.connectionLost().
- """
- self.stopReading()
- if self.connected:
- from twisted.internet import reactor
- reactor.callLater(0, self.connectionLost)
-
- stopListening = loseConnection
-
- def connectionLost(self, reason=None):
- """Cleans up my socket.
- """
- log.msg('(Tuntap %s Closed)' % self.interface)
- base.BasePort.connectionLost(self, reason)
- if hasattr(self, "protocol"):
- # we won't have attribute in ConnectedPort, in cases
- # where there was an error in connection process
- self.protocol.doStop()
- self.connected = 0
- os.close(self.fd)
- del self.fd
-
- def setLogStr(self):
- self.logstr = reflect.qual(self.protocol.__class__) + " (TUNTAP)"
-
- def logPrefix(self):
- """Returns the name of my class, to prefix log entries with.
- """
- return self.logstr
-
- def getHost(self):
- """
- Returns a tuple of ('TUNTAP', interface), indicating
- the servers address
- """
- return ('TUNTAP',)+self.interface
« no previous file with comments | « third_party/twisted_8_1/twisted/pair/topfiles/setup.py ('k') | third_party/twisted_8_1/twisted/persisted/__init__.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698