public void CheckLookup()
{
// adds or removes the lookup core
// called from gui thread
bool runLookup = false;
Cores.LockReading(delegate()
{
foreach (OpCore core in Cores)
if (core.User.Settings.OpAccess != AccessType.Secret ||
core.User.Settings.GlobalIM)
runLookup = true;
// if public cores exist, sign into global
if (runLookup && Lookup == null)
{
Lookup = new OpCore(this);
FindLocalIP();
}
// else destroy global context
if (!runLookup && Lookup != null)
{
Lookup.Exit();
Lookup = null;
}
});
}