示例#1
0
        public void ShouldSortByTypeFullNameAndAssignFullNameAsTypeId()
        {
            var sut = new MessageTypeCache(new[]
            {
                typeof(A.DTestMessage),
                typeof(B.CTestMessage),
                typeof(B.ATestMessage),
                typeof(A.BTestMessage)
            });

            var all = sut.GetAllTypes().ToDictionary(x => x.Key, x => x.Value);

            Assert.Equal(4, all.Count);
            Assert.Equal(typeof(A.BTestMessage), all[typeof(A.BTestMessage).FullName !]);
示例#2
0
 /// <summary>
 /// Initializes an instance of the <see cref="RestEndPoint"/> class.
 /// </summary>
 /// <param name="serverConfiguration">The server configuration.</param>
 /// <param name="accessTokenService">The access token service.</param>
 public RestEndPoint(IOptions <ServerConfiguration> serverConfiguration, IAccessTokenService accessTokenService)
 {
     _accessTokenService  = accessTokenService;
     _serverConfiguration = serverConfiguration.Value;
     MessageTypeCache.LoadMessageTypeCache();
     _resourcesToTypesMap = new ConcurrentDictionary <string, Route>(
         new[]
     {
         Route.Create <AuthenticateRequest>("/users/authenticate"),
         Route.Create <RegisterRequest>("/users/register"),
         Route.Create <GetEnabledTrainingRoomsRequest>("/trainingrooms/enabled", "Logged in")
     });
     _httpListener = new HttpListener();
     _httpListener.Prefixes.Add($"http://{_serverConfiguration.Host}:{_serverConfiguration.RestPort}/");
 }
示例#3
0
        public static MessageEnvelope CreateMessage(string className, string messageJson)
        {
            if (className.IsNullOrEmpty())
            {
                throw new ArgumentNullException(nameof(className));
            }
            if (messageJson.IsNullOrEmpty())
            {
                throw new ArgumentNullException(nameof(messageJson));
            }

            var messageType = MessageTypeCache.TryGetType(className);

            if (messageType == null)
            {
                throw new Exception($"Type {className} was not found in cache");
            }

            return(new MessageEnvelope(
                       JsonConvert.DeserializeObject(messageJson, messageType),
                       messageType));
        }
示例#4
0
 /// <summary>
 /// Initializes a new instance of <see cref="BaseNetworkConnector"/> class.
 /// </summary>
 /// <remarks>
 /// Also loads the <see cref="MessageTypeCache"/> on the first <see cref="BaseNetworkConnector"/> instance creation.
 /// </remarks>
 /// <exception cref="ArgumentNullException">If the messageProcessor is null; an argument exception is thrown.</exception>
 /// <param name="messageSerializer">The message serializer.</param>
 /// <param name="messageProcessor">The message processor.</param>
 protected BaseNetworkConnector(IMessageSerializer messageSerializer, IMessageProcessor messageProcessor)
 {
     _messageConstructor = new MessageConstructor(messageSerializer);
     _messageProcessor   = messageProcessor ?? throw new ArgumentNullException(nameof(messageProcessor));
     MessageTypeCache.LoadMessageTypeCache();
 }
示例#5
0
        public void ShouldBeEmptyWhenNoMessages()
        {
            var sut = new MessageTypeCache(Enumerable.Empty <Type>());

            Assert.Empty(sut.GetAllTypes());
        }