Source code for zoonado.protocol.request

from __future__ import unicode_literals

import logging
import struct

from six import BytesIO

from .part import Part
from .primitives import Int


log = logging.getLogger(__name__)


[docs]class Request(Part): """ Returns a bytesring representation of the request instance. # TODO(wglass): specify how xid and type preamble goes in Since this is a ``Part`` subclass the rest is a matter of appending the result of a ``render()`` call. """ opcode = None special_xid = None writes_data = False def serialize(self, xid=None): buff = BytesIO() formats = [] data = [] if xid is not None: formats.append(Int.fmt) data.append(xid) if self.opcode: formats.append(Int.fmt) data.append(self.opcode) payload_format, payload_data = self.render() formats.append(payload_format) data.extend(payload_data) buff.write(struct.pack("!" + "".join(formats), *data)) return buff.getvalue()