gems: include vendored metrisk without hitime dependency

hitime is only needed for Metriks::Timer and requires native extensions.
Those do not compile with default settings under Ubuntu 26.04 or Alpine 3.24.
This commit is contained in:
cn authored and Christian Nicolai committed 2026-11-13 17:35:46 +01:00
1 parent 645469f41e
commit 7fa9f499e1
10 files changed
+502 -29

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
# Minimal pure-Ruby replacement for the 'atomic' gem, covering the exact API
# the vendored metriks code uses (Atomic.new, #value, #value=, #update,
# #compare_and_swap). Mutex-guarded instead of relying on a native extension.
module Metriks
class Atomic
def initialize(value = nil)
@value = value
@mutex = Mutex.new
end
def value
@mutex.synchronize { @value }
end
def value=(new_value)
@mutex.synchronize { @value = new_value }
end
def update
@mutex.synchronize { @value = yield(@value) }
end
def compare_and_swap(expected, new_value)
@mutex.synchronize do
if @value == expected
@value = new_value
true
else
false
end
end
end
end
end