def _create_nameless_data_packet(self, payload_value): payload_tlv = ccnpy.Payload(payload_value) nameless = ccnpy.ContentObject.create_data(name=None, payload=payload_tlv, expiry_time=self._tree_options.data_expiry_time) packet = ccnpy.Packet.create_content_object(nameless) assert len(packet) <= self._max_packet_size return packet
def _calculate_nameless_data_payload_size(self): """ Create a nameless object with empty payload and see how much space we have left. :return: payload size of a nameless data object """ nameless = ccnpy.ContentObject.create_data(name=None, expiry_time=self._tree_options.data_expiry_time, payload=ccnpy.Payload([])) packet = ccnpy.Packet.create_content_object(body=nameless) if len(packet) >= self._max_packet_size: raise ValueError("An empty nameless ContentObject is %r bytes, but max_size is only %r" % (len(packet), self._max_packet_size)) payload_size = self._max_packet_size - len(packet) return payload_size
def create_manifest(cls, manifest, name=None, expiry_time=None): """ :param name: ccnpy.Name :param manifest: A serializable object to put in the payload :param expiry_time: A python datetime :return: A ccnpy.ContentObject """ if manifest is None: raise ValueError("manifest must not be None") payload_type = ccnpy.PayloadType.create_manifest_type() payload = ccnpy.Payload(manifest.serialize()) if expiry_time is not None: if not isinstance(expiry_time, datetime): raise TypeError("expiry_time must be datetime") expiry_time = ccnpy.ExpiryTime.from_datetime(expiry_time) return cls(name=name, payload_type=payload_type, payload=payload, expiry_time=expiry_time)
def create_data(cls, name=None, payload=None, expiry_time=None): """ :param name: ccnpy.Name :param payload: A byte array (array.array("B", ...)) or ccnpy.Payload :param expiry_time: A python datetime :return: A ccnpy.ContentObject """ payload_type = None if payload is not None: payload_type = ccnpy.PayloadType.create_data_type() if not isinstance(payload, ccnpy.Payload): payload = ccnpy.Payload(payload) if expiry_time is not None: if not isinstance(expiry_time, datetime): raise TypeError("expiry_time must be datetime") expiry_time = ccnpy.ExpiryTime.from_datetime(expiry_time) return cls(name=name, payload_type=payload_type, payload=payload, expiry_time=expiry_time)
def _create_data_packet(application_data): payload = ccnpy.Payload(application_data) packet = ccnpy.Packet.create_content_object( ccnpy.ContentObject.create_data(payload=payload)) return packet