private void _register(object state)
{
bool register = false;
lock (_lock)
{
if (_state == State.Registering || _state == State.Renewing)
{
register = true;
}
else if (_state == State.Open && DateTime.UtcNow > _registrationTimeout)
{
_state = State.Renewing;
register = true;
}
if (register)
{
// we use double the registration interval for the ttl
int ttl = (int)_options.RegistrationInterval.TotalSeconds;
ttl *= 2;
RegisterForeignDeviceMessage message = new RegisterForeignDeviceMessage();
message.TTL = (ushort)ttl;
lock (_lock)
{
_sendMessage(_bbmdMac, message);
}
}
}
}