本文整理汇总了C#中net.named_data.jndn.Interest.getLinkWireEncoding方法的典型用法代码示例。如果您正苦于以下问题:C# Interest.getLinkWireEncoding方法的具体用法?C# Interest.getLinkWireEncoding怎么用?C# Interest.getLinkWireEncoding使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net.named_data.jndn.Interest
的用法示例。
在下文中一共展示了Interest.getLinkWireEncoding方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: encodeInterest
/// <summary>
/// Encode interest using NDN-TLV and return the encoding.
/// </summary>
///
/// <param name="interest">The Interest object to encode.</param>
/// <param name="signedPortionBeginOffset">name component and ends just before the final name component (which is assumed to be a signature for a signed interest).</param>
/// <param name="signedPortionEndOffset">name component and ends just before the final name component (which is assumed to be a signature for a signed interest).</param>
/// <returns>A Blob containing the encoding.</returns>
public override Blob encodeInterest(Interest interest,
int[] signedPortionBeginOffset, int[] signedPortionEndOffset)
{
TlvEncoder encoder = new TlvEncoder();
int saveLength = encoder.getLength();
// Encode backwards.
encoder.writeOptionalNonNegativeIntegerTlv(net.named_data.jndn.encoding.tlv.Tlv.SelectedDelegation,
interest.getSelectedDelegationIndex());
try {
Blob linkWireEncoding = interest.getLinkWireEncoding(this);
if (!linkWireEncoding.isNull())
// Encode the entire link as is.
encoder.writeBuffer(linkWireEncoding.buf());
} catch (EncodingException ex) {
throw new Exception(ex.Message);
}
encoder.writeOptionalNonNegativeIntegerTlvFromDouble(
net.named_data.jndn.encoding.tlv.Tlv.InterestLifetime,
interest.getInterestLifetimeMilliseconds());
// Encode the Nonce as 4 bytes.
if (interest.getNonce().size() == 0) {
// This is the most common case. Generate a nonce.
ByteBuffer nonce = ILOG.J2CsMapping.NIO.ByteBuffer.allocate(4);
random_.nextBytes(nonce.array());
encoder.writeBlobTlv(net.named_data.jndn.encoding.tlv.Tlv.Nonce, nonce);
} else if (interest.getNonce().size() < 4) {
ByteBuffer nonce_0 = ILOG.J2CsMapping.NIO.ByteBuffer.allocate(4);
// Copy existing nonce bytes.
nonce_0.put(interest.getNonce().buf());
// Generate random bytes for remaining bytes in the nonce.
for (int i = 0; i < 4 - interest.getNonce().size(); ++i)
nonce_0.put((byte) random_.Next());
nonce_0.flip();
encoder.writeBlobTlv(net.named_data.jndn.encoding.tlv.Tlv.Nonce, nonce_0);
} else if (interest.getNonce().size() == 4)
// Use the nonce as-is.
encoder.writeBlobTlv(net.named_data.jndn.encoding.tlv.Tlv.Nonce, interest.getNonce().buf());
else {
// Truncate.
ByteBuffer nonce_1 = interest.getNonce().buf();
// buf() returns a new ByteBuffer, so we can change its limit.
nonce_1.limit(nonce_1.position() + 4);
encoder.writeBlobTlv(net.named_data.jndn.encoding.tlv.Tlv.Nonce, nonce_1);
}
encodeSelectors(interest, encoder);
int[] tempSignedPortionBeginOffset = new int[1];
int[] tempSignedPortionEndOffset = new int[1];
encodeName(interest.getName(), tempSignedPortionBeginOffset,
tempSignedPortionEndOffset, encoder);
int signedPortionBeginOffsetFromBack = encoder.getLength()
- tempSignedPortionBeginOffset[0];
int signedPortionEndOffsetFromBack = encoder.getLength()
- tempSignedPortionEndOffset[0];
encoder.writeTypeAndLength(net.named_data.jndn.encoding.tlv.Tlv.Interest, encoder.getLength()
- saveLength);
signedPortionBeginOffset[0] = encoder.getLength()
- signedPortionBeginOffsetFromBack;
signedPortionEndOffset[0] = encoder.getLength()
- signedPortionEndOffsetFromBack;
return new Blob(encoder.getOutput(), false);
}