public static bool RegisterApplication(this BaseClientApplication pClientApplication)
{
if (pClientApplication.Id == 0)
{
if (IsSlave)
{
pClientApplication.Id = ClusterApplication.GetProtocolHandler<SlaveClusterAppProtocolHandler>().GetAppId(pClientApplication.Name);
}
else
{
pClientApplication.Id = ++BaseClientApplication._idGenerator;
ClusterApplication.SOManager["appList"][pClientApplication.Name] = pClientApplication.Id;
ClusterApplication.SOManager["appList"].Track();
}
}
Logger.INFO("RegisterApplication:{0}({1})", pClientApplication.Name, pClientApplication.Id);
if (ApplicationById.ContainsKey(pClientApplication.Id))
{
Logger.FATAL("Client application with id {0} already registered", pClientApplication.Id);
return false;
}
if (ApplicationByName.ContainsKey(pClientApplication.Name))
{
Logger.FATAL("Client application with name `{0}` already registered", pClientApplication.Name);
return false;
}
if (pClientApplication.Aliases.Any(x => ApplicationByName.ContainsKey(x)))
{
Logger.FATAL("Client application with alias `{0}` already registered", pClientApplication.Name);
return false;
}
if(pClientApplication.Id != 0)
ApplicationById[pClientApplication.Id] = pClientApplication;
ApplicationByName[pClientApplication.Name] = pClientApplication;
//foreach (var aliases in pClientApplication.Aliases)
// ApplicationByName[aliases] = pClientApplication;
if (pClientApplication.IsDefault) DefaultApplication = pClientApplication;
return true;
}