message.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. """Dummy Frame object"""
  2. # Copyright (C) PyZMQ Developers
  3. # Distributed under the terms of the Modified BSD License.
  4. from ._cffi import ffi, C
  5. import zmq
  6. from zmq.utils.strtypes import unicode
  7. _content = lambda x: x.tobytes() if type(x) == memoryview else x
  8. class Frame(object):
  9. _data = None
  10. tracker = None
  11. closed = False
  12. more = False
  13. buffer = None
  14. def __init__(self, data, track=False, copy=None, copy_threshold=None):
  15. try:
  16. memoryview(data)
  17. except TypeError:
  18. raise
  19. self._data = data
  20. if isinstance(data, unicode):
  21. raise TypeError("Unicode objects not allowed. Only: str/bytes, " +
  22. "buffer interfaces.")
  23. self.more = False
  24. self.tracker = None
  25. self.closed = False
  26. if track:
  27. self.tracker = zmq._FINISHED_TRACKER
  28. self.buffer = memoryview(self.bytes)
  29. @property
  30. def bytes(self):
  31. data = _content(self._data)
  32. return data
  33. def __len__(self):
  34. return len(self.bytes)
  35. def __eq__(self, other):
  36. return self.bytes == _content(other)
  37. def __str__(self):
  38. if str is unicode:
  39. return self.bytes.decode()
  40. else:
  41. return self.bytes
  42. @property
  43. def done(self):
  44. return True
  45. Message = Frame
  46. __all__ = ['Frame', 'Message']