Home | History | Annotate | Download | only in net
      1 //
      2 // Copyright (C) 2014 The Android Open Source Project
      3 //
      4 // Licensed under the Apache License, Version 2.0 (the "License");
      5 // you may not use this file except in compliance with the License.
      6 // You may obtain a copy of the License at
      7 //
      8 //      http://www.apache.org/licenses/LICENSE-2.0
      9 //
     10 // Unless required by applicable law or agreed to in writing, software
     11 // distributed under the License is distributed on an "AS IS" BASIS,
     12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 // See the License for the specific language governing permissions and
     14 // limitations under the License.
     15 //
     16 
     17 #ifndef SHILL_NET_IO_INPUT_HANDLER_H_
     18 #define SHILL_NET_IO_INPUT_HANDLER_H_
     19 
     20 #include <base/message_loop/message_loop.h>
     21 
     22 #include "shill/net/io_handler.h"
     23 
     24 namespace shill {
     25 
     26 // Monitor file descriptor for reading.
     27 class IOInputHandler : public IOHandler,
     28                        public base::MessageLoopForIO::Watcher {
     29  public:
     30   IOInputHandler(int fd,
     31                  const InputCallback& input_callback,
     32                  const ErrorCallback& error_callback);
     33   ~IOInputHandler();
     34 
     35   void Start() override;
     36   void Stop() override;
     37 
     38  private:
     39   // base::MessageLoopForIO::Watcher methods.
     40   void OnFileCanReadWithoutBlocking(int fd) override;
     41   void OnFileCanWriteWithoutBlocking(int fd) override;
     42 
     43   int fd_;
     44   base::MessageLoopForIO::FileDescriptorWatcher fd_watcher_;
     45   InputCallback input_callback_;
     46   ErrorCallback error_callback_;
     47 };
     48 
     49 }  // namespace shill
     50 
     51 #endif  // SHILL_NET_IO_INPUT_HANDLER_H_
     52