Home | History | Annotate | Download | only in base
      1 /*
      2  *  Copyright 2007 The WebRTC Project Authors. All rights reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 // A libjingle compatible SocketServer for OSX/iOS/Cocoa.
     12 
     13 #ifndef WEBRTC_BASE_MACCOCOASOCKETSERVER_H_
     14 #define WEBRTC_BASE_MACCOCOASOCKETSERVER_H_
     15 
     16 #include "webrtc/base/macsocketserver.h"
     17 
     18 #ifdef __OBJC__
     19 @class NSTimer, MacCocoaSocketServerHelperRtc;
     20 #else
     21 class NSTimer;
     22 class MacCocoaSocketServerHelperRtc;
     23 #endif
     24 
     25 namespace rtc {
     26 
     27 // A socketserver implementation that wraps the main cocoa
     28 // application loop accessed through [NSApp run].
     29 class MacCocoaSocketServer : public MacBaseSocketServer {
     30  public:
     31   explicit MacCocoaSocketServer();
     32   ~MacCocoaSocketServer() override;
     33 
     34   bool Wait(int cms, bool process_io) override;
     35   void WakeUp() override;
     36 
     37  private:
     38   MacCocoaSocketServerHelperRtc* helper_;
     39   NSTimer* timer_;  // Weak.
     40   // The count of how many times we're inside the NSApplication main loop.
     41   int run_count_;
     42 
     43   RTC_DISALLOW_COPY_AND_ASSIGN(MacCocoaSocketServer);
     44 };
     45 
     46 }  // namespace rtc
     47 
     48 #endif  // WEBRTC_BASE_MACCOCOASOCKETSERVER_H_
     49