FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
Commit 886faae8 authored by Dr Adam Thorn's avatar Dr Adam Thorn
Browse files

Have clients unregister from server on exit

parent ffb7738e
No related branches found
No related tags found
No related merge requests found
......@@ -9,6 +9,9 @@ namespace WpkgInstaller
[OperationContract(IsOneWay = true)]
void Register(int pid);
[OperationContract(IsOneWay = true)]
void Unregister(int pid);
[OperationContract(IsOneWay = true)]
void ProcessRequest(WpkgMessageRequestType type);
}
......
......@@ -207,6 +207,17 @@ namespace WpkgInstaller
}
}
public void Unregister(int pid)
{
if(clients.Remove(pid))
{
eventLog.WriteEntry(String.Format("Client {0} unregistered", pid));
}
else
{
eventLog.WriteEntry(String.Format("Unknown client {0} requested to unregister", pid), EventLogEntryType.Warning);
}
}
public void ProcessRequest(WpkgMessageRequestType type)
{
switch (type)
......
......@@ -15,10 +15,13 @@ namespace WpkgNotifier
private EventLog eventLog;
private WpkgMessageState state;
private IWpkgNotifierMessageServer server;
private int pid;
public TrayNotifier()
{
Process currentProcess = Process.GetCurrentProcess();
pid = currentProcess.Id;
eventLog = new EventLog();
string eventSourceName = "TrayNotifier";
string logName = "WpkgNotifier";
......@@ -34,6 +37,8 @@ namespace WpkgNotifier
OpenMessageChannel();
Application.ApplicationExit += new EventHandler(this.OnApplicationExit);
MenuItem actionsMenu = new MenuItem("Actions");
MenuItem syncMenuItem = new MenuItem("Sync", new EventHandler(RequestSync));
MenuItem queryMenuItem = new MenuItem("Query", new EventHandler(RequestQuery));
......@@ -65,6 +70,11 @@ namespace WpkgNotifier
};
}
private void OnApplicationExit(object sender, EventArgs e)
{
server.Unregister(pid);
}
private void OpenMessageChannel()
{
eventLog.WriteEntry("Trying to open channel");
......@@ -78,8 +88,7 @@ namespace WpkgNotifier
server = channelFactory.CreateChannel();
eventLog.WriteEntry("channel created");
Process currentProcess = Process.GetCurrentProcess();
server.Register(currentProcess.Id);
server.Register(pid);
eventLog.WriteEntry("Registered with server");
}
catch (Exception e)
......@@ -114,6 +123,8 @@ namespace WpkgNotifier
Application.Exit();
}
public void SetToolTip(string msg)
{
notifyIcon.Text = msg;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment