Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit50f49a7

Browse files
committed
std'ification of <thread> and internal API changes
This change should get the message implementations to a state where itshould be buildling.
1 parentfdc7d28 commit50f49a7

File tree

6 files changed

+26
-45
lines changed

6 files changed

+26
-45
lines changed

‎include/network/protocol/http/request/request.hpp‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ namespace network { namespace http {
2525
request(requestconst &);
2626
request&operator=(request);
2727

28+
// Then we lift the swap and equals implementation.
29+
using request_base::swap;
30+
using request_base::equals;
31+
2832
// From message_base...
2933
// Mutators
3034
virtualvoidset_destination(std::stringconst & destination);

‎include/network/protocol/http/request/request.ipp‎

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -184,16 +184,6 @@ request& request::operator=(request rhs) {
184184
return *this;
185185
}
186186

187-
boolrequest::equals(requestconst &other)const {
188-
return pimpl_->equals(*other.pimpl_) &&
189-
request_storage_base::equals(other);
190-
}
191-
192-
voidrequest::swap(request & other) {
193-
std::swap(this->pimpl_, other.pimpl_);
194-
request_storage_base::swap(other);
195-
}
196-
197187
// From message_base...
198188
// Mutators
199189
voidrequest::set_destination(std::stringconst & destination) {
@@ -249,15 +239,11 @@ void request::get_body(std::string & body) const {
249239
this->flatten(body);
250240
}
251241

252-
voidrequest::get_body(std::function<void(boost::iterator_range<charconst *>)> chunk_reader, size_t size)const {
253-
boost::scoped_array<char>local_buffer(new (std::nothrow)char[size]);
254-
size_t bytes_read =this->read(local_buffer.get(),
255-
pimpl_->read_offset(),
256-
size);
242+
voidrequest::get_body(std::function<void(std::string::const_iterator,size_t)> chunk_reader, size_t size)const {
243+
std::string local_buffer;
244+
size_t bytes_read =this->read(local_buffer, pimpl_->read_offset(), size);
257245
pimpl_->advance_read_offset(bytes_read);
258-
charconst * begin = local_buffer.get();
259-
charconst * end = local_buffer.get() + bytes_read;
260-
chunk_reader(boost::make_iterator_range(begin, end));
246+
chunk_reader(local_buffer.cbegin(), bytes_read);
261247
}
262248

263249
// From request_base...
@@ -316,12 +302,6 @@ void request::get_status(std::string & status) const {
316302
voidrequest::get_status_message(std::string & status_message)const {
317303
}
318304

319-
voidrequest::get_body(std::function<void(char*,size_t)> chunk_reader)const {
320-
}
321-
322-
voidrequest::get_body(std::stringconst & body)const {
323-
}
324-
325305
}// namespace http
326306

327307
}// namespace network

‎include/network/protocol/http/request/request_base.hpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
namespacenetwork {namespacehttp {
1818

1919
structbody_source {
20-
virtual std::streamsizeread(char * buffer, std::streamsize size);
20+
virtual std::streamsizeread(std::string&, std::streamsize size);
2121
virtual~body_source();
2222
};
2323

@@ -28,7 +28,7 @@ struct request_storage_base {
2828
request_storage_base(size_t chunk_size = NETWORK_BUFFER_CHUNK);
2929
request_storage_base(request_storage_baseconst &other);
3030
virtualvoidappend(charconst *data,size_t size);
31-
virtualsize_tread(char *destination,size_t offset,size_t size)const;
31+
virtualsize_tread(std::string &destination,size_t offset,size_t size)const;
3232
virtualvoidflatten(std::string &destination)const;
3333
virtualvoidclear();
3434
virtualboolequals(request_storage_baseconst &other)const;

‎include/network/protocol/http/request/request_base.ipp‎

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#defineNETWORK_RPTOCOL_HTTP_REQUEST_BASE_IPP_20111102
99

1010
#include<network/protocol/http/request/request_base.hpp>
11-
#include<boost/thread/mutex.hpp>
11+
#include<thread>
1212
#include<cstring>
1313

1414
namespacenetwork {namespacehttp {
@@ -21,7 +21,7 @@ struct request_storage_base_pimpl {
2121
explicitrequest_storage_base_pimpl(size_t chunk_size);
2222
request_storage_base_pimpl *clone()const;
2323
voidappend(charconst *data,size_t size);
24-
size_tread(char *destination,size_t offset,size_t size)const;
24+
size_tread(std::string &destination,size_t offset,size_t size)const;
2525
voidflatten(std::string &destination)const;
2626
voidclear();
2727
boolequals(request_storage_base_pimplconst &other)const;
@@ -32,7 +32,7 @@ struct request_storage_base_pimpl {
3232
size_t chunk_size_;
3333
typedef std::vector<std::pair<char *,size_t> > chunks_vector;
3434
chunks_vector chunks_;
35-
mutableboost::mutex chunk_mutex_;
35+
mutablestd::mutex chunk_mutex_;
3636

3737
request_storage_base_pimpl(request_storage_base_pimplconst &other);
3838
};
@@ -53,7 +53,7 @@ void request_storage_base::append(char const *data, size_t size) {
5353
pimpl_->append(data, size);
5454
}
5555

56-
size_trequest_storage_base::read(char *destination,size_t offset,size_t size)const {
56+
size_trequest_storage_base::read(std::string &destination,size_t offset,size_t size)const {
5757
return pimpl_->read(destination, offset, size);
5858
}
5959

@@ -83,7 +83,7 @@ request_storage_base_pimpl::request_storage_base_pimpl(size_t chunk_size)
8383
request_storage_base_pimpl::request_storage_base_pimpl(request_storage_base_pimplconst &other)
8484
: chunk_size_(other.chunk_size_)
8585
, chunks_(0) {
86-
boost::lock_guard<boost::mutex>scoped_lock(other.chunk_mutex_);
86+
std::lock_guard<std::mutex>scoped_lock(other.chunk_mutex_);
8787
chunks_.reserve(other.chunks_.size());
8888
chunks_vector::const_iterator it = other.chunks_.begin();
8989
for (; it != other.chunks_.end(); ++it) {
@@ -101,7 +101,7 @@ request_storage_base_pimpl * request_storage_base_pimpl::clone() const {
101101
}
102102

103103
voidrequest_storage_base_pimpl::append(charconst *data,size_t size) {
104-
boost::lock_guard<boost::mutex>scoped_lock(chunk_mutex_);
104+
std::lock_guard<std::mutex>scoped_lock(chunk_mutex_);
105105
if (chunks_.empty()) {
106106
chunks_.push_back(std::make_pair(
107107
new (std::nothrow)char[chunk_size_],0));
@@ -127,23 +127,21 @@ void request_storage_base_pimpl::append(char const *data, size_t size) {
127127
}
128128
}
129129

130-
size_trequest_storage_base_pimpl::read(char *destination,size_t offset,size_t size)const {
131-
boost::lock_guard<boost::mutex>scoped_lock(chunk_mutex_);
130+
size_trequest_storage_base_pimpl::read(std::string &destination,size_t offset,size_t size)const {
131+
std::lock_guard<std::mutex>scoped_lock(chunk_mutex_);
132132
if (chunks_.empty())return0;
133133
// First we find which chunk we're going to read from using the provided
134134
// offset and some arithmetic to determine the correct one.
135135
size_t chunk_index = offset / chunk_size_;
136136
offset = offset % chunk_size_;
137137

138138
// Then we start copying up to size data either until we've reached the end
139-
// or we're
140139
size_t chunks_count = chunks_.size();
141140
size_t read_count =0;
142141
while (size >0 && chunk_index < chunks_count) {
143142
size_t bytes_to_read =std::min(chunks_[chunk_index].second, size);
144-
std::memcpy(destination + read_count,
145-
chunks_[chunk_index].first + offset,
146-
bytes_to_read);
143+
destination.append(chunks_[chunk_index].first+offset,
144+
chunks_[chunk_index].first+offset+bytes_to_read);
147145
read_count += bytes_to_read;
148146
size -= bytes_to_read;
149147
offset =0;
@@ -153,15 +151,15 @@ size_t request_storage_base_pimpl::read(char *destination, size_t offset, size_t
153151
}
154152

155153
voidrequest_storage_base_pimpl::flatten(std::string &destination)const {
156-
boost::lock_guard<boost::mutex>scpoped_lock(chunk_mutex_);
154+
std::lock_guard<std::mutex>scpoped_lock(chunk_mutex_);
157155
chunks_vector::const_iterator chunk_iterator = chunks_.begin();
158156
for (; chunk_iterator != chunks_.end(); ++chunk_iterator) {
159157
destination.append(chunk_iterator->first, chunk_iterator->second);
160158
}
161159
}
162160

163161
voidrequest_storage_base_pimpl::clear() {
164-
boost::lock_guard<boost::mutex>scoped_lock(chunk_mutex_);
162+
std::lock_guard<std::mutex>scoped_lock(chunk_mutex_);
165163
chunks_vector::const_iterator chunk_iterator = chunks_.begin();
166164
for (; chunk_iterator != chunks_.end(); ++chunk_iterator) {
167165
delete [] chunk_iterator->first;
@@ -170,7 +168,7 @@ void request_storage_base_pimpl::clear() {
170168
}
171169

172170
boolrequest_storage_base_pimpl::equals(request_storage_base_pimplconst &other)const {
173-
lock(other.chunk_mutex_,this->chunk_mutex_);
171+
std::lock(other.chunk_mutex_,this->chunk_mutex_);
174172
if (other.chunk_size_ != chunk_size_ || other.chunks_.size() != chunks_.size()) {
175173
other.chunk_mutex_.unlock();
176174
this->chunk_mutex_.unlock();
@@ -193,7 +191,7 @@ bool request_storage_base_pimpl::equals(request_storage_base_pimpl const &other)
193191
}
194192

195193
voidrequest_storage_base_pimpl::swap(request_storage_base_pimpl &other) {
196-
lock(other.chunk_mutex_,this->chunk_mutex_);
194+
std::lock(other.chunk_mutex_,this->chunk_mutex_);
197195
std::swap(chunk_size_, other.chunk_size_);
198196
std::swap(chunks_, other.chunks_);
199197
other.chunk_mutex_.unlock();

‎include/network/protocol/http/response/response.hpp‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ namespace network { namespace http {
8686
Directiveconst & directive
8787
)
8888
{
89-
>>>>>>> master
9089
directive(message);
9190
return message;
9291
}

‎include/network/protocol/http/response/response.ipp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ struct response_pimpl {
115115
}
116116

117117
voidget_body(
118-
std::function<void(boost::iterator_range<charconst *>)> chunk_reader,
118+
std::function<void(std::string::const_iterator,size_t)> chunk_reader,
119119
size_t size) {/* FIXME: Do something!*/ }
120120

121121
voidset_status(boost::uint16_t status) {
@@ -369,7 +369,7 @@ void response::get_body(std::string &body) const {
369369
pimpl_->get_body(body);
370370
}
371371

372-
voidresponse::get_body(std::function<void(boost::iterator_range<charconst *>)> chunk_reader, size_t size)const {
372+
voidresponse::get_body(std::function<void(std::string::const_iterator,size_t)> chunk_reader, size_t size)const {
373373
pimpl_->get_body(chunk_reader, size);
374374
}
375375

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp