public void EnableAndActivateMessage(string messageName)
{
if (messageName == null)
throw new ArgumentNullException("messageName");
lock (this)
{
MessageMetadata messageMetadata;
if (!MessagesByName.TryGetValue(messageName, out messageMetadata))
{
throw CreateMessageNotSupportedException(messageName);
}
var enabledMessageMetadata = _enabledMessagesByNumber[messageMetadata.Number];
if (enabledMessageMetadata != null && enabledMessageMetadata != messageMetadata)
{
throw CreateMessageTypeAlreadyEnabledForOtherMessageException(messageMetadata.Number,
messageMetadata.Name,
enabledMessageMetadata.Name);
}
_enabledMessagesByNumber[messageMetadata.Number] = messageMetadata;
_activatedMessagesById[messageMetadata.Id] = true;
}
}