コード例 #1
0
ファイル: async.py プロジェクト: oubiwann/txosc
    def dataReceived(self, data):
        """
        Called whenever data is received.

        In a stream-based protocol such as TCP, the stream should
        begin with an int32 giving the size of the first packet,
        followed by the contents of the first packet, followed by the
        size of the second packet, etc.

        @type data: L{str}
        """
        self._buffer += data
        if len(self._buffer) < 4:
            return
        if self._pkgLen is None:
            self._pkgLen = struct.unpack(">i", self._buffer[:4])[0]
        if len(self._buffer) < self._pkgLen + 4:
            print "waiting for %d more bytes" % (self._pkgLen + 4 -
                                                 len(self._buffer))
            return
        payload = self._buffer[4:4 + self._pkgLen]
        self._buffer = self._buffer[4 + self._pkgLen:]
        self._pkgLen = None

        if payload:
            element = _elementFromBinary(payload)
            self.factory.gotElement(element)

        if len(self._buffer):
            self.dataReceived("")
コード例 #2
0
ファイル: async.py プロジェクト: aalex/txosc
    def dataReceived(self, data):
        """
        Called whenever data is received.

        In a stream-based protocol such as TCP, the stream should
        begin with an int32 giving the size of the first packet,
        followed by the contents of the first packet, followed by the
        size of the second packet, etc.

        @type data: L{str}
        """
        self._buffer += data
        if len(self._buffer) < 4:
            return
        if self._pkgLen is None:
            self._pkgLen = struct.unpack(">i", self._buffer[:4])[0]
        if len(self._buffer) < self._pkgLen + 4:
            print "waiting for %d more bytes" % (self._pkgLen + 4 - len(self._buffer))
            return
        payload = self._buffer[4:4 + self._pkgLen]
        self._buffer = self._buffer[4 + self._pkgLen:]
        self._pkgLen = None

        if payload:
            element = _elementFromBinary(payload)
            self.factory.gotElement(element)

        if len(self._buffer):
            self.dataReceived("")
コード例 #3
0
ファイル: osc_server.py プロジェクト: robgaunt/flashlight
def _patched_elementFromBinary(data):
  if data[0] == "/":
    element, data = osc.Message.fromBinary(data)
  elif data[0] == "#":
    element, data = osc.Bundle.fromBinary(data)
  else:
    fixedData = _try_fixing_invalid_osc_data(data)
    if fixedData:
      element = osc._elementFromBinary(fixedData)
    else:
      raise osc.OscError("Error parsing OSC data: " + data)
  return element
コード例 #4
0
ファイル: async.py プロジェクト: oubiwann/txosc
class DatagramServerProtocol(protocol.DatagramProtocol):
    """
    The UDP OSC server protocol.

    @ivar receiver: The L{Receiver} instance to dispatch received
        elements to.
    """
    def __init__(self, receiver):
        """
        @param receiver: L{Receiver} instance.
        """
        self.receiver = receiver

    def datagramReceived(self, data, (host, port)):
        element = _elementFromBinary(data)
        self.receiver.dispatch(element, (host, port))