• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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   virtual ~MacCocoaSocketServer();
33 
34   virtual bool Wait(int cms, bool process_io);
35   virtual void WakeUp();
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   DISALLOW_EVIL_CONSTRUCTORS(MacCocoaSocketServer);
44 };
45 
46 }  // namespace rtc
47 
48 #endif  // WEBRTC_BASE_MACCOCOASOCKETSERVER_H_
49