1/*
2 *  Copyright 2015 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#import "RTCDispatcher.h"
12
13static dispatch_queue_t kCaptureSessionQueue = nil;
14
15@implementation RTCDispatcher {
16  dispatch_queue_t _captureSessionQueue;
17}
18
19+ (void)initialize {
20  static dispatch_once_t onceToken;
21  dispatch_once(&onceToken, ^{
22    kCaptureSessionQueue = dispatch_queue_create(
23        "org.webrtc.RTCDispatcherCaptureSession",
24        DISPATCH_QUEUE_SERIAL);
25  });
26}
27
28+ (void)dispatchAsyncOnType:(RTCDispatcherQueueType)dispatchType
29                      block:(dispatch_block_t)block {
30  dispatch_queue_t queue = [self dispatchQueueForType:dispatchType];
31  dispatch_async(queue, block);
32}
33
34#pragma mark - Private
35
36+ (dispatch_queue_t)dispatchQueueForType:(RTCDispatcherQueueType)dispatchType {
37  switch (dispatchType) {
38    case RTCDispatcherTypeMain:
39      return dispatch_get_main_queue();
40    case RTCDispatcherTypeCaptureSession:
41      return kCaptureSessionQueue;
42  }
43}
44
45@end
46
47