Index: webrtc/examples/objc/AppRTCDemo/ARDSignalingMessage.m |
diff --git a/webrtc/examples/objc/AppRTCDemo/ARDSignalingMessage.m b/webrtc/examples/objc/AppRTCDemo/ARDSignalingMessage.m |
index a5ca29576a0c0315194b00b938efc98e26d3be04..84c910f78f8a9dcc289129675256e9f786eb43a3 100644 |
--- a/webrtc/examples/objc/AppRTCDemo/ARDSignalingMessage.m |
+++ b/webrtc/examples/objc/AppRTCDemo/ARDSignalingMessage.m |
@@ -17,6 +17,7 @@ |
#import "RTCSessionDescription+JSON.h" |
static NSString const *kARDSignalingMessageTypeKey = @"type"; |
+static NSString const *kARDSignalingMessageCandidatesKey = @"candidates"; |
@implementation ARDSignalingMessage |
@@ -47,6 +48,18 @@ static NSString const *kARDSignalingMessageTypeKey = @"type"; |
RTCIceCandidate *candidate = |
[RTCIceCandidate candidateFromJSONDictionary:values]; |
message = [[ARDICECandidateMessage alloc] initWithCandidate:candidate]; |
+ } else if ([typeString isEqualToString:@"remove-candidates"]) { |
+ RTCLogInfo(@"Received remove-candidates message"); |
+ NSArray *jsonCandidates = values[kARDSignalingMessageCandidatesKey]; |
+ NSMutableArray<RTCIceCandidate *> *candidates = |
+ [NSMutableArray arrayWithCapacity:[jsonCandidates count]]; |
tkchin_webrtc
2016/05/16 20:48:58
dot syntax for properties. jsonCandidates.count
honghaiz3
2016/05/17 00:46:53
Done.
|
+ for (NSDictionary *jsonCandidate in jsonCandidates) { |
+ RTCIceCandidate *candidate = |
+ [RTCIceCandidate candidateFromJSONDictionary:jsonCandidate]; |
+ [candidates addObject:candidate]; |
+ } |
+ message = [[ARDICECandidatesRemovalMessage alloc] |
+ initWithRemovedCandidates:candidates]; |
tkchin_webrtc
2016/05/16 20:48:58
nit: Just move the entire thing to next line if it
honghaiz3
2016/05/17 00:46:53
It does not fit even if I move the entire thing to
|
} else if ([typeString isEqualToString:@"offer"] || |
[typeString isEqualToString:@"answer"]) { |
RTCSessionDescription *description = |
@@ -84,6 +97,43 @@ static NSString const *kARDSignalingMessageTypeKey = @"type"; |
@end |
+@implementation ARDICECandidatesRemovalMessage |
+ |
+@synthesize candidates = _candidates; |
+ |
+- (instancetype)initWithRemovedCandidates:( |
+ NSArray<RTCIceCandidate *> *)candidates { |
tkchin_webrtc
2016/05/16 20:48:58
nit: indent 4 from leftmost margin (so remove two
honghaiz3
2016/05/17 00:46:53
Done.
|
+ if (self = [super initWithType:kARDSignalingMessageTypeCandidatesRemoval]) { |
tkchin_webrtc
2016/05/16 20:48:58
May be worth tossing an assertion here. NSParamete
honghaiz3
2016/05/17 00:46:53
Done.
|
+ _candidates = candidates; |
+ } |
+ return self; |
+} |
+ |
+- (NSData *)JSONData { |
+ NSMutableArray *jsonCandidates = |
+ [NSMutableArray arrayWithCapacity:[_candidates count]]; |
tkchin_webrtc
2016/05/16 20:48:58
dot syntax for count
honghaiz3
2016/05/17 00:46:52
Done.
|
+ for (const RTCIceCandidate *candidate in _candidates) { |
tkchin_webrtc
2016/05/16 20:48:58
const qualifier not necessary
honghaiz3
2016/05/17 00:46:52
Done.
|
+ NSDictionary *jsonCandidate = [candidate JSONDictionary]; |
+ [jsonCandidates addObject:jsonCandidate]; |
+ } |
+ NSDictionary * json = @{ |
tkchin_webrtc
2016/05/16 20:48:58
*json
honghaiz3
2016/05/17 00:46:53
Done.
|
+ kARDSignalingMessageTypeKey : @"remove-candidates", |
+ kARDSignalingMessageCandidatesKey : jsonCandidates |
+ }; |
+ NSError *error = nil; |
+ NSData *data = |
+ [NSJSONSerialization dataWithJSONObject:json |
+ options:NSJSONWritingPrettyPrinted |
+ error:&error]; |
+ if (error) { |
+ RTCLogError(@"Error serializing JSON: %@", error); |
+ return nil; |
+ } |
+ return data; |
+} |
+ |
+@end |
+ |
@implementation ARDSessionDescriptionMessage |
@synthesize sessionDescription = _sessionDescription; |