// Copyright 2014 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/signaling/server_log_entry.h" #include "base/notreached.h" #include "base/system/sys_info.h" #include "remoting/base/constants.h" #include "third_party/libjingle_xmpp/xmllite/xmlelement.h" using base::SysInfo; using jingle_xmpp::QName; using jingle_xmpp::XmlElement; namespace remoting { namespace { const char kLogCommand[] = "log"; const char kLogEntry[] = "entry"; const char kKeyEventName[] = "event-name"; const char kKeyRole[] = "role"; const char kKeyMode[] = "mode"; const char kValueModeIt2Me[] = "it2me"; const char kValueModeMe2Me[] = "me2me"; const char kKeyCpu[] = "cpu"; } // namespace ServerLogEntry::ServerLogEntry() = default; ServerLogEntry::ServerLogEntry(const ServerLogEntry& other) = default; ServerLogEntry::~ServerLogEntry() = default; void ServerLogEntry::Set(const std::string& key, const std::string& value) { values_map_[key] = value; } void ServerLogEntry::AddCpuField() { Set(kKeyCpu, SysInfo::OperatingSystemArchitecture()); } void ServerLogEntry::AddModeField(ServerLogEntry::Mode mode) { const char* mode_value = nullptr; switch (mode) { case IT2ME: mode_value = kValueModeIt2Me; break; case ME2ME: mode_value = kValueModeMe2Me; break; default: NOTREACHED(); } Set(kKeyMode, mode_value); } void ServerLogEntry::AddRoleField(const char* role) { Set(kKeyRole, role); } void ServerLogEntry::AddEventNameField(const char* name) { Set(kKeyEventName, name); } // static std::unique_ptr ServerLogEntry::MakeStanza() { return std::make_unique( QName(kChromotingXmlNamespace, kLogCommand)); } std::unique_ptr ServerLogEntry::ToStanza() const { std::unique_ptr stanza( new XmlElement(QName(kChromotingXmlNamespace, kLogEntry))); ValuesMap::const_iterator iter; for (iter = values_map_.begin(); iter != values_map_.end(); ++iter) { stanza->AddAttr(QName(std::string(), iter->first), iter->second); } return stanza; } apis::v1::GenericLogEntry ServerLogEntry::ToGenericLogEntry() const { apis::v1::GenericLogEntry log_entry; for (auto pair : values_map_) { auto* field = log_entry.add_field(); field->set_key(pair.first); field->set_value(pair.second); } return log_entry; } } // namespace remoting