本文整理汇总了C++中blob::size方法的典型用法代码示例。如果您正苦于以下问题:C++ blob::size方法的具体用法?C++ blob::size怎么用?C++ blob::size使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类blob
的用法示例。
在下文中一共展示了blob::size方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void Downloader::NeededChunk::put_block(uint32_t offset, const blob& content) {
auto inserted = file_map_.insert({offset, content.size()}).second;
if(inserted) {
#ifndef FOPEN_BACKEND
std::copy(content.begin(), content.end(), mapped_file_.data()+offset);
#else
if(wrapped_file_.ios().tellp() != offset)
wrapped_file_.ios().seekp(offset);
wrapped_file_.ios().write((char*)content.data(), content.size());
#endif
}
}
示例2:
void P2PFolder::handle_message(const blob& message_raw) {
V1Parser::message_type message_type = parser_.parse_MessageType(message_raw);
counter_.add_down(message_raw.size());
if(ready()) {
switch(message_type) {
case V1Parser::CHOKE: handle_Choke(message_raw); break;
case V1Parser::UNCHOKE: handle_Unchoke(message_raw); break;
case V1Parser::INTERESTED: handle_Interested(message_raw); break;
case V1Parser::NOT_INTERESTED: handle_NotInterested(message_raw); break;
case V1Parser::HAVE_META: handle_HaveMeta(message_raw); break;
case V1Parser::HAVE_CHUNK: handle_HaveChunk(message_raw); break;
case V1Parser::META_REQUEST: handle_MetaRequest(message_raw); break;
case V1Parser::META_REPLY: handle_MetaReply(message_raw); break;
case V1Parser::META_CANCEL: handle_MetaCancel(message_raw); break;
case V1Parser::BLOCK_REQUEST: handle_BlockRequest(message_raw); break;
case V1Parser::BLOCK_REPLY: handle_BlockReply(message_raw); break;
case V1Parser::BLOCK_CANCEL: handle_BlockCancel(message_raw); break;
default: throw protocol_error();
}
}else{
handle_Handshake(message_raw);
}
}
示例3: put_block
void Downloader::put_block(const blob& ct_hash, uint32_t offset, const blob& data, std::shared_ptr<RemoteFolder> from) {
log_->trace() << log_tag() << BOOST_CURRENT_FUNCTION;
auto needed_block_it = needed_chunks_.find(ct_hash);
if(needed_block_it == needed_chunks_.end()) return;
auto& requests = needed_block_it->second->requests;
for(auto request_it = requests.begin(); request_it != requests.end();) {
bool incremented_already = false;
if(request_it->second.offset == offset // Chunk position incorrect
&& request_it->second.size == data.size() // Chunk size incorrect
&& request_it->first == from) { // Requested node != replied. Well, it isn't critical, but will be useful to ban "fake" peers
incremented_already = true;
request_it = requests.erase(request_it);
needed_block_it->second->put_block(offset, data);
if(needed_block_it->second->full()) {
exchange_group_.fs_dir()->put_chunk(ct_hash, needed_block_it->second->get_chunk());
} // TODO: catch "invalid hash" exception here
periodic_maintain_.invoke_post();
}
if(!incremented_already) ++request_it;
}
}
示例4: StringSink
blob Base64::from(const blob& data) const {
std::string transformed;
CryptoPP::StringSource(data.data(), data.size(), true,
new CryptoPP::Base64Decoder(
new CryptoPP::StringSink(transformed)
)
);
return blob(std::make_move_iterator(transformed.begin()), std::make_move_iterator(transformed.end()));
}
示例5: print
void print(const blob & x, const char * prefix, ...)
{
va_list ap;
va_start(ap, prefix);
if(!x.exists())
{
if(prefix)
vprintf(prefix, ap);
printf("(non-existent)\n");
va_end(ap);
return;
}
for(size_t i = 0; i < x.size(); i += 16)
{
size_t m = i + 16;
if(prefix)
vprintf(prefix, ap);
for(size_t j = i; j < m; j++)
{
if(j < x.size())
printf("%02x ", x[j]);
else
printf(" ");
if((i % 16) == 8)
printf(" ");
}
printf(" |");
for(size_t j = i; j < m; j++)
{
if(j < x.size())
printf("%c", isprint(x[j]) ? x[j] : '.');
else
printf(" ");
}
printf("|\n");
}
va_end(ap);
}
示例6: size
/** Get the size of the data (in bytes) */
size_t size() const { return m_blob ? m_blob->size() : 0; }
示例7: doapply
//.........这里部分代码省略.........
//
// walletlocator
//
if (mtxn.isfieldpresent (sfwalletlocator))
{
uint256 const uhash = mtxn.getfieldh256 (sfwalletlocator);
if (!uhash)
{
m_journal.trace << "unset wallet locator";
mtxnaccount->makefieldabsent (sfwalletlocator);
}
else
{
m_journal.trace << "set wallet locator";
mtxnaccount->setfieldh256 (sfwalletlocator, uhash);
}
}
//
// messagekey
//
if (mtxn.isfieldpresent (sfmessagekey))
{
blob messagekey = mtxn.getfieldvl (sfmessagekey);
if (messagekey.empty ())
{
m_journal.debug << "set message key";
mtxnaccount->makefieldabsent (sfmessagekey);
}
if (messagekey.size () > public_bytes_max)
{
m_journal.trace << "message key too long";
return telbad_public_key;
}
else
{
m_journal.debug << "set message key";
mtxnaccount->setfieldvl (sfmessagekey, messagekey);
}
}
//
// domain
//
if (mtxn.isfieldpresent (sfdomain))
{
blob const domain = mtxn.getfieldvl (sfdomain);
if (domain.size () > domain_bytes_max)
{
m_journal.trace << "domain too long";
return telbad_domain;
}
if (domain.empty ())
{
m_journal.trace << "unset domain";
mtxnaccount->makefieldabsent (sfdomain);
}
else
{