OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2011 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/host/server_log_entry.h" | |
6 | |
7 #include "base/sys_info.h" | |
8 #include "remoting/base/constants.h" | |
9 #include "remoting/protocol/session.h" | |
10 #include "third_party/libjingle/source/talk/xmllite/xmlelement.h" | |
11 | |
12 using base::SysInfo; | |
13 using buzz::QName; | |
14 using buzz::XmlElement; | |
15 using remoting::protocol::Session; | |
16 | |
17 namespace remoting { | |
18 | |
19 namespace { | |
20 const char kLogEntry[] = "entry"; | |
21 | |
22 const char kKeyEventName[] = "event-name"; | |
23 const char kValueEventNameSessionState[] = "session-state"; | |
24 | |
25 const char kKeyRole[] = "role"; | |
26 const char kValueRoleHost[] = "host"; | |
27 | |
28 const char kKeySessionState[] = "session-state"; | |
29 const char kValueSessionStateConnected[] = "connected"; | |
30 const char kValueSessionStateClosed[] = "closed"; | |
31 | |
32 const char kKeyOsName[] = "os-name"; | |
33 const char kValueOsNameWindows[] = "Windows"; | |
34 const char kValueOsNameLinux[] = "Linux"; | |
35 const char kValueOsNameMac[] = "Mac"; | |
36 const char kValueOsNameChromeOS[] = "ChromeOS"; | |
37 | |
38 const char kKeyOsVersion[] = "os-version"; | |
39 | |
40 const char kKeyCpu[] = "cpu"; | |
41 } | |
Sergey Ulanov
2011/11/17 01:16:33
// namespace
simonmorris
2011/11/18 19:23:04
Done.
| |
42 | |
43 ServerLogEntry::ServerLogEntry() { | |
44 } | |
45 | |
46 ServerLogEntry::~ServerLogEntry() { | |
47 } | |
48 | |
49 ServerLogEntry* ServerLogEntry::MakeSessionStateChange(bool connected) { | |
50 ServerLogEntry* entry = new ServerLogEntry(); | |
51 entry->Set(kKeyRole, kValueRoleHost); | |
52 entry->Set(kKeyEventName, kValueEventNameSessionState); | |
53 entry->Set(kKeySessionState, GetValueSessionState(connected)); | |
54 return entry; | |
55 } | |
56 | |
57 void ServerLogEntry::AddHostFields() { | |
58 #if defined(OS_WIN) | |
59 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,
| |
60 #elif defined(OS_MACOSX) | |
61 Set(kKeyOsName, kValueOsNameMac); | |
62 #elif defined(OS_CHROMEOS) | |
63 Set(kKeyOsName, kValueOsNameChromeOS); | |
64 #elif defined(OS_LINUX) | |
65 Set(kKeyOsName, kValueOsNameLinux); | |
66 #endif | |
67 | |
68 // SysInfo::OperatingSystemVersionNumbers is only defined for the following | |
69 // OSes: see base/sys_info_unittest.cc. | |
70 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) | |
71 std::stringstream os_version; | |
72 int32 os_major_version = 0; | |
73 int32 os_minor_version = 0; | |
74 int32 os_bugfix_version = 0; | |
75 SysInfo::OperatingSystemVersionNumbers(&os_major_version, &os_minor_version, | |
76 &os_bugfix_version); | |
77 os_version << os_major_version << "." << os_minor_version << "." | |
78 << os_bugfix_version; | |
79 Set(kKeyOsVersion, os_version.str().c_str()); | |
80 #endif | |
81 | |
82 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
| |
83 }; | |
84 | |
85 XmlElement* ServerLogEntry::ToStanza() const { | |
86 XmlElement* stanza = new XmlElement(QName( | |
87 kChromotingXmlNamespace, kLogEntry)); | |
88 Dict::const_iterator iter; | |
89 for (iter = dict_.begin(); iter != dict_.end(); ++iter) { | |
90 stanza->AddAttr(QName("", iter->first), iter->second); | |
91 } | |
92 return stanza; | |
93 } | |
94 | |
95 const char* ServerLogEntry::GetValueSessionState(bool connected) { | |
96 return connected ? kValueSessionStateConnected : kValueSessionStateClosed; | |
97 } | |
98 | |
99 void ServerLogEntry::Set(const char* key, const char* value) { | |
100 dict_[key] = value; | |
101 } | |
102 | |
103 } // namespace remoting | |
OLD | NEW |