You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2014/12/02 19:46:56 UTC
mesos git commit: Renamed poll.cpp to libev_poll.cpp.
Repository: mesos
Updated Branches:
refs/heads/master 7467f6591 -> bf977ec84
Renamed poll.cpp to libev_poll.cpp.
Review: https://reviews.apache.org/r/28314
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/bf977ec8
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/bf977ec8
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/bf977ec8
Branch: refs/heads/master
Commit: bf977ec8436670fb8d7280813abd3e9e38119975
Parents: 7467f65
Author: Joris Van Remoortere <jo...@gmail.com>
Authored: Tue Dec 2 10:46:45 2014 -0800
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Tue Dec 2 10:46:45 2014 -0800
----------------------------------------------------------------------
3rdparty/libprocess/Makefile.am | 2 +-
3rdparty/libprocess/src/libev_poll.cpp | 129 ++++++++++++++++++++++++++++
3rdparty/libprocess/src/poll.cpp | 129 ----------------------------
3 files changed, 130 insertions(+), 130 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/bf977ec8/3rdparty/libprocess/Makefile.am
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/Makefile.am b/3rdparty/libprocess/Makefile.am
index aebd281..75870ac 100644
--- a/3rdparty/libprocess/Makefile.am
+++ b/3rdparty/libprocess/Makefile.am
@@ -41,9 +41,9 @@ libprocess_la_SOURCES = \
src/latch.cpp \
src/libev.hpp \
src/libev.cpp \
+ src/libev_poll.cpp \
src/metrics/metrics.cpp \
src/pid.cpp \
- src/poll.cpp \
src/process.cpp \
src/process_reference.hpp \
src/reap.cpp \
http://git-wip-us.apache.org/repos/asf/mesos/blob/bf977ec8/3rdparty/libprocess/src/libev_poll.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/libev_poll.cpp b/3rdparty/libprocess/src/libev_poll.cpp
new file mode 100644
index 0000000..324e4dd
--- /dev/null
+++ b/3rdparty/libprocess/src/libev_poll.cpp
@@ -0,0 +1,129 @@
+#include <ev.h>
+
+#include <process/future.hpp>
+#include <process/process.hpp> // For process::initialize.
+
+#include <stout/lambda.hpp>
+#include <stout/memory.hpp>
+
+#include "libev.hpp"
+
+namespace process {
+
+// Data necessary for polling so we can discard polling and actually
+// stop it in the event loop.
+struct Poll
+{
+ Poll()
+ {
+ // Need to explicitly instantiate the watchers.
+ watcher.io.reset(new ev_io());
+ watcher.async.reset(new ev_async());
+ }
+
+ // An I/O watcher for checking for readability or writeability and
+ // an async watcher for being able to discard the polling.
+ struct {
+ memory::shared_ptr<ev_io> io;
+ memory::shared_ptr<ev_async> async;
+ } watcher;
+
+ Promise<short> promise;
+};
+
+
+// Event loop callback when I/O is ready on polling file descriptor.
+void polled(struct ev_loop* loop, ev_io* watcher, int revents)
+{
+ Poll* poll = (Poll*) watcher->data;
+
+ ev_io_stop(loop, poll->watcher.io.get());
+
+ // Stop the async watcher (also clears if pending so 'discard_poll'
+ // will not get invoked and we can delete 'poll' here).
+ ev_async_stop(loop, poll->watcher.async.get());
+
+ poll->promise.set(revents);
+
+ delete poll;
+}
+
+
+// Event loop callback when future associated with polling file
+// descriptor has been discarded.
+void discard_poll(struct ev_loop* loop, ev_async* watcher, int revents)
+{
+ Poll* poll = (Poll*) watcher->data;
+
+ // Check and see if we have a pending 'polled' callback and if so
+ // let it "win".
+ if (ev_is_pending(poll->watcher.io.get())) {
+ return;
+ }
+
+ ev_async_stop(loop, poll->watcher.async.get());
+
+ // Stop the I/O watcher (but note we check if pending above) so it
+ // won't get invoked and we can delete 'poll' here.
+ ev_io_stop(loop, poll->watcher.io.get());
+
+ poll->promise.discard();
+
+ delete poll;
+}
+
+
+namespace io {
+namespace internal {
+
+// Helper/continuation of 'poll' on future discard.
+void _poll(const memory::shared_ptr<ev_async>& async)
+{
+ ev_async_send(loop, async.get());
+}
+
+
+Future<short> poll(int fd, short events)
+{
+ Poll* poll = new Poll();
+
+ // Have the watchers data point back to the struct.
+ poll->watcher.async->data = poll;
+ poll->watcher.io->data = poll;
+
+ // Get a copy of the future to avoid any races with the event loop.
+ Future<short> future = poll->promise.future();
+
+ // Initialize and start the async watcher.
+ ev_async_init(poll->watcher.async.get(), discard_poll);
+ ev_async_start(loop, poll->watcher.async.get());
+
+ // Make sure we stop polling if a discard occurs on our future.
+ // Note that it's possible that we'll invoke '_poll' when someone
+ // does a discard even after the polling has already completed, but
+ // in this case while we will interrupt the event loop since the
+ // async watcher has already been stopped we won't cause
+ // 'discard_poll' to get invoked.
+ future.onDiscard(lambda::bind(&_poll, poll->watcher.async));
+
+ // Initialize and start the I/O watcher.
+ ev_io_init(poll->watcher.io.get(), polled, fd, events);
+ ev_io_start(loop, poll->watcher.io.get());
+
+ return future;
+}
+
+} // namespace internal {
+
+
+Future<short> poll(int fd, short events)
+{
+ process::initialize();
+
+ // TODO(benh): Check if the file descriptor is non-blocking?
+
+ return run_in_event_loop<short>(lambda::bind(&internal::poll, fd, events));
+}
+
+} // namespace io {
+} // namespace process {
http://git-wip-us.apache.org/repos/asf/mesos/blob/bf977ec8/3rdparty/libprocess/src/poll.cpp
----------------------------------------------------------------------
diff --git a/3rdparty/libprocess/src/poll.cpp b/3rdparty/libprocess/src/poll.cpp
deleted file mode 100644
index 324e4dd..0000000
--- a/3rdparty/libprocess/src/poll.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-#include <ev.h>
-
-#include <process/future.hpp>
-#include <process/process.hpp> // For process::initialize.
-
-#include <stout/lambda.hpp>
-#include <stout/memory.hpp>
-
-#include "libev.hpp"
-
-namespace process {
-
-// Data necessary for polling so we can discard polling and actually
-// stop it in the event loop.
-struct Poll
-{
- Poll()
- {
- // Need to explicitly instantiate the watchers.
- watcher.io.reset(new ev_io());
- watcher.async.reset(new ev_async());
- }
-
- // An I/O watcher for checking for readability or writeability and
- // an async watcher for being able to discard the polling.
- struct {
- memory::shared_ptr<ev_io> io;
- memory::shared_ptr<ev_async> async;
- } watcher;
-
- Promise<short> promise;
-};
-
-
-// Event loop callback when I/O is ready on polling file descriptor.
-void polled(struct ev_loop* loop, ev_io* watcher, int revents)
-{
- Poll* poll = (Poll*) watcher->data;
-
- ev_io_stop(loop, poll->watcher.io.get());
-
- // Stop the async watcher (also clears if pending so 'discard_poll'
- // will not get invoked and we can delete 'poll' here).
- ev_async_stop(loop, poll->watcher.async.get());
-
- poll->promise.set(revents);
-
- delete poll;
-}
-
-
-// Event loop callback when future associated with polling file
-// descriptor has been discarded.
-void discard_poll(struct ev_loop* loop, ev_async* watcher, int revents)
-{
- Poll* poll = (Poll*) watcher->data;
-
- // Check and see if we have a pending 'polled' callback and if so
- // let it "win".
- if (ev_is_pending(poll->watcher.io.get())) {
- return;
- }
-
- ev_async_stop(loop, poll->watcher.async.get());
-
- // Stop the I/O watcher (but note we check if pending above) so it
- // won't get invoked and we can delete 'poll' here.
- ev_io_stop(loop, poll->watcher.io.get());
-
- poll->promise.discard();
-
- delete poll;
-}
-
-
-namespace io {
-namespace internal {
-
-// Helper/continuation of 'poll' on future discard.
-void _poll(const memory::shared_ptr<ev_async>& async)
-{
- ev_async_send(loop, async.get());
-}
-
-
-Future<short> poll(int fd, short events)
-{
- Poll* poll = new Poll();
-
- // Have the watchers data point back to the struct.
- poll->watcher.async->data = poll;
- poll->watcher.io->data = poll;
-
- // Get a copy of the future to avoid any races with the event loop.
- Future<short> future = poll->promise.future();
-
- // Initialize and start the async watcher.
- ev_async_init(poll->watcher.async.get(), discard_poll);
- ev_async_start(loop, poll->watcher.async.get());
-
- // Make sure we stop polling if a discard occurs on our future.
- // Note that it's possible that we'll invoke '_poll' when someone
- // does a discard even after the polling has already completed, but
- // in this case while we will interrupt the event loop since the
- // async watcher has already been stopped we won't cause
- // 'discard_poll' to get invoked.
- future.onDiscard(lambda::bind(&_poll, poll->watcher.async));
-
- // Initialize and start the I/O watcher.
- ev_io_init(poll->watcher.io.get(), polled, fd, events);
- ev_io_start(loop, poll->watcher.io.get());
-
- return future;
-}
-
-} // namespace internal {
-
-
-Future<short> poll(int fd, short events)
-{
- process::initialize();
-
- // TODO(benh): Check if the file descriptor is non-blocking?
-
- return run_in_event_loop<short>(lambda::bind(&internal::poll, fd, events));
-}
-
-} // namespace io {
-} // namespace process {