diff --git a/README.md b/README.md index 2903b02bb..99db02fc2 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ This includes shared libraries, used by SDKs and other tools, as well as SDKs. ## Organization | Directory | Description | - |----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | .github | Contains CI and release process workflows and actions. | | examples | Contains examples (hello-world style). | | contract-tests | Contains contract test service. | diff --git a/contract-tests/client-contract-tests/src/main.cpp b/contract-tests/client-contract-tests/src/main.cpp index adebae774..bf755f418 100644 --- a/contract-tests/client-contract-tests/src/main.cpp +++ b/contract-tests/client-contract-tests/src/main.cpp @@ -41,7 +41,7 @@ int main(int argc, char* argv[]) { srv.add_capability("service-endpoints"); srv.add_capability("tags"); srv.add_capability("client-independence"); - srv.add_capability("inline-context"); + srv.add_capability("inline-context-all"); srv.add_capability("anonymous-redaction"); srv.add_capability("tls:verify-peer"); srv.add_capability("tls:skip-verify-peer"); diff --git a/contract-tests/server-contract-tests/src/main.cpp b/contract-tests/server-contract-tests/src/main.cpp index 2b8e1316e..1e76c5224 100644 --- a/contract-tests/server-contract-tests/src/main.cpp +++ b/contract-tests/server-contract-tests/src/main.cpp @@ -40,7 +40,7 @@ int main(int argc, char* argv[]) { srv.add_capability("service-endpoints"); srv.add_capability("tags"); srv.add_capability("server-side-polling"); - srv.add_capability("inline-context"); + srv.add_capability("inline-context-all"); srv.add_capability("anonymous-redaction"); srv.add_capability("tls:verify-peer"); srv.add_capability("tls:skip-verify-peer"); diff --git a/libs/client-sdk/src/client_impl.cpp b/libs/client-sdk/src/client_impl.cpp index a37f5fc78..374f92e57 100644 --- a/libs/client-sdk/src/client_impl.cpp +++ b/libs/client-sdk/src/client_impl.cpp @@ -221,9 +221,7 @@ void ClientImpl::TrackInternal(std::string event_name, std::optional data, std::optional metric_value) { event_processor_->SendAsync(events::TrackEventParams{ - std::chrono::system_clock::now(), std::move(event_name), - ReadContextSynchronized( - [](Context const& c) { return c.KindsToKeys(); }), + std::chrono::system_clock::now(), std::move(event_name), context_, std::move(data), metric_value}); } diff --git a/libs/internal/include/launchdarkly/events/data/common_events.hpp b/libs/internal/include/launchdarkly/events/data/common_events.hpp index 1d88e22cc..6b1fc8803 100644 --- a/libs/internal/include/launchdarkly/events/data/common_events.hpp +++ b/libs/internal/include/launchdarkly/events/data/common_events.hpp @@ -27,20 +27,19 @@ struct Date { struct TrackEventParams { Date creation_date; std::string key; - ContextKeys context_keys; + Context context; std::optional data; std::optional metric_value; }; -struct ServerTrackEventParams { - TrackEventParams base; - Context context; +struct TrackEvent { + Date creation_date; + std::string key; + EventContext context; + std::optional data; + std::optional metric_value; }; -using ClientTrackEventParams = TrackEventParams; - -using TrackEvent = TrackEventParams; - struct IdentifyEventParams { Date creation_date; Context context; diff --git a/libs/internal/include/launchdarkly/events/data/events.hpp b/libs/internal/include/launchdarkly/events/data/events.hpp index af5a3a27f..5fe1c6d12 100644 --- a/libs/internal/include/launchdarkly/events/data/events.hpp +++ b/libs/internal/include/launchdarkly/events/data/events.hpp @@ -4,13 +4,12 @@ #include #include +#include "common_events.hpp" namespace launchdarkly::events { -using InputEvent = std::variant; +using InputEvent = + std::variant; using OutputEvent = std::variant AsioEventProcessor::Process( out.emplace_back(IdentifyEvent{event.creation_date, filter_.Filter(event.context)}); }, - [&](ClientTrackEventParams&& event) { - out.emplace_back(std::move(event)); - }, - [&](ServerTrackEventParams&& event) { + [&](TrackEventParams&& event) { if constexpr (std::is_same::value) { if (!context_key_cache_.Notice( event.context.CanonicalKey())) { out.emplace_back(server_side::IndexEvent{ - event.base.creation_date, + event.creation_date, filter_.Filter(event.context)}); } } - out.emplace_back(std::move(event.base)); + out.emplace_back(TrackEvent{ + event.creation_date, + event.key, + filter_.Filter(event.context), + event.data, + event.metric_value, + }); }}, std::move(input_event)); diff --git a/libs/internal/src/serialization/events/json_events.cpp b/libs/internal/src/serialization/events/json_events.cpp index 1269a0bf2..a68c253c4 100644 --- a/libs/internal/src/serialization/events/json_events.cpp +++ b/libs/internal/src/serialization/events/json_events.cpp @@ -1,6 +1,6 @@ +#include #include #include -#include namespace launchdarkly::events { void tag_invoke(boost::json::value_from_tag const& tag, @@ -83,7 +83,7 @@ void tag_invoke(boost::json::value_from_tag const& tag, obj.emplace("kind", "custom"); obj.emplace("creationDate", boost::json::value_from(event.creation_date)); obj.emplace("key", event.key); - obj.emplace("contextKeys", boost::json::value_from(event.context_keys)); + obj.emplace("context", event.context); if (event.data) { obj.emplace("data", boost::json::value_from(*event.data)); } diff --git a/libs/server-sdk/src/events/event_factory.cpp b/libs/server-sdk/src/events/event_factory.cpp index b781de018..24a5805ea 100644 --- a/libs/server-sdk/src/events/event_factory.cpp +++ b/libs/server-sdk/src/events/event_factory.cpp @@ -43,10 +43,9 @@ events::InputEvent EventFactory::Custom( std::string event_name, std::optional data, std::optional metric_value) const { - return events::ServerTrackEventParams{ - {now_(), std::move(event_name), ctx.KindsToKeys(), std::move(data), - metric_value}, - ctx}; + return events::TrackEventParams{now_(), std::move(event_name), + std::move(ctx), std::move(data), + metric_value}; } events::InputEvent EventFactory::FeatureRequest( diff --git a/libs/server-sdk/tests/event_scope_test.cpp b/libs/server-sdk/tests/event_scope_test.cpp index 4497d6bb3..8a2d945fd 100644 --- a/libs/server-sdk/tests/event_scope_test.cpp +++ b/libs/server-sdk/tests/event_scope_test.cpp @@ -69,5 +69,5 @@ TEST(EventScope, ForwardsCorrectEventTypes) { ASSERT_TRUE(processor.Kind(0)); ASSERT_TRUE(processor.Kind(1)); ASSERT_TRUE(processor.Kind(2)); - ASSERT_TRUE(processor.Kind(3)); + ASSERT_TRUE(processor.Kind(3)); }