diff options
Diffstat (limited to 'remoting/host/server_log_entry.cc')
-rw-r--r-- | remoting/host/server_log_entry.cc | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/remoting/host/server_log_entry.cc b/remoting/host/server_log_entry.cc new file mode 100644 index 0000000..08e649d --- /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"; +} // namespace + +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); +#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()); +}; + +XmlElement* ServerLogEntry::ToStanza() const { + XmlElement* stanza = new XmlElement(QName( + kChromotingXmlNamespace, kLogEntry)); + ValuesMap::const_iterator iter; + for (iter = values_map_.begin(); iter != values_map_.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) { + values_map_[key] = value; +} + +} // namespace remoting |