public void SharedObjectTrack(BaseClientApplication app, string name, uint version, bool isPersistent, Variant primitives) { SlaveClusterAppProtocolHandler.GotAppIdDelegate task = appId => { Send(ClusterMessageType.SharedObjectTrack, o => { o.Write7BitValue(appId); o.Write(name); o.Write7BitValue(version); o.Write(isPersistent); o.Write(primitives.ToBytes()); }); primitives.Recycle(); }; if (app.Id == 0) { var gotAppIdTasks = Application.GetProtocolHandler <SlaveClusterAppProtocolHandler>().GotAppIdTasks; if (gotAppIdTasks.ContainsKey(app.Name)) { gotAppIdTasks[app.Name] += task; } else { gotAppIdTasks[app.Name] = task; } } else { task(app.Id); } }
public void Start(string url, string filePath) { Url = url; var uri = new Uri(url); var segs = uri.Segments.ToList(); segs.RemoveAt(0); StreamName = segs.Last(); segs.Remove(StreamName); AppName = string.Join("", segs); TcUrl = url.Remove(url.LastIndexOf(StreamName)); StreamName = StreamName.TrimStart('/'); FilePath = filePath; Session = DownloadSession = new DownloadSession(this); var app = new BaseClientApplication(Variant.GetMap(new VariantMapHelper { { Defines.CONF_APPLICATION_NAME, AppName } })) { Id = 1 }; Application = app; DownloadSession.Connect(url); Status = "正在连接"; StartTime = DateTime.Now; OnPropertyChanged(nameof(TimeSpent)); }
public SO(BaseClientApplication app,string name, bool persistent) { Name = name; Application = app; IsPersistent = persistent; Version = 1; if (persistent) { _filePath = app.SOPath + Name + ".so"; if (File.Exists(_filePath)) { Variant.DeserializeFromFile(_filePath, out Payload); } else { Payload = Variant.Get(); //File.Create(_filePath).Close(); } } else { Payload = Variant.Get(); } if (ClientApplicationManager.ClusterApplication != null) ClientApplicationManager.ClusterApplication.GetProtocolHandler<BaseClusterAppProtocolHandler>().OnSOCreated(this); }
public SO(BaseClientApplication app, string name, bool persistent) { Name = name; Application = app; IsPersistent = persistent; Version = 1; if (persistent) { _filePath = app.SOPath + Name + ".so"; if (File.Exists(_filePath)) { Variant.DeserializeFromFile(_filePath, out Payload); } else { Payload = Variant.Get(); //File.Create(_filePath).Close(); } } else { Payload = Variant.Get(); } if (ClientApplicationManager.ClusterApplication != null) { ClientApplicationManager.ClusterApplication.GetProtocolHandler <BaseClusterAppProtocolHandler>().OnSOCreated(this); } }
public SOManager(BaseClientApplication application) { Application = application; var soPath = application.SOPath; if (!Directory.Exists(soPath)) Directory.CreateDirectory(soPath); foreach (var name in Directory.GetFiles(soPath, "*.so").Select(Path.GetFileNameWithoutExtension)) _sos[name] = new SO(Application, name, true); }
public bool GetAppId(BaseClientApplication pClientApplication) { if (SOManager["appList"][pClientApplication.Name] == null) { (ClusterAppProtocolHandler as SlaveClusterAppProtocolHandler).GetAppId(pClientApplication.Name); return(false); } else { pClientApplication.Id = SOManager["appList"][pClientApplication.Name]; return(true); } }
public bool GetAppId(BaseClientApplication pClientApplication) { if (SOManager["appList"][pClientApplication.Name] == null) { (ClusterAppProtocolHandler as SlaveClusterAppProtocolHandler).GetAppId(pClientApplication.Name); return false; } else { pClientApplication.Id = SOManager["appList"][pClientApplication.Name]; return true; } }
public SOManager(BaseClientApplication application) { Application = application; var soPath = application.SOPath; if (!Directory.Exists(soPath)) { Directory.CreateDirectory(soPath); } foreach (var name in Directory.GetFiles(soPath, "*.so").Select(Path.GetFileNameWithoutExtension)) { _sos[name] = new SO(Application, name, true); } }
public static void UnRegisterApplication(this BaseClientApplication pClientApplication) { if (ApplicationById.ContainsKey(pClientApplication.Id)) ApplicationById.Remove(pClientApplication.Id); if (ApplicationByName.ContainsKey(pClientApplication.Name)) ApplicationByName.Remove(pClientApplication.Name); foreach (var item in ApplicationByName.Where(x => pClientApplication.Aliases.Contains(x.Key)).ToArray()) { ApplicationByName.Remove(item.Key); } if (DefaultApplication?.Id == pClientApplication.Id) { DefaultApplication = null; } pClientApplication.Log().Info("Application `{0}` ({1}) unregistered", pClientApplication.Name, pClientApplication.Id); }
public bool ConfigApplication() { var path = config[CONF_APPLICATION_LIBRARY]; if (getApplication == null) { WARN("Module {0} doesn't export any applications", path); return(true); } pApplication = getApplication(config); pApplication.Id = ++BaseClientApplication._idGenerator; if (pApplication == null) { FATAL("Unable to load application {0}.", config[CONF_APPLICATION_NAME]); return(false); } INFO("Application {0} instantiated", pApplication.Name); if (!pApplication.RegisterApplication()) { FATAL("Unable to register application {0}", pApplication.Name); pApplication = null; return(false); } if (!pApplication.Initialize()) { FATAL("Unable to initialize the application:{0}", pApplication.Name); return(false); } if (!pApplication.ParseAuthentication()) { FATAL("Unable to parse authetication for application {0}", pApplication.Name); return(false); } if (!pApplication.ActivateAcceptors(acceptors)) { FATAL("Unable to activate acceptors for application {0}", pApplication.Name); return(false); } return(true); }
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; }
public void Start(string url,string filePath) { Url = url; var uri = new Uri(url); var segs = uri.Segments.ToList(); segs.RemoveAt(0); StreamName = segs.Last(); segs.Remove(StreamName); AppName = string.Join("", segs); TcUrl = url.Remove(url.LastIndexOf(StreamName)); StreamName = StreamName.TrimStart('/'); FilePath = filePath; Session = DownloadSession = new DownloadSession(this); var app = new BaseClientApplication(Variant.GetMap(new VariantMapHelper { {Defines.CONF_APPLICATION_NAME, AppName} })) {Id = 1}; Application = app; DownloadSession.Connect(url); Status = "正在连接"; StartTime = DateTime.Now; OnPropertyChanged(nameof(TimeSpent)); }
public bool ConfigApplication() { var path = config[CONF_APPLICATION_LIBRARY]; if (getApplication == null) { WARN("Module {0} doesn't export any applications", path); return true; } pApplication = getApplication(config); pApplication.Id = ++BaseClientApplication._idGenerator; if (pApplication == null) { FATAL("Unable to load application {0}.",config[CONF_APPLICATION_NAME]); return false; } INFO("Application {0} instantiated",pApplication.Name); if (!pApplication.RegisterApplication()) { FATAL("Unable to register application {0}",pApplication.Name); pApplication = null; return false; } if (!pApplication.Initialize()) { FATAL("Unable to initialize the application:{0}",pApplication.Name); return false; } if (!pApplication.ParseAuthentication()) { FATAL("Unable to parse authetication for application {0}",pApplication.Name); return false; } if (!pApplication.ActivateAcceptors(acceptors)) { FATAL("Unable to activate acceptors for application {0}", pApplication.Name); return false; } return true; }
public void SharedObjectTrack(BaseClientApplication app, string name, uint version, bool isPersistent, Variant primitives) { SlaveClusterAppProtocolHandler.GotAppIdDelegate task = appId => { Send(ClusterMessageType.SharedObjectTrack, o => { o.Write7BitValue(appId); o.Write(name); o.Write7BitValue(version); o.Write(isPersistent); o.Write(primitives.ToBytes()); }); primitives.Recycle(); }; if (app.Id == 0) { var gotAppIdTasks = Application.GetProtocolHandler<SlaveClusterAppProtocolHandler>().GotAppIdTasks; if (gotAppIdTasks.ContainsKey(app.Name)) { gotAppIdTasks[app.Name] += task; } else { gotAppIdTasks[app.Name] = task; } } else { task(app.Id); } }
public void SetAppId(BaseClientApplication pClientApplication) { SOManager["appList"][pClientApplication.Name] = pClientApplication.Id; }
public void Broadcast(BaseClientApplication app, BaseProtocol @from, Variant invokeInfo) { ClusterAppProtocolHandler.Broadcast(app.Id, from, invokeInfo); }
public StreamsManager(BaseClientApplication pApplication) { _uniqueIdGenerator = 1; Application = pApplication; }
public static void Shutdown() { ApplicationById.Clear(); ApplicationByName.Clear(); DefaultApplication = null; }
public static BaseClientApplication CreateRoom(BaseClientApplication defaultRoom, string roomFullName, uint id = 0) { var config = defaultRoom.Configuration.Clone(); config[Defines.CONF_APPLICATION_NAME] = roomFullName; var application = (BaseClientApplication)Activator.CreateInstance(defaultRoom.GetType(), (object)config); application.Id = id; RegisterApplication(application); application.Initialize(); return application; }