1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2025-02-23 21:27:14 +01:00
SqMod/vendor/POCO/Net/include/Poco/Net/HTTPHeaderStream.h
Sandu Liviu Catalin 4a6bfc086c Major plugin refactor and cleanup.
Switched to POCO library for unified platform/library interface.
Deprecated the external module API. It was creating more problems than solving.
Removed most built-in libraries in favor of system libraries for easier maintenance.
Cleaned and secured code with help from static analyzers.
2021-01-30 08:51:39 +02:00

103 lines
2.0 KiB
C++

//
// HTTPHeaderStream.h
//
// Library: Net
// Package: HTTP
// Module: HTTPHeaderStream
//
// Definition of the HTTPHeaderStream class.
//
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier: BSL-1.0
//
#ifndef Net_HTTPHeaderStream_INCLUDED
#define Net_HTTPHeaderStream_INCLUDED
#include "Poco/Net/Net.h"
#include "Poco/Net/HTTPBasicStreamBuf.h"
#include "Poco/MemoryPool.h"
#include <cstddef>
#include <istream>
#include <ostream>
namespace Poco {
namespace Net {
class HTTPSession;
class Net_API HTTPHeaderStreamBuf: public HTTPBasicStreamBuf
/// This is the streambuf class used for reading from a HTTP header
/// in a HTTPSession.
{
public:
using openmode = HTTPBasicStreamBuf::openmode;
HTTPHeaderStreamBuf(HTTPSession& session, openmode mode);
~HTTPHeaderStreamBuf();
protected:
int readFromDevice(char* buffer, std::streamsize length);
int writeToDevice(const char* buffer, std::streamsize length);
private:
HTTPSession& _session;
bool _end;
};
class Net_API HTTPHeaderIOS: public virtual std::ios
/// The base class for HTTPHeaderInputStream.
{
public:
HTTPHeaderIOS(HTTPSession& session, HTTPHeaderStreamBuf::openmode mode);
~HTTPHeaderIOS();
HTTPHeaderStreamBuf* rdbuf();
protected:
HTTPHeaderStreamBuf _buf;
};
class Net_API HTTPHeaderInputStream: public HTTPHeaderIOS, public std::istream
/// This class is for internal use by HTTPSession only.
{
public:
HTTPHeaderInputStream(HTTPSession& session);
~HTTPHeaderInputStream();
void* operator new(std::size_t size);
void operator delete(void* ptr);
private:
static Poco::MemoryPool _pool;
};
class Net_API HTTPHeaderOutputStream: public HTTPHeaderIOS, public std::ostream
/// This class is for internal use by HTTPSession only.
{
public:
HTTPHeaderOutputStream(HTTPSession& session);
~HTTPHeaderOutputStream();
void* operator new(std::size_t size);
void operator delete(void* ptr);
private:
static Poco::MemoryPool _pool;
};
} } // namespace Poco::Net
#endif // Net_HTTPHeaderStream_INCLUDED