diff options
Diffstat (limited to 'netwerk/base/Dashboard.h')
-rw-r--r-- | netwerk/base/Dashboard.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/netwerk/base/Dashboard.h b/netwerk/base/Dashboard.h new file mode 100644 index 000000000..4e893c15d --- /dev/null +++ b/netwerk/base/Dashboard.h @@ -0,0 +1,105 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef nsDashboard_h__ +#define nsDashboard_h__ + +#include "mozilla/Mutex.h" +#include "mozilla/net/DashboardTypes.h" +#include "nsIDashboard.h" +#include "nsIDashboardEventNotifier.h" +#include "nsIDNSListener.h" +#include "nsIServiceManager.h" +#include "nsITimer.h" +#include "nsITransport.h" + +class nsIDNSService; + +namespace mozilla { +namespace net { + +class SocketData; +class HttpData; +class DnsData; +class WebSocketRequest; +class ConnectionData; + +class Dashboard final + : public nsIDashboard + , public nsIDashboardEventNotifier +{ +public: + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIDASHBOARD + NS_DECL_NSIDASHBOARDEVENTNOTIFIER + + Dashboard(); + static const char *GetErrorString(nsresult rv); + nsresult GetConnectionStatus(ConnectionData *aConnectionData); + +private: + + struct LogData + { + LogData(nsCString host, uint32_t serial, bool encryption): + mHost(host), + mSerial(serial), + mMsgSent(0), + mMsgReceived(0), + mSizeSent(0), + mSizeReceived(0), + mEncrypted(encryption) + { } + nsCString mHost; + uint32_t mSerial; + uint32_t mMsgSent; + uint32_t mMsgReceived; + uint64_t mSizeSent; + uint64_t mSizeReceived; + bool mEncrypted; + bool operator==(const LogData& a) const + { + return mHost.Equals(a.mHost) && (mSerial == a.mSerial); + } + }; + + struct WebSocketData + { + WebSocketData():lock("Dashboard.webSocketData") + { + } + uint32_t IndexOf(nsCString hostname, uint32_t mSerial) + { + LogData temp(hostname, mSerial, false); + return data.IndexOf(temp); + } + nsTArray<LogData> data; + mozilla::Mutex lock; + }; + + + bool mEnableLogging; + WebSocketData mWs; + +private: + virtual ~Dashboard(); + + nsresult GetSocketsDispatch(SocketData *); + nsresult GetHttpDispatch(HttpData *); + nsresult GetDnsInfoDispatch(DnsData *); + nsresult TestNewConnection(ConnectionData *); + + /* Helper methods that pass the JSON to the callback function. */ + nsresult GetSockets(SocketData *); + nsresult GetHttpConnections(HttpData *); + nsresult GetDNSCacheEntries(DnsData *); + nsresult GetWebSocketConnections(WebSocketRequest *); + + nsCOMPtr<nsIDNSService> mDnsService; +}; + +} // namespace net +} // namespace mozilla + +#endif // nsDashboard_h__ |