FAQ | This is a LIVE service | Changelog

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

Basic implemenetion of service's Register method

parent 7c5239ba
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,8 @@ using System.ServiceProcess;
using System.Diagnostics;
using System;
using System.ServiceModel;
using System.Collections;
using System.Collections.Generic;
namespace WpkgInstaller
{
......@@ -35,12 +37,14 @@ namespace WpkgInstaller
[DllImport("advapi32.dll", SetLastError = true)]
private static extern bool SetServiceStatus(System.IntPtr handle, ref ServiceStatus serviceStatus);
private Dictionary<int, IWpkgNotifierMessageClient> clients;
public WpkgInstaller()
{
InitializeComponent();
eventLog = new EventLog();
clients = new Dictionary<int, IWpkgNotifierMessageClient>();
string eventSourceName = "WpkgInstaller Service";
string logName = "WpkgNotifier";
......@@ -206,12 +210,34 @@ namespace WpkgInstaller
public void Register(int pid)
{
eventLog.WriteEntry(String.Format("Register requested for {0}", pid));
// throw new NotImplementedException();
IWpkgNotifierMessageClient client = OperationContext.Current.GetCallbackChannel <IWpkgNotifierMessageClient>();
clients.Add(pid, client);
foreach(KeyValuePair<int, IWpkgNotifierMessageClient> kv in clients)
{
try
{
kv.Value.StatusLine(String.Format("Register requested for {0}", pid));
}
catch (Exception e)
{
eventLog.WriteEntry("Error communicating with client " + kv.Key + " " + e.ToString(), EventLogEntryType.Warning);
}
}
}
public void ProcessRequest(WpkgMessageRequestType type)
{
throw new NotImplementedException();
switch (type)
{
case WpkgMessageRequestType.DO_SYNC:
RunWpkgSync();
break;
case WpkgMessageRequestType.RUN_QUERY:
RunWpkgQuery();
break;
}
}
}
}
......@@ -78,14 +78,13 @@ namespace WpkgNotifier
server = channelFactory.CreateChannel();
eventLog.WriteEntry("channel created");
server.Register(123);
Process currentProcess = Process.GetCurrentProcess();
server.Register(currentProcess.Id);
eventLog.WriteEntry("Registered with server");
// this method should probably be 'RegisterWithService'
}
catch (Exception e)
{
eventLog.WriteEntry("problem creating channel");
eventLog.WriteEntry(e.Message);
}
}
......@@ -93,13 +92,13 @@ namespace WpkgNotifier
void RequestSync(object sender, EventArgs e)
{
notifyIcon.ContextMenu.MenuItems[0].Enabled = false;
// send DO_SYNC request to server
server.ProcessRequest(WpkgMessageRequestType.DO_SYNC);
}
void RequestQuery(object sender, EventArgs e)
{
notifyIcon.ContextMenu.MenuItems[0].Enabled = false;
// send RUN_QUERY request to server
server.ProcessRequest(WpkgMessageRequestType.RUN_QUERY);
}
void ManageSoftware(object sender, EventArgs e)
......@@ -152,7 +151,7 @@ namespace WpkgNotifier
public void StatusLine(string msg)
{
throw new NotImplementedException();
SetToolTip(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