public void ConnectionThreadFn(object con)
{
using (var nss = con as NamedPipeServerStream)
{
try
{
while (!quitnow)
{
var w = nss.BeginWaitForConnection(null, null);
FirstThreadReady = true;
Logging.Emit("waiting for client..");
while (!w.AsyncWaitHandle.WaitOne(1000))
{
if (quitnow)
{
return;
}
}
nss.EndWaitForConnection(w);
Logging.Emit("got client");
if (nss.IsConnected)
{
Logging.Emit("server connected");
ThreadBeforeProcessRequest();
ThreadIsBusy();
ServiceRequest(nss);
}
ThreadIsIdle();
}
}
catch (IOException ex)
{
Logging.Error("server thread got {0}, {1}", ex.GetType().Name, ex.Message);
Logging.Error(":{0}", ex.ToString());
}
}
}