Blame StdinResponse.h

Packit a4aae4
Packit a4aae4
// -*- mode: c++; c-basic-offset:4 -*-
Packit a4aae4
Packit a4aae4
// This file is part of libdap, A C++ implementation of the OPeNDAP Data
Packit a4aae4
// Access Protocol.
Packit a4aae4
Packit a4aae4
// Copyright (c) 2002,2003 OPeNDAP, Inc.
Packit a4aae4
// Author: James Gallagher <jgallagher@opendap.org>
Packit a4aae4
//
Packit a4aae4
// This library is free software; you can redistribute it and/or
Packit a4aae4
// modify it under the terms of the GNU Lesser General Public
Packit a4aae4
// License as published by the Free Software Foundation; either
Packit a4aae4
// version 2.1 of the License, or (at your option) any later version.
Packit a4aae4
//
Packit a4aae4
// This library is distributed in the hope that it will be useful,
Packit a4aae4
// but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit a4aae4
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit a4aae4
// Lesser General Public License for more details.
Packit a4aae4
//
Packit a4aae4
// You should have received a copy of the GNU Lesser General Public
Packit a4aae4
// License along with this library; if not, write to the Free Software
Packit a4aae4
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
Packit a4aae4
//
Packit a4aae4
// You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
Packit a4aae4
Packit a4aae4
#ifndef stdin_response_h
Packit a4aae4
#define stdin_response_h
Packit a4aae4
Packit a4aae4
#include <cstdio>
Packit a4aae4
Packit a4aae4
#include "Response.h"
Packit a4aae4
Packit a4aae4
namespace libdap
Packit a4aae4
{
Packit a4aae4
Packit a4aae4
/** @brief Encapsulate a response read from stdin.
Packit a4aae4
Packit a4aae4
    This class holds stdin and provides an interface from which
Packit a4aae4
    Connect can read DAP2 information from standard input. Unlike the
Packit a4aae4
    other Response classes, StdinResponse does \e not close the input
Packit a4aae4
    stream when it's done reading.
Packit a4aae4
Packit a4aae4
    @note Modified 10/25/13 to accommodate C++ istreams. */
Packit a4aae4
class StdinResponse: public Response
Packit a4aae4
{
Packit a4aae4
private:
Packit a4aae4
    FILE *d_stdin;
Packit a4aae4
    std::istream *d_cin;
Packit a4aae4
Packit a4aae4
protected:
Packit a4aae4
Packit a4aae4
public:
Packit a4aae4
    /** @brief Initialize with standard input.
Packit a4aae4
      
Packit a4aae4
        Create an instance initialized to standard input. When done, does
Packit a4aae4
        not close stdin.
Packit a4aae4
        
Packit a4aae4
        @see Response
Packit a4aae4
        
Packit a4aae4
        @param s Pointer to standard input.
Packit a4aae4
        */
Packit a4aae4
    StdinResponse(FILE *s) : Response(), d_stdin(s), d_cin(0) {}
Packit a4aae4
Packit a4aae4
    /**
Packit a4aae4
     * @brief Build a instance using a C++ istream
Packit a4aae4
     * @param in A pointer to the input stream
Packit a4aae4
     */
Packit a4aae4
    StdinResponse(std::istream &in) : Response(), d_stdin(0), d_cin(&in) {}
Packit a4aae4
Packit a4aae4
    /** Destructor. Does not close standard input. */
Packit a4aae4
    virtual ~StdinResponse() {}
Packit a4aae4
Packit a4aae4
    virtual FILE *get_stream() const { return d_stdin; }
Packit a4aae4
    virtual void set_stream(FILE *s) { d_stdin = s; }
Packit a4aae4
Packit a4aae4
    virtual std::istream *get_cpp_stream() const { return d_cin; }
Packit a4aae4
    virtual void set_cpp_stream(std::istream *in) { d_cin = in; }
Packit a4aae4
};
Packit a4aae4
Packit a4aae4
} // namespace libdap
Packit a4aae4
Packit a4aae4
#endif // pipe_response_h