Skip to content

Commit

Permalink
refactor: move json_errors, primitives, and value from internal to co…
Browse files Browse the repository at this point in the history
…mmon
  • Loading branch information
cwaldren-ld committed Oct 17, 2024
1 parent 1babc17 commit ba75eeb
Show file tree
Hide file tree
Showing 14 changed files with 40 additions and 12 deletions.
10 changes: 10 additions & 0 deletions libs/common/include/launchdarkly/bindings/c/value.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,16 @@ LDValue_GetString(LDValue val);
LD_EXPORT(unsigned int)
LDValue_Count(LDValue val);

/**
* Serializes the LDValue to a JSON value.
* @param val Target LDValue. Must not be NULL.
* @return A string containing the JSON representation of the LDValue. The
* string should be freed with @ref LDMemory_FreeString.
*
*/
LD_EXPORT(char*)
LDValue_SerializeJSON(LDValue val);

/**
* Obtain iterator over an array-type @ref LDValue, otherwise NULL.
*
Expand Down
4 changes: 4 additions & 0 deletions libs/common/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ file(GLOB HEADER_LIST CONFIGURE_DEPENDS
"${LaunchDarklyCommonSdk_SOURCE_DIR}/include/launchdarkly/data/*.hpp"
"${LaunchDarklyCommonSdk_SOURCE_DIR}/include/launchdarkly/logging/*.hpp"
"${LaunchDarklyCommonSdk_SOURCE_DIR}/include/launchdarkly/data_sources/*.hpp"
"${LaunchDarklyCommonSdk_SOURCE_DIR}/include/launchdarkly/data_sources/persistence/*.hpp"
"${LaunchDarklyCommonSdk_SOURCE_DIR}/include/launchdarkly/data_sources/serialization/*.hpp"
)

# Automatic library: static or dynamic based on user config.
Expand Down Expand Up @@ -53,6 +55,8 @@ add_library(${LIBNAME} OBJECT
bindings/c/memory_routines.cpp
bindings/c/data_source/error_info.cpp
bindings/c/logging/log_level.cpp
serialization/json_errors.cpp
serialization/json_value.cpp
log_level.cpp
config/persistence_builder.cpp
config/logging_builder.cpp
Expand Down
16 changes: 16 additions & 0 deletions libs/common/src/bindings/c/value.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
#include <launchdarkly/detail/unreachable.hpp>
#include <launchdarkly/value.hpp>

#include <launchdarkly/serialization/json_value.hpp>

#include <boost/json.hpp>

using launchdarkly::Value;

#define AS_VALUE(x) reinterpret_cast<Value*>(x)
Expand Down Expand Up @@ -95,6 +99,18 @@ LD_EXPORT(unsigned int) LDValue_Count(LDValue val) {
}
}

LD_EXPORT(char*) LDValue_SerializeJSON(LDValue val) {
LD_ASSERT_NOT_NULL(val);

auto const value = AS_VALUE(val);

auto boost_value = boost::json::value_from(*value);

std::string json = boost::json::serialize(boost_value);

return strdup(json.c_str());
}

LD_EXPORT(LDValue_ArrayIter) LDValue_ArrayIter_New(LDValue val) {
LD_ASSERT_NOT_NULL(val);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#include <boost/json.hpp>
#include <launchdarkly/detail/unreachable.hpp>
#include <launchdarkly/serialization/json_primitives.hpp>
#include <launchdarkly/serialization/json_value.hpp>
#include <launchdarkly/serialization/value_mapping.hpp>

#include <boost/json.hpp>

namespace launchdarkly {
// NOLINTBEGIN modernize-return-braced-init-list
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#pragma once

#include <launchdarkly/serialization/json_errors.hpp>
#include <launchdarkly/serialization/json_primitives.hpp>

#include <boost/core/ignore_unused.hpp>
Expand Down
2 changes: 0 additions & 2 deletions libs/internal/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,7 @@ add_library(${LIBNAME} OBJECT
serialization/events/json_events.cpp
serialization/json_attributes.cpp
serialization/json_context.cpp
serialization/json_errors.cpp
serialization/json_evaluation_reason.cpp
serialization/json_value.cpp
serialization/value_mapping.cpp
serialization/json_evaluation_result.cpp
serialization/json_sdk_data_set.cpp
Expand Down
2 changes: 1 addition & 1 deletion libs/internal/src/serialization/json_context.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include <launchdarkly/serialization/json_primitives.hpp>
#include <launchdarkly/context_builder.hpp>
#include <launchdarkly/serialization/json_attributes.hpp>
#include <launchdarkly/serialization/json_context.hpp>
#include <launchdarkly/serialization/json_primitives.hpp>
#include <launchdarkly/serialization/json_value.hpp>

#include <boost/core/ignore_unused.hpp>
Expand Down
4 changes: 2 additions & 2 deletions libs/internal/src/serialization/json_evaluation_result.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ void tag_invoke(boost::json::value_from_tag const& unused,
"debugEventsUntilDate",
std::chrono::duration_cast<std::chrono::milliseconds>(
evaluation_result.DebugEventsUntilDate()->time_since_epoch())
.count());
.count());
}

auto& detail = evaluation_result.Detail();
Expand All @@ -149,4 +149,4 @@ void tag_invoke(boost::json::value_from_tag const& unused,
obj.emplace("reason", reason_json);
}
}
} // namespace launchdarkly
} // namespace launchdarkly
5 changes: 3 additions & 2 deletions libs/internal/src/serialization/json_segment.cpp
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
#include <boost/core/ignore_unused.hpp>
#include <boost/json.hpp>
#include <launchdarkly/serialization/json_context_aware_reference.hpp>
#include <launchdarkly/serialization/json_primitives.hpp>
#include <launchdarkly/serialization/json_rule_clause.hpp>
#include <launchdarkly/serialization/json_segment.hpp>
#include <launchdarkly/serialization/value_mapping.hpp>

#include <boost/core/ignore_unused.hpp>
#include <boost/json.hpp>

namespace launchdarkly {

tl::expected<std::optional<data_model::Segment::Target>, JsonError> tag_invoke(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "polling_data_source.hpp"
#include "../../detail/payload_filter_validation/payload_filter_validation.hpp"

#include <launchdarkly/encoding/base_64.hpp>
#include <launchdarkly/network/http_error_messages.hpp>
Expand All @@ -10,8 +11,6 @@

#include <launchdarkly/server_side/config/builders/all_builders.hpp>

#include "../../detail/payload_filter_validation/payload_filter_validation.hpp"

#include <boost/json.hpp>

namespace launchdarkly::server_side::data_systems {
Expand Down

0 comments on commit ba75eeb

Please sign in to comment.