Exemple #1
0
        public void TestMessageRouting()
        {
            var blockConvo1 = new ManualResetEvent(false);
            var blockConvo2 = new ManualResetEvent(false);

            var comm = new MockCommunicator();
            var router = new MessageRouter(comm);

            var converser1 = new MockConverser()
            {
                ConversationId = ConverserId1
            };

            converser1.OnConversationOver += (IConverser c) =>
            {
                blockConvo1.Set();
            };

            var converser2 = new MockConverser()
            {
                ConversationId = ConverserId2
            };

            converser2.OnConversationOver += (IConverser c) =>
            {
                blockConvo2.Set();
            };

            // Conversations are implicitly started here
            router.AddConversation(converser1, RemoteEndPoint);
            router.AddConversation(converser2, RemoteEndPoint);

            Assert.True(blockConvo1.WaitOne(100), "Conversation 1 never finished");
            Assert.True(blockConvo2.WaitOne(100), "Conversation 2 never finsihed");
        }
Exemple #2
0
        private void addSeedButton_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(seedTextBox.Text))
            {
                if (File.Exists(seedTextBox.Text))
                {
                    var provider = new RSACryptoServiceProvider();
                    provider.ImportCspBlob(persistenceManager.ReadContent().KeyInfo);

                    using (var sha2 = new SHA256Managed())
                    {
                        FileInfo file       = new FileInfo(seedTextBox.Text);
                        Content  newContent = new Content()
                        {
                            FileName      = file.Name,
                            LocalPath     = file.DirectoryName,
                            Description   = descriptionTextBox.Text,
                            ByteSize      = (int)file.Length,
                            ContentHash   = sha2.ComputeHash(File.ReadAllBytes(file.FullName)),
                            Host          = Properties.Settings.Default.HostAddress,
                            Port          = Properties.Settings.Default.HostPort,
                            PublicKeyInfo = provider.ExportCspBlob(false)
                        };

                        persistenceManager.WriteContent(newContent, PersistenceManager.StorageType.Local);
                        seederDataGridView.DataSource = persistenceManager.ReadContent().LocalContent;
                        RegisterContentRequest request       = new RegisterContentRequest(Guid.NewGuid(), Guid.NewGuid(), 1, newContent);
                        RegisterContentSender  contentSender = new RegisterContentSender(request.ConversationId, request);
                        router.AddConversation(contentSender, RegistryEndpoint);
                    }
                }
                else
                {
                    MessageBox.Show("That file does not exist", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("You must specify a filename", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }