本文整理汇总了Python中pyamf.util.BufferedByteStream.read_uchar方法的典型用法代码示例。如果您正苦于以下问题:Python BufferedByteStream.read_uchar方法的具体用法?Python BufferedByteStream.read_uchar怎么用?Python BufferedByteStream.read_uchar使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyamf.util.BufferedByteStream
的用法示例。
在下文中一共展示了BufferedByteStream.read_uchar方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Packet
# 需要导入模块: from pyamf.util import BufferedByteStream [as 别名]
# 或者: from pyamf.util.BufferedByteStream import read_uchar [as 别名]
class Packet(object):
"""
"""
format = None
challengeKey = None
def __init__(self):
self.buffer = BufferedByteStream()
def computeOffset(self, start, modulus, increment):
"""
An offset is 4 consecutive bytes encoded at C{start}.
s = sum of bytes
offset = (s % modulus) + increment
"""
self.buffer.seek(start)
offset = (
self.buffer.read_uchar() +
self.buffer.read_uchar() +
self.buffer.read_uchar() +
self.buffer.read_uchar())
offset %= modulus
offset += increment
return offset
def getDigestAndPayload(self, offset, length):
"""
Returns the C{digest} and C{payload} components.
"""
self.buffer.seek(0)
payload = self.buffer.read(offset)
digest = self.buffer.read(length)
payload += self.buffer.read()
return digest, payload
def setFormat(self, format):
self.format = format
def setChallengeKey(self, key):
self.challengeKey = key
def setChallengeDigest(self, digest):
self.challengeDigest = digest
def decode(self, data):
"""
Decodes the data bytes into this packet.
"""
raise NotImplementedError
示例2: BaseNegotiator
# 需要导入模块: from pyamf.util import BufferedByteStream [as 别名]
# 或者: from pyamf.util.BufferedByteStream import read_uchar [as 别名]
class BaseNegotiator(object):
"""
Base functionality for negotiating an RTMP handshake.
Call L{start} to begin negotiations.
@ivar observer: An observer for handshake negotiations.
@type observer: L{IHandshakeObserver}
@ivar started: Whether negotiations have begun.
@type started: C{bool}
@ivar _buffer: Any data that has been received but not yet been consumed.
@type _buffer: L{BufferedByteStream}
"""
started = False
nearRequest = None
nearResponse = None
farRequest = None
farResponse = None
protocolVersion = 3
farProtocolVersion = None
def __init__(self, observer, output):
self.observer = observer
self.output = output
def start(self, uptime=0, version=0):
"""
Called to start the handshaking negotiations.
"""
if self.started:
raise AlreadyStarted('Handshake negotiator cannot be restarted')
self.started = True
self.uptime = uptime
self.version = version
self._buffer = BufferedByteStream()
def readPacket(self):
if self._buffer.remaining() < HANDSHAKE_LENGTH:
# we're expecting more data
return
packet = self._buffer.read(HANDSHAKE_LENGTH)
self._buffer.consume()
return packet
def dataReceived(self, data):
"""
Called when handshake data has been received.
"""
if not self.started:
raise HandshakeError('Data received, but negotiator not started')
self._buffer.append(data)
if self.farProtocolVersion is None:
self.farProtocolVersion = self._buffer.read_uchar()
packet = self.readPacket()
if not packet:
return
if not self.farRequest:
self.farRequest = self.buildFarRequest()
self.farRequest.decode(packet)
self.farRequestReceived(self.farRequest)
packet = self.readPacket()
if not packet:
return
if not self.farResponse:
self.farResponse = self.buildFarResponse()
self.farResponse.decode(packet)
self.farResponseReceived(self.farResponse)
def buildFarRequest(self):
"""
"""
return RequestPacket()
#.........这里部分代码省略.........
示例3: StateEngine
# 需要导入模块: from pyamf.util import BufferedByteStream [as 别名]
# 或者: from pyamf.util.BufferedByteStream import read_uchar [as 别名]
#.........这里部分代码省略.........
elif self.state == self.STATE_HANDSHAKE:
self.handshake_dataReceived(data)
elif self.state == self.STATE_STREAM:
BaseStreamer.dataReceived(self, data)
else:
raise RuntimeError('Invalid state!')
def startVersioning(self):
"""
Start protocol version negotiations.
"""
self.buffer = BufferedByteStream()
def stopVersioning(self, reason=None):
"""
Stop protocol version negotiations.
@param reason: A L{failure.Failure} object if protocol version
negotiations failed. C{None} means success.
"""
del self.buffer
def version_dataReceived(self, data):
"""
"""
if not data:
return
self.buffer.append(data)
self.peerProtocolVersion = self.buffer.read_uchar()
self.versionReceived(self.peerProtocolVersion)
def versionReceived(self, version):
"""
Called when the peers' protocol version has been received.
The default behaviour is to accept any known version. It is the
responsibility for any overriding subclass to call L{versionSuccess} for
negotiations to proceed.
"""
if version == self.protocolVersion:
self.versionSuccess()
return
raise UnknownProtocolVersion(
'Unhandled protocol version %d' % (version,))
def versionSuccess(self):
"""
Protocol version negotiations have been successful, now on to
handshaking.
"""
try:
data = self.buffer.read()
except IOError:
data = None
self.stopVersioning()