solarwinds_apm 6.1.2 → 7.0.0.prev1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -2
  3. data/lib/solarwinds_apm/api/current_trace_info.rb +10 -6
  4. data/lib/solarwinds_apm/api/custom_metrics.rb +8 -25
  5. data/lib/solarwinds_apm/api/tracing.rb +12 -27
  6. data/lib/solarwinds_apm/api/transaction_name.rb +6 -10
  7. data/lib/solarwinds_apm/config.rb +1 -1
  8. data/lib/solarwinds_apm/constants.rb +1 -0
  9. data/lib/solarwinds_apm/noop/api.rb +5 -2
  10. data/lib/solarwinds_apm/noop.rb +0 -24
  11. data/lib/solarwinds_apm/opentelemetry/otlp_processor.rb +90 -69
  12. data/lib/solarwinds_apm/opentelemetry/solarwinds_propagator.rb +0 -2
  13. data/lib/solarwinds_apm/opentelemetry/solarwinds_response_propagator.rb +5 -4
  14. data/lib/solarwinds_apm/opentelemetry.rb +5 -7
  15. data/lib/solarwinds_apm/otel_native_config.rb +177 -0
  16. data/lib/solarwinds_apm/patch/README.md +15 -0
  17. data/lib/solarwinds_apm/{noop/metadata.rb → sampling/dice.rb} +19 -17
  18. data/lib/solarwinds_apm/sampling/http_sampler.rb +87 -0
  19. data/lib/solarwinds_apm/sampling/json_sampler.rb +52 -0
  20. data/lib/solarwinds_apm/sampling/metrics.rb +38 -0
  21. data/lib/solarwinds_apm/sampling/oboe_sampler.rb +348 -0
  22. data/lib/solarwinds_apm/sampling/sampler.rb +197 -0
  23. data/lib/solarwinds_apm/sampling/sampling_constants.rb +127 -0
  24. data/lib/solarwinds_apm/sampling/sampling_patch.rb +49 -0
  25. data/lib/solarwinds_apm/sampling/setting_example.txt +1 -0
  26. data/lib/solarwinds_apm/{noop/context.rb → sampling/settings.rb} +14 -25
  27. data/lib/solarwinds_apm/sampling/token_bucket.rb +126 -0
  28. data/lib/solarwinds_apm/sampling/trace_options.rb +100 -0
  29. data/lib/solarwinds_apm/{patch.rb → sampling.rb} +20 -4
  30. data/lib/solarwinds_apm/{noop/span.rb → support/aws_resource_detector.rb} +5 -18
  31. data/lib/solarwinds_apm/support/logger_formatter.rb +1 -1
  32. data/lib/solarwinds_apm/support/logging_log_event.rb +1 -1
  33. data/lib/solarwinds_apm/support/lumberjack_formatter.rb +1 -1
  34. data/lib/solarwinds_apm/support/otlp_endpoint.rb +99 -0
  35. data/lib/solarwinds_apm/support/resource_detector/aws/beanstalk.rb +51 -0
  36. data/lib/solarwinds_apm/support/resource_detector/aws/ec2.rb +145 -0
  37. data/lib/solarwinds_apm/support/resource_detector/aws/ecs.rb +173 -0
  38. data/lib/solarwinds_apm/support/resource_detector/aws/eks.rb +174 -0
  39. data/lib/solarwinds_apm/support/resource_detector/aws/lambda.rb +66 -0
  40. data/lib/solarwinds_apm/support/resource_detector.rb +192 -0
  41. data/lib/solarwinds_apm/support/service_key_checker.rb +12 -6
  42. data/lib/solarwinds_apm/support/transaction_settings.rb +6 -0
  43. data/lib/solarwinds_apm/support/txn_name_manager.rb +54 -9
  44. data/lib/solarwinds_apm/support/utils.rb +9 -0
  45. data/lib/solarwinds_apm/support.rb +3 -4
  46. data/lib/solarwinds_apm/version.rb +4 -4
  47. data/lib/solarwinds_apm.rb +27 -73
  48. metadata +99 -40
  49. data/ext/oboe_metal/extconf.rb +0 -168
  50. data/ext/oboe_metal/lib/liboboe-1.0-aarch64.so.sha256 +0 -1
  51. data/ext/oboe_metal/lib/liboboe-1.0-alpine-aarch64.so.sha256 +0 -1
  52. data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.sha256 +0 -1
  53. data/ext/oboe_metal/lib/liboboe-1.0-lambda-aarch64.so.sha256 +0 -1
  54. data/ext/oboe_metal/lib/liboboe-1.0-lambda-x86_64.so.sha256 +0 -1
  55. data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.sha256 +0 -1
  56. data/ext/oboe_metal/src/VERSION +0 -1
  57. data/ext/oboe_metal/src/bson/bson.h +0 -220
  58. data/ext/oboe_metal/src/bson/platform_hacks.h +0 -91
  59. data/ext/oboe_metal/src/init_solarwinds_apm.cc +0 -18
  60. data/ext/oboe_metal/src/oboe.h +0 -930
  61. data/ext/oboe_metal/src/oboe_api.cpp +0 -793
  62. data/ext/oboe_metal/src/oboe_api.h +0 -621
  63. data/ext/oboe_metal/src/oboe_debug.h +0 -17
  64. data/ext/oboe_metal/src/oboe_swig_wrap.cc +0 -11045
  65. data/lib/oboe_metal.rb +0 -187
  66. data/lib/solarwinds_apm/cert/star.appoptics.com.issuer.crt +0 -24
  67. data/lib/solarwinds_apm/oboe_init_options.rb +0 -222
  68. data/lib/solarwinds_apm/opentelemetry/solarwinds_exporter.rb +0 -239
  69. data/lib/solarwinds_apm/opentelemetry/solarwinds_processor.rb +0 -174
  70. data/lib/solarwinds_apm/opentelemetry/solarwinds_sampler.rb +0 -333
  71. data/lib/solarwinds_apm/otel_config.rb +0 -174
  72. data/lib/solarwinds_apm/otel_lambda_config.rb +0 -56
  73. data/lib/solarwinds_apm/patch/dummy_patch.rb +0 -12
  74. data/lib/solarwinds_apm/support/oboe_tracing_mode.rb +0 -33
  75. data/lib/solarwinds_apm/support/support_report.rb +0 -99
  76. data/lib/solarwinds_apm/support/transaction_cache.rb +0 -57
  77. data/lib/solarwinds_apm/support/x_trace_options.rb +0 -138
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solarwinds_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.2
4
+ version: 7.0.0.prev1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maia Engeli
@@ -11,8 +11,36 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2025-02-28 00:00:00.000000000 Z
14
+ date: 2025-06-10 00:00:00.000000000 Z
15
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: opentelemetry-exporter-otlp
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.29.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 0.29.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: opentelemetry-exporter-otlp-metrics
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 0.3.0
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.3.0
16
44
  - !ruby/object:Gem::Dependency
