Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/source/extensions/filters/network/dubbo_proxy/hessian_utils.cc
Line
Count
Source (jump to first uncovered line)
1
#include "source/extensions/filters/network/dubbo_proxy/hessian_utils.h"
2
3
namespace Envoy {
4
namespace Extensions {
5
namespace NetworkFilters {
6
namespace DubboProxy {
7
8
// Check
9
// https://github.com/apache/dubbo/blob/master/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java
10
// for details of parameters type.
11
0
uint32_t HessianUtils::getParametersNumber(const std::string& parameters_type) {
12
0
  if (parameters_type.empty()) {
13
0
    return 0;
14
0
  }
15
16
0
  uint32_t count = 0;
17
0
  bool next = false;
18
19
0
  for (auto ch : parameters_type) {
20
0
    if (ch == '[') {
21
      // Is array.
22
0
      continue;
23
0
    }
24
25
0
    if (next && ch != ';') {
26
      // Is Object.
27
0
      continue;
28
0
    }
29
30
0
    switch (ch) {
31
0
    case 'V':
32
0
    case 'Z':
33
0
    case 'B':
34
0
    case 'C':
35
0
    case 'D':
36
0
    case 'F':
37
0
    case 'I':
38
0
    case 'J':
39
0
    case 'S':
40
0
      count++;
41
0
      break;
42
0
    case 'L':
43
      // Start of Object.
44
0
      count++;
45
0
      next = true;
46
0
      break;
47
0
    case ';':
48
      // End of Object.
49
0
      next = false;
50
0
      break;
51
0
    default:
52
0
      break;
53
0
    }
54
0
  }
55
0
  return count;
56
0
}
57
58
0
void BufferWriter::rawWrite(const void* data, uint64_t size) { buffer_.add(data, size); }
59
60
0
void BufferWriter::rawWrite(absl::string_view data) { buffer_.add(data); }
61
62
0
void BufferReader::rawReadNBytes(void* data, size_t len, size_t peek_offset) {
63
0
  ASSERT(byteAvailable() - peek_offset >= len);
64
0
  buffer_.copyOut(offset() + peek_offset, len, data);
65
0
}
66
67
} // namespace DubboProxy
68
} // namespace NetworkFilters
69
} // namespace Extensions
70
} // namespace Envoy