mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 01:25:21 +00:00
Merge pull request #51732 from ClickHouse/remove_poco_memory_pool
Remove MemoryPool from Poco because it's useless
This commit is contained in:
commit
f1aaea129d
@ -87,7 +87,6 @@ set (SRCS
|
|||||||
src/LoggingRegistry.cpp
|
src/LoggingRegistry.cpp
|
||||||
src/LogStream.cpp
|
src/LogStream.cpp
|
||||||
src/MD5Engine.cpp
|
src/MD5Engine.cpp
|
||||||
src/MemoryPool.cpp
|
|
||||||
src/MemoryStream.cpp
|
src/MemoryStream.cpp
|
||||||
src/Message.cpp
|
src/Message.cpp
|
||||||
src/Mutex.cpp
|
src/Mutex.cpp
|
||||||
|
@ -1,116 +0,0 @@
|
|||||||
//
|
|
||||||
// MemoryPool.h
|
|
||||||
//
|
|
||||||
// Library: Foundation
|
|
||||||
// Package: Core
|
|
||||||
// Module: MemoryPool
|
|
||||||
//
|
|
||||||
// Definition of the MemoryPool class.
|
|
||||||
//
|
|
||||||
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
|
|
||||||
// and Contributors.
|
|
||||||
//
|
|
||||||
// SPDX-License-Identifier: BSL-1.0
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef Foundation_MemoryPool_INCLUDED
|
|
||||||
#define Foundation_MemoryPool_INCLUDED
|
|
||||||
|
|
||||||
|
|
||||||
#include <cstddef>
|
|
||||||
#include <vector>
|
|
||||||
#include "Poco/Foundation.h"
|
|
||||||
#include "Poco/Mutex.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Poco
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
class Foundation_API MemoryPool
|
|
||||||
/// A simple pool for fixed-size memory blocks.
|
|
||||||
///
|
|
||||||
/// The main purpose of this class is to speed-up
|
|
||||||
/// memory allocations, as well as to reduce memory
|
|
||||||
/// fragmentation in situations where the same blocks
|
|
||||||
/// are allocated all over again, such as in server
|
|
||||||
/// applications.
|
|
||||||
///
|
|
||||||
/// All allocated blocks are retained for future use.
|
|
||||||
/// A limit on the number of blocks can be specified.
|
|
||||||
/// Blocks can be preallocated.
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
MemoryPool(std::size_t blockSize, int preAlloc = 0, int maxAlloc = 0);
|
|
||||||
/// Creates a MemoryPool for blocks with the given blockSize.
|
|
||||||
/// The number of blocks given in preAlloc are preallocated.
|
|
||||||
|
|
||||||
~MemoryPool();
|
|
||||||
|
|
||||||
void * get();
|
|
||||||
/// Returns a memory block. If there are no more blocks
|
|
||||||
/// in the pool, a new block will be allocated.
|
|
||||||
///
|
|
||||||
/// If maxAlloc blocks are already allocated, an
|
|
||||||
/// OutOfMemoryException is thrown.
|
|
||||||
|
|
||||||
void release(void * ptr);
|
|
||||||
/// Releases a memory block and returns it to the pool.
|
|
||||||
|
|
||||||
std::size_t blockSize() const;
|
|
||||||
/// Returns the block size.
|
|
||||||
|
|
||||||
int allocated() const;
|
|
||||||
/// Returns the number of allocated blocks.
|
|
||||||
|
|
||||||
int available() const;
|
|
||||||
/// Returns the number of available blocks in the pool.
|
|
||||||
|
|
||||||
private:
|
|
||||||
MemoryPool();
|
|
||||||
MemoryPool(const MemoryPool &);
|
|
||||||
MemoryPool & operator=(const MemoryPool &);
|
|
||||||
|
|
||||||
void clear();
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
BLOCK_RESERVE = 128
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef std::vector<char *> BlockVec;
|
|
||||||
|
|
||||||
std::size_t _blockSize;
|
|
||||||
int _maxAlloc;
|
|
||||||
int _allocated;
|
|
||||||
BlockVec _blocks;
|
|
||||||
FastMutex _mutex;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// inlines
|
|
||||||
//
|
|
||||||
inline std::size_t MemoryPool::blockSize() const
|
|
||||||
{
|
|
||||||
return _blockSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline int MemoryPool::allocated() const
|
|
||||||
{
|
|
||||||
return _allocated;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline int MemoryPool::available() const
|
|
||||||
{
|
|
||||||
return (int)_blocks.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace Poco
|
|
||||||
|
|
||||||
|
|
||||||
#endif // Foundation_MemoryPool_INCLUDED
|
|
@ -1,105 +0,0 @@
|
|||||||
//
|
|
||||||
// MemoryPool.cpp
|
|
||||||
//
|
|
||||||
// Library: Foundation
|
|
||||||
// Package: Core
|
|
||||||
// Module: MemoryPool
|
|
||||||
//
|
|
||||||
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
|
|
||||||
// and Contributors.
|
|
||||||
//
|
|
||||||
// SPDX-License-Identifier: BSL-1.0
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
#include "Poco/MemoryPool.h"
|
|
||||||
#include "Poco/Exception.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Poco {
|
|
||||||
|
|
||||||
|
|
||||||
MemoryPool::MemoryPool(std::size_t blockSize, int preAlloc, int maxAlloc):
|
|
||||||
_blockSize(blockSize),
|
|
||||||
_maxAlloc(maxAlloc),
|
|
||||||
_allocated(preAlloc)
|
|
||||||
{
|
|
||||||
poco_assert (maxAlloc == 0 || maxAlloc >= preAlloc);
|
|
||||||
poco_assert (preAlloc >= 0 && maxAlloc >= 0);
|
|
||||||
|
|
||||||
int r = BLOCK_RESERVE;
|
|
||||||
if (preAlloc > r)
|
|
||||||
r = preAlloc;
|
|
||||||
if (maxAlloc > 0 && maxAlloc < r)
|
|
||||||
r = maxAlloc;
|
|
||||||
_blocks.reserve(r);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
for (int i = 0; i < preAlloc; ++i)
|
|
||||||
{
|
|
||||||
_blocks.push_back(new char[_blockSize]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
clear();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
MemoryPool::~MemoryPool()
|
|
||||||
{
|
|
||||||
clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MemoryPool::clear()
|
|
||||||
{
|
|
||||||
for (BlockVec::iterator it = _blocks.begin(); it != _blocks.end(); ++it)
|
|
||||||
{
|
|
||||||
delete [] *it;
|
|
||||||
}
|
|
||||||
_blocks.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void* MemoryPool::get()
|
|
||||||
{
|
|
||||||
FastMutex::ScopedLock lock(_mutex);
|
|
||||||
|
|
||||||
if (_blocks.empty())
|
|
||||||
{
|
|
||||||
if (_maxAlloc == 0 || _allocated < _maxAlloc)
|
|
||||||
{
|
|
||||||
++_allocated;
|
|
||||||
return new char[_blockSize];
|
|
||||||
}
|
|
||||||
else throw OutOfMemoryException("MemoryPool exhausted");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char* ptr = _blocks.back();
|
|
||||||
_blocks.pop_back();
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MemoryPool::release(void* ptr)
|
|
||||||
{
|
|
||||||
FastMutex::ScopedLock lock(_mutex);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_blocks.push_back(reinterpret_cast<char*>(ptr));
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
delete [] reinterpret_cast<char*>(ptr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace Poco
|
|
@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "Poco/BufferedStreamBuf.h"
|
#include "Poco/BufferedStreamBuf.h"
|
||||||
#include "Poco/Net/HTTPBufferAllocator.h"
|
|
||||||
#include "Poco/Net/Net.h"
|
#include "Poco/Net/Net.h"
|
||||||
|
|
||||||
|
|
||||||
@ -27,9 +26,9 @@ namespace Poco
|
|||||||
{
|
{
|
||||||
namespace Net
|
namespace Net
|
||||||
{
|
{
|
||||||
|
constexpr size_t HTTP_DEFAULT_BUFFER_SIZE = 8 * 1024;
|
||||||
|
|
||||||
|
typedef Poco::BasicBufferedStreamBuf<char, std::char_traits<char>> HTTPBasicStreamBuf;
|
||||||
typedef Poco::BasicBufferedStreamBuf<char, std::char_traits<char>, HTTPBufferAllocator> HTTPBasicStreamBuf;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
//
|
|
||||||
// HTTPBufferAllocator.h
|
|
||||||
//
|
|
||||||
// Library: Net
|
|
||||||
// Package: HTTP
|
|
||||||
// Module: HTTPBufferAllocator
|
|
||||||
//
|
|
||||||
// Definition of the HTTPBufferAllocator class.
|
|
||||||
//
|
|
||||||
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
|
|
||||||
// and Contributors.
|
|
||||||
//
|
|
||||||
// SPDX-License-Identifier: BSL-1.0
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef Net_HTTPBufferAllocator_INCLUDED
|
|
||||||
#define Net_HTTPBufferAllocator_INCLUDED
|
|
||||||
|
|
||||||
|
|
||||||
#include <ios>
|
|
||||||
#include "Poco/MemoryPool.h"
|
|
||||||
#include "Poco/Net/Net.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Poco
|
|
||||||
{
|
|
||||||
namespace Net
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
class Net_API HTTPBufferAllocator
|
|
||||||
/// A BufferAllocator for HTTP streams.
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
static char * allocate(std::streamsize size);
|
|
||||||
static void deallocate(char * ptr, std::streamsize size);
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
BUFFER_SIZE = 128 * 1024
|
|
||||||
};
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Poco::MemoryPool _pool;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
} // namespace Poco::Net
|
|
||||||
|
|
||||||
|
|
||||||
#endif // Net_HTTPBufferAllocator_INCLUDED
|
|
@ -21,7 +21,6 @@
|
|||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <istream>
|
#include <istream>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include "Poco/MemoryPool.h"
|
|
||||||
#include "Poco/Net/HTTPBasicStreamBuf.h"
|
#include "Poco/Net/HTTPBasicStreamBuf.h"
|
||||||
#include "Poco/Net/Net.h"
|
#include "Poco/Net/Net.h"
|
||||||
|
|
||||||
@ -80,12 +79,6 @@ namespace Net
|
|||||||
public:
|
public:
|
||||||
HTTPChunkedInputStream(HTTPSession & session);
|
HTTPChunkedInputStream(HTTPSession & session);
|
||||||
~HTTPChunkedInputStream();
|
~HTTPChunkedInputStream();
|
||||||
|
|
||||||
void * operator new(std::size_t size);
|
|
||||||
void operator delete(void * ptr);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Poco::MemoryPool _pool;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -95,12 +88,6 @@ namespace Net
|
|||||||
public:
|
public:
|
||||||
HTTPChunkedOutputStream(HTTPSession & session);
|
HTTPChunkedOutputStream(HTTPSession & session);
|
||||||
~HTTPChunkedOutputStream();
|
~HTTPChunkedOutputStream();
|
||||||
|
|
||||||
void * operator new(std::size_t size);
|
|
||||||
void operator delete(void * ptr);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Poco::MemoryPool _pool;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -78,12 +78,6 @@ namespace Net
|
|||||||
public:
|
public:
|
||||||
HTTPFixedLengthInputStream(HTTPSession & session, HTTPFixedLengthStreamBuf::ContentLength length);
|
HTTPFixedLengthInputStream(HTTPSession & session, HTTPFixedLengthStreamBuf::ContentLength length);
|
||||||
~HTTPFixedLengthInputStream();
|
~HTTPFixedLengthInputStream();
|
||||||
|
|
||||||
void * operator new(std::size_t size);
|
|
||||||
void operator delete(void * ptr);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Poco::MemoryPool _pool;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -93,12 +87,6 @@ namespace Net
|
|||||||
public:
|
public:
|
||||||
HTTPFixedLengthOutputStream(HTTPSession & session, HTTPFixedLengthStreamBuf::ContentLength length);
|
HTTPFixedLengthOutputStream(HTTPSession & session, HTTPFixedLengthStreamBuf::ContentLength length);
|
||||||
~HTTPFixedLengthOutputStream();
|
~HTTPFixedLengthOutputStream();
|
||||||
|
|
||||||
void * operator new(std::size_t size);
|
|
||||||
void operator delete(void * ptr);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Poco::MemoryPool _pool;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <istream>
|
#include <istream>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include "Poco/MemoryPool.h"
|
|
||||||
#include "Poco/Net/HTTPBasicStreamBuf.h"
|
#include "Poco/Net/HTTPBasicStreamBuf.h"
|
||||||
#include "Poco/Net/Net.h"
|
#include "Poco/Net/Net.h"
|
||||||
|
|
||||||
@ -74,12 +73,6 @@ namespace Net
|
|||||||
public:
|
public:
|
||||||
HTTPHeaderInputStream(HTTPSession & session);
|
HTTPHeaderInputStream(HTTPSession & session);
|
||||||
~HTTPHeaderInputStream();
|
~HTTPHeaderInputStream();
|
||||||
|
|
||||||
void * operator new(std::size_t size);
|
|
||||||
void operator delete(void * ptr);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Poco::MemoryPool _pool;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -89,12 +82,6 @@ namespace Net
|
|||||||
public:
|
public:
|
||||||
HTTPHeaderOutputStream(HTTPSession & session);
|
HTTPHeaderOutputStream(HTTPSession & session);
|
||||||
~HTTPHeaderOutputStream();
|
~HTTPHeaderOutputStream();
|
||||||
|
|
||||||
void * operator new(std::size_t size);
|
|
||||||
void operator delete(void * ptr);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Poco::MemoryPool _pool;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -192,7 +192,7 @@ namespace Net
|
|||||||
HTTPSession & operator=(const HTTPSession &);
|
HTTPSession & operator=(const HTTPSession &);
|
||||||
|
|
||||||
StreamSocket _socket;
|
StreamSocket _socket;
|
||||||
char * _pBuffer;
|
std::unique_ptr<char[]> _pBuffer;
|
||||||
char * _pCurrent;
|
char * _pCurrent;
|
||||||
char * _pEnd;
|
char * _pEnd;
|
||||||
bool _keepAlive;
|
bool _keepAlive;
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <istream>
|
#include <istream>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include "Poco/MemoryPool.h"
|
|
||||||
#include "Poco/Net/HTTPBasicStreamBuf.h"
|
#include "Poco/Net/HTTPBasicStreamBuf.h"
|
||||||
#include "Poco/Net/Net.h"
|
#include "Poco/Net/Net.h"
|
||||||
|
|
||||||
@ -75,12 +74,6 @@ namespace Net
|
|||||||
public:
|
public:
|
||||||
HTTPInputStream(HTTPSession & session);
|
HTTPInputStream(HTTPSession & session);
|
||||||
~HTTPInputStream();
|
~HTTPInputStream();
|
||||||
|
|
||||||
void * operator new(std::size_t size);
|
|
||||||
void operator delete(void * ptr);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Poco::MemoryPool _pool;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -90,12 +83,6 @@ namespace Net
|
|||||||
public:
|
public:
|
||||||
HTTPOutputStream(HTTPSession & session);
|
HTTPOutputStream(HTTPSession & session);
|
||||||
~HTTPOutputStream();
|
~HTTPOutputStream();
|
||||||
|
|
||||||
void * operator new(std::size_t size);
|
|
||||||
void operator delete(void * ptr);
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Poco::MemoryPool _pool;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
//
|
|
||||||
// HTTPBufferAllocator.cpp
|
|
||||||
//
|
|
||||||
// Library: Net
|
|
||||||
// Package: HTTP
|
|
||||||
// Module: HTTPBufferAllocator
|
|
||||||
//
|
|
||||||
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
|
|
||||||
// and Contributors.
|
|
||||||
//
|
|
||||||
// SPDX-License-Identifier: BSL-1.0
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
#include "Poco/Net/HTTPBufferAllocator.h"
|
|
||||||
|
|
||||||
|
|
||||||
using Poco::MemoryPool;
|
|
||||||
|
|
||||||
|
|
||||||
namespace Poco {
|
|
||||||
namespace Net {
|
|
||||||
|
|
||||||
|
|
||||||
MemoryPool HTTPBufferAllocator::_pool(HTTPBufferAllocator::BUFFER_SIZE, 16);
|
|
||||||
|
|
||||||
|
|
||||||
char* HTTPBufferAllocator::allocate(std::streamsize size)
|
|
||||||
{
|
|
||||||
poco_assert_dbg (size == BUFFER_SIZE);
|
|
||||||
|
|
||||||
return reinterpret_cast<char*>(_pool.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HTTPBufferAllocator::deallocate(char* ptr, std::streamsize size)
|
|
||||||
{
|
|
||||||
poco_assert_dbg (size == BUFFER_SIZE);
|
|
||||||
|
|
||||||
_pool.release(ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} } // namespace Poco::Net
|
|
@ -34,7 +34,7 @@ namespace Net {
|
|||||||
|
|
||||||
|
|
||||||
HTTPChunkedStreamBuf::HTTPChunkedStreamBuf(HTTPSession& session, openmode mode):
|
HTTPChunkedStreamBuf::HTTPChunkedStreamBuf(HTTPSession& session, openmode mode):
|
||||||
HTTPBasicStreamBuf(HTTPBufferAllocator::BUFFER_SIZE, mode),
|
HTTPBasicStreamBuf(HTTP_DEFAULT_BUFFER_SIZE, mode),
|
||||||
_session(session),
|
_session(session),
|
||||||
_mode(mode),
|
_mode(mode),
|
||||||
_chunk(0)
|
_chunk(0)
|
||||||
@ -181,10 +181,6 @@ HTTPChunkedStreamBuf* HTTPChunkedIOS::rdbuf()
|
|||||||
// HTTPChunkedInputStream
|
// HTTPChunkedInputStream
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
Poco::MemoryPool HTTPChunkedInputStream::_pool(sizeof(HTTPChunkedInputStream));
|
|
||||||
|
|
||||||
|
|
||||||
HTTPChunkedInputStream::HTTPChunkedInputStream(HTTPSession& session):
|
HTTPChunkedInputStream::HTTPChunkedInputStream(HTTPSession& session):
|
||||||
HTTPChunkedIOS(session, std::ios::in),
|
HTTPChunkedIOS(session, std::ios::in),
|
||||||
std::istream(&_buf)
|
std::istream(&_buf)
|
||||||
@ -196,34 +192,10 @@ HTTPChunkedInputStream::~HTTPChunkedInputStream()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* HTTPChunkedInputStream::operator new(std::size_t size)
|
|
||||||
{
|
|
||||||
return _pool.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HTTPChunkedInputStream::operator delete(void* ptr)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_pool.release(ptr);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
poco_unexpected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// HTTPChunkedOutputStream
|
// HTTPChunkedOutputStream
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
Poco::MemoryPool HTTPChunkedOutputStream::_pool(sizeof(HTTPChunkedOutputStream));
|
|
||||||
|
|
||||||
|
|
||||||
HTTPChunkedOutputStream::HTTPChunkedOutputStream(HTTPSession& session):
|
HTTPChunkedOutputStream::HTTPChunkedOutputStream(HTTPSession& session):
|
||||||
HTTPChunkedIOS(session, std::ios::out),
|
HTTPChunkedIOS(session, std::ios::out),
|
||||||
std::ostream(&_buf)
|
std::ostream(&_buf)
|
||||||
@ -235,24 +207,4 @@ HTTPChunkedOutputStream::~HTTPChunkedOutputStream()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* HTTPChunkedOutputStream::operator new(std::size_t size)
|
|
||||||
{
|
|
||||||
return _pool.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HTTPChunkedOutputStream::operator delete(void* ptr)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_pool.release(ptr);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
poco_unexpected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} } // namespace Poco::Net
|
} } // namespace Poco::Net
|
||||||
|
@ -30,7 +30,7 @@ namespace Net {
|
|||||||
|
|
||||||
|
|
||||||
HTTPFixedLengthStreamBuf::HTTPFixedLengthStreamBuf(HTTPSession& session, ContentLength length, openmode mode):
|
HTTPFixedLengthStreamBuf::HTTPFixedLengthStreamBuf(HTTPSession& session, ContentLength length, openmode mode):
|
||||||
HTTPBasicStreamBuf(HTTPBufferAllocator::BUFFER_SIZE, mode),
|
HTTPBasicStreamBuf(HTTP_DEFAULT_BUFFER_SIZE, mode),
|
||||||
_session(session),
|
_session(session),
|
||||||
_length(length),
|
_length(length),
|
||||||
_count(0)
|
_count(0)
|
||||||
@ -109,9 +109,6 @@ HTTPFixedLengthStreamBuf* HTTPFixedLengthIOS::rdbuf()
|
|||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
Poco::MemoryPool HTTPFixedLengthInputStream::_pool(sizeof(HTTPFixedLengthInputStream));
|
|
||||||
|
|
||||||
|
|
||||||
HTTPFixedLengthInputStream::HTTPFixedLengthInputStream(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length):
|
HTTPFixedLengthInputStream::HTTPFixedLengthInputStream(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length):
|
||||||
HTTPFixedLengthIOS(session, length, std::ios::in),
|
HTTPFixedLengthIOS(session, length, std::ios::in),
|
||||||
std::istream(&_buf)
|
std::istream(&_buf)
|
||||||
@ -124,33 +121,10 @@ HTTPFixedLengthInputStream::~HTTPFixedLengthInputStream()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* HTTPFixedLengthInputStream::operator new(std::size_t size)
|
|
||||||
{
|
|
||||||
return _pool.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HTTPFixedLengthInputStream::operator delete(void* ptr)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_pool.release(ptr);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
poco_unexpected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// HTTPFixedLengthOutputStream
|
// HTTPFixedLengthOutputStream
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
Poco::MemoryPool HTTPFixedLengthOutputStream::_pool(sizeof(HTTPFixedLengthOutputStream));
|
|
||||||
|
|
||||||
|
|
||||||
HTTPFixedLengthOutputStream::HTTPFixedLengthOutputStream(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length):
|
HTTPFixedLengthOutputStream::HTTPFixedLengthOutputStream(HTTPSession& session, HTTPFixedLengthStreamBuf::ContentLength length):
|
||||||
HTTPFixedLengthIOS(session, length, std::ios::out),
|
HTTPFixedLengthIOS(session, length, std::ios::out),
|
||||||
std::ostream(&_buf)
|
std::ostream(&_buf)
|
||||||
@ -163,23 +137,4 @@ HTTPFixedLengthOutputStream::~HTTPFixedLengthOutputStream()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* HTTPFixedLengthOutputStream::operator new(std::size_t size)
|
|
||||||
{
|
|
||||||
return _pool.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HTTPFixedLengthOutputStream::operator delete(void* ptr)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_pool.release(ptr);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
poco_unexpected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} } // namespace Poco::Net
|
} } // namespace Poco::Net
|
||||||
|
@ -26,7 +26,7 @@ namespace Net {
|
|||||||
|
|
||||||
|
|
||||||
HTTPHeaderStreamBuf::HTTPHeaderStreamBuf(HTTPSession& session, openmode mode):
|
HTTPHeaderStreamBuf::HTTPHeaderStreamBuf(HTTPSession& session, openmode mode):
|
||||||
HTTPBasicStreamBuf(HTTPBufferAllocator::BUFFER_SIZE, mode),
|
HTTPBasicStreamBuf(HTTP_DEFAULT_BUFFER_SIZE, mode),
|
||||||
_session(session),
|
_session(session),
|
||||||
_end(false)
|
_end(false)
|
||||||
{
|
{
|
||||||
@ -101,10 +101,6 @@ HTTPHeaderStreamBuf* HTTPHeaderIOS::rdbuf()
|
|||||||
// HTTPHeaderInputStream
|
// HTTPHeaderInputStream
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
Poco::MemoryPool HTTPHeaderInputStream::_pool(sizeof(HTTPHeaderInputStream));
|
|
||||||
|
|
||||||
|
|
||||||
HTTPHeaderInputStream::HTTPHeaderInputStream(HTTPSession& session):
|
HTTPHeaderInputStream::HTTPHeaderInputStream(HTTPSession& session):
|
||||||
HTTPHeaderIOS(session, std::ios::in),
|
HTTPHeaderIOS(session, std::ios::in),
|
||||||
std::istream(&_buf)
|
std::istream(&_buf)
|
||||||
@ -116,34 +112,10 @@ HTTPHeaderInputStream::~HTTPHeaderInputStream()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* HTTPHeaderInputStream::operator new(std::size_t size)
|
|
||||||
{
|
|
||||||
return _pool.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HTTPHeaderInputStream::operator delete(void* ptr)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_pool.release(ptr);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
poco_unexpected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// HTTPHeaderOutputStream
|
// HTTPHeaderOutputStream
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
Poco::MemoryPool HTTPHeaderOutputStream::_pool(sizeof(HTTPHeaderOutputStream));
|
|
||||||
|
|
||||||
|
|
||||||
HTTPHeaderOutputStream::HTTPHeaderOutputStream(HTTPSession& session):
|
HTTPHeaderOutputStream::HTTPHeaderOutputStream(HTTPSession& session):
|
||||||
HTTPHeaderIOS(session, std::ios::out),
|
HTTPHeaderIOS(session, std::ios::out),
|
||||||
std::ostream(&_buf)
|
std::ostream(&_buf)
|
||||||
@ -155,24 +127,4 @@ HTTPHeaderOutputStream::~HTTPHeaderOutputStream()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* HTTPHeaderOutputStream::operator new(std::size_t size)
|
|
||||||
{
|
|
||||||
return _pool.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HTTPHeaderOutputStream::operator delete(void* ptr)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_pool.release(ptr);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
poco_unexpected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} } // namespace Poco::Net
|
} } // namespace Poco::Net
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "Poco/Net/HTTPSession.h"
|
#include "Poco/Net/HTTPSession.h"
|
||||||
#include "Poco/Net/HTTPBufferAllocator.h"
|
|
||||||
#include "Poco/Net/NetException.h"
|
#include "Poco/Net/NetException.h"
|
||||||
|
#include "Poco/Net/HTTPBasicStreamBuf.h"
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
|
|
||||||
@ -68,14 +68,6 @@ HTTPSession::HTTPSession(const StreamSocket& socket, bool keepAlive):
|
|||||||
|
|
||||||
HTTPSession::~HTTPSession()
|
HTTPSession::~HTTPSession()
|
||||||
{
|
{
|
||||||
try
|
|
||||||
{
|
|
||||||
if (_pBuffer) HTTPBufferAllocator::deallocate(_pBuffer, HTTPBufferAllocator::BUFFER_SIZE);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
poco_unexpected();
|
|
||||||
}
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
close();
|
close();
|
||||||
@ -177,10 +169,10 @@ void HTTPSession::refill()
|
|||||||
{
|
{
|
||||||
if (!_pBuffer)
|
if (!_pBuffer)
|
||||||
{
|
{
|
||||||
_pBuffer = HTTPBufferAllocator::allocate(HTTPBufferAllocator::BUFFER_SIZE);
|
_pBuffer = std::make_unique<char[]>(HTTP_DEFAULT_BUFFER_SIZE);
|
||||||
}
|
}
|
||||||
_pCurrent = _pEnd = _pBuffer;
|
_pCurrent = _pEnd = _pBuffer.get();
|
||||||
int n = receive(_pBuffer, HTTPBufferAllocator::BUFFER_SIZE);
|
int n = receive(_pBuffer.get(), HTTP_DEFAULT_BUFFER_SIZE);
|
||||||
_pEnd += n;
|
_pEnd += n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,7 +191,7 @@ void HTTPSession::connect(const SocketAddress& address)
|
|||||||
_socket.setNoDelay(true);
|
_socket.setNoDelay(true);
|
||||||
// There may be leftover data from a previous (failed) request in the buffer,
|
// There may be leftover data from a previous (failed) request in the buffer,
|
||||||
// so we clear it.
|
// so we clear it.
|
||||||
_pCurrent = _pEnd = _pBuffer;
|
_pCurrent = _pEnd = _pBuffer.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ namespace Net {
|
|||||||
|
|
||||||
|
|
||||||
HTTPStreamBuf::HTTPStreamBuf(HTTPSession& session, openmode mode):
|
HTTPStreamBuf::HTTPStreamBuf(HTTPSession& session, openmode mode):
|
||||||
HTTPBasicStreamBuf(HTTPBufferAllocator::BUFFER_SIZE, mode),
|
HTTPBasicStreamBuf(HTTP_DEFAULT_BUFFER_SIZE, mode),
|
||||||
_session(session),
|
_session(session),
|
||||||
_mode(mode)
|
_mode(mode)
|
||||||
{
|
{
|
||||||
@ -96,10 +96,6 @@ HTTPStreamBuf* HTTPIOS::rdbuf()
|
|||||||
// HTTPInputStream
|
// HTTPInputStream
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
Poco::MemoryPool HTTPInputStream::_pool(sizeof(HTTPInputStream));
|
|
||||||
|
|
||||||
|
|
||||||
HTTPInputStream::HTTPInputStream(HTTPSession& session):
|
HTTPInputStream::HTTPInputStream(HTTPSession& session):
|
||||||
HTTPIOS(session, std::ios::in),
|
HTTPIOS(session, std::ios::in),
|
||||||
std::istream(&_buf)
|
std::istream(&_buf)
|
||||||
@ -112,33 +108,11 @@ HTTPInputStream::~HTTPInputStream()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* HTTPInputStream::operator new(std::size_t size)
|
|
||||||
{
|
|
||||||
return _pool.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HTTPInputStream::operator delete(void* ptr)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_pool.release(ptr);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
poco_unexpected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// HTTPOutputStream
|
// HTTPOutputStream
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
Poco::MemoryPool HTTPOutputStream::_pool(sizeof(HTTPOutputStream));
|
|
||||||
|
|
||||||
|
|
||||||
HTTPOutputStream::HTTPOutputStream(HTTPSession& session):
|
HTTPOutputStream::HTTPOutputStream(HTTPSession& session):
|
||||||
HTTPIOS(session, std::ios::out),
|
HTTPIOS(session, std::ios::out),
|
||||||
std::ostream(&_buf)
|
std::ostream(&_buf)
|
||||||
@ -150,24 +124,4 @@ HTTPOutputStream::~HTTPOutputStream()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* HTTPOutputStream::operator new(std::size_t size)
|
|
||||||
{
|
|
||||||
return _pool.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HTTPOutputStream::operator delete(void* ptr)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_pool.release(ptr);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
poco_unexpected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} } // namespace Poco::Net
|
} } // namespace Poco::Net
|
||||||
|
Loading…
Reference in New Issue
Block a user