private void checkRingData(IServerExtended server) { foreach (var ks in knownServers) { if (server.RingIndex == ks.Value.RingIndex) { throw new ArgumentException($"RingIndex {server.RingIndex} already exists!"); } } }
private static void instantiateSingletonServer() { var type = RemotingConfiguration.GetRegisteredWellKnownServiceTypes()[0]; var channel = ChannelServices.RegisteredChannels[0]; string uri = String.Format("{0}://127.0.0.1:{1}/{2}", ConfigurationManager.AppSettings["Channel"], ConfigurationManager.AppSettings["Port"], type.ObjectUri); instance = (IServerExtended)Activator.GetObject(typeof(IServerExtended), uri); instance.SendMessage(String.Format("Singleton Created on port channel {0} and port {1}", ConfigurationManager.AppSettings["Channel"], ConfigurationManager.AppSettings["Port"])); instance.Start(); }
public void AddZoneServer(IServerExtended server, PropagateToken token) { logger.Info("Adding zone server with index {0}", server.RingIndex); lock (knownServers) { checkRingData(server); if (!knownServers.ContainsKey(server.GetUID())) { CachedServer cached = new CachedServer(server); knownServers.Add(cached.UID, cached); } nextRingServer = getNextServerOnRing(); } SendServerAction(token); }
public Server(ref IServerExtended singleton) : this() { singleton = this; }
public CachedServer(IServerExtended server) { proxy = server; uid = server.GetUID(); index = server.RingIndex; }
public void AddZoneServer(IServerExtended server) { AddZoneServer(server, new PropagateToken(PropagateAction.AddServer, server)); }