private static void Main(string[] args) { var channelServ = new TcpChannel(); ChannelServices.RegisterChannel(channelServ, false); var mainServer = (IMainServer) Activator.GetObject(typeof (IMainServer), Config.RemoteMainserverUrl); ServerInit serverInit = mainServer.AddServer(); channelServ.StopListening(null); ChannelServices.UnregisterChannel(channelServ); var server = new Server(serverInit); IDictionary properties = new Hashtable(); int serverPort = Config.GetServerPort(serverInit.Uuid); const int serverTimeout = Config.InvocationTimeout; properties["port"] = serverPort; properties["timeout"] = serverTimeout; channelServ = new TcpChannel(properties, null, null); ChannelServices.RegisterChannel(channelServ, false); RemotingServices.Marshal(server, Config.RemoteServerObjName); server.StartSplitLock(); foreach (var faultDetection in serverInit.FaultDetection) { var fd = (IServer) Activator.GetObject(typeof (IServer), Config.GetServerUrl(faultDetection.Key)); fd.OnFaultDetectionReborn(serverInit.Uuid); } int backupId = -1; if ((serverInit.FaultDetection.Count == 1 && serverInit.FaultDetection.ContainsKey(serverInit.Parent) && serverInit.Parent != -1) || (serverInit.FaultDetection.Count == 0 && serverInit.Parent != -1)) { backupId = serverInit.Parent; } else if (serverInit.FaultDetection.Count > 0) { backupId = serverInit.FaultDetection.Keys.Max(); } if (backupId != -1) { /* Get data from backup */ var backupServer = (IServer) Activator.GetObject(typeof (IServer), Config.GetServerUrl(backupId)); backupServer.StartSplitLock(); ParticipantStatus status = backupServer.OnChild(serverInit.Uuid, serverInit.Version, serverInit.ServerCount); server.SetStatus(status); backupServer.EndSplitLock(); } else { Console.WriteLine("Server need to have a backup server! Is it the first one?"); } server.EndSplitLock(); Console.WriteLine("Press <enter> to exit"); Console.ReadLine(); }
public void Run() { IDictionary properties = new Hashtable(); properties["port"] = 9997; properties["timeout"] = 5000; properties["retryCount"] = 2; var channelServ = new TcpChannel(properties, null, null); ChannelServices.RegisterChannel(channelServ, true); Console.WriteLine("Waiting for init. Press to start:"); Console.ReadLine(); var mainServer = (IMainServer) Activator.GetObject(typeof (IMainServer), Config.RemoteMainserverUrl); var server = (IServer) Activator.GetObject(typeof (IServer), Config.GetServerUrl(0)); int txid = mainServer.StartTransaction(); server.WriteValue(0, txid, 1, 1); server.Freeze(); server.WriteValue(0, txid, 1, 2); Console.WriteLine("Waiting for recover. Press to start:"); Console.ReadLine(); server.Recover(); mainServer.CommitTransaction(txid); channelServ.StopListening(null); ChannelServices.UnregisterChannel(channelServ); }
private void button1_Click(object sender, EventArgs e) { //Button Connect has been pressed MinMax.Server_Client_Dialogue ConnectForm = new MinMax.Server_Client_Dialogue(); // Create a new Connect Form. ConnectForm.Show(); ConnectForm.label1.Text = "1 - Connecting to the Server at the IP :"+this.textBox2.Text; ConnectForm.label1.Text = ConnectForm.label1.Text + "\n2 - Opening TCP Channel."; TcpChannel chan = new TcpChannel(); try { // Attempt to get a connection and a // channel opening to the TaskServer ChannelServices.RegisterChannel(chan,false); ConnectForm.label1.Text += "\n3 - Registering TCP Channel."; TaskServer.TaskRunner taskRunner = (TaskServer.TaskRunner)Activator.GetObject(typeof(TaskServer.TaskRunner), "tcp://" + this.textBox2.Text + ":8085/TaskServer"); //The Server is Not Running if taskRunner is null. if (taskRunner == null) { ConnectForm.label1.Text += "\nError - Could not locate server."; chan.StopListening(true); return; } ConnectForm.label1.Text += "\nClick Calculate to begin the Calculation."; } catch (Exception t) { ConnectForm.label1.Text = ConnectForm.label1.Text +"\n[e] An exception occurred." ; ConnectForm.label1.Text= ConnectForm.label1.Text + t; chan.StopListening(true); } }