in src/main/csharp/Connection.cs [423:467]
public void Close()
{
lock(myLock)
{
if(this.closed.Value)
{
return;
}
try
{
Tracer.Info("Closing Connection.");
this.closing.Value = true;
lock(sessions.SyncRoot)
{
foreach(Session session in sessions)
{
session.DoClose();
}
}
sessions.Clear();
if(connected.Value)
{
ShutdownInfo shutdowninfo = new ShutdownInfo();
transport.Oneway(shutdowninfo);
}
Tracer.Info("Disposing of the Transport.");
transport.Stop();
transport.Dispose();
}
catch(Exception ex)
{
Tracer.ErrorFormat("Error during connection close: {0}", ex.Message);
}
finally
{
this.transport = null;
this.closed.Value = true;
this.connected.Value = false;
this.closing.Value = false;
}
}
}