Skip to content

Commit

Permalink
Separate out IoDispatcher
Browse files Browse the repository at this point in the history
  • Loading branch information
rnburn authored and Johannes Tax committed Jul 7, 2020
1 parent c120b8d commit 61b6b94
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 27 deletions.
11 changes: 0 additions & 11 deletions sdk/include/opentelemetry/sdk/event/dispatcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,6 @@ class Dispatcher
public:
virtual ~Dispatcher() = default;

/**
* Create an event that triggers when a file descriptor becomes readable or writable.
* @param file_descriptor the file descriptor to monitor
* @param callback the callback to call when event triggers
* @param events the events to monitor
* @return a handle for the event
*/
virtual std::unique_ptr<FileEvent> CreateFileEvent(FileDescriptor file_descriptor,
FileReadyCallback callback,
uint32_t events) noexcept = 0;

/**
* Create a timer event.
* @callback the callback to call when the event triggers
Expand Down
26 changes: 26 additions & 0 deletions sdk/include/opentelemetry/sdk/event/io_dispatcher.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#pragma once

#include "opentelemetry/sdk/event/dispatcher.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace event
{
class IoDispatcher : public Dispatcher
{
public:
/**
* Create an event that triggers when a file descriptor becomes readable or writable.
* @param file_descriptor the file descriptor to monitor
* @param callback the callback to call when event triggers
* @param events the events to monitor
* @return a handle for the event
*/
virtual std::unique_ptr<FileEvent> CreateFileEvent(FileDescriptor file_descriptor,
FileReadyCallback callback,
uint32_t events) noexcept = 0;
};
} // namespace event
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "src/event/libevent/dispatcher.h"
#include "src/event/libevent/io_dispatcher.h"
#include "src/event/libevent/file_event.h"
#include "src/event/libevent/timer.h"

Expand All @@ -11,25 +11,25 @@ namespace event
{
namespace libevent
{
std::unique_ptr<event::FileEvent> Dispatcher::CreateFileEvent(FileDescriptor file_descriptor,
FileReadyCallback callback,
uint32_t events) noexcept
std::unique_ptr<event::FileEvent> IoDispatcher::CreateFileEvent(FileDescriptor file_descriptor,
FileReadyCallback callback,
uint32_t events) noexcept
{
return std::unique_ptr<event::FileEvent>{
new (std::nothrow) FileEvent{event_base_, file_descriptor, events, callback}};
}

std::unique_ptr<event::Timer> Dispatcher::CreateTimer(TimerCallback callback) noexcept
std::unique_ptr<event::Timer> IoDispatcher::CreateTimer(TimerCallback callback) noexcept
{
return std::unique_ptr<event::Timer>{new (std::nothrow) Timer{event_base_, callback}};
}

void Dispatcher::Exit() noexcept
void IoDispatcher::Exit() noexcept
{
event_base_.LoopBreak();
}

void Dispatcher::Run() noexcept
void IoDispatcher::Run() noexcept
{
event_base_.Dispatch();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once

#include "opentelemetry/sdk/event/dispatcher.h"
#include "opentelemetry/sdk/event/io_dispatcher.h"
#include "opentelemetry/version.h"

#include "src/event/libevent/event_base.h"
Expand All @@ -12,7 +12,7 @@ namespace event
{
namespace libevent
{
class Dispatcher final : public event::Dispatcher
class IoDispatcher final : public event::IoDispatcher
{
public:
// Dispatcher
Expand Down
4 changes: 2 additions & 2 deletions sdk/test/event/libevent/BUILD
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cc_test(
name = "dispatcher_test",
name = "io_dispatcher_test",
srcs = [
"dispatcher_test.cc",
"io_dispatcher_test.cc",
],
linkstatic = 1,
deps = [
Expand Down
2 changes: 1 addition & 1 deletion sdk/test/event/libevent/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
foreach(testname dispatcher_test)
foreach(testname io_dispatcher_test)
add_executable(${testname} "${testname}.cc")
target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT} opentelemetry_event_libevent)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#include "src/event/libevent/dispatcher.h"
#include "src/event/libevent/io_dispatcher.h"

#include <chrono>

#include <gtest/gtest.h>
using opentelemetry::sdk::event::Timer;
using opentelemetry::sdk::event::libevent::Dispatcher;
using opentelemetry::sdk::event::libevent::IoDispatcher;

TEST(DispatcherTest, Timer)
{
Dispatcher dispatcher;
IoDispatcher dispatcher;
std::chrono::steady_clock::time_point t1, t2;
auto timer = dispatcher.CreateTimer([&] { t2 = std::chrono::steady_clock::now(); });
timer->EnableTimer(std::chrono::milliseconds{100});
Expand All @@ -21,7 +21,7 @@ TEST(DispatcherTest, Timer)

TEST(DispatcherTest, Exit)
{
Dispatcher dispatcher;
IoDispatcher dispatcher;
std::unique_ptr<Timer> timer;
auto f = [&] {
timer->EnableTimer(std::chrono::milliseconds{1});
Expand Down

0 comments on commit 61b6b94

Please sign in to comment.