1 // Copyright 2020 the V8 project 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 "src/inspector/v8-debugger-id.h"
6
7 #include "src/debug/debug-interface.h"
8 #include "src/inspector/string-util.h"
9 #include "src/inspector/v8-inspector-impl.h"
10
11 namespace v8_inspector {
12
V8DebuggerId(std::pair<int64_t,int64_t> pair)13 V8DebuggerId::V8DebuggerId(std::pair<int64_t, int64_t> pair)
14 : m_first(pair.first), m_second(pair.second) {}
15
toString() const16 std::unique_ptr<StringBuffer> V8DebuggerId::toString() const {
17 return StringBufferFrom(String16::fromInteger64(m_first) + "." +
18 String16::fromInteger64(m_second));
19 }
20
isValid() const21 bool V8DebuggerId::isValid() const { return m_first || m_second; }
22
pair() const23 std::pair<int64_t, int64_t> V8DebuggerId::pair() const {
24 return std::make_pair(m_first, m_second);
25 }
26
27 namespace internal {
28
V8DebuggerId(std::pair<int64_t,int64_t> pair)29 V8DebuggerId::V8DebuggerId(std::pair<int64_t, int64_t> pair)
30 : m_debugger_id(pair) {}
31
32 // static
generate(V8InspectorImpl * inspector)33 V8DebuggerId V8DebuggerId::generate(V8InspectorImpl* inspector) {
34 return V8DebuggerId(std::make_pair(inspector->generateUniqueId(),
35 inspector->generateUniqueId()));
36 }
37
V8DebuggerId(const String16 & debuggerId)38 V8DebuggerId::V8DebuggerId(const String16& debuggerId) {
39 const UChar dot = '.';
40 size_t pos = debuggerId.find(dot);
41 if (pos == String16::kNotFound) return;
42 bool ok = false;
43 int64_t first = debuggerId.substring(0, pos).toInteger64(&ok);
44 if (!ok) return;
45 int64_t second = debuggerId.substring(pos + 1).toInteger64(&ok);
46 if (!ok) return;
47 m_debugger_id = v8_inspector::V8DebuggerId(std::make_pair(first, second));
48 }
49
toString() const50 String16 V8DebuggerId::toString() const {
51 return toString16(m_debugger_id.toString()->string());
52 }
53
isValid() const54 bool V8DebuggerId::isValid() const { return m_debugger_id.isValid(); }
55
pair() const56 std::pair<int64_t, int64_t> V8DebuggerId::pair() const {
57 return m_debugger_id.pair();
58 }
59
60 } // namespace internal
61 } // namespace v8_inspector
62