本文整理汇总了C++中EncodingImpl::prependBlock方法的典型用法代码示例。如果您正苦于以下问题:C++ EncodingImpl::prependBlock方法的具体用法?C++ EncodingImpl::prependBlock怎么用?C++ EncodingImpl::prependBlock使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EncodingImpl
的用法示例。
在下文中一共展示了EncodingImpl::prependBlock方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
size_t
Schedule::wireEncode(EncodingImpl<TAG>& encoder) const
{
size_t totalLength = 0;
size_t blackLength = 0;
size_t whiteLength = 0;
// encode the blackIntervalList as an embed TLV structure
for (const RepetitiveInterval& element : m_blackIntervalList) {
blackLength += encoder.prependBlock(element.wireEncode());
}
blackLength += encoder.prependVarNumber(blackLength);
blackLength += encoder.prependVarNumber(tlv::BlackIntervalList);
// encode the whiteIntervalList as an embed TLV structure
for (const RepetitiveInterval& element : m_whiteIntervalList) {
whiteLength += encoder.prependBlock(element.wireEncode());
}
whiteLength += encoder.prependVarNumber(whiteLength);
whiteLength += encoder.prependVarNumber(tlv::WhiteIntervalList);
totalLength = whiteLength + blackLength;
totalLength += encoder.prependVarNumber(totalLength);
totalLength += encoder.prependVarNumber(tlv::Schedule);
return totalLength;
}
示例2: switch
size_t
KeyLocator::wireEncode(EncodingImpl<TAG>& encoder) const
{
// KeyLocator ::= KEY-LOCATOR-TYPE TLV-LENGTH (Name | KeyDigest)
// KeyDigest ::= KEY-DIGEST-TYPE TLV-LENGTH BYTE+
size_t totalLength = 0;
switch (m_type) {
case KeyLocator_None:
break;
case KeyLocator_Name:
totalLength += m_name.wireEncode(encoder);
break;
case KeyLocator_KeyDigest:
totalLength += encoder.prependBlock(m_keyDigest);
break;
default:
NDN_THROW(Error("Unsupported KeyLocator type " + to_string(m_type)));
}
totalLength += encoder.prependVarNumber(totalLength);
totalLength += encoder.prependVarNumber(tlv::KeyLocator);
return totalLength;
}
示例3: getMetaInfo
size_t
Data::wireEncode(EncodingImpl<TAG>& encoder, bool unsignedPortion/* = false*/) const
{
size_t totalLength = 0;
// Data ::= DATA-TLV TLV-LENGTH
// Name
// MetaInfo
// Content
// Signature
// (reverse encoding)
if (!unsignedPortion && !m_signature)
{
BOOST_THROW_EXCEPTION(Error("Requested wire format, but data packet has not been signed yet"));
}
if (!unsignedPortion)
{
// SignatureValue
totalLength += encoder.prependBlock(m_signature.getValue());
}
// SignatureInfo
totalLength += encoder.prependBlock(m_signature.getInfo());
// Deletion token
size_t newLength = encoder.prependBlock(m_token);
totalLength += newLength;
// Content
totalLength += encoder.prependBlock(getContent());
// MetaInfo
totalLength += getMetaInfo().wireEncode(encoder);
// Name
totalLength += getName().wireEncode(encoder);
if (!unsignedPortion)
{
totalLength += encoder.prependVarNumber(totalLength);
totalLength += encoder.prependVarNumber(tlv::Data);
}
return totalLength;
}
示例4: prependNonNegativeIntegerBlock
size_t
Interest::wireEncode(EncodingImpl<TAG>& block) const
{
size_t totalLength = 0;
// Interest ::= INTEREST-TYPE TLV-LENGTH
// Name
// Selectors?
// Nonce
// Scope?
// InterestLifetime?
// Link?
// SelectedDelegation?
// (reverse encoding)
if (hasLink()) {
if (hasSelectedDelegation()) {
totalLength += prependNonNegativeIntegerBlock(block,
tlv::SelectedDelegation,
m_selectedDelegationIndex);
}
totalLength += prependBlock(block, m_link);
}
else {
BOOST_ASSERT(!hasSelectedDelegation());
}
// InterestLifetime
if (getInterestLifetime() >= time::milliseconds::zero() &&
getInterestLifetime() != DEFAULT_INTEREST_LIFETIME)
{
totalLength += prependNonNegativeIntegerBlock(block,
tlv::InterestLifetime,
getInterestLifetime().count());
}
// Scope
if (getScope() >= 0)
{
totalLength += prependNonNegativeIntegerBlock(block, tlv::Scope, getScope());
}
// Nonce
getNonce(); // to ensure that Nonce is properly set
totalLength += block.prependBlock(m_nonce);
// Selectors
if (hasSelectors())
{
totalLength += getSelectors().wireEncode(block);
}
// Name
totalLength += getName().wireEncode(block);
totalLength += block.prependVarNumber(totalLength);
totalLength += block.prependVarNumber(tlv::Interest);
return totalLength;
}
示例5: prependNonNegativeIntegerBlock
size_t
Interest::encode03(EncodingImpl<TAG>& encoder) const
{
size_t totalLength = 0;
// Encode as NDN Packet Format v0.3
// Interest ::= INTEREST-TYPE TLV-LENGTH
// Name
// CanBePrefix?
// MustBeFresh?
// ForwardingHint?
// Nonce?
// InterestLifetime?
// HopLimit?
// ApplicationParameters?
// (reverse encoding)
// ApplicationParameters
if (hasApplicationParameters()) {
totalLength += encoder.prependBlock(getApplicationParameters());
}
// HopLimit: not yet supported
// InterestLifetime
if (getInterestLifetime() != DEFAULT_INTEREST_LIFETIME) {
totalLength += prependNonNegativeIntegerBlock(encoder, tlv::InterestLifetime,
static_cast<uint64_t>(getInterestLifetime().count()));
}
// Nonce
uint32_t nonce = getNonce(); // if nonce was unset, getNonce generates a random nonce
totalLength += encoder.prependByteArrayBlock(tlv::Nonce, reinterpret_cast<uint8_t*>(&nonce), sizeof(nonce));
// ForwardingHint
if (!getForwardingHint().empty()) {
totalLength += getForwardingHint().wireEncode(encoder);
}
// MustBeFresh
if (getMustBeFresh()) {
totalLength += prependEmptyBlock(encoder, tlv::MustBeFresh);
}
// CanBePrefix
if (getCanBePrefix()) {
totalLength += prependEmptyBlock(encoder, tlv::CanBePrefix);
}
// Name
totalLength += getName().wireEncode(encoder);
totalLength += encoder.prependVarNumber(totalLength);
totalLength += encoder.prependVarNumber(tlv::Interest);
return totalLength;
}
示例6:
inline size_t
Response::wireEncode(EncodingImpl<T>& block) const
{
if (m_contentType == NDNS_BLOB || m_contentType == NDNS_KEY) {
// Raw application content
return block.prependBlock(m_appContent);
}
// Content :: = CONTENT-TYPE TLV-LENGTH
// Block*
size_t totalLength = 0;
for (std::vector<Block>::const_reverse_iterator iter = m_rrs.rbegin();
iter != m_rrs.rend(); ++iter) {
totalLength += block.prependBlock(*iter);
}
totalLength += block.prependVarNumber(totalLength);
totalLength += block.prependVarNumber(::ndn::tlv::Content);
return totalLength;
}
示例7:
size_t
Packet::wireEncode(EncodingImpl<TAG>& encoder) const
{
if (m_wire.hasWire()) {
return m_wire.size();
}
size_t length = 0;
for (const Block& element : boost::adaptors::reverse(m_wire.elements())) {
length += encoder.prependBlock(element);
}
length += encoder.prependVarNumber(length);
length += encoder.prependVarNumber(tlv::LpPacket);
return length;
}
示例8: prependNestedBlock
size_t
MetaInfo::wireEncode(EncodingImpl<TAG>& encoder) const
{
// MetaInfo ::= META-INFO-TYPE TLV-LENGTH
// ContentType?
// FreshnessPeriod?
// FinalBlockId?
// AppMetaInfo*
size_t totalLength = 0;
for (std::list<Block>::const_reverse_iterator appMetaInfoItem = m_appMetaInfo.rbegin();
appMetaInfoItem != m_appMetaInfo.rend(); ++appMetaInfoItem) {
totalLength += encoder.prependBlock(*appMetaInfoItem);
}
// FinalBlockId
if (!m_finalBlockId.empty())
{
totalLength += prependNestedBlock(encoder, tlv::FinalBlockId, m_finalBlockId);
}
// FreshnessPeriod
if (m_freshnessPeriod >= time::milliseconds::zero())
{
totalLength += prependNonNegativeIntegerBlock(encoder, tlv::FreshnessPeriod,
m_freshnessPeriod.count());
}
// ContentType
if (m_type != tlv::ContentType_Blob)
{
totalLength += prependNonNegativeIntegerBlock(encoder, tlv::ContentType, m_type);
}
totalLength += encoder.prependVarNumber(totalLength);
totalLength += encoder.prependVarNumber(tlv::MetaInfo);
return totalLength;
}
示例9:
inline size_t
prependBlock(EncodingImpl<TAG>& encoder, const Block& block)
{
return encoder.prependBlock(block);
}