Skip to content

Basic Drift Package Example

This example shows how to serialize and parse a Drift Package in Python.

python/examples/drift_package_example.py
from drift_protocol.common import DriftPackage, DataPayload, StatusCode

from google.protobuf.timestamp_pb2 import Timestamp
from google.protobuf.any_pb2 import Any

if __name__ == "__main__":
    pb_time = Timestamp()
    pb_time.GetCurrentTime()

    # Create a package and serialize it
    original = DriftPackage()
    original.id = pb_time.ToMilliseconds()
    original.source_timestamp.CopyFrom(pb_time)
    original.publish_timestamp.CopyFrom(pb_time)
    original.status = StatusCode.GOOD

    # Prepare payload
    payload = DataPayload()
    payload.data = b"some data to send"

    msg = Any()
    msg.Pack(payload)
    original.data.append(msg)

    # Serialize package to message
    message = original.SerializeToString()

    # Parse the package
    new_pacakge = DriftPackage()
    new_pacakge.ParseFromString(message)
    print(f"Package ID={new_pacakge.id}")

    payload = DataPayload()
    new_pacakge.data[0].Unpack(payload)
    print(f"Data: {payload.data}")