'Will skip num_bytes into the current ranges.
:params num_bytes: the number of bytes that have already been read on
this request. This will change the Range header
so that the next req will start where it left off.
:raises ValueError: if invalid range header
:raises HTTPRequestedRangeNotSatisfiable: if begin + num_bytes
> end of range + 1
:raises RangeAlreadyComplete: if begin + num_bytes == end of range + 1'

def fast_forward(self, num_bytes):

    if ('Range' in self.backend_headers):
        req_range = Range(self.backend_headers['Range'])
        (begin, end) = req_range.ranges[0]
        if (begin is None):
            end -= num_bytes
            if (end == 0):
                raise RangeAlreadyComplete()
        else:
            begin += num_bytes
            if ((end is not None) and (begin == (end + 1))):
                raise RangeAlreadyComplete()
        if ((end is not None) and ((begin > end) or (end < 0))):
            raise HTTPRequestedRangeNotSatisfiable()
        req_range.ranges = ([(begin, end)] + req_range.ranges[1:])
        self.backend_headers['Range'] = str(req_range)
    else:
        self.backend_headers['Range'] = ('bytes=%d-' % num_bytes)
