/// </summary>
class TSimpleServer : TServer
{
+ private bool stop = false;
public TSimpleServer(TProcessor processor,
TServerTransport serverTransport)
:base(processor, serverTransport, new TTransportFactory(), new TTransportFactory(), new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory())
return;
}
- while (true)
+ while (!stop)
{
TTransport client = null;
TTransport inputTransport = null;
outputTransport.Close();
}
}
+
+ if (stop)
+ {
+ try
+ {
+ serverTransport.Close();
+ }
+ catch (TTransportException ttx)
+ {
+ Console.Error.WriteLine("TServerTrasnport failed on close: " + ttx.Message);
+ }
+ stop = false;
+ }
+ }
+
+ public override void Stop()
+ {
+ stop = true;
}
}
}
{
private const int DEFAULT_MIN_THREADS = 10;
private const int DEFAULT_MAX_THREADS = 100;
+ private volatile bool stop = false;
public TThreadPoolServer(TProcessor processor, TServerTransport serverTransport)
:this(processor, serverTransport,
return;
}
- while (true)
+ while (!stop)
{
int failureCount = 0;
try
Console.Error.WriteLine(ttx);
}
}
+
+ if (stop)
+ {
+ try
+ {
+ serverTransport.Close();
+ }
+ catch (TTransportException ttx)
+ {
+ Console.Error.WriteLine("TServerTrasnport failed on close: " + ttx.Message);
+ }
+ stop = false;
+ }
+ }
+
+
+ public override void Stop()
+ {
+ stop = true;
}
/// <summary>