diff --git a/reinforcement_learning/rlclientlib/azure_factories.cc b/reinforcement_learning/rlclientlib/azure_factories.cc new file mode 100644 index 00000000000..596fa6dd08e --- /dev/null +++ b/reinforcement_learning/rlclientlib/azure_factories.cc @@ -0,0 +1,64 @@ +#include "factory_resolver.h" +#include "constants.h" +#include "model_mgmt/restapi_data_transport.h" +#include "logger/event_logger.h" + +namespace reinforcement_learning { + namespace m = model_management; + namespace u = utility; + + int restapi_data_tranport_create(m::i_data_transport** retval, const u::configuration& config, i_trace* trace_logger, api_status* status); + int vw_model_create(m::i_model** retval, const u::configuration&, i_trace* trace_logger, api_status* status); + int observation_sender_create(i_sender** retval, const u::configuration&, error_callback_fn*, i_trace* trace_logger, api_status* status); + int interaction_sender_create(i_sender** retval, const u::configuration&, error_callback_fn*, i_trace* trace_logger, api_status* status); + int null_tracer_create(i_trace** retval, const u::configuration&, i_trace* trace_logger, api_status* status); + int console_tracer_create(i_trace** retval, const u::configuration&, i_trace* trace_logger, api_status* status); + + void register_azure_factories() { + data_transport_factory.register_type(value::AZURE_STORAGE_BLOB, restapi_data_tranport_create); + sender_factory.register_type(value::OBSERVATION_EH_SENDER, observation_sender_create); + sender_factory.register_type(value::INTERACTION_EH_SENDER, interaction_sender_create); + } + + int restapi_data_tranport_create(m::i_data_transport** retval, const u::configuration& config, i_trace* trace_logger, api_status* status) { + const auto uri = config.get(name::MODEL_BLOB_URI, nullptr); + if (uri == nullptr) { + api_status::try_update(status, error_code::http_uri_not_provided, error_code::http_uri_not_provided_s); + return error_code::http_uri_not_provided; + } + auto pret = new m::restapi_data_tranport(uri, trace_logger); + const auto scode = pret->check(status); + if (scode != error_code::success) { + delete pret; + return scode; + } + *retval = pret; + return error_code::success; + } + + int observation_sender_create(i_sender** retval, const u::configuration& cfg, error_callback_fn* _error_cb, i_trace* trace_logger, api_status* status) { + *retval = new eventhub_client( + cfg.get(name::OBSERVATION_EH_HOST, "localhost:8080"), + cfg.get(name::OBSERVATION_EH_KEY_NAME, ""), + cfg.get(name::OBSERVATION_EH_KEY, ""), + cfg.get(name::OBSERVATION_EH_NAME, "observation"), + cfg.get_int(name::OBSERVATION_EH_TASKS_LIMIT, 16), + trace_logger, + _error_cb, + cfg.get_bool(name::EH_TEST, false)); + return error_code::success; + } + + int interaction_sender_create(i_sender** retval, const u::configuration& cfg, error_callback_fn* _error_cb, i_trace* trace_logger, api_status* status) { + *retval = new eventhub_client( + cfg.get(name::INTERACTION_EH_HOST, "localhost:8080"), + cfg.get(name::INTERACTION_EH_KEY_NAME, ""), + cfg.get(name::INTERACTION_EH_KEY, ""), + cfg.get(name::INTERACTION_EH_NAME, "interaction"), + cfg.get_int(name::INTERACTION_EH_TASKS_LIMIT, 16), + trace_logger, + _error_cb, + cfg.get_bool(name::EH_TEST, false)); + return error_code::success; + } +} diff --git a/reinforcement_learning/rlclientlib/azure_factories.h b/reinforcement_learning/rlclientlib/azure_factories.h new file mode 100644 index 00000000000..f310aef1d75 --- /dev/null +++ b/reinforcement_learning/rlclientlib/azure_factories.h @@ -0,0 +1,5 @@ +#pragma once + +namespace reinforcement_learning { + void register_azure_factories(); +} diff --git a/reinforcement_learning/rlclientlib/rlclientlib.vcxproj b/reinforcement_learning/rlclientlib/rlclientlib.vcxproj index 8b5bd78977b..37be347fb77 100644 --- a/reinforcement_learning/rlclientlib/rlclientlib.vcxproj +++ b/reinforcement_learning/rlclientlib/rlclientlib.vcxproj @@ -1,219 +1,221 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - {C40E3263-B6FF-46D5-92F7-D67E6F9FCEDD} - Win32Proj - rlclientlib - 8.1 - rlclientlib - - - - StaticLibrary - true - v140 - Unicode - - - StaticLibrary - false - v140 - true - Unicode - - - StaticLibrary - true - v140 - Unicode - - - StaticLibrary - false - v140 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - NotUsing - Level3 - Disabled - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - true - $(SolutionDir)..\rapidjson\include;$(SolutionDir)..\reinforcement_learning\rlclientlib;$(SolutionDir)..\reinforcement_learning\include;$(SolutionDir)..\explore;%(AdditionalIncludeDirectories) - - - Windows - - - - - NotUsing - Level3 - Disabled - _DEBUG;_LIB;%(PreprocessorDefinitions) - true - $(SolutionDir)..\reinforcement_learning\ext_libs;$(SolutionDir)..\rapidjson\include;$(SolutionDir)..\reinforcement_learning\rlclientlib;$(SolutionDir)..\reinforcement_learning\include;$(SolutionDir)..\explore;%(AdditionalIncludeDirectories) - - - Windows - - - - - Level3 - NotUsing - MaxSpeed - true - true - WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - true - $(SolutionDir)..\rapidjson\include;$(SolutionDir)..\reinforcement_learning\rlclientlib;$(SolutionDir)..\reinforcement_learning\include;$(SolutionDir)..\explore;%(AdditionalIncludeDirectories) - - - Windows - true - true - - - - - Level3 - NotUsing - MaxSpeed - true - true - NDEBUG;_LIB;%(PreprocessorDefinitions) - true - $(SolutionDir)..\reinforcement_learning\ext_libs;$(SolutionDir)..\rapidjson\include;$(SolutionDir)..\reinforcement_learning\rlclientlib;$(SolutionDir)..\reinforcement_learning\include;$(SolutionDir)..\explore;%(AdditionalIncludeDirectories) - - - Windows - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {1e205806-7f80-47dd-a38d-fc08083f3593} - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {C40E3263-B6FF-46D5-92F7-D67E6F9FCEDD} + Win32Proj + rlclientlib + 8.1 + rlclientlib + + + + StaticLibrary + true + v140 + Unicode + + + StaticLibrary + false + v140 + true + Unicode + + + StaticLibrary + true + v140 + Unicode + + + StaticLibrary + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + NotUsing + Level3 + Disabled + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + $(SolutionDir)..\rapidjson\include;$(SolutionDir)..\reinforcement_learning\rlclientlib;$(SolutionDir)..\reinforcement_learning\include;$(SolutionDir)..\explore;%(AdditionalIncludeDirectories) + + + Windows + + + + + NotUsing + Level3 + Disabled + _DEBUG;_LIB;%(PreprocessorDefinitions) + true + $(SolutionDir)..\reinforcement_learning\ext_libs;$(SolutionDir)..\rapidjson\include;$(SolutionDir)..\reinforcement_learning\rlclientlib;$(SolutionDir)..\reinforcement_learning\include;$(SolutionDir)..\explore;%(AdditionalIncludeDirectories) + + + Windows + + + + + Level3 + NotUsing + MaxSpeed + true + true + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + $(SolutionDir)..\rapidjson\include;$(SolutionDir)..\reinforcement_learning\rlclientlib;$(SolutionDir)..\reinforcement_learning\include;$(SolutionDir)..\explore;%(AdditionalIncludeDirectories) + + + Windows + true + true + + + + + Level3 + NotUsing + MaxSpeed + true + true + NDEBUG;_LIB;%(PreprocessorDefinitions) + true + $(SolutionDir)..\reinforcement_learning\ext_libs;$(SolutionDir)..\rapidjson\include;$(SolutionDir)..\reinforcement_learning\rlclientlib;$(SolutionDir)..\reinforcement_learning\include;$(SolutionDir)..\explore;%(AdditionalIncludeDirectories) + + + Windows + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {1e205806-7f80-47dd-a38d-fc08083f3593} + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + \ No newline at end of file diff --git a/reinforcement_learning/rlclientlib/rlclientlib.vcxproj.filters b/reinforcement_learning/rlclientlib/rlclientlib.vcxproj.filters index e462d8011da..ca52d1695d7 100644 --- a/reinforcement_learning/rlclientlib/rlclientlib.vcxproj.filters +++ b/reinforcement_learning/rlclientlib/rlclientlib.vcxproj.filters @@ -25,6 +25,7 @@ + @@ -61,6 +62,7 @@ +