Пример #1
0
        private void PrepareResponse(Request request)
        {
            // consecutive response require new MID that must be stored for RST matching
            if (request.Response.ID == Message.InvalidID)
            {
                request.Response.ID = MessageLayer.NextMessageID();
            }

            // 16-bit second counter
            Int32 secs = (Int32)((DateTime.Now - request.StartTime).TotalMilliseconds / 1000) & 0xFFFF;

            request.Response.SetOption(Option.Create(OptionType.Observe, secs));

            // store ID for RST matching
            UpdateLastMessageID(request.PeerAddress.ToString(), request.UriPath, request.Response.ID);
        }