public Task RemoveRegistrationAsync <T, TH>() where T : IMessage where TH : IMessageHandler <T> { MessageRegistration messageRegistrationToRemove = _findRegistrationToRemove <T, TH>(); string messageKey = GetMessageKey <T>(); _doRemoveRegistration(messageKey, messageRegistrationToRemove); return(Task.CompletedTask); }
private void _doAddRegistration <T>(Type handlerType, Func <T, Task> asyncHandler, string messageName) { if (!HasRegistrationsForMessage(messageName)) { _registrations.Add(messageName, new List <MessageRegistration>()); } if (_registrations[messageName].Any(s => s.HandlerType == handlerType)) { throw new ArgumentException( $"Handler Type {handlerType.Name} already registered for '{messageName}'", nameof(handlerType)); } _registrations[messageName].Add(MessageRegistration.Create(handlerType, asyncHandler)); }
public void WhenVersionsDiffer_ThenRegistrationsShouldBeEqual() { const string SharedType = "some type"; var a = new MessageRegistration { Type = SharedType, Version = 1 }; var b = new MessageRegistration { Type = SharedType, Version = 2 }; Assert.False(a.Equals(b)); }
public void WhenTypeDiffers_ThenRegistrationsShouldNotBeEqual() { const int SharedVersion = 99; var a = new MessageRegistration { Type = "first type", Version = SharedVersion }; var b = new MessageRegistration { Type = "second type", Version = SharedVersion }; Assert.False(a.Equals(b)); }
public void WhenTypeAndVersionMatch_ThenRegistrationsShouldBeEqual() { const string SharedType = "some type"; const int SharedVersion = 99; var a = new MessageRegistration { Type = SharedType, Version = SharedVersion }; var b = new MessageRegistration { Type = SharedType, Version = SharedVersion }; Assert.True(a.Equals(b)); }
void handleMessageRegistration(GameMessage message) { if (message.MessageType != MessageType.Regitsration) { return; } if (!PlayersNames.ContainsKey(message.PlayerID)) { PlayersNames.Add(message.PlayerID, ((MessageRegistration)message).Name); Players[message.PlayerID].Name = ((MessageRegistration)message).Name; } MessageRegistration messageRegistration = message as MessageRegistration; ChatMessages.Enqueue(new MessageChat() { PlayerID = ServerID, Content = messageRegistration.Name + " присоединился к игре" }); }
private void _doRemoveRegistration(string messageName, MessageRegistration messageRegistrationToRemove) { if (messageRegistrationToRemove == null) { return; } _registrations[messageName].Remove(messageRegistrationToRemove); if (_registrations[messageName].Any()) { return; } _registrations.Remove(messageName); Type messageType = _messageTypes.SingleOrDefault(e => e.Name == messageName); if (messageType != null) { _messageTypes.Remove(messageType); } _raiseOnMessageRemoved(messageName); }