Beispiel #1
0
Scanner::Scanner(std::istream* in, std::unique_ptr<Message>& message) {
    if (!message) {
        lexer_.reset(new HeaderScanner(in));
    } else if (message->is_reply()) {
        Reply* reply = static_cast<Reply*>(message.get());
        if (reply->response_code() == STATUS_SeeOther)
            lexer_.reset(new ErrorScanner(in));
        else
            lexer_.reset(new MessageScanner(in, true));
    }

    if (!lexer_)
        lexer_.reset(new MessageScanner(in));
}