source: trunk/CrypPlugins/PeerToPeer_DHTstore/P2PDHTstore.cs @ 783

Last change on this file since 783 was 783, checked in by arnold, 12 years ago

P2P Integration (bisher teilweise noch buggy)
P2PBase, P2PLoad und P2PStore funktionieren bereits
P2P_DHTstore funktioniert noch nicht --> IControl-Versuch

File size: 5.6 KB
Line 
1/* Copyright 2009 Team CrypTool (Christian Arnold), Uni Duisburg-Essen
2
3   Licensed under the Apache License, Version 2.0 (the "License");
4   you may not use this file except in compliance with the License.
5   You may obtain a copy of the License at
6
7       http://www.apache.org/licenses/LICENSE-2.0
8
9   Unless required by applicable law or agreed to in writing, software
10   distributed under the License is distributed on an "AS IS" BASIS,
11   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   See the License for the specific language governing permissions and
13   limitations under the License.
14*/
15
16
17using System;
18using System.Collections.Generic;
19using System.Linq;
20using System.Text;
21using Cryptool;
22using Cryptool.PluginBase.IO;
23using Cryptool.PluginBase;
24using Cryptool.PluginBase.Miscellaneous;
25using System.ComponentModel;
26using Cryptool.PluginBase.Tool;
27using Cryptool.PluginBase.Control;
28
29namespace Cryptool.Plugins.PeerToPeer
30{
31    [Author("Christian Arnold", "arnold@cryptool.org", "Uni Duisburg-Essen", "http://www.uni-due.de")]
32    [PluginInfo(false, "P2P_DHTstore", "Storing data in DHT", "", "PeerToPeer_DHTstore/ct2_p2p_store_medium.png")]
33    public class P2P_DHTstore : IInput
34    {
35        private P2PDHTstoreSettings settings;
36
37        #region In and Output
38
39        private IP2PControl p2pSlave;
40        [PropertyInfo(Direction.ControlSlave,"P2P Slave","Input the P2P-Peer-PlugIn","",true,false,DisplayLevel.Beginner,QuickWatchFormat.Text,null)]
41        public IP2PControl P2PSlave
42        {
43            get
44            {
45                if (this.p2pSlave == null)
46                {
47                    //TO DO: überlegen wie Parameter übergeben werden...
48                    p2pSlave = new Cryptool.Plugins.PeerToPeer.P2PPeerMaster(null);
49                }
50                return this.p2pSlave;
51            }
52        }
53
54        private string sDhtKey;
55        [PropertyInfo(Direction.InputData, "Key Name", "Key Name of DHT Entry in the P2P-System", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
56        public string DhtKey
57        {
58            get
59            {
60                return this.sDhtKey;
61            }
62            set
63            {
64                this.sDhtKey = value;
65                OnPropertyChanged("DhtKey");
66            }
67        }
68
69        private string sDhtValue;
70        [PropertyInfo(Direction.InputData, "Value of the Key", "Value of the Key of DHT Entry in the P2P-System", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
71        public string DhtValue
72        {
73            get
74            {
75                return this.sDhtValue;
76            }
77            set
78            {
79                this.sDhtValue = value;
80                OnPropertyChanged("DhtValue");
81            }
82        }
83
84        #endregion
85
86        #region Events
87
88        public event StatusChangedEventHandler OnPluginStatusChanged;
89
90        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
91
92        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
93
94        #endregion
95
96        public P2P_DHTstore()
97        {
98            this.settings = new P2PDHTstoreSettings(this);
99        }
100
101        public ISettings Settings
102        {
103            set { this.settings = (P2PDHTstoreSettings)value; }
104            get { return this.settings; }
105        }
106
107        public System.Windows.Controls.UserControl Presentation
108        {
109            get { return null; }
110        }
111
112        public System.Windows.Controls.UserControl QuickWatchPresentation
113        {
114            get { return null; }
115        }
116
117        public void PreExecution()
118        {
119        }
120
121        public void Execute()
122        {
123            if (P2PSlave != null && DhtKey != null && DhtValue != null)
124            {
125                P2PSlave.DHTstore(DhtKey, DhtKey);
126                GuiLogMessage("KeyValue-Pair will be stored in the DHT Entry '" + DhtKey + "'. Value: " + DhtValue, NotificationLevel.Info);
127            }
128            else
129            {
130                GuiLogMessage("No key and/or value in inputs", NotificationLevel.Error);
131            }
132        }
133
134        public void PostExecution()
135        {
136            //throw new NotImplementedException();
137        }
138
139        public void Pause()
140        {
141            //throw new NotImplementedException();
142        }
143
144        public void Stop()
145        {
146            //throw new NotImplementedException();
147        }
148
149        public void Initialize()
150        {
151        }
152
153        public void Dispose()
154        {
155        }
156
157        #region INotifyPropertyChanged Members
158
159        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
160
161        public void OnPropertyChanged(string name)
162        {
163            EventsHelper.PropertyChanged(PropertyChanged, this, new PropertyChangedEventArgs(name));
164        }
165
166        public event PluginProgressChangedEventHandler OnPluginProcessChanged;
167
168        private void ProgressChanged(double value, double max)
169        {
170            EventsHelper.ProgressChanged(OnPluginProgressChanged, this, new PluginProgressEventArgs(value, max));
171        }
172
173        private void GuiLogMessage(string p, NotificationLevel notificationLevel)
174        {
175            EventsHelper.GuiLogMessage(OnGuiLogNotificationOccured, this, new GuiLogEventArgs(p, this, notificationLevel));
176        }
177
178        #endregion
179
180        internal void LogInternalState()
181        {
182            throw new NotImplementedException();
183        }
184    }
185}
Note: See TracBrowser for help on using the repository browser.