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_ 38