• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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