From da99da81c928765ddf4f1ef17f13b9897c3d23b5 Mon Sep 17 00:00:00 2001 From: Jon Hjelle Date: Wed, 20 Jan 2016 13:40:30 -0800 Subject: [PATCH] Update API for Objective-C RTCPeerConnectionFactory. BUG= R=jiayl@webrtc.org, tkchin@webrtc.org Review URL: https://codereview.webrtc.org/1558473002 . Patch from Jon Hjelle . Cr-Commit-Position: refs/heads/master@{#11326} --- webrtc/api/BUILD.gn | 3 ++ webrtc/api/api.gyp | 3 ++ .../objc/RTCPeerConnectionFactory+Private.h | 30 +++++++++++++++ webrtc/api/objc/RTCPeerConnectionFactory.h | 18 +++++++++ webrtc/api/objc/RTCPeerConnectionFactory.mm | 38 +++++++++++++++++++ webrtc/base/BUILD.gn | 2 + webrtc/base/base.gyp | 2 + webrtc/base/objc/RTCSSLAdapter.h | 18 +++++++++ webrtc/base/objc/RTCSSLAdapter.mm | 26 +++++++++++++ 9 files changed, 140 insertions(+) create mode 100644 webrtc/api/objc/RTCPeerConnectionFactory+Private.h create mode 100644 webrtc/api/objc/RTCPeerConnectionFactory.h create mode 100644 webrtc/api/objc/RTCPeerConnectionFactory.mm create mode 100644 webrtc/base/objc/RTCSSLAdapter.h create mode 100644 webrtc/base/objc/RTCSSLAdapter.mm diff --git a/webrtc/api/BUILD.gn b/webrtc/api/BUILD.gn index 26225c43a8..3775ffe013 100644 --- a/webrtc/api/BUILD.gn +++ b/webrtc/api/BUILD.gn @@ -35,6 +35,9 @@ if (is_ios) { #"objc/RTCMediaStreamTrack+Private.h", #"objc/RTCMediaStreamTrack.h", #"objc/RTCMediaStreamTrack.mm", + #"objc/RTCPeerConnectionFactory+Private.h", + #"objc/RTCPeerConnectionFactory.h", + #"objc/RTCPeerConnectionFactory.mm", #"objc/RTCVideoSource+Private.h", #"objc/RTCVideoSource.h", #"objc/RTCVideoSource.mm", diff --git a/webrtc/api/api.gyp b/webrtc/api/api.gyp index 87f90d9364..f957f5bad8 100644 --- a/webrtc/api/api.gyp +++ b/webrtc/api/api.gyp @@ -33,6 +33,9 @@ 'objc/RTCMediaStreamTrack.mm', 'objc/RTCOpenGLVideoRenderer.h', 'objc/RTCOpenGLVideoRenderer.mm', + 'objc/RTCPeerConnectionFactory+Private.h', + 'objc/RTCPeerConnectionFactory.h', + 'objc/RTCPeerConnectionFactory.mm', 'objc/RTCSessionDescription+Private.h', 'objc/RTCSessionDescription.h', 'objc/RTCSessionDescription.mm', diff --git a/webrtc/api/objc/RTCPeerConnectionFactory+Private.h b/webrtc/api/objc/RTCPeerConnectionFactory+Private.h new file mode 100644 index 0000000000..a5f2350ffa --- /dev/null +++ b/webrtc/api/objc/RTCPeerConnectionFactory+Private.h @@ -0,0 +1,30 @@ +/* + * Copyright 2015 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 "RTCPeerConnectionFactory.h" + +#include "talk/app/webrtc/peerconnectionfactory.h" +#include "webrtc/base/scoped_ref_ptr.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RTCPeerConnectionFactory () + +/** + * PeerConnectionFactoryInterface created and held by this + * RTCPeerConnectionFactory object. This is needed to pass to the underlying + * C++ APIs. + */ +@property(nonatomic, readonly) + rtc::scoped_refptr nativeFactory; + +@end + +NS_ASSUME_NONNULL_END diff --git a/webrtc/api/objc/RTCPeerConnectionFactory.h b/webrtc/api/objc/RTCPeerConnectionFactory.h new file mode 100644 index 0000000000..c427c1bb91 --- /dev/null +++ b/webrtc/api/objc/RTCPeerConnectionFactory.h @@ -0,0 +1,18 @@ +/* + * Copyright 2015 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface RTCPeerConnectionFactory : NSObject +@end + +NS_ASSUME_NONNULL_END diff --git a/webrtc/api/objc/RTCPeerConnectionFactory.mm b/webrtc/api/objc/RTCPeerConnectionFactory.mm new file mode 100644 index 0000000000..31f3dda640 --- /dev/null +++ b/webrtc/api/objc/RTCPeerConnectionFactory.mm @@ -0,0 +1,38 @@ +/* + * Copyright 2015 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 "RTCPeerConnectionFactory.h" + +#import "webrtc/api/objc/RTCPeerConnectionFactory+Private.h" + +@implementation RTCPeerConnectionFactory { + rtc::scoped_ptr _signalingThread; + rtc::scoped_ptr _workerThread; +} + +@synthesize nativeFactory = _nativeFactory; + +- (instancetype)init { + if ((self = [super init])) { + _signalingThread.reset(new rtc::Thread()); + BOOL result = _signalingThread->Start(); + NSAssert(result, @"Failed to start signaling thread."); + _workerThread.reset(new rtc::Thread()); + result = _workerThread->Start(); + NSAssert(result, @"Failed to start worker thread."); + + _nativeFactory = webrtc::CreatePeerConnectionFactory( + _workerThread.get(), _signalingThread.get(), nullptr, nullptr, nullptr); + NSAssert(_nativeFactory, @"Failed to initialize PeerConnectionFactory!"); + } + return self; +} + +@end diff --git a/webrtc/base/BUILD.gn b/webrtc/base/BUILD.gn index 0f7a3f2fbe..fa8ddff751 100644 --- a/webrtc/base/BUILD.gn +++ b/webrtc/base/BUILD.gn @@ -635,6 +635,8 @@ if (is_ios) { "objc/RTCDispatcher.m", "objc/RTCLogging.h", "objc/RTCLogging.mm", + "objc/RTCSSLAdapter.h", + "objc/RTCSSLAdapter.mm", ] } } diff --git a/webrtc/base/base.gyp b/webrtc/base/base.gyp index 3d2ef629d1..f862eae311 100644 --- a/webrtc/base/base.gyp +++ b/webrtc/base/base.gyp @@ -39,6 +39,8 @@ 'objc/RTCDispatcher.m', 'objc/RTCLogging.h', 'objc/RTCLogging.mm', + 'objc/RTCSSLAdapter.h', + 'objc/RTCSSLAdapter.mm', ], 'conditions': [ ['OS=="ios"', { diff --git a/webrtc/base/objc/RTCSSLAdapter.h b/webrtc/base/objc/RTCSSLAdapter.h new file mode 100644 index 0000000000..11ac8af08a --- /dev/null +++ b/webrtc/base/objc/RTCSSLAdapter.h @@ -0,0 +1,18 @@ +/* + * Copyright 2016 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 + +/** + * Initialize and clean up the SSL library. Failure is fatal. These call the + * corresponding functions in webrtc/base/ssladapter.h. + */ +BOOL RTCInitializeSSL(); +BOOL RTCCleanupSSL(); diff --git a/webrtc/base/objc/RTCSSLAdapter.mm b/webrtc/base/objc/RTCSSLAdapter.mm new file mode 100644 index 0000000000..c881a4487e --- /dev/null +++ b/webrtc/base/objc/RTCSSLAdapter.mm @@ -0,0 +1,26 @@ +/* + * Copyright 2016 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 "RTCSSLAdapter.h" + +#include "webrtc/base/checks.h" +#include "webrtc/base/ssladapter.h" + +BOOL RTCInitializeSSL() { + BOOL initialized = rtc::InitializeSSL(); + RTC_DCHECK(initialized); + return initialized; +} + +BOOL RTCCleanupSSL() { + BOOL cleanedUp = rtc::CleanupSSL(); + RTC_DCHECK(cleanedUp); + return cleanedUp; +}