Exemple #1
0
        public void ServiceQueueShouldExistAfterConstructor()
        {
            string queuePath = @".\private$\testSvc";

            using (MsmqMessageHubService testSvc = new MsmqMessageHubService(queuePath, new AppConnectedClientRepository <MsmqConnectedClient>()))
            {
                Assert.IsTrue(MessageQueue.Exists(queuePath));
            }
        }
Exemple #2
0
        public void ClientShouldBeInRepoAfterAddReceiver()
        {
            var repo = new AppConnectedClientRepository <MsmqConnectedClient>();
            MsmqConnectedClient subject = new MsmqConnectedClient
            {
                Id = Guid.NewGuid()
            };

            using (MsmqMessageHubService testSvc = new MsmqMessageHubService(@".\private$\testSvc", repo))
            {
                testSvc.AddReceiver(subject);

                MsmqConnectedClient actual = repo.Single(subject.Id);
                Assert.IsNotNull(actual);
            }

            repo.Remove(subject.Id);
            subject.Dispose();
        }
Exemple #3
0
        static void Main(string[] args)
        {
            using (MsmqMessageHubService service = new MsmqMessageHubService(".\\private$\\AppHub", new AppConnectedClientRepository <MsmqConnectedClient>()))
                using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost"))
                {
                    IRemoteMessageHub stateHub = MsmqMessageHub.Create().WithConfiguration(new MsmqHubConfiguration
                    {
                        RemoteQueuePath = ".\\private$\\AppHub"
                    });

                    stateHub.Connect().Wait();

                    Guid stateHubChannelId = Guid.NewGuid();

                    stateHub.Channel("Users").AddReceiver("Add", (userData) =>
                    {
                        return(Task.Factory.StartNew(async() =>
                        {
                            RemoteUser user = userData as RemoteUser;
                            if (user != null)
                            {
                                string serializedUser = JsonConvert.SerializeObject(user);
                                IDatabase db = redis.GetDatabase();
                                if (await db.SetContainsAsync("AllUsers", serializedUser))
                                {
                                    await db.SetRemoveAsync("AllUsers", serializedUser);
                                }

                                await db.SetAddAsync("AllUsers", serializedUser);
                            }
                        }));
                    }, stateHubChannelId);

                    stateHub.Channel("Users").AddReceiver("Remove", (userData) =>
                    {
                        return(Task.Factory.StartNew(async() =>
                        {
                            RemoteUser user = userData as RemoteUser;
                            if (user != null)
                            {
                                string serializedUser = JsonConvert.SerializeObject(user);
                                IDatabase db = redis.GetDatabase();
                                if (await db.SetContainsAsync("AllUsers", serializedUser))
                                {
                                    await db.SetRemoveAsync("AllUsers", serializedUser);
                                }
                            }
                        }));
                    }, stateHubChannelId);

                    stateHub.Channel("Content").AddReceiver("Update", (contentData) =>
                    {
                        return(Task.Factory.StartNew(async() =>
                        {
                            string content = contentData as string;
                            IDatabase db = redis.GetDatabase();
                            await db.StringSetAsync("Content", content);
                        }));
                    }, stateHubChannelId);

                    Console.ReadKey();
                    redis.GetDatabase().KeyDelete("AllUsers");
                    redis.GetDatabase().KeyDelete("Content");

                    stateHub.Channel("Users").RemoveReceiver("Add", stateHubChannelId);
                    stateHub.Channel("Users").RemoveReceiver("Remove", stateHubChannelId);
                    stateHub.Channel("Content").RemoveReceiver("Update", stateHubChannelId);
                    stateHub.Disconnect();
                }
        }