'Make a single roundtrip to the server.
Args:
tf: Writable binary stream to which the log lines returned by
the server are written, stripped of headers, and excluding
lines skipped due to self.sentinel or self.valid_dates filtering.
offset: Offset string for a continued request; None for the first.
Returns:
The offset string to be used for the next request, if another
request should be issued; or None, if not.'

def RequestLogLines(self, tf, offset):

    logging.info('Request    with    offset    %r.', offset)
    kwds = {'app_id': self.app_id, 'version': self.version_id, 'limit': 1000, 'no_header': 1}
    if self.module:
        kwds['module'] = self.module
    if offset:
        kwds['offset'] = offset
    if (self.severity is not None):
        kwds['severity'] = str(self.severity)
    if (self.vhost is not None):
        kwds['vhost'] = str(self.vhost)
    if (self.include_vhost is not None):
        kwds['include_vhost'] = str(self.include_vhost)
    if (self.include_all is not None):
        kwds['include_all'] = str(self.include_all)
    response = self.rpcserver.Send('/api/request_logs', payload=None, **kwds)
    response = response.replace('\r', '\x00')
    lines = response.splitlines()
    logging.info('Received    %d    bytes,    %d    records.', len(response), len(lines))
    offset = None
    valid_dates = self.valid_dates
    sentinel = self.sentinel
    skip_until = self.skip_until
    len_sentinel = None
    if sentinel:
        len_sentinel = len(sentinel)
    for line in lines:
        if line.startswith('#'):
            match = re.match('^#\\s*next_offset=(\\S+)\\s*$', line)
            if (match and (match.group(1) != 'None')):
                offset = match.group(1)
            continue
        if (sentinel and line.startswith(sentinel) and (line[len_sentinel:(len_sentinel + 1)] in ('', '\x00'))):
            return None
        linedate = DateOfLogLine(line)
        if (not linedate):
            continue
        if skip_until:
            if (linedate > skip_until):
                continue
            else:
                self.skip_until = skip_until = False
        if (valid_dates and (not (valid_dates[0] <= linedate <= valid_dates[1]))):
            return None
        tf.write((line + '\n'))
    if (not lines):
        return None
    return offset
