public void Run (object o)
{
string arg = (string)o;
string ports = arg.Substring (8);
int sp = ports.IndexOf (':');
int port = Int32.Parse (ports.Substring (0, sp));
int interrupt_port = Int32.Parse (ports.Substring (sp+1));
Console.WriteLine ("csharp-agent: started, connecting to localhost:" + port);
TcpClient client = new TcpClient ("127.0.0.1", port);
TcpClient interrupt_client = new TcpClient ("127.0.0.1", interrupt_port);
Console.WriteLine ("csharp-agent: connected.");
NetworkStream s = client.GetStream ();
interrupt_stream = interrupt_client.GetStream ();
new Thread (InterruptListener).Start ();
try {
Evaluator.Init (new string [0]);
} catch {
// TODO: send a result back.
Console.WriteLine ("csharp-agent: initialization failed");
return;
}
try {
// Add all assemblies loaded later
AppDomain.CurrentDomain.AssemblyLoad += AssemblyLoaded;
// Add all currently loaded assemblies
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies ())
Evaluator.ReferenceAssembly (a);
RunRepl (s);
} finally {
AppDomain.CurrentDomain.AssemblyLoad -= AssemblyLoaded;
client.Close ();
interrupt_client.Close ();
Console.WriteLine ("csharp-agent: disconnected.");
}
}