Applications that process messages that contain a uint32
field that references an asset such as a cover photo or video, should interpret this value as a zero based index into an array/vector that is received external (out of band) to the protobuf message.
Example in context of query-node processing the runtime event VideoCreated
// Runtime event associated with creating a Video
VideoCreated(video_id: VideoId, video: Video, assets: Vec<NewAsset>, params: VideoCreationParameters)
struct VideoCreationParameters {
in_category: VideoCategoryId,
// binary serialized VideoMetadata protobuf message
meta: Vec<u8>,
}
// suppose assets is a vector of two elements. This is the "out of band" array being referenced by the VideoMetadata message
assets = [
NewAsset::Uri("https://mydomain.net/thumbnail.png"),
NewAsset::Upload({
content_id,
ipfs_hash,
size,
...
}),
];
meta = VideoMetadata {
...
// refers to second element: assets[1] which is being uploaded to the storage system
video: 1,
// refers to the first element assets[0] which is being referneced by a url string.
thumbnail_photo: 0,
...
};