BIOP::DirectoryMessage() { |
| magic | 32 bits | The magic field is set to 0x42494F50 to indicate that this is a BIOP message. The value of this field corresponds to the string "BIOP" encoded in ISO Latin-1. |
| biop_version.major | 8 uimsbf | This field specifies the major version number of the BIOP used. |
| biop_version.minor | 8 uimsbf | This field specifies the minor version number of the BIOP protocol used. |
| byte_order | 8 uimsbf = 0x00 | This field should be set to 0x00 (FALSE) indicating big-endian byte ordering for the subsequent fields of the message (including message_size). |
| message_type | 8 uimsbf = 0x00 | This field indicates the type of the message. The value of this field is set to 0x00, since values 0x01 to 0xFF are reserved for ISO/IEC 13818-6. |
| message_size | 32 uimsbf | This field contains the length in bytes of the message following this field. This count includes any alignment gaps that may be introduced by the data encoding standard. |
| objectKey_length | 8 uimsbf <= 0x08 | This field specifies the length in bytes of the object key; must be less or equal to 8. |
| objectKey_data | * | This field specifies the object key uniquely identifying this File object. It is identical to the objectKey that is present in the DSM::ObjectLocation component of an IOR referring to this object. Typically, the value of the objectKey is only meaningful to the Broadcast Server and should not be interpreted by the Client. |
| dirObjectKind_length | 8 uimsbf = 0x04 | This field should be set to 0x04 indicating that the fileObjectKind_data field is 4 bytes long. |
| dirObjectKind_data | 32 uimsbf | This field should be set to 0x64697200 ("dir" with a null byte terminator), indicating that this is a File object. It must be identical to the Kind string that is present in any IOR referring to this File object. |
| dirObjectInfo() { |
| | info_length | 16 uimsbf | This field specifies the length in bytes of the objectInfo structure for this directory object. |
| | lastModifiedTume_descriptor() { |
| | | descriptor_tag | 8 uimsbf = 0x81 | This field specifies that this is a last-modified-time descriptor. It should be set to 0x81 for compatibility with ATSC; this descriptor is not available in DVB-MHP. |
| | | descriptor_length | 8 uimsbf = 0x08 | The time stamp should be 64 bits. |
| | | descriptor_length | * | To ensure compatibility with Java specification, this 64-bit unsigned integer quantity represents UTC time when the File object was last modified, measured in milliseconds since 00:00:00 of January 1, 1970, GMT. The value 0xFFFFFFFFFFFFFFFF indicates that the time is not available. |
| | } // lastModifiedTume_descriptor |
| } // dirObjectInfo |
| serviceContext_count | 8 uimsbf = 0x00 | Typically, service context is not needed for a unidirectional file system broadcast. |
| content_length | 64 uimsbf | The length of this message body, namely the length of the file. |
| bindings_count | 8 uimsbf | This field should contain the file's data. |
| bindings_count | 8 uimsbf | This field contains the number of elements in this directory. For each element, a BIOP::Name() structure is defined, followed by an IOR(), followed by the objectInfo for the referenced object. |
| for (i=0; i<bindings_count; i++) { |
| | name_component_count | 8 uimsbf = 0x01 | This field should be set to 0x01 indicating that each element is associated with a single binding structure. |
| | id_length | 8 uimsbf | This field specifies the length in bytes of the ID for this binding, including the null byte terminator for the string. |
| | id_bytes | * | This null terminated field contains the value of the ID for this binding. The ID must conform to the syntax of a relative path . All binding names in a single Directory object must be distinct. |
| | kind_length | 8 uimsbf | This field must be set to 0x04 to indicate that the object type is exactly 4 bytes long. |
| | kind_bytes | * | This field should be set to either 0x64697200, if the entry is a directory, or 0x66696C00, if the entry is a file. |
| | binding_type | 8 uimsbf | This field should be set to either 0x64697200, if the entry is a directory, or 0x66696C00, if the entry is a file. |
| | IOR() | * | This is the IOR structure pointing to the object represented by this directory entry. |
| | if (kind_type=0x66696C00) { | | For a file ... |
| | | fileSize | 64 uimsbf | This field specifies the number of bytes in the file content. The maximum size of a file is actually somewhat less than 256M bytes. |
| | | contentType_descriptor() { |
| | | | descriptor_tag | 8 uimsbf = 0x72 | This field specifies that this is a content-type descriptor. It should be set to 0x72 for compatibility with DVB MHP and ATSC. |
| | | | descriptor_length | 8 uimsbf | The number of characters in the content (MIME) type of the object, with the addition of 1 for the null value terminator. |
| | | | descriptor_length | * | This field contains a string that indicates the content (MIME) type of the object, i.e., the string that would appear in the Content-Type field of a MIME message for this content type. |
| | | } // contentType_descriptor |
| | } // if kind type |
| | lastModifiedTume_descriptor() { | This descriptor should be specified for both files and directories. |
| | | descriptor_tag | 8 uimsbf = 0x81 | This field specifies that this is a last-modified-time descriptor. It should be set to 0x81 for compatibility with ATSC; this descriptor is not available in DVB-MHP. |
| | | descriptor_length | 8 uimsbf = 0x08 | The time stamp should be 64 bits. |
| | | descriptor_length | * | To ensure compatibility with Java specification, this 64-bit unsigned integer quantity represents UTC time when the File object was last modified, measured in milliseconds since 00:00:00 of January 1, 1970, GMT. The value 0xFFFFFFFFFFFFFFFF indicates that the time is not available. |
| | | }//lastModifiedTume_descriptor |
| | }// if (kind_type=0x66696C00) |
| }}// for i<bindings_count |
} // DirectoryMessage |