Beispiel #1
0
        /// <returns></returns>
        private RemoteController CreateRemoteController(string strMachineName, int iPortNumber)
        {
            RemoteController remoteController = null;

            try
            {
                string       strRemoteObjUrl = "tcp://" + strMachineName + ":" + iPortNumber.ToString() + "/GalaxyRemoteController";
                UrlAttribute urlAttr         = new UrlAttribute(strRemoteObjUrl);
                object[]     rgAct           = { urlAttr };
                remoteController = Activator.CreateInstance(Type.GetType("Galaxy.Tools.RemoteController, RemoteImpLib"), null, rgAct) as RemoteController;
                remoteController.AddCmdOutputEventSinker(m_cmdOutputEventSinker.OnCmdOutput);
                remoteController.AddCmdFinishEventSinker(m_cmdOutputEventSinker.OnCmdFinish);
                remoteController.IsLive();
            }
            catch (Exception e)
            {
                // The remote server is offline
                remoteController = null;
                Console.WriteLine(e.Message);
            }

            // Register the lease sponsor
            if (remoteController != null)
            {
                remoteController.Port        = iPortNumber;
                remoteController.MachineName = strMachineName;
                ILease lease = RemotingServices.GetLifetimeService(remoteController) as ILease;
                lease.Register(m_sponsor);
            }

            return(remoteController);
        }
Beispiel #2
0
        /// <returns>
        ///     null - something wrong
        /// </returns>
        private RemoteController GetRemoteController(string strMachineName, int iPortNumber)
        {
            RemoteController remoteController = null;

            if (m_remoteControllerDict.ContainsKey(strMachineName))
            {
                // We have cached the remote controller
                remoteController = m_remoteControllerDict[strMachineName];
                try
                {
                    remoteController.IsLive();
                }
                catch (Exception)
                {
                    // The cached remote controller has something wrong, we need to create a new one
                    remoteController = null;
                }
                if (remoteController == null)
                {
                    remoteController = CreateRemoteController(strMachineName, iPortNumber);
                    if (remoteController == null)
                    {
                        // Remove the key
                        m_remoteControllerDict.Remove(strMachineName);
                    }
                    else
                    {
                        // Update the key
                        m_remoteControllerDict[strMachineName] = remoteController;
                    }
                }
            }
            else
            {
                // We need to create a remote controller
                remoteController = CreateRemoteController(strMachineName, iPortNumber);
                if (remoteController != null)
                {
                    // Add a new item to the dict
                    m_remoteControllerDict.Add(strMachineName, remoteController);
                }
            }

            return(remoteController);
        }
Beispiel #3
0
 private void MonitorCurRemoteController(object objPara)
 {
     if (m_curRemoteController != null)
     {
         try
         {
             m_curRemoteController.IsLive();
         }
         catch (Exception)
         {
             m_iCheckTimes++;
             if (m_iCheckTimes >= 2)
             {
                 // We have lost the connection to the remote controller for at least 2 mins
                 m_curRemoteController = null;
                 m_remoteControllerDict.Remove(m_strCurRemoteControllerName);
                 Console.WriteLine("Lost connection to the machine!");
                 m_waitingOutputFinishEvent.Set();
             }
         }
     }
 }