예제 #1
0
        /// <summary>
        /// Called each time a new server node is set to running state
        /// </summary>
        /// <param name="NodeName">Name of the Node</param>
        public void MemberJoined(string port, string nodeName, bool raiseEvent, bool isInproc)
        {
            try
            {
                if (isInproc && !this._inprocInstances.Contains(nodeName.Trim() + "." + port))
                {
                    nodeName = nodeName.Trim() + "." + port;
                    this._inprocInstances.Add(nodeName);
                    if (!this._nodes.Contains(nodeName))
                    {
                        this._nodes.Add(nodeName);
                    }
                }
                if (_runningNodes.IndexOf(nodeName.Trim()) == -1)
                {
                    _runningNodes.Add(nodeName.Trim());

                    if (raiseEvent)
                    {
                        NodeUp node = new NodeUp(this.ClusterName, nodeName.Trim());
                        node.Fire();
                    }
                }
            }
            catch { }
        }
예제 #2
0
        public void MemberJoined(string port, string nodeName, string subGroupName, bool fireEvent, bool isInproc)
        {
            try
            {
                if (isInproc)
                {
                    nodeName = nodeName.Trim() + "." + port;
                    if (this._inprocPorInstances.Contains(subGroupName))
                    {
                        string previousInstances = this._inprocPorInstances[subGroupName] as string;
                        if (previousInstances != null && previousInstances != string.Empty)
                        {
                            if (previousInstances.IndexOf(nodeName) == -1)
                            {
                                previousInstances += "," + nodeName;
                            }
                        }
                        else
                        {
                            previousInstances = nodeName;
                        }
                        this._inprocPorInstances[subGroupName] = previousInstances;
                    }
                    else
                    {
                        this._inprocPorInstances.Add(subGroupName, nodeName);
                    }

                    for (int i = 0; i < this._porNodes.Count; i++)
                    {
                        string porNodes = this._porNodes[i] as string;
                        if (porNodes.Trim().IndexOf(subGroupName) == 0)
                        {
                            if (porNodes.IndexOf(nodeName) == -1)
                            {
                                porNodes += "," + nodeName;
                            }
                        }
                        this._porNodes[i] = porNodes;
                    }
                }
                if (!this._porRunningNodeList.Contains(subGroupName))
                {
                    this._runningNodes.Add(nodeName.Trim());
                    this._porRunningNodeList.Add(subGroupName, nodeName.Trim());
                }
                else
                {
                    string nodelist = ((string)this._porRunningNodeList[subGroupName] != null) ? (string)this._porRunningNodeList[subGroupName].ToString().Replace(subGroupName, "") : string.Empty;
                    if (nodelist.IndexOf(nodeName.Trim()) == -1)
                    {
                        string currentlist = ((string)this._runningNodes[this._runningNodes.IndexOf(subGroupName + nodelist)]) + "," + nodeName.Trim();
                        this._runningNodes[this._runningNodes.IndexOf(subGroupName + nodelist)] = currentlist;
                        this._porRunningNodeList[subGroupName] = currentlist;
                    }
                }

                if (!_doNotPublish && fireEvent)
                {
                    NodeUp node = new NodeUp(this.ClusterName, nodeName.Trim());
                    node.Fire();
                }
            }
            catch { }
        }