コード例 #1
0
ファイル: IGSMStatus.cs プロジェクト: JBetser/Imagenius_SDK
 public override void Update()
 {
     SetParameter(IGSMSTATUS_MAXCONNECTIONS, IGServerManagerLocal.LocalInstance.GetNbConnections().ToString());
     SetParameter(IGSMSTATUS_NBCONNECTIONS, IGServerManagerLocal.LocalInstance.GetNbUserConnections().ToString());
     m_lUsers.Clear();
     m_xmlNodeUsers.RemoveAll();
     foreach (IGConnectionLocal connection in IGServerManagerLocal.LocalInstance.GetConnections())
     {
         IGSMStatusUser userStatus = connection.GetUserStatus();
         userStatus.Stop();
         userStatus.OnTimedEvent(null, null);
         if (connection.m_sUser != null)
         {
             IGSMStatusUser statusUser = new IGSMStatusUser(connection);
             XmlNode userNodeAnswer = statusUser.GetAnswer();
             XmlNode userNodeStatus = userNodeAnswer.SelectSingleNode("./Params");
             XmlNode userNode = m_xmlDoc.CreateNode(XmlNodeType.Element, IGSMSTATUS_USER, null);
             foreach (XmlAttribute att in userNodeStatus.Attributes)
             {
                 XmlAttribute newAtt = m_xmlDoc.CreateAttribute(att.Name);
                 newAtt.Value = att.Value;
                 userNode.Attributes.Append(newAtt);
             }
             XmlNode xmlSessionLength = userNode.Attributes.GetNamedItem(IGSMSTATUS_SESSIONLENGTH);
             if (xmlSessionLength != null)
             {
                 DateTime sessionLength = new DateTime(Convert.ToInt64(xmlSessionLength.Value) * 10000);
                 XmlNode xmlIdleTime = userNode.Attributes.GetNamedItem(IGSMSTATUS_IDLETIME);
                 if (xmlIdleTime != null)
                 {
                     DateTime idleTime = new DateTime(Convert.ToInt64(xmlIdleTime.Value) * 10000);
                     string sSessionLength = (sessionLength.Hour > 0) ? sessionLength.Hour + " : " : "";
                     sSessionLength += (sessionLength.Minute > 0) ? sessionLength.Minute + "' " : "";
                     sSessionLength += sessionLength.Second + "''";
                     string sIdleTime = (idleTime.Hour > 0) ? idleTime.Hour + " : " : "";
                     sIdleTime += (idleTime.Minute > 0) ? idleTime.Minute + "' " : "";
                     sIdleTime += idleTime.Second + "''";
                     int nStatus = Convert.ToInt32(userNode.Attributes.GetNamedItem(IGSMSTATUS_STATUS).Value);
                     string sStatus = (nStatus == (int)IGSMStatus.IGState.IGSMSTATUS_READY) ? "Ready" :
                                     (nStatus == (int)IGSMStatus.IGState.IGSMSTATUS_WORKING) ? "Working..." :
                                     (nStatus == (int)IGSMStatus.IGState.IGSMSTATUS_NOTRESPONDING) ? "Not Responding" :
                                     (nStatus == (int)IGSMStatus.IGState.IGSMSTATUS_DISCONNECTING) ? "Disconnecting" : "Unknown";
                     XmlAttribute newUserAtt = m_xmlDoc.CreateAttribute(IGSMSTATUS_SESSIONLENGTH);
                     newUserAtt.Value = sSessionLength;
                     userNode.Attributes.Append(newUserAtt);
                     newUserAtt = m_xmlDoc.CreateAttribute(IGSMSTATUS_IDLETIME);
                     newUserAtt.Value = sIdleTime;
                     userNode.Attributes.Append(newUserAtt);
                     newUserAtt = m_xmlDoc.CreateAttribute(IGSMSTATUS_STATUS);
                     newUserAtt.Value = sStatus;
                     userNode.Attributes.Append(newUserAtt);
                     newUserAtt = m_xmlDoc.CreateAttribute(IGSMSTATUS_STATUSID);
                     newUserAtt.Value = nStatus.ToString();
                     userNode.Attributes.Append(newUserAtt);
                     foreach (XmlNode childNode in userNodeAnswer.SelectNodes("./Image"))
                     {
                         XmlNode imageNode = m_xmlDoc.CreateNode(XmlNodeType.Element, IGSMSTATUS_IMAGE, null);
                         foreach (XmlAttribute att in childNode.Attributes)
                         {
                             XmlAttribute newAtt = m_xmlDoc.CreateAttribute(att.Name);
                             newAtt.Value = att.Value;
                             imageNode.Attributes.Append(newAtt);
                         }
                         int nImageStatus = Convert.ToInt32(imageNode.Attributes.GetNamedItem(IGSMSTATUS_STATUS).Value);
                         string sImageStatus = (nImageStatus == (int)IGSMStatusUser.IGState.IGSMSTATUS_READY) ? "Ready" :
                                                 (nImageStatus == (int)IGSMStatusUser.IGState.IGSMSTATUS_WORKING) ? "Working..." : "Not Responding";
                         XmlAttribute newImageAtt = m_xmlDoc.CreateAttribute(IGSMSTATUS_STATUS);
                         newImageAtt.Value = sImageStatus;
                         imageNode.Attributes.Append(newImageAtt);
                         userNode.AppendChild(imageNode);
                     }
                     m_xmlNodeUsers.AppendChild(userNode);
                     m_lUsers.Add(statusUser);
                 }
             }
             userStatus.Start();
         }
     }
     if (m_delegateOnUpdate != null)
         m_delegateOnUpdate(m_xmlDoc.SelectSingleNode("*/Params"));
 }