source: trunk/CrypPlugins/KeySearcher/P2P/Helper/ConnectionHelper.cs @ 2295

Last change on this file since 2295 was 2295, checked in by Sven Rech, 11 years ago

Prepared KeySearcher for Localization

File size: 1.9 KB
Line 
1using System.Threading;
2using Cryptool.P2P;
3using Cryptool.PluginBase;
4using KeySearcher.Properties;
5
6namespace KeySearcher.P2P.Helper
7{
8    public class ConnectionHelper
9    {
10        private readonly KeySearcher keySearcher;
11        private readonly KeySearcherSettings settings;
12        private AutoResetEvent connectResetEvent;
13
14        public ConnectionHelper(KeySearcher keySearcher, KeySearcherSettings settings)
15        {
16            this.keySearcher = keySearcher;
17            this.settings = settings;
18        }
19
20        public void ValidateConnectionToPeerToPeerSystem()
21        {
22            if (P2PManager.IsConnected)
23            {
24                return;
25            }
26
27            if (settings.AutoconnectPeerToPeer)
28            {
29                HandleAutoconnect();
30            }
31            else
32            {
33                keySearcher.GuiLogMessage(Resources.P2P_network_not_connected_and_autoconnect_disabled__Cannot_compute_job_,
34                                          NotificationLevel.Error);
35            }
36        }
37
38        private void HandleAutoconnect()
39        {
40            P2PManager.ConnectionManager.OnP2PConnectionStateChangeOccurred += HandleConnectionStateChange;
41            connectResetEvent = new AutoResetEvent(false);
42
43            P2PManager.Connect();
44
45            connectResetEvent.WaitOne();
46
47            if (P2PManager.IsConnected)
48            {
49                keySearcher.GuiLogMessage(Resources.P2P_network_was_connected_due_to_plugin_setting_,
50                                          NotificationLevel.Info);
51            }
52            else
53            {
54                keySearcher.GuiLogMessage(Resources.P2P_network_could_not_be_connected_,
55                                          NotificationLevel.Error);
56            }
57        }
58
59        void HandleConnectionStateChange(object sender, bool newState)
60        {
61            connectResetEvent.Set();
62        }
63    }
64}
Note: See TracBrowser for help on using the repository browser.