Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(289)

Unified Diff: webrtc/base/maccocoasocketserver.mm

Issue 2369013002: Delete macsocketserver.h and related files. (Closed)
Patch Set: Drop macsocketserver_unittest.cc. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/base/maccocoasocketserver.mm
diff --git a/webrtc/base/maccocoasocketserver.mm b/webrtc/base/maccocoasocketserver.mm
deleted file mode 100644
index 034737ebccc8128d0528312aa2263a59bde0e58c..0000000000000000000000000000000000000000
--- a/webrtc/base/maccocoasocketserver.mm
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright 2012 The WebRTC Project Authors. All rights reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#import "webrtc/base/maccocoasocketserver.h"
-
-#import <Foundation/Foundation.h>
-#import <AppKit/AppKit.h>
-
-#include "webrtc/base/scoped_autorelease_pool.h"
-
-// MacCocoaSocketServerHelperRtc serves as a delegate to NSMachPort or a target for
-// a timeout.
-@interface MacCocoaSocketServerHelperRtc : NSObject {
- // This is a weak reference. This works fine since the
- // rtc::MacCocoaSocketServer owns this object.
- rtc::MacCocoaSocketServer* socketServer_; // Weak.
-}
-@end
-
-@implementation MacCocoaSocketServerHelperRtc
-- (id)initWithSocketServer:(rtc::MacCocoaSocketServer*)ss {
- self = [super init];
- if (self) {
- socketServer_ = ss;
- }
- return self;
-}
-
-- (void)timerFired:(NSTimer*)timer {
- socketServer_->WakeUp();
-}
-
-- (void)breakMainloop {
- [NSApp stop:self];
- // NSApp stop only exits after finishing processing of the
- // current event. Since we're potentially in a timer callback
- // and not an NSEvent handler, we need to trigger a dummy one
- // and turn the loop over. We may be able to skip this if we're
- // on the ss' thread and not inside the app loop already.
- NSEvent* event = [NSEvent otherEventWithType:NSApplicationDefined
- location:NSMakePoint(0,0)
- modifierFlags:0
- timestamp:0
- windowNumber:0
- context:nil
- subtype:0
- data1:0
- data2:0];
- [NSApp postEvent:event atStart:NO];
-}
-@end
-
-namespace rtc {
-
-MacCocoaSocketServer::MacCocoaSocketServer() {
- helper_ = [[MacCocoaSocketServerHelperRtc alloc] initWithSocketServer:this];
- timer_ = nil;
- run_count_ = 0;
-
- // Initialize the shared NSApplication
- [NSApplication sharedApplication];
-}
-
-MacCocoaSocketServer::~MacCocoaSocketServer() {
- [timer_ invalidate];
- [timer_ release];
- [helper_ release];
-}
-
-// ::Wait is reentrant, for example when blocking on another thread while
-// responding to I/O. Calls to [NSApp] MUST be made from the main thread
-// only!
-bool MacCocoaSocketServer::Wait(int cms, bool process_io) {
- rtc::ScopedAutoreleasePool pool;
- if (!process_io && cms == 0) {
- // No op.
- return true;
- }
- if ([NSApp isRunning]) {
- // Only allow reentrant waiting if we're in a blocking send.
- ASSERT(!process_io && cms == kForever);
- }
-
- if (!process_io) {
- // No way to listen to common modes and not get socket events, unless
- // we disable each one's callbacks.
- EnableSocketCallbacks(false);
- }
-
- if (kForever != cms) {
- // Install a timer that fires wakeup after cms has elapsed.
- timer_ =
- [NSTimer scheduledTimerWithTimeInterval:cms / 1000.0
- target:helper_
- selector:@selector(timerFired:)
- userInfo:nil
- repeats:NO];
- [timer_ retain];
- }
-
- // Run until WakeUp is called, which will call stop and exit this loop.
- run_count_++;
- [NSApp run];
- run_count_--;
-
- if (!process_io) {
- // Reenable them. Hopefully this won't cause spurious callbacks or
- // missing ones while they were disabled.
- EnableSocketCallbacks(true);
- }
-
- return true;
-}
-
-// Can be called from any thread. Post a message back to the main thread to
-// break out of the NSApp loop.
-void MacCocoaSocketServer::WakeUp() {
- if (timer_ != nil) {
- [timer_ invalidate];
- [timer_ release];
- timer_ = nil;
- }
-
- // [NSApp isRunning] returns unexpected results when called from another
- // thread. Maintain our own count of how many times to break the main loop.
- if (run_count_ > 0) {
- [helper_ performSelectorOnMainThread:@selector(breakMainloop)
- withObject:nil
- waitUntilDone:false];
- }
-}
-
-} // namespace rtc

Powered by Google App Engine
This is Rietveld 408576698