17
45
  name: opentelemetry-instrumentation-all
18
46
  requirement: !ruby/object:Gem::Requirement
@@ -27,6 +55,48 @@ dependencies:
27
55
  - - ">="
28
56
  - !ruby/object:Gem::Version
29
57
  version: 0.31.0
58
+ - !ruby/object:Gem::Dependency
59
+ name: opentelemetry-metrics-sdk
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 0.2.0
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 0.2.0
72
+ - !ruby/object:Gem::Dependency
73
+ name: opentelemetry-resource-detector-azure
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 0.1.0
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 0.1.0
86
+ - !ruby/object:Gem::Dependency
87
+ name: opentelemetry-resource-detector-container
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 0.1.0
93
+ type: :runtime
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 0.1.0
30
100
  - !ruby/object:Gem::Dependency
31
101
  name: opentelemetry-sdk
32
102
  requirement: !ruby/object:Gem::Requirement
@@ -44,31 +114,13 @@ dependencies:
44
114
  description: Automatic tracing and metrics for Ruby applications. Get started at cloud.solarwinds.com
45
115
  email: technicalsupport@solarwinds.com
46
116
  executables: []
47
- extensions:
48
- - ext/oboe_metal/extconf.rb
117
+ extensions: []
49
118
  extra_rdoc_files:
50
119
  - LICENSE
51
120
  files:
52
121
  - ".yardopts"
53
122
  - LICENSE
54
123
  - README.md
55
- - ext/oboe_metal/extconf.rb
56
- - ext/oboe_metal/lib/liboboe-1.0-aarch64.so.sha256
57
- - ext/oboe_metal/lib/liboboe-1.0-alpine-aarch64.so.sha256
58
- - ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.sha256
59
- - ext/oboe_metal/lib/liboboe-1.0-lambda-aarch64.so.sha256
60
- - ext/oboe_metal/lib/liboboe-1.0-lambda-x86_64.so.sha256
61
- - ext/oboe_metal/lib/liboboe-1.0-x86_64.so.sha256
62
- - ext/oboe_metal/src/VERSION
63
- - ext/oboe_metal/src/bson/bson.h
64
- - ext/oboe_metal/src/bson/platform_hacks.h
65
- - ext/oboe_metal/src/init_solarwinds_apm.cc
66
- - ext/oboe_metal/src/oboe.h
67
- - ext/oboe_metal/src/oboe_api.cpp
68
- - ext/oboe_metal/src/oboe_api.h
69
- - ext/oboe_metal/src/oboe_debug.h
70
- - ext/oboe_metal/src/oboe_swig_wrap.cc
71
- - lib/oboe_metal.rb
72
124
  - lib/rails/generators/solarwinds_apm/install_generator.rb
73
125
  - lib/rails/generators/solarwinds_apm/templates/solarwinds_apm_initializer.rb
74
126
  - lib/solarwinds_apm.rb
@@ -79,44 +131,51 @@ files:
79
131
  - lib/solarwinds_apm/api/opentelemetry.rb
80
132
  - lib/solarwinds_apm/api/tracing.rb
81
133
  - lib/solarwinds_apm/api/transaction_name.rb
82
- - lib/solarwinds_apm/cert/star.appoptics.com.issuer.crt
83
134
  - lib/solarwinds_apm/config.rb
84
135
  - lib/solarwinds_apm/constants.rb
85
136
  - lib/solarwinds_apm/logger.rb
86
137
  - lib/solarwinds_apm/noop.rb
87
138
  - lib/solarwinds_apm/noop/README.md
88
139
  - lib/solarwinds_apm/noop/api.rb
89
- - lib/solarwinds_apm/noop/context.rb
90
- - lib/solarwinds_apm/noop/metadata.rb
91
- - lib/solarwinds_apm/noop/span.rb
92
- - lib/solarwinds_apm/oboe_init_options.rb
93
140
  - lib/solarwinds_apm/opentelemetry.rb
94
141
  - lib/solarwinds_apm/opentelemetry/otlp_processor.rb
95
- - lib/solarwinds_apm/opentelemetry/solarwinds_exporter.rb
96
- - lib/solarwinds_apm/opentelemetry/solarwinds_processor.rb
97
142
  - lib/solarwinds_apm/opentelemetry/solarwinds_propagator.rb
98
143
  - lib/solarwinds_apm/opentelemetry/solarwinds_response_propagator.rb
99
- - lib/solarwinds_apm/opentelemetry/solarwinds_sampler.rb
100
- - lib/solarwinds_apm/otel_config.rb
101
- - lib/solarwinds_apm/otel_lambda_config.rb
102
- - lib/solarwinds_apm/patch.rb
103
- - lib/solarwinds_apm/patch/dummy_patch.rb
144
+ - lib/solarwinds_apm/otel_native_config.rb
145
+ - lib/solarwinds_apm/patch/README.md
104
146
  - lib/solarwinds_apm/patch/tag_sql/sw_dbo_utils.rb
105
147
  - lib/solarwinds_apm/patch/tag_sql/sw_mysql2_patch.rb
106
148
  - lib/solarwinds_apm/patch/tag_sql/sw_pg_patch.rb
107
149
  - lib/solarwinds_apm/patch/tag_sql_patch.rb
150
+ - lib/solarwinds_apm/sampling.rb
151
+ - lib/solarwinds_apm/sampling/dice.rb
152
+ - lib/solarwinds_apm/sampling/http_sampler.rb
153
+ - lib/solarwinds_apm/sampling/json_sampler.rb
154
+ - lib/solarwinds_apm/sampling/metrics.rb
155
+ - lib/solarwinds_apm/sampling/oboe_sampler.rb
156
+ - lib/solarwinds_apm/sampling/sampler.rb
157
+ - lib/solarwinds_apm/sampling/sampling_constants.rb
158
+ - lib/solarwinds_apm/sampling/sampling_patch.rb
159
+ - lib/solarwinds_apm/sampling/setting_example.txt
160
+ - lib/solarwinds_apm/sampling/settings.rb
161
+ - lib/solarwinds_apm/sampling/token_bucket.rb
162
+ - lib/solarwinds_apm/sampling/trace_options.rb
108
163
  - lib/solarwinds_apm/support.rb
164
+ - lib/solarwinds_apm/support/aws_resource_detector.rb
109
165
  - lib/solarwinds_apm/support/logger_formatter.rb
110
166
  - lib/solarwinds_apm/support/logging_log_event.rb
111
167
  - lib/solarwinds_apm/support/lumberjack_formatter.rb
112
- - lib/solarwinds_apm/support/oboe_tracing_mode.rb
168
+ - lib/solarwinds_apm/support/otlp_endpoint.rb
169
+ - lib/solarwinds_apm/support/resource_detector.rb
170
+ - lib/solarwinds_apm/support/resource_detector/aws/beanstalk.rb
171
+ - lib/solarwinds_apm/support/resource_detector/aws/ec2.rb
172
+ - lib/solarwinds_apm/support/resource_detector/aws/ecs.rb
173
+ - lib/solarwinds_apm/support/resource_detector/aws/eks.rb
174
+ - lib/solarwinds_apm/support/resource_detector/aws/lambda.rb
113
175
  - lib/solarwinds_apm/support/service_key_checker.rb
114
- - lib/solarwinds_apm/support/support_report.rb
115
- - lib/solarwinds_apm/support/transaction_cache.rb
116
176
  - lib/solarwinds_apm/support/transaction_settings.rb
117
177
  - lib/solarwinds_apm/support/txn_name_manager.rb
118
178
  - lib/solarwinds_apm/support/utils.rb
119
- - lib/solarwinds_apm/support/x_trace_options.rb
120
179
  - lib/solarwinds_apm/version.rb
121
180
  homepage: https://documentation.solarwinds.com/en/success_center/observability/content/intro/landing-page.html
122
181
  licenses:
@@ -135,12 +194,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
194
  requirements:
136
195
  - - ">="
137
196
  - !ruby/object:Gem::Version
138
- version: 2.7.0
197
+ version: 3.0.0
139
198
  required_rubygems_version: !ruby/object:Gem::Requirement
140
199
  requirements:
141
- - - ">="
200
+ - - ">"
142
201
  - !ruby/object:Gem::Version
143
- version: '0'
202
+ version: 1.3.1
144
203
  requirements: []
145
204
  rubygems_version: 3.3.27
146
205
  signing_key:
@@ -1,168 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright (c) 2016 SolarWinds, LLC.
4
- # All rights reserved.
5
-
6
- require 'mkmf'
7
- require 'rbconfig'
8
- require 'open-uri'
9
-
10
- CONFIG['warnflags'] = CONFIG['warnflags'].gsub('-Wdeclaration-after-statement', '')
11
- .gsub('-Wimplicit-function-declaration', '')
12
- .gsub('-Wimplicit-int', '')
13
- .gsub('-Wno-tautological-compare', '')
14
- .gsub('-Wno-self-assign', '')
15
- .gsub('-Wno-parentheses-equality', '')
16
- .gsub('-Wno-constant-logical-operand', '')
17
- .gsub('-Wno-cast-function-type', '')
18
- init_mkmf(CONFIG)
19
-
20
- ext_dir = __dir__
21
- oboe_env = ENV.fetch('OBOE_ENV', nil)
22
- non_production = %w[dev stg].include? oboe_env.to_s
23
-
24
- swo_lib_dir = File.join(ext_dir, 'lib')
25
- version = File.read(File.join(ext_dir, 'src', 'VERSION')).strip
26
-
27
- case oboe_env
28
- when 'dev'
29
- swo_path = 'https://solarwinds-apm-staging.s3.us-west-2.amazonaws.com/apm/c-lib/nightly'
30
- puts 'Fetching c-lib from DEVELOPMENT Build'
31
- when 'stg'
32
- swo_path = File.join('https://agent-binaries.global.st-ssp.solarwinds.com/apm/c-lib/', version)
33
- puts 'Fetching c-lib from STAGING Build'
34
- else
35
- swo_path = File.join('https://agent-binaries.cloud.solarwinds.com/apm/c-lib/', version)
36
- puts 'Fetching c-lib from PRODUCTION Build'
37
- end
38
-
39
- oboe_debug = ENV['OBOE_DEBUG'].to_s.casecmp('true').zero?
40
-
41
- if oboe_debug
42
- swo_path = File.join(swo_path, 'relwithdebinfo')
43
- puts "Fetching DEBUG Build based on #{oboe_env.to_s.empty? ? 'prod' : oboe_env}"
44
- end
45
-
46
- puts "final swo_path: #{swo_path}"
47
-
48
- swo_arch = 'x86_64'
49
- system_arch = `uname -m` # for mac, the command is `uname` # "Darwin\n"; try `uname -a`
50
- system_arch.delete!("\n")
51
- case system_arch
52
- when 'x86_64'
53
- swo_arch = 'x86_64'
54
- when 'aarch64' || 'arm64'
55
- swo_arch = 'aarch64'
56
- end
57
-
58
- if File.exist?('/etc/alpine-release')
59
- version = File.read('/etc/alpine-release').strip
60
-
61
- tmp_swo_arch = swo_arch.clone
62
- swo_arch =
63
- if Gem::Version.new(version) < Gem::Version.new('3.9')
64
- "alpine-libressl-#{tmp_swo_arch}"
65
- else # openssl
66
- "alpine-#{tmp_swo_arch}"
67
- end
68
- end
69
-
70
- swo_clib = "liboboe-1.0-#{swo_arch}.so"
71
- swo_clib = "liboboe-1.0-lambda-#{swo_arch}.so" if ENV['LAMBDA_TASK_ROOT'] || ENV['AWS_LAMBDA_FUNCTION_NAME']
72
- swo_item = File.join(swo_path, swo_clib)
73
- swo_checksum_file = File.join(swo_lib_dir, "#{swo_clib}.sha256")
74
- clib = File.join(swo_lib_dir, swo_clib)
75
-
76
- retries = 3
77
- success = false
78
- while retries.positive?
79
- begin
80
- IO.copy_stream(URI.parse(swo_item).open, clib)
81
- clib_checksum = Digest::SHA256.file(clib).hexdigest
82
- checksum = File.read(swo_checksum_file).strip
83
-
84
- # sha256 always from prod, so no matching for stg or nightly build or debug mode
85
- # so ignore the sha comparsion when fetching from development and staging build
86
- checksum = clib_checksum if non_production || oboe_debug
87
-
88
- # unfortunately these messages only show if the install command is run
89
- # with the `--verbose` flag
90
- if clib_checksum == checksum
91
- success = true
92
- else
93
- puts 'Checksum Verification Fail' # this is mainly for testing
94
- warn '== ERROR ================================================================='
95
- warn 'Checksum Verification failed for the c-extension of the solarwinds_apm gem'
96
- warn 'Installation cannot continue'
97
- warn "\nChecksum packaged with gem: #{checksum}"
98
- warn "Checksum calculated from lib: #{clib_checksum}"
99
- warn 'Contact technicalsupport@solarwinds.com if the problem persists'
100
- warn '=========================================================================='
101
- end
102
- retries = 0
103
- rescue StandardError => e
104
- File.write(clib, '')
105
- retries -= 1
106
- if retries.zero?
107
- warn '== ERROR =========================================================='
108
- warn 'Download of the c-extension for the solarwinds_apm gem failed.'
109
- warn 'solarwinds_apm will not instrument the code. No tracing will occur.'
110
- warn 'Contact technicalsupport@solarwinds.com if the problem persists.'
111
- warn "error: #{swo_item}\n#{e.message}"
112
- warn '==================================================================='
113
- create_makefile('oboe_noop', 'noop')
114
- end
115
- sleep 0.5
116
- end
117
- end
118
-
119
- if success
120
- # Create relative symlinks for the SolarWindsAPM library
121
- Dir.chdir(swo_lib_dir) do
122
- File.symlink(swo_clib, 'liboboe.so')
123
- File.symlink(swo_clib, 'liboboe-1.0.so.0')
124
- end
125
-
126
- dir_config('oboe', 'src', 'lib')
127
-
128
- # create Makefile
129
- if have_library('oboe')
130
- $libs = append_library($libs, 'oboe')
131
- $libs = append_library($libs, 'stdc++')
132
-
133
- $CFLAGS << " #{ENV.fetch('CFLAGS', nil)}"
134
-
135
- # -pg option is used for generating profiling information with gprof
136
- $CPPFLAGS << if oboe_debug
137
- " #{ENV.fetch('CPPFLAGS', nil)} -std=c++11 -gdwarf-2 -I$$ORIGIN/../ext/oboe_metal/src"
138
- else
139
- " #{ENV.fetch('CPPFLAGS', nil)} -std=c++11 -I$$ORIGIN/../ext/oboe_metal/src"
140
- end
141
-
142
- $LIBS << " #{ENV.fetch('LIBS', nil)}"
143
-
144
- # -lrt option is used when linking programs with the GNU Compiler Collection (GCC) to
145
- # include the POSIX real-time extensions library, librt.
146
- $LDFLAGS << " #{ENV.fetch('LDFLAGS', nil)} '-Wl,-rpath=$$ORIGIN/../ext/oboe_metal/lib' -lrt"
147
- $CXXFLAGS += ' -std=c++11 '
148
-
149
- # OBOE_DEBUG need to be enabled before downloading and installing the gem
150
- if oboe_debug
151
- CONFIG['debugflags'] = '-ggdb3 '
152
- CONFIG['optflags'] = '-O0'
153
- end
154
-
155
- create_makefile('libsolarwinds_apm', 'src')
156
- else
157
- warn '== ERROR ========================================================='
158
- if have_library('oboe')
159
- warn "The c-library either needs to be updated or doesn't match the OS."
160
- warn 'No tracing will occur.'
161
- else
162
- warn 'Could not find a matching c-library. No tracing will occur.'
163
- end
164
- warn 'Contact technicalsupport@solarwinds.com if the problem persists.'
165
- warn '=================================================================='
166
- create_makefile('oboe_noop', 'noop')
167
- end
168
- end
@@ -1 +0,0 @@
1
- 53295ec020a713c5f6fe7c14b150a10ac7db0e5ea692fbd6945ee69f7a581271
@@ -1 +0,0 @@
1
- 37407ece6aafcb662fbce8eb23f98a9b017154c66c8ec02eda835702ba14f446
@@ -1 +0,0 @@
1
- 925d65c2a940a82315525ea2e82eb357793f7db8a2a8ec529e7c03e2478bc965
@@ -1 +0,0 @@
1
- 3d49133827a0b6839744231e3ca49f8c9340380063286b8c3794bde585370001
@@ -1 +0,0 @@
1
- e2198827ce86309a59def33be14f17d0474477df33a5d75bd415d73a01c790b3
@@ -1 +0,0 @@
1
- 798a7c9551c66af743e1d6d2b736bf5667fa97fdc0ac8eec825fe4f63adaa044
@@ -1 +0,0 @@
1
- 15.0.3
@@ -1,220 +0,0 @@
1
- /* bson.h */
2
-
3
- /* Copyright 2009, 2010 10gen Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
-
18
- #ifndef _BSON_H_
19
- #define _BSON_H_
20
-
21
- #define MONGO_HAVE_STDINT
22
- #include "platform_hacks.h"
23
- #include <time.h>
24
-
25
- MONGO_EXTERN_C_START
26
-
27
- typedef enum {
28
- oboe_bson_error=-1,
29
- oboe_bson_eoo=0,
30
- oboe_bson_double=1,
31
- oboe_bson_string=2,
32
- oboe_bson_object=3,
33
- oboe_bson_array=4,
34
- oboe_bson_bindata=5,
35
- oboe_bson_undefined=6,
36
- oboe_bson_oid=7,
37
- oboe_bson_bool=8,
38
- oboe_bson_date=9,
39
- oboe_bson_null=10,
40
- oboe_bson_regex=11,
41
- oboe_bson_dbref=12, /* deprecated */
42
- oboe_bson_code=13,
43
- oboe_bson_symbol=14,
44
- oboe_bson_codewscope=15,
45
- oboe_bson_int = 16,
46
- oboe_bson_timestamp = 17,
47
- oboe_bson_long = 18
48
- } oboe_bson_type;
49
-
50
- typedef int oboe_bson_bool_t;
51
-
52
- typedef struct {
53
- char * data;
54
- oboe_bson_bool_t owned;
55
- } oboe_bson;
56
-
57
- typedef struct {
58
- const char * cur;
59
- oboe_bson_bool_t first;
60
- } oboe_bson_iterator;
61
-
62
- typedef struct {
63
- char * buf;
64
- char * cur;
65
- int bufSize;
66
- oboe_bson_bool_t finished;
67
- int stack[32];
68
- int stackPos;
69
- } oboe_bson_buffer;
70
-
71
- #pragma pack(1)
72
- typedef union{
73
- char bytes[12]; // Flawfinder: ignore
74
- int ints[3];
75
- } oboe_bson_oid_t;
76
- #pragma pack()
77
-
78
- typedef int64_t oboe_bson_date_t; /* milliseconds since epoch UTC */
79
-
80
- /* ----------------------------
81
- READING
82
- ------------------------------ */
83
-
84
-
85
- oboe_bson * oboe_bson_empty(oboe_bson * obj); /* returns pointer to static empty bson object */
86
- int oboe_bson_copy(oboe_bson* out, const oboe_bson* in); /* puts data in new buffer. NOOP if out==NULL */
87
- oboe_bson * oboe_bson_from_buffer(oboe_bson * b, oboe_bson_buffer * buf);
88
- oboe_bson * oboe_bson_init( oboe_bson * b , char * data , oboe_bson_bool_t mine );
89
- oboe_bson * oboe_bson_init_safe( oboe_bson * b , char * data , oboe_bson_bool_t mine , size_t buflen);
90
- int oboe_bson_size(const oboe_bson * b );
91
- void oboe_bson_destroy( oboe_bson * b );
92
-
93
- void oboe_bson_print( oboe_bson * b );
94
- void oboe_bson_print_raw( const char * bson , int depth );
95
-
96
- /* advances iterator to named field */
97
- /* returns bson_eoo (which is false) if field not found */
98
- oboe_bson_type oboe_bson_find(oboe_bson_iterator* it, const oboe_bson* obj, const char* name);
99
-
100
- void oboe_bson_iterator_init( oboe_bson_iterator * i , const char * bson );
101
-
102
- /* more returns true for eoo. best to loop with bson_iterator_next(&it) */
103
- oboe_bson_bool_t oboe_bson_iterator_more( const oboe_bson_iterator * i );
104
- oboe_bson_type oboe_bson_iterator_next( oboe_bson_iterator * i );
105
-
106
- oboe_bson_type oboe_bson_iterator_type( const oboe_bson_iterator * i );
107
- const char * oboe_bson_iterator_key( const oboe_bson_iterator * i );
108
- const char * oboe_bson_iterator_value( const oboe_bson_iterator * i );
109
-
110
- /* these convert to the right type (return 0 if non-numeric) */
111
- double oboe_bson_iterator_double( const oboe_bson_iterator * i );
112
- int oboe_bson_iterator_int( const oboe_bson_iterator * i );
113
- int64_t oboe_bson_iterator_long( const oboe_bson_iterator * i );
114
-
115
- /* false: boolean false, 0 in any type, or null */
116
- /* true: anything else (even empty strings and objects) */
117
- oboe_bson_bool_t oboe_bson_iterator_bool( const oboe_bson_iterator * i );
118
-
119
- /* these assume you are using the right type */
120
- double oboe_bson_iterator_double_raw( const oboe_bson_iterator * i );
121
- int oboe_bson_iterator_int_raw( const oboe_bson_iterator * i );
122
- int64_t oboe_bson_iterator_long_raw( const oboe_bson_iterator * i );
123
- oboe_bson_bool_t oboe_bson_iterator_bool_raw( const oboe_bson_iterator * i );
124
- oboe_bson_oid_t* oboe_bson_iterator_oid( const oboe_bson_iterator * i );
125
-
126
- /* these can also be used with bson_code and bson_symbol*/
127
- const char * oboe_bson_iterator_string( const oboe_bson_iterator * i );
128
- int oboe_bson_iterator_string_len( const oboe_bson_iterator * i );
129
-
130
- /* works with bson_code, bson_codewscope, and bson_string */
131
- /* returns NULL for everything else */
132
- const char * oboe_bson_iterator_code(const oboe_bson_iterator * i);
133
-
134
- /* calls bson_empty on scope if not a bson_codewscope */
135
- void oboe_bson_iterator_code_scope(const oboe_bson_iterator * i, oboe_bson * scope);
136
-
137
- /* both of these only work with bson_date */
138
- oboe_bson_date_t oboe_bson_iterator_date(const oboe_bson_iterator * i);
139
- time_t oboe_bson_iterator_time_t(const oboe_bson_iterator * i);
140
-
141
- int oboe_bson_iterator_bin_len( const oboe_bson_iterator * i );
142
- char oboe_bson_iterator_bin_type( const oboe_bson_iterator * i );
143
- const char * oboe_bson_iterator_bin_data( const oboe_bson_iterator * i );
144
-
145
- const char * oboe_bson_iterator_regex( const oboe_bson_iterator * i );
146
- const char * oboe_bson_iterator_regex_opts( const oboe_bson_iterator * i );
147
-
148
- /* these work with bson_object and bson_array */
149
- void oboe_bson_iterator_subobject(const oboe_bson_iterator * i, oboe_bson * sub);
150
- void oboe_bson_iterator_subiterator(const oboe_bson_iterator * i, oboe_bson_iterator * sub);
151
-
152
- /* str must be at least 24 hex chars + null byte */
153
- void oboe_bson_oid_from_string(oboe_bson_oid_t* oid, const char* str);
154
- void oboe_bson_oid_to_string(const oboe_bson_oid_t* oid, char* str);
155
- void oboe_bson_oid_gen(oboe_bson_oid_t* oid);
156
-
157
- time_t oboe_bson_oid_generated_time(oboe_bson_oid_t* oid); /* Gives the time the OID was created */
158
-
159
- /* ----------------------------
160
- BUILDING
161
- ------------------------------ */
162
-
163
- oboe_bson_buffer * oboe_bson_buffer_init( oboe_bson_buffer * b );
164
- oboe_bson_buffer * oboe_bson_ensure_space( oboe_bson_buffer * b , const int bytesNeeded );
165
-
166
- /**
167
- * @return the raw data. you either should free this OR call bson_destroy not both
168
- */
169
- char * oboe_bson_buffer_finish( oboe_bson_buffer * b );
170
- void oboe_bson_buffer_destroy( oboe_bson_buffer * b );
171
-
172
- oboe_bson_buffer * oboe_bson_append_oid( oboe_bson_buffer * b , const char * name , const oboe_bson_oid_t* oid );
173
- oboe_bson_buffer * oboe_bson_append_int( oboe_bson_buffer * b , const char * name , const int i );
174
- oboe_bson_buffer * oboe_bson_append_long( oboe_bson_buffer * b , const char * name , const int64_t i );
175
- oboe_bson_buffer * oboe_bson_append_double( oboe_bson_buffer * b , const char * name , const double d );
176
- oboe_bson_buffer * oboe_bson_append_string( oboe_bson_buffer * b , const char * name , const char * str );
177
- oboe_bson_buffer * oboe_bson_append_symbol( oboe_bson_buffer * b , const char * name , const char * str );
178
- oboe_bson_buffer * oboe_bson_append_code( oboe_bson_buffer * b , const char * name , const char * str );
179
- oboe_bson_buffer * oboe_bson_append_code_w_scope( oboe_bson_buffer * b , const char * name , const char * code , const oboe_bson * scope);
180
- oboe_bson_buffer * oboe_bson_append_binary( oboe_bson_buffer * b, const char * name, char type, const char * str, int len );
181
- oboe_bson_buffer * oboe_bson_append_bool( oboe_bson_buffer * b , const char * name , const oboe_bson_bool_t v );
182
- oboe_bson_buffer * oboe_bson_append_null( oboe_bson_buffer * b , const char * name );
183
- oboe_bson_buffer * oboe_bson_append_undefined( oboe_bson_buffer * b , const char * name );
184
- oboe_bson_buffer * oboe_bson_append_regex( oboe_bson_buffer * b , const char * name , const char * pattern, const char * opts );
185
- oboe_bson_buffer * oboe_bson_append_bson( oboe_bson_buffer * b , const char * name , const oboe_bson* bson);
186
- oboe_bson_buffer * oboe_bson_append_element( oboe_bson_buffer * b, const char * name_or_null, const oboe_bson_iterator* elem);
187
-
188
- /* these both append a bson_date */
189
- oboe_bson_buffer * oboe_bson_append_date(oboe_bson_buffer * b, const char * name, oboe_bson_date_t millis);
190
- oboe_bson_buffer * oboe_bson_append_time_t(oboe_bson_buffer * b, const char * name, time_t secs);
191
-
192
- oboe_bson_buffer * oboe_bson_append_start_object( oboe_bson_buffer * b , const char * name );
193
- oboe_bson_buffer * oboe_bson_append_start_array( oboe_bson_buffer * b , const char * name );
194
- oboe_bson_buffer * oboe_bson_append_finish_object( oboe_bson_buffer * b );
195
-
196
- void oboe_bson_numstr(char* str, int i);
197
- void oboe_bson_incnumstr(char* str);
198
-
199
-
200
- /* ------------------------------
201
- ERROR HANDLING - also used in mongo code
202
- ------------------------------ */
203
-
204
- void * oboe_bson_malloc(int size); /* checks return value */
205
-
206
- /* bson_err_handlers shouldn't return!!! */
207
- typedef void(*ob_bson_err_handler)(const char* errmsg);
208
-
209
- /* returns old handler or NULL */
210
- /* default handler prints error then exits with failure*/
211
- ob_bson_err_handler oboe_set_bson_err_handler(ob_bson_err_handler func);
212
-
213
-
214
-
215
- /* does nothing is ok != 0 */
216
- void oboe_bson_fatal( int ok );
217
- int oboe_bson_fatal_msg( int ok, const char* msg );
218
-
219
- MONGO_EXTERN_C_END
220
- #endif