public override string ToString()
{
var info = outputStream.GetConnectionInfo();
var status = " ";
var bitrate = (int)(((info.RecvRate ?? 0) + (info.SendRate ?? 0))*8/1000);
switch (info.Type) {
case ConnectionType.Relay:
if ((info.RemoteHostStatus & RemoteHostStatus.Receiving)!=0) {
if ((info.RemoteHostStatus & RemoteHostStatus.Firewalled)!=0 &&
(info.RemoteHostStatus & RemoteHostStatus.Local)==0) {
status = "×";
}
else if ((info.RemoteHostStatus & RemoteHostStatus.RelayFull)!=0) {
if ((info.LocalRelays ?? 0)>0) {
status = "○";
}
else {
status = "△";
}
}
else {
status = "◎";
}
}
else {
status = "■";
}
return String.Format(
"{0} {1} {2} {3} [{4}/{5}] {6}kbps {7}",
status,
info.ProtocolName,
info.Status,
info.RemoteEndPoint,
info.LocalDirects,
info.LocalRelays,
bitrate,
info.AgentName);
case ConnectionType.Direct:
default:
return String.Format(
"{0} {1} {2} {3} {6}kbps {7}",
status,
info.ProtocolName,
info.Status,
info.RemoteEndPoint,
info.LocalDirects,
info.LocalRelays,
bitrate,
info.AgentName);
}
}
}