Chromium Code Reviews| Index: remoting/host/server_log_entry.cc |
| diff --git a/remoting/host/server_log_entry.cc b/remoting/host/server_log_entry.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d04fdeb8a3ca850beede119ca77c7159ca2dc2b1 |
| --- /dev/null |
| +++ b/remoting/host/server_log_entry.cc |
| @@ -0,0 +1,103 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "remoting/host/server_log_entry.h" |
| + |
| +#include "base/sys_info.h" |
| +#include "remoting/base/constants.h" |
| +#include "remoting/protocol/session.h" |
| +#include "third_party/libjingle/source/talk/xmllite/xmlelement.h" |
| + |
| +using base::SysInfo; |
| +using buzz::QName; |
| +using buzz::XmlElement; |
| +using remoting::protocol::Session; |
| + |
| +namespace remoting { |
| + |
| +namespace { |
| +const char kLogEntry[] = "entry"; |
| + |
| +const char kKeyEventName[] = "event-name"; |
| +const char kValueEventNameSessionState[] = "session-state"; |
| + |
| +const char kKeyRole[] = "role"; |
| +const char kValueRoleHost[] = "host"; |
| + |
| +const char kKeySessionState[] = "session-state"; |
| +const char kValueSessionStateConnected[] = "connected"; |
| +const char kValueSessionStateClosed[] = "closed"; |
| + |
| +const char kKeyOsName[] = "os-name"; |
| +const char kValueOsNameWindows[] = "Windows"; |
| +const char kValueOsNameLinux[] = "Linux"; |
| +const char kValueOsNameMac[] = "Mac"; |
| +const char kValueOsNameChromeOS[] = "ChromeOS"; |
| + |
| +const char kKeyOsVersion[] = "os-version"; |
| + |
| +const char kKeyCpu[] = "cpu"; |
| +} |
|
Sergey Ulanov
2011/11/17 01:16:33
// namespace
simonmorris
2011/11/18 19:23:04
Done.
|
| + |
| +ServerLogEntry::ServerLogEntry() { |
| +} |
| + |
| +ServerLogEntry::~ServerLogEntry() { |
| +} |
| + |
| +ServerLogEntry* ServerLogEntry::MakeSessionStateChange(bool connected) { |
| + ServerLogEntry* entry = new ServerLogEntry(); |
| + entry->Set(kKeyRole, kValueRoleHost); |
| + entry->Set(kKeyEventName, kValueEventNameSessionState); |
| + entry->Set(kKeySessionState, GetValueSessionState(connected)); |
| + return entry; |
| +} |
| + |
| +void ServerLogEntry::AddHostFields() { |
| +#if defined(OS_WIN) |
| + Set(kKeyOsName, kValueOsNameWindows); |
|
Sergey Ulanov
2011/11/17 01:16:33
Can we use base::SysInfo::OperatingSystemName() he
simonmorris
2011/11/18 19:23:04
This field will be an enum in the backend storage,
|
| +#elif defined(OS_MACOSX) |
| + Set(kKeyOsName, kValueOsNameMac); |
| +#elif defined(OS_CHROMEOS) |
| + Set(kKeyOsName, kValueOsNameChromeOS); |
| +#elif defined(OS_LINUX) |
| + Set(kKeyOsName, kValueOsNameLinux); |
| +#endif |
| + |
| + // SysInfo::OperatingSystemVersionNumbers is only defined for the following |
| + // OSes: see base/sys_info_unittest.cc. |
| +#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) |
| + std::stringstream os_version; |
| + int32 os_major_version = 0; |
| + int32 os_minor_version = 0; |
| + int32 os_bugfix_version = 0; |
| + SysInfo::OperatingSystemVersionNumbers(&os_major_version, &os_minor_version, |
| + &os_bugfix_version); |
| + os_version << os_major_version << "." << os_minor_version << "." |
| + << os_bugfix_version; |
| + Set(kKeyOsVersion, os_version.str().c_str()); |
| +#endif |
| + |
| + Set(kKeyCpu, SysInfo::CPUArchitecture().c_str()); |
|
Sergey Ulanov
2011/11/17 01:16:33
It would be also useful to log NumberOfProcessors(
simonmorris
2011/11/18 19:23:04
Yes. The client webapp gets these fields from
navi
|
| +}; |
| + |
| +XmlElement* ServerLogEntry::ToStanza() const { |
| + XmlElement* stanza = new XmlElement(QName( |
| + kChromotingXmlNamespace, kLogEntry)); |
| + Dict::const_iterator iter; |
| + for (iter = dict_.begin(); iter != dict_.end(); ++iter) { |
| + stanza->AddAttr(QName("", iter->first), iter->second); |
| + } |
| + return stanza; |
| +} |
| + |
| +const char* ServerLogEntry::GetValueSessionState(bool connected) { |
| + return connected ? kValueSessionStateConnected : kValueSessionStateClosed; |
| +} |
| + |
| +void ServerLogEntry::Set(const char* key, const char* value) { |
| + dict_[key] = value; |
| +} |
| + |
| +} // namespace remoting |