]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_stats.cpp
Cut down on debug on restart
[user/henk/code/inspircd.git] / src / cmd_stats.cpp
index f82834229511cee984051f647a78837a1e35bbc9..f31248659bf62df13f3084a78f49c853dffbfe6d 100644 (file)
@@ -2,12 +2,9 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- *                       E-mail:
- *                <brain@chatspike.net>
- *                <Craig@chatspike.net>
+ *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
  *
- * Written by Craig Edwards, Craig McLure, and others.
  * This program is free but copyrighted software; see
  *            the file COPYING for details.
  *
@@ -79,6 +76,7 @@ void DoStats(InspIRCd* ServerInstance, char statschar, userrec* user, string_lis
                }
                break;
 
+               case 'n':
                case 'c':
                {
                        /* This stats symbol must be handled by a linking module */
@@ -90,7 +88,7 @@ void DoStats(InspIRCd* ServerInstance, char statschar, userrec* user, string_lis
                        int idx = 0;
                        for (ClassVector::iterator i = ServerInstance->Config->Classes.begin(); i != ServerInstance->Config->Classes.end(); i++)
                        {
-                               results.push_back(sn+" 215 "+user->nick+" I * * * "+ConvToStr(MAXCLIENTS)+" "+ConvToStr(idx)+" "+ServerInstance->Config->ServerName+" *");
+                               results.push_back(sn+" 215 "+user->nick+" I NOMATCH * "+i->GetHost()+" "+ConvToStr(MAXCLIENTS)+" "+ConvToStr(idx)+" "+ServerInstance->Config->ServerName+" *");
                                idx++;
                        }
                }
@@ -101,7 +99,8 @@ void DoStats(InspIRCd* ServerInstance, char statschar, userrec* user, string_lis
                        int idx = 0;
                        for (ClassVector::iterator i = ServerInstance->Config->Classes.begin(); i != ServerInstance->Config->Classes.end(); i++)
                        {
-                               results.push_back(sn+" 218 "+user->nick+" Y "+ConvToStr(idx)+" 120 0 "+ConvToStr(i->flood)+" "+ConvToStr(i->registration_timeout));
+                               results.push_back(sn+" 218 "+user->nick+" Y "+ConvToStr(idx)+" "+ConvToStr(i->GetPingTime())+" 0 "+ConvToStr(i->GetSendqMax())+" :"+
+                                               ConvToStr(i->GetFlood())+" "+ConvToStr(i->GetRegTimeout()));
                                idx++;
                        }
                }
@@ -183,6 +182,17 @@ void DoStats(InspIRCd* ServerInstance, char statschar, userrec* user, string_lis
                                results.push_back(sn+" 249 "+user->nick+" :Page faults:      "+ConvToStr(R.ru_majflt));
                                results.push_back(sn+" 249 "+user->nick+" :Swaps:            "+ConvToStr(R.ru_nswap));
                                results.push_back(sn+" 249 "+user->nick+" :Context Switches: "+ConvToStr(R.ru_nvcsw+R.ru_nivcsw));
+
+                               timeval tv;
+                               char percent[30];
+                               gettimeofday(&tv, NULL);
+                       
+                               float n_elapsed = ((tv.tv_sec - ServerInstance->stats->LastSampled.tv_sec) * 1000000 + tv.tv_usec - ServerInstance->stats->LastSampled.tv_usec);
+                               float n_eaten = ((R.ru_utime.tv_sec - ServerInstance->stats->LastCPU.tv_sec) * 1000000 + R.ru_utime.tv_usec - ServerInstance->stats->LastCPU.tv_usec);
+                               float per = (n_eaten / n_elapsed) * 100;
+
+                               snprintf(percent, 30, "%03.5f%%", per);
+                               results.push_back(sn+" 249 "+user->nick+" :CPU Usage: "+percent);
                        }
                }
                break;