Commit 6f2cb3fc authored by knowledge4igor's avatar knowledge4igor

Use std::string instead of std::shared_ptr<char>

parent fdeea6b7
...@@ -124,12 +124,12 @@ size_t ArrayStreamBuf<CharT>::maxSize = Const::DefaultMaxPayload; ...@@ -124,12 +124,12 @@ size_t ArrayStreamBuf<CharT>::maxSize = Const::DefaultMaxPayload;
struct Buffer struct Buffer
{ {
Buffer(); Buffer();
Buffer(std::shared_ptr<char> _data, int _length, bool _isDetached = false); Buffer(std::string _data, int _length, bool _isDetached = false);
Buffer(const char * _data, int _length, bool _isDetached = false); Buffer(const char * _data, int _length, bool _isDetached = false);
Buffer detach(size_t fromIndex); Buffer detach(size_t fromIndex);
std::shared_ptr<char> data; std::string data;
size_t length; size_t length;
int isDetached; int isDetached;
}; };
......
...@@ -17,39 +17,38 @@ ...@@ -17,39 +17,38 @@
namespace Pistache { namespace Pistache {
Buffer::Buffer() Buffer::Buffer()
: data(nullptr) : data()
, length(0) , length(0)
, isDetached(false) , isDetached(false)
{ } { }
Buffer::Buffer(std::shared_ptr<char> _data, int _length, bool _isDetached) Buffer::Buffer(std::string _data, int _length, bool _isDetached)
: data(_data) : data(std::move(_data))
, length(_length) , length(_length)
, isDetached(_isDetached) , isDetached(_isDetached)
{ } { }
Buffer::Buffer(const char * _data, int _length, bool _isDetached) Buffer::Buffer(const char * _data, int _length, bool _isDetached)
: data(nullptr) : data()
, length(_length) , length(_length)
, isDetached(_isDetached) , isDetached(_isDetached)
{ {
data = std::shared_ptr<char>(new char[_length+1](), std::default_delete<char[]>()); data.resize(_length + 1);
std::copy(_data, _data + _length + 1, data.get()); data.assign(_data, _length + 1);
} }
Buffer Buffer::detach(size_t fromIndex) Buffer Buffer::detach(size_t fromIndex)
{ {
if (!data) if (data.empty())
return Buffer(); return Buffer();
if (length < fromIndex) if (length < fromIndex)
throw std::range_error("Trying to detach buffer from an index bigger than lengthght."); throw std::range_error("Trying to detach buffer from an index bigger than lengthght.");
auto newDatalength = length - fromIndex; auto newDatalength = length - fromIndex;
auto newData = std::shared_ptr<char>(new char[newDatalength + 1](), std::default_delete<char[]>()); std::string newData = data.substr(fromIndex, newDatalength);
std::copy(data.get() + fromIndex, data.get() + length, newData.get());
return Buffer(newData, newDatalength, true); return Buffer(std::move(newData), newDatalength, true);
} }
FileBuffer::FileBuffer(const std::string& fileName) FileBuffer::FileBuffer(const std::string& fileName)
......
...@@ -237,7 +237,7 @@ Transport::asyncWriteImpl(Fd fd) ...@@ -237,7 +237,7 @@ Transport::asyncWriteImpl(Fd fd)
if (buffer.isRaw()) { if (buffer.isRaw()) {
auto raw = buffer.raw(); auto raw = buffer.raw();
auto ptr = raw.data.get() + totalWritten; auto ptr = raw.data.c_str() + totalWritten;
#ifdef PISTACHE_USE_SSL #ifdef PISTACHE_USE_SSL
auto it = peers.find(fd); auto it = peers.find(fd);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment