• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "remoting/signaling/server_log_entry.h"
6 
7 #include "base/logging.h"
8 #include "base/sys_info.h"
9 #include "remoting/base/constants.h"
10 #include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
11 
12 using base::SysInfo;
13 using buzz::QName;
14 using buzz::XmlElement;
15 
16 namespace remoting {
17 
18 namespace {
19 
20 const char kLogCommand[] = "log";
21 const char kLogEntry[] = "entry";
22 
23 const char kKeyEventName[] = "event-name";
24 
25 const char kKeyRole[] = "role";
26 
27 const char kKeyMode[] = "mode";
28 const char kValueModeIt2Me[] = "it2me";
29 const char kValueModeMe2Me[] = "me2me";
30 
31 const char kKeyCpu[] = "cpu";
32 
33 }  // namespace
34 
ServerLogEntry()35 ServerLogEntry::ServerLogEntry() {
36 }
37 
~ServerLogEntry()38 ServerLogEntry::~ServerLogEntry() {
39 }
40 
Set(const std::string & key,const std::string & value)41 void ServerLogEntry::Set(const std::string& key, const std::string& value) {
42   values_map_[key] = value;
43 }
44 
AddCpuField()45 void ServerLogEntry::AddCpuField() {
46   Set(kKeyCpu, SysInfo::OperatingSystemArchitecture());
47 }
48 
AddModeField(ServerLogEntry::Mode mode)49 void ServerLogEntry::AddModeField(ServerLogEntry::Mode mode) {
50   const char* mode_value = NULL;
51   switch (mode) {
52     case IT2ME:
53       mode_value = kValueModeIt2Me;
54       break;
55     case ME2ME:
56       mode_value = kValueModeMe2Me;
57       break;
58     default:
59       NOTREACHED();
60   }
61   Set(kKeyMode, mode_value);
62 }
63 
AddRoleField(const char * role)64 void ServerLogEntry::AddRoleField(const char* role) {
65   Set(kKeyRole, role);
66 }
67 
AddEventNameField(const char * name)68 void ServerLogEntry::AddEventNameField(const char* name) {
69   Set(kKeyEventName, name);
70 }
71 
72 // static
MakeStanza()73 scoped_ptr<XmlElement> ServerLogEntry::MakeStanza() {
74   return scoped_ptr<XmlElement>(
75       new XmlElement(QName(kChromotingXmlNamespace, kLogCommand)));
76 }
77 
ToStanza() const78 scoped_ptr<XmlElement> ServerLogEntry::ToStanza() const {
79   scoped_ptr<XmlElement> stanza(new XmlElement(QName(
80       kChromotingXmlNamespace, kLogEntry)));
81   ValuesMap::const_iterator iter;
82   for (iter = values_map_.begin(); iter != values_map_.end(); ++iter) {
83     stanza->AddAttr(QName(std::string(), iter->first), iter->second);
84   }
85   return stanza.Pass();
86 }
87 
88 }  // namespace remoting
89