Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / tools / android / forwarder2 / pipe_notifier.h
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef TOOLS_ANDROID_FORWARDER2_PIPE_NOTIFIER_H_
6 #define TOOLS_ANDROID_FORWARDER2_PIPE_NOTIFIER_H_
7
8 #include "base/basictypes.h"
9
10 namespace forwarder2 {
11
12 // Helper class used to create a unix pipe that sends notifications to the
13 // |receiver_fd_| file descriptor when called |Notify()|.  This should be used
14 // by the main thread to notify other threads that it must exit.
15 // The |receiver_fd_| can be put into a fd_set and used in a select together
16 // with a socket waiting to accept or read.
17 class PipeNotifier {
18  public:
19   PipeNotifier();
20   ~PipeNotifier();
21
22   bool Notify();
23
24   int receiver_fd() const { return receiver_fd_; }
25
26   void Reset();
27
28  private:
29   int sender_fd_;
30   int receiver_fd_;
31
32   DISALLOW_COPY_AND_ASSIGN(PipeNotifier);
33 };
34
35 }  // namespace forwarder
36
37 #endif  // TOOLS_ANDROID_FORWARDER2_PIPE_NOTIFIER_H_