11.3 File System Objects


The DSM-CC U-U object carousel carries serialized object in Basic Input Output Protocol (BIOP) messages. These objects are used to assemble a federation of interlinked file systems. Next, the specific structure of these serialized object is presented.

11.3.1 Gateway Objects

A ServiceGateway object is a special Directory object that is referred to as the Root directory of the service domain. It is a Directory object with a different object kind and whose access attributes that are not encapsulated within the objectInfo field. The DSI section (see Table 11.8) is used to point to the service gateway structure, which is essentially the directory structure (see Table 11.9).

Table 11.8. The Data Service Initiate Section Pointing to the Gateway (Root Directory)

Field

Type

Description

DataServiceInitiate() {

 

DSMCCMessageHeared()

 

The standard DSM-CC Messsage header.

 

serverId

160 uimsbf

This 20-byte (160-bit) field contains the carouselNSAPaddress .

 

compatibilityDescriptor_length

16 uimsbf = 0x0000

Typically, there is no need to use this descriptor.

 

ServiceGatewayInfo_length

16 uimsbf

The length of the ServiceGatewayInfo structure that follows .

 

ServiceGatewayInfo() {

   

IOR()

*

The IOR of ServiceGateway object, whose structure is similar to that of a Directory object (see Table 11.4).

   

downloadTAPs_count

8 uimsbf

The number of TAPs included in this ServiceGatewayInfo structure. These TAPs indicate program elements containing DII messages or DDB messages.

   

for(i = 0; i <downloadTAPs_count; i++)

   

BIOP_Tap() {

*

 
     

tapid

16 uimsbf = 0x00

The value could be 0x00 when there is no need to reference a TAP in the ServiceGatewayInfo structure.

     

tapuse

16 uimsbf = 0x07 or 0x0A

This field should be 0x0007 (DOWNLOAD_CTRL_DOWN _USE) when referencing a DIIs, and 0x000A (DOWNLOAD _DATA_DOWN_USE) when referring to DDBs.

     

association_tag

16 uimsbf

This field uniquely identifies a program element listed in the PMT for the current virtual channel. The value of this field matches the association_tag value of PMT association_tag_descriptor .

     

selector() {

   
       

selector_length

8 uimsbf

This field specifies the number of bytes remaining in the TAP structure following this field. Should be 0x0A. for tapUse DOWNLOAD_CTRL _DOWN_USE. The value should be 0x00, and the remaining fields of the selector() should be omitted when tapUse is DOWNLOAD _DATA_DOWN_USE.

       

selector_type

16 uimsbf

Should be set to 0x01 when tapUse is DOWNLOAD_CTRL_DOWN _USE, to indicate the use of a MessageSelector. Should be omitted when tapUse is DOWNLOAD _DATA_DOWN_USE.

       

transaction_id

32 uimsbf

When tapUse is DOWNLOAD _CTRL_DOWN_USE, this should be set to the transactionId of the DII message that contains the module delivery parameters. This field should be omitted.when tapUse is DOWNLOAD_DATA _DOWN_USE.

       

timeout

32 uimsbf

When tapUse is DOWNLOAD _CTRL_DOWN_USE, this 32-bit field should indicate the timeout period, in microseconds, to be used to time out the acquisition of the DII message. When tapUse is DOWNLOAD_DATA_DOWN _USE, this field should be omitted.

     

} // selector

   

} // Tap

 

} // ServiceGatewayInfo

 

serviceContext_count

8 uimsbf = 0x00

Typically, service context is not needed for a unidirectional file system broadcast.

 

userInfo_length

16 uimsbf

This field specifies the number of bytes in the user information data field.

 

userInfo_bytes

*

This field should contain the user information data carried by this ServiceGateway object.

}

11.3.2 Directory Objects

A Directory object conveys a list of entries of files and subdirectories. It consists of a list of binding structures, each binding together an object's name , its IOR and the information about it (via objectInfo ). In addition, each binding may also contain an objectInfo field with some additional attributes of the bound object. The following rules apply to the DirectoryMessage instantiation of the GenericObjectMessage in ATSC transports (see Table 11.9):

  1. The objectKind field contains the string "DSM::Directory" or "dir".

  2. The access attributes of the Directory object are not encapsulated in the objectInfo field.

  3. DirectoryMessage and are neither encapsulated in the objectInfo field of the parent Directory object (if any). Hence, the objectInfo field is empty.

  4. The messageBody field contains the BIOP::DirectoryMessageBody structure. The syntax and semantics of the BIOP::DirectoryMessageBody are presented below.

Table 11.9. The Directory Object ”Carrying a Directory

Field

Type

Description

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

11.3.3 File Objects

A File object is essentially a stream of bytes that constitutes the content of a downloadable file along with attributes specific to this file. The File object is encoded using a FileMessage , which is an instantiation of the generic object format. The following rules apply to the FileMessage instantiation of the GenericObjectMessage in ATSC transports (see Table 11.10):

  • The objectKind field contains the string "DSM::File" or "fil".

  • The Access attributes and the DSM::File::Content attribute of the File object are not encapsulated in neither the objectInfo field of the FileMessage nor the objectInfo field of the parent DirectoryMessage .

  • The DSM::File::ContentSize attribute is inserted at the beginning of both the objectInfo field of the FileMessage and the objectInfo field of the (parent) DirectoryMessage .

  • The messageBody field contains the BIOP::FileMessageBody structure.

Table 11.10. The File Object ”Carrying a File

Field

Type

Description

BIOP::FileMessage() {

 

magic

32 bits

This field should be 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 protocol 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.

 

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, and may not be greater than 8.

 

objectKey_data

*

This is 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.

 

fileObjectKind_length

8 uimsbf = 0x04

This field should be set of 0x04 indicating that the fileObjectKind_data field is 4 bytes long.

 

fileObjectKind_data

32 uimsbf

This field should be set to 0x66696C00 ("fil" 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.

 

fileObjectInfo() {

   

info_length

16 uimsbf

This field specifies the length in bytes of the objectInfo structure for this directory object.

   

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

   

} // fileObjectInfo

   

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

 

serviceContext_count

8 uimsbf = 0x00

Typically, a 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.

 

userInfo_bytes

*

This field should contain the file's data.

} // BIOP::FileMessage



ITV Handbook. Technologies and Standards
ITV Handbook: Technologies and Standards
ISBN: 0131003127
EAN: 2147483647
Year: 2003
Pages: 170

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net