## RygelHTTPSeek

RygelHTTPSeek — HTTPSeek is an abstract representation of a ranged HTTP request.

## Synopsis

    #define             RYGEL_TYPE_HTTP_SEEK
    void                rygel_http_seek_add_response_headers
                                                            (RygelHTTPSeek *self);
    RygelHTTPSeekType   rygel_http_seek_get_seek_type       (RygelHTTPSeek *self);
    void                rygel_http_seek_set_seek_type       (RygelHTTPSeek *self,
                                                             RygelHTTPSeekType value);
    SoupMessage *       rygel_http_seek_get_msg             (RygelHTTPSeek *self);
    gint64              rygel_http_seek_get_start           (RygelHTTPSeek *self);
    gint64              rygel_http_seek_get_stop            (RygelHTTPSeek *self);
    gint64              rygel_http_seek_get_step            (RygelHTTPSeek *self);
    gint64              rygel_http_seek_get_length          (RygelHTTPSeek *self);
    gint64              rygel_http_seek_get_total_length    (RygelHTTPSeek *self);
    struct              RygelHTTPSeek;
    struct              RygelHTTPSeekClass;
    enum                RygelHTTPSeekType;
    enum                RygelHTTPSeekError;

## Object Hierarchy

      GObject
       +----RygelHTTPSeek

      GEnum
       +----RygelHTTPSeekType

## Properties

      "length"                   gint64                : Read
      "msg"                      SoupMessage*          : Read
      "seek-type"                RygelHTTPSeekType     : Read / Write
      "start"                    gint64                : Read
      "step"                     gint64                : Read
      "stop"                     gint64                : Read
      "total-length"             gint64                : Read

## Description

It can be one of:

- - The classic Range request (seek_type == HTTPSeekType.BYTE), with start and stop in bytes.

  - The DLNA-Specific "TimeSeekRange.dlna.org" request (seek_type == HTTPSeekType.TIME) with start and stop in microseconds.

## Details

### RYGEL_TYPE_HTTP_SEEK

    #define RYGEL_TYPE_HTTP_SEEK (rygel_http_seek_get_type ())

The type for RygelHTTPSeek.

### rygel_http_seek_add_response_headers ()

    void                rygel_http_seek_add_response_headers
                                                            (RygelHTTPSeek *self);

`self` : | the RygelHTTPSeek instance

### rygel_http_seek_get_seek_type ()

    RygelHTTPSeekType   rygel_http_seek_get_seek_type       (RygelHTTPSeek *self);

Get and return the current value of the "seek-type" property.

Identifies whether this is a class Range request or a DLNA-specific "TimeSeekRange.dlna.org" request.

`self` : | the RygelHTTPSeek instance to query
Returns : | the value of the "seek-type" property

### rygel_http_seek_set_seek_type ()

    void                rygel_http_seek_set_seek_type       (RygelHTTPSeek *self,
                                                             RygelHTTPSeekType value);

Set the value of the "seek-type" property to `value`.

Identifies whether this is a class Range request or a DLNA-specific "TimeSeekRange.dlna.org" request.

`self` : | the RygelHTTPSeek instance to modify
`value` : | the new value of the "seek-type" property

### rygel_http_seek_get_msg ()

    SoupMessage *       rygel_http_seek_get_msg             (RygelHTTPSeek *self);

Get and return the current value of the "msg" property.

`self` : | the RygelHTTPSeek instance to query
Returns : | the value of the "msg" property

### rygel_http_seek_get_start ()

    gint64              rygel_http_seek_get_start           (RygelHTTPSeek *self);

Get and return the current value of the "start" property.

The start of the range as a number of bytes (classic) or as microseconds (DLNA-specific). See seek_type.

`self` : | the RygelHTTPSeek instance to query
Returns : | the value of the "start" property

### rygel_http_seek_get_stop ()

    gint64              rygel_http_seek_get_stop            (RygelHTTPSeek *self);

Get and return the current value of the "stop" property.

The end of the range as a number of bytes (classic) or as microseconds (DLNA-specific). See seek_type.

`self` : | the RygelHTTPSeek instance to query
Returns : | the value of the "stop" property

### rygel_http_seek_get_step ()

    gint64              rygel_http_seek_get_step            (RygelHTTPSeek *self);

Get and return the current value of the "step" property.

Either 1 byte (classic) or as 1000 G_TIME_SPAN_MILLISECOND microseconds (DLNA-specific). See seek_type.

`self` : | the RygelHTTPSeek instance to query
Returns : | the value of the "step" property

### rygel_http_seek_get_length ()

    gint64              rygel_http_seek_get_length          (RygelHTTPSeek *self);

Get and return the current value of the "length" property.

The length of the range as a number of bytes (classic) or as microseconds (DLNA-specific). See seek_type.

`self` : | the RygelHTTPSeek instance to query
Returns : | the value of the "length" property

### rygel_http_seek_get_total_length ()

    gint64              rygel_http_seek_get_total_length    (RygelHTTPSeek *self);

Get and return the current value of the "total-length" property.

The length of the media file as a number of bytes (classic) or as microseconds (DLNA-specific). See seek_type.

`self` : | the RygelHTTPSeek instance to query
Returns : | the value of the "total-length" property

### struct RygelHTTPSeek

    struct RygelHTTPSeek;

HTTPSeek is an abstract representation of a ranged HTTP request.

It can be one of:

- - The classic Range request (seek_type == HTTPSeekType.BYTE), with start and stop in bytes.

  - The DLNA-Specific "TimeSeekRange.dlna.org" request (seek_type == HTTPSeekType.TIME) with start and stop in microseconds.

### struct RygelHTTPSeekClass

    struct RygelHTTPSeekClass {
    	GObjectClass parent_class;
    	void (*add_response_headers) (RygelHTTPSeek* self);
    };

The class structure for `RYGEL_TYPE_HTTP_SEEK`. All the fields in this structure are private and should never be accessed directly.

GObjectClass `parent_class`; | the parent class structure
`add_response_headers` () | virtual method called by `rygel_http_seek_add_response_headers()`

### enum RygelHTTPSeekType

    typedef enum {
    	RYGEL_HTTP_SEEK_TYPE_BYTE,
    	RYGEL_HTTP_SEEK_TYPE_TIME
    } RygelHTTPSeekType;

`RYGEL_HTTP_SEEK_TYPE_BYTE` |
`RYGEL_HTTP_SEEK_TYPE_TIME` |

### enum RygelHTTPSeekError

    typedef enum {
    	RYGEL_HTTP_SEEK_ERROR_INVALID_RANGE = SOUP_STATUS_BAD_REQUEST,
    	RYGEL_HTTP_SEEK_ERROR_OUT_OF_RANGE = SOUP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE
    } RygelHTTPSeekError;

`RYGEL_HTTP_SEEK_ERROR_INVALID_RANGE` |
`RYGEL_HTTP_SEEK_ERROR_OUT_OF_RANGE` |

## Property Details

### The `"length"` property

      "length"                   gint64                : Read

The length of the range as a number of bytes (classic) or as microseconds (DLNA-specific). See seek_type.

Default value: 0

### The `"msg"` property

      "msg"                      SoupMessage*          : Read

msg.

### The `"seek-type"` property

      "seek-type"                RygelHTTPSeekType     : Read / Write

Identifies whether this is a class Range request or a DLNA-specific "TimeSeekRange.dlna.org" request.

Default value: RYGEL_HTTP_SEEK_TYPE_BYTE

### The `"start"` property

      "start"                    gint64                : Read

The start of the range as a number of bytes (classic) or as microseconds (DLNA-specific). See seek_type.

Default value: 0

### The `"step"` property

      "step"                     gint64                : Read

Either 1 byte (classic) or as 1000 G_TIME_SPAN_MILLISECOND microseconds (DLNA-specific). See seek_type.

Default value: 0

### The `"stop"` property

      "stop"                     gint64                : Read

The end of the range as a number of bytes (classic) or as microseconds (DLNA-specific). See seek_type.

Default value: 0

### The `"total-length"` property

      "total-length"             gint64                : Read

The length of the media file as a number of bytes (classic) or as microseconds (DLNA-specific). See seek_type.

Default value: 0