Home | Trees | Index | Help |
---|
Package tlslite :: Package integration :: Module TLSAsyncDispatcherMixIn :: Class TLSAsyncDispatcherMixIn |
|
AsyncStateMachine
--+
|
TLSAsyncDispatcherMixIn
This class can be "mixed in" with an
asyncore.dispatcher
to add TLS support.
This class essentially sits between the dispatcher and the select loop, intercepting events and only calling the dispatcher when applicable.
In the case of handle_read(), a read operation will be activated, and when it completes, the bytes will be placed in a buffer where the dispatcher can retrieve them by calling recv(), and the dispatcher's handle_read() will be called.
In the case of handle_write(), the dispatcher's handle_write() will be called, and when it calls send(), a write operation will be activated.
To use this class, you must combine it with an asyncore.dispatcher, and pass in a handshake operation with setServerHandshakeOp().
Below is an example of using this class with medusa. This class is mixed in with http_channel to create http_tls_channel. Note:from tlslite.api import * s = open("./serverX509Cert.pem").read() x509 = X509() x509.parse(s) certChain = X509CertChain([x509]) s = open("./serverX509Key.pem").read() privateKey = parsePEMKey(s, private=True) class http_tls_channel(TLSAsyncDispatcherMixIn, http_server.http_channel): ac_in_buffer_size = 16384 def __init__ (self, server, conn, addr): http_server.http_channel.__init__(self, server, conn, addr) TLSAsyncDispatcherMixIn.__init__(self, conn) self.tlsConnection.ignoreAbruptClose = True self.setServerHandshakeOp(certChain=certChain, privateKey=privateKey) hs.channel_class = http_tls_channelIf the TLS layer raises an exception, the exception will be caught in asyncore.dispatcher, which will call close() on this class. The TLS layer always closes the TLS connection before raising an exception, so the close operation will complete right away, causing asyncore.dispatcher.close() to be called, which closes the socket and removes this instance from the asyncore loop.
Method Summary | |
---|---|
__init__(self,
sock)
| |
close(self)
| |
handle_read(self)
| |
handle_write(self)
| |
Called when a close operation completes. | |
Called when a handshake operation completes. | |
Called when a read operation completes. | |
Called when a write operation completes. | |
readable(self)
| |
recv(self,
bufferSize)
| |
send(self,
writeBuffer)
| |
writable(self)
| |
Inherited from AsyncStateMachine | |
Tell the state machine it can read from the socket. | |
Tell the state machine it can write to the socket. | |
Start a close operation. | |
Start a handshake operation. | |
Start a handshake operation. | |
Start a write operation. | |
bool or None |
If the state machine wants to read. |
bool or None |
If the state machine wants to write. |
| |
| |
| |
| |
| |
|
Method Details |
---|
outCloseEvent(self)Called when a close operation completes. May be overridden in subclass.
|
outConnectEvent(self)Called when a handshake operation completes. May be overridden in subclass.
|
outReadEvent(self, readBuffer)Called when a read operation completes. May be overridden in subclass.
|
outWriteEvent(self)Called when a write operation completes. May be overridden in subclass.
|
Home | Trees | Index | Help |
---|
Generated by Epydoc 2.0 on Sun Mar 21 00:04:58 2004 | http://epydoc.sf.net |