/*
This file is part of PacketDotNet
PacketDotNet is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
PacketDotNet is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with PacketDotNet. If not, see .
*/
/*
* Copyright 2010 Evan Plaice
* Copyright 2010 Chris Morgan
*/
using System;
using MiscUtil.Conversion;
using PacketDotNet.Utils;
namespace PacketDotNet.LLDP
{
///
/// A Time to Live TLV
///
public class TimeToLive : TLV
{
// NOTE: No need to warn about lack of use, the compiler won't
// put any calls to 'log' here but we need 'log' to exist to compile
#pragma warning disable 0169, 0649
private static readonly ILogInactive log;
#pragma warning restore 0169, 0649
///
/// Number of bytes in the value portion of this tlv
///
private const int ValueLength = 2;
#region Constructors
///
/// Creates a TTL TLV
///
///
///
///
/// The TTL TLV's offset from the
/// origin of the LLDP
///
public TimeToLive(byte[] bytes, int offset) :
base(bytes, offset)
{
log.Debug("");
}
///
/// Creates a TTL TLV and sets it value
///
///
/// The length in seconds until the LLDP
/// is refreshed
///
public TimeToLive(ushort seconds)
{
log.Debug("");
var bytes = new byte[TLVTypeLength.TypeLengthLength + ValueLength];
int offset = 0;
int length = bytes.Length;
tlvData = new ByteArraySegment(bytes, offset, length);
Type = TLVTypes.TimeToLive;
Seconds = seconds;
}
#endregion
#region Properties
///
/// The number of seconds until the LLDP needs
/// to be refreshed
///
/// A value of 0 means that the LLDP source is
/// closed and should no longer be refreshed
///
public ushort Seconds
{
get
{
// get the seconds
return BigEndianBitConverter.Big.ToUInt16(tlvData.Bytes,
tlvData.Offset + TLVTypeLength.TypeLengthLength);
}
set
{
EndianBitConverter.Big.CopyBytes(value,
tlvData.Bytes,
tlvData.Offset + TLVTypeLength.TypeLengthLength);
}
}
///
/// Convert this TTL TLV to a string.
///
///
/// A human readable string
///
public override string ToString ()
{
return string.Format("[TimeToLive: Seconds={0}]", Seconds);
}
#endregion
}
}