本文整理汇总了C#中Response.SetOptions方法的典型用法代码示例。如果您正苦于以下问题:C# Response.SetOptions方法的具体用法?C# Response.SetOptions怎么用?C# Response.SetOptions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Response
的用法示例。
在下文中一共展示了Response.SetOptions方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetNextResponseBlock
private Response GetNextResponseBlock(Response response, BlockwiseStatus status)
{
Response block;
Int32 szx = status.CurrentSZX;
Int32 num = status.CurrentNUM;
if (response.HasOption(OptionType.Observe))
{
// a blockwise notification transmits the first block only
block = response;
}
else
{
block = new Response(response.StatusCode);
block.Destination = response.Destination;
block.Token = response.Token;
block.SetOptions(response.GetOptions());
block.TimedOut += (o, e) => response.IsTimedOut = true;
}
Int32 payloadSize = response.PayloadSize;
Int32 currentSize = 1 << (4 + szx);
Int32 from = num * currentSize;
if (payloadSize > 0 && payloadSize > from)
{
Int32 to = Math.Min((num + 1) * currentSize, response.PayloadSize);
Int32 length = to - from;
Byte[] blockPayload = new Byte[length];
Boolean m = to < response.PayloadSize;
block.SetBlock2(szx, m, num);
// crop payload -- do after calculation of m in case block==response
Array.Copy(response.Payload, from, blockPayload, 0, length);
block.Payload = blockPayload;
// do not complete notifications
block.Last = !m && !response.HasOption(OptionType.Observe);
status.Complete = !m;
}
else
{
block.AddOption(new BlockOption(OptionType.Block2, num, szx, false));
block.Last = true;
status.Complete = true;
}
return block;
}
示例2: GetNextResponseBlock
private Response GetNextResponseBlock(Response response, BlockwiseStatus status)
{
Int32 szx = status.CurrentSZX;
Int32 num = status.CurrentNUM;
Response block = new Response(response.StatusCode);
// block.setType(response.getType()); // NO! First block has type from origin response, all other depend on current request
block.Destination = response.Destination;
block.Token = response.Token;
block.SetOptions(response.GetOptions());
block.TimedOut += (o, e) => response.IsTimedOut = true;
Int32 payloadSize = response.PayloadSize;
Int32 currentSize = 1 << (4 + szx);
Int32 from = num * currentSize;
if (payloadSize > 0 && payloadSize > from)
{
Int32 to = Math.Min((num + 1) * currentSize, response.PayloadSize);
Int32 length = to - from;
Byte[] blockPayload = new Byte[length];
Array.Copy(response.Payload, from, blockPayload, 0, length);
block.Payload = blockPayload;
Boolean m = to < response.PayloadSize;
block.AddOption(new BlockOption(OptionType.Block2, num, szx, m));
block.Last = !m;
status.Complete = !m;
}
else
{
block.AddOption(new BlockOption(OptionType.Block2, num, szx, false));
block.Last = true;
status.Complete = true;
}
return block;
}
示例3: GetResponse
/// <summary>
/// Fills the new response with the response received from the internal CoAP
/// node. Simply copies the options and the payload from the forwarded
/// response to the new one.
/// </summary>
/// <param name="incomingResponse">the forwarded request</param>
/// <exception cref="ArgumentNullException">the <paramref name="incomingResponse"/> is null</exception>
/// <returns></returns>
public static Response GetResponse(Response incomingResponse)
{
if (incomingResponse == null)
throw ThrowHelper.ArgumentNull("incomingResponse");
Response outgoingResponse = new Response(incomingResponse.StatusCode);
// copy payload
Byte[] payload = incomingResponse.Payload;
outgoingResponse.Payload = payload;
// copy the timestamp
outgoingResponse.Timestamp = incomingResponse.Timestamp;
// copy every option
outgoingResponse.SetOptions(incomingResponse.GetOptions());
return outgoingResponse;
}