Index: third_party/grpc/src/core/iomgr/wakeup_fd_pipe.c |
diff --git a/third_party/WebKit/Source/core/css/FontFaceSetLoadEvent.h b/third_party/grpc/src/core/iomgr/wakeup_fd_pipe.c |
similarity index 50% |
copy from third_party/WebKit/Source/core/css/FontFaceSetLoadEvent.h |
copy to third_party/grpc/src/core/iomgr/wakeup_fd_pipe.c |
index da7407242133e4d68f8a047eedabb45ede1d83b7..80de181d9d1966e80c8aa20440fb164862a470b5 100644 |
--- a/third_party/WebKit/Source/core/css/FontFaceSetLoadEvent.h |
+++ b/third_party/grpc/src/core/iomgr/wakeup_fd_pipe.c |
@@ -1,5 +1,7 @@ |
/* |
- * Copyright (C) 2013 Google Inc. All rights reserved. |
+ * |
+ * Copyright 2015, Google Inc. |
+ * All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions are |
@@ -26,54 +28,70 @@ |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ * |
*/ |
-#ifndef FontFaceSetLoadEvent_h |
-#define FontFaceSetLoadEvent_h |
+#include <grpc/support/port_platform.h> |
-#include "core/css/FontFace.h" |
-#include "core/css/FontFaceSetLoadEventInit.h" |
-#include "core/dom/DOMError.h" |
-#include "core/events/Event.h" |
-#include "wtf/PassRefPtr.h" |
-#include "wtf/RefPtr.h" |
+#ifdef GPR_POSIX_WAKEUP_FD |
-namespace blink { |
+#include "src/core/iomgr/wakeup_fd_posix.h" |
-class FontFaceSetLoadEvent final : public Event { |
- DEFINE_WRAPPERTYPEINFO(); |
-public: |
- static FontFaceSetLoadEvent* create() |
- { |
- return new FontFaceSetLoadEvent(); |
- } |
+#include <errno.h> |
+#include <string.h> |
+#include <unistd.h> |
- static FontFaceSetLoadEvent* create(const AtomicString& type, const FontFaceSetLoadEventInit& initializer) |
- { |
- return new FontFaceSetLoadEvent(type, initializer); |
- } |
+#include "src/core/iomgr/socket_utils_posix.h" |
+#include <grpc/support/log.h> |
- static FontFaceSetLoadEvent* createForFontFaces(const AtomicString& type, const FontFaceArray& fontfaces = FontFaceArray()) |
- { |
- return new FontFaceSetLoadEvent(type, fontfaces); |
- } |
- |
- ~FontFaceSetLoadEvent() override; |
+static void pipe_init(grpc_wakeup_fd* fd_info) { |
+ int pipefd[2]; |
+ /* TODO(klempner): Make this nonfatal */ |
+ GPR_ASSERT(0 == pipe(pipefd)); |
+ GPR_ASSERT(grpc_set_socket_nonblocking(pipefd[0], 1)); |
+ GPR_ASSERT(grpc_set_socket_nonblocking(pipefd[1], 1)); |
+ fd_info->read_fd = pipefd[0]; |
+ fd_info->write_fd = pipefd[1]; |
+} |
- FontFaceArray fontfaces() const { return m_fontfaces; } |
+static void pipe_consume(grpc_wakeup_fd* fd_info) { |
+ char buf[128]; |
+ ssize_t r; |
- const AtomicString& interfaceName() const override; |
+ for (;;) { |
+ r = read(fd_info->read_fd, buf, sizeof(buf)); |
+ if (r > 0) continue; |
+ if (r == 0) return; |
+ switch (errno) { |
+ case EAGAIN: |
+ return; |
+ case EINTR: |
+ continue; |
+ default: |
+ gpr_log(GPR_ERROR, "error reading pipe: %s", strerror(errno)); |
+ return; |
+ } |
+ } |
+} |
- DECLARE_VIRTUAL_TRACE(); |
+static void pipe_wakeup(grpc_wakeup_fd* fd_info) { |
+ char c = 0; |
+ while (write(fd_info->write_fd, &c, 1) != 1 && errno == EINTR) |
+ ; |
+} |
-private: |
- FontFaceSetLoadEvent(); |
- FontFaceSetLoadEvent(const AtomicString&, const FontFaceArray&); |
- FontFaceSetLoadEvent(const AtomicString&, const FontFaceSetLoadEventInit&); |
+static void pipe_destroy(grpc_wakeup_fd* fd_info) { |
+ if (fd_info->read_fd != 0) close(fd_info->read_fd); |
+ if (fd_info->write_fd != 0) close(fd_info->write_fd); |
+} |
- FontFaceArray m_fontfaces; |
-}; |
+static int pipe_check_availability(void) { |
+ /* Assume that pipes are always available. */ |
+ return 1; |
+} |
-} // namespace blink |
+const grpc_wakeup_fd_vtable grpc_pipe_wakeup_fd_vtable = { |
+ pipe_init, pipe_consume, pipe_wakeup, pipe_destroy, |
+ pipe_check_availability}; |
-#endif // FontFaceSetLoadEvent_h |
+#endif /* GPR_POSIX_WAKUP_FD */ |