#ifndef __DCL_HTTP_STREAM_H__
#define __DCL_HTTP_STREAM_H__   20060104

#ifndef __DCL_STREAM_H__
#include <dcl/core/Stream.h>
#endif

__DCL_BEGIN_NAMESPACE

class HttpServletContext;

class DCLNAPI HttpInputStream : public InputStream
{
    DECLARE_CLASSINFO(HttpInputStream)
public:
    HttpInputStream(HttpServletContext* pCtx);

    virtual size_t read(void* p, size_t n)
                __DCL_THROWS1(IOException*);

    virtual bool eof() const
                __DCL_THROWS1(IOException*);

    virtual String readLine()
                __DCL_THROWS1(IOException*);

protected:
    HttpServletContext* m_pCtx;
    bool            m_bEof;
};

class DCLNAPI HttpOutputStream : public OutputStream
{
    DECLARE_CLASSINFO(HttpOutputStream)
public:
    HttpOutputStream(HttpServletContext* pCtx);

    virtual void write(const void* p, size_t n)
            __DCL_THROWS1(IOException*);

private:
    HttpServletContext* m_pCtx;
};

__DCL_END_NAMESPACE

#endif  // __DCL_HTTP_STREAM_H__