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);
     }
 }
Example #2
0
        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));
        }
Example #3
0
 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);
 }
Example #4
0
 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);
     }
 }
Example #5
0
 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);
 }
Example #6
0
 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);
     }
 }
Example #7
0
 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;
     }
 }
Example #8
0
        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);
 }
Example #10
0
        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;
 }
Example #12
0
 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));
 }
Example #13
0
 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);
     }
    
 }
Example #15
0
 public void SetAppId(BaseClientApplication pClientApplication)
 {
     SOManager["appList"][pClientApplication.Name] = pClientApplication.Id;
 }
Example #16
0
 public void SetAppId(BaseClientApplication pClientApplication)
 {
     SOManager["appList"][pClientApplication.Name] = pClientApplication.Id;
 }
Example #17
0
 public void Broadcast(BaseClientApplication app, BaseProtocol @from, Variant invokeInfo)
 {
     ClusterAppProtocolHandler.Broadcast(app.Id, from, invokeInfo);
 }
Example #18
0
 public StreamsManager(BaseClientApplication pApplication)
 {
     _uniqueIdGenerator = 1;
     Application        = pApplication;
 }
 public static void Shutdown()
 {
     ApplicationById.Clear();
     ApplicationByName.Clear();
     DefaultApplication = null;
 }
Example #20
0
 public StreamsManager(BaseClientApplication pApplication)
 {
     _uniqueIdGenerator = 1;
     Application = pApplication;
 }
Example #21
0
 public void Broadcast(BaseClientApplication app, BaseProtocol @from, Variant invokeInfo)
 {
     ClusterAppProtocolHandler.Broadcast(app.Id, from, invokeInfo);
 }
 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;
 }