Skip to content

Commit 6e9277a

Browse files
committed
Publish signalingDropped event
1 parent 6f00fd4 commit 6e9277a

20 files changed

+194
-4
lines changed

AmazonChimeSDK/AmazonChimeSDK.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,8 @@
290290
D8B836622E39A10F00179ABF /* IngestionEventConverterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8B836612E39A10D00179ABF /* IngestionEventConverterTests.swift */; };
291291
D8D8D9102B91579C00ECE0EE /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8D8D90F2B91579C00ECE0EE /* StringExtension.swift */; };
292292
D8D8D9122B915B0D00ECE0EE /* StringExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8D8D9112B915B0D00ECE0EE /* StringExtensionTests.swift */; };
293+
D8E0B4F42E4A8CB500AE70D5 /* VideoClientError.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8E0B4F32E4A8CB000AE70D5 /* VideoClientError.swift */; };
294+
D8E0B4F62E4BBD8900AE70D5 /* VideoClientErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8E0B4F52E4BBD7D00AE70D5 /* VideoClientErrorTests.swift */; };
293295
D8FE1FE629B9232400A62E72 /* AnyCodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8FE1FE529B9232400A62E72 /* AnyCodable.swift */; };
294296
ED300F2A284877AC00497568 /* LocalVideoConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED300F29284877AC00497568 /* LocalVideoConfiguration.swift */; };
295297
F81104AC276190AA003D17AD /* VideoPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = F81104A8276190A9003D17AD /* VideoPriority.swift */; };
@@ -602,6 +604,8 @@
602604
D8B836612E39A10D00179ABF /* IngestionEventConverterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IngestionEventConverterTests.swift; sourceTree = "<group>"; };
603605
D8D8D90F2B91579C00ECE0EE /* StringExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtension.swift; sourceTree = "<group>"; };
604606
D8D8D9112B915B0D00ECE0EE /* StringExtensionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensionTests.swift; sourceTree = "<group>"; };
607+
D8E0B4F32E4A8CB000AE70D5 /* VideoClientError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoClientError.swift; sourceTree = "<group>"; };
608+
D8E0B4F52E4BBD7D00AE70D5 /* VideoClientErrorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoClientErrorTests.swift; sourceTree = "<group>"; };
605609
D8FE1FE529B9232400A62E72 /* AnyCodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyCodable.swift; sourceTree = "<group>"; };
606610
ED300F29284877AC00497568 /* LocalVideoConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalVideoConfiguration.swift; sourceTree = "<group>"; };
607611
F81104A8276190A9003D17AD /* VideoPriority.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoPriority.swift; sourceTree = "<group>"; };
@@ -774,6 +778,7 @@
774778
00825F4923D90A2D00388D08 /* utils */ = {
775779
isa = PBXGroup;
776780
children = (
781+
D8E0B4F32E4A8CB000AE70D5 /* VideoClientError.swift */,
777782
D81D7BB62E45237600932348 /* PermissionError.swift */,
778783
CFA2A14F28074FE7008FDFF5 /* ResourceError.swift */,
779784
00825F4A23D90A5F00388D08 /* logger */,
@@ -1238,6 +1243,7 @@
12381243
5AE132CB23EB47B100BF5997 /* utils */ = {
12391244
isa = PBXGroup;
12401245
children = (
1246+
D8E0B4F52E4BBD7D00AE70D5 /* VideoClientErrorTests.swift */,
12411247
5AE1323023EA2FBC00BF5997 /* logger */,
12421248
5A6F8187246379D80031AE97 /* MediaErrorTests.swift */,
12431249
5AE76F31242044A6009C41FD /* PermissionErrorTests.swift */,
@@ -1636,6 +1642,7 @@
16361642
002C1FEA2649D5CD00C9B919 /* EventSender.swift in Sources */,
16371643
7C0D1BEF241ACC7B00280031 /* ActiveSpeakerDetectorFacade.swift in Sources */,
16381644
CFA2A15028074FE7008FDFF5 /* ResourceError.swift in Sources */,
1645+
D8E0B4F42E4A8CB500AE70D5 /* VideoClientError.swift in Sources */,
16391646
C49B5424247EFD2B002829F1 /* ConcurrentMutableSet.swift in Sources */,
16401647
7C0D1BF0241ACC7B00280031 /* ActiveSpeakerObserver.swift in Sources */,
16411648
C42A8A16253E35CD008419A6 /* VideoCaptureSource.swift in Sources */,
@@ -1858,6 +1865,7 @@
18581865
827847C7271D16E20071E7BE /* DefaultAudioVideoFacadeTests.swift in Sources */,
18591866
B491F3C824BFC761005CF109 /* DataMessageTests.swift in Sources */,
18601867
C67EA03026F7F17B0084C9B4 /* TranscriptionStatusTypeTests.swift in Sources */,
1868+
D8E0B4F62E4BBD8900AE70D5 /* VideoClientErrorTests.swift in Sources */,
18611869
5AE76F2F24204387009C41FD /* LogLevelTests.swift in Sources */,
18621870
C4A30010259E376A007CFABE /* DefaultContentShareVideoClientControllerTests.swift in Sources */,
18631871
5A0E7317242EA072006636AB /* MediaDeviceTests.swift in Sources */,

AmazonChimeSDK/AmazonChimeSDK/analytics/DefaultEventAnalyticsController.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ import Foundation
5050
.meetingEnded,
5151
.meetingStartFailed,
5252
.meetingStartSucceeded,
53-
.meetingReconnected:
53+
.meetingReconnected,
54+
.signalingDropped:
5455
var meetingStats = meetingStatsCollector.getMeetingStats()
5556
if name != .meetingReconnected {
5657
meetingStats.removeValue(forKey: EventAttributeName.meetingReconnectDurationMs)

AmazonChimeSDK/AmazonChimeSDK/analytics/EventAttributeName.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ import Foundation
6262
case videoInputError
6363
/// The error message that explains why the microphone failed.
6464
case audioInputError
65+
66+
/// The error message that explains why the signaling dropped
67+
case signalingDroppedError
6568

6669
public var description: String {
6770
switch self {
@@ -113,6 +116,8 @@ import Foundation
113116
return "audioInputError"
114117
case .videoInputError:
115118
return "videoInputError"
119+
case .signalingDroppedError:
120+
return "signalingDroppedError"
116121
}
117122
}
118123
}

AmazonChimeSDK/AmazonChimeSDK/analytics/EventName.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import Foundation
2626
case meetingFailed
2727
/// The meeting ended.
2828
case meetingEnded
29+
/// The WebSocket failed or closed with an error.
30+
case signalingDropped
2931
// unknown
3032
case unknown
3133

@@ -47,6 +49,8 @@ import Foundation
4749
return "meetingFailed"
4850
case .meetingEnded:
4951
return "meetingEnded"
52+
case .signalingDropped:
53+
return "signalingDropped"
5054
case .unknown:
5155
return "unknown"
5256
}
@@ -70,6 +74,8 @@ import Foundation
7074
return .meetingFailed
7175
case "meetingEnded":
7276
return .meetingEnded
77+
case "signalingDropped":
78+
return .signalingDropped
7379
default:
7480
return .unknown
7581
}

AmazonChimeSDK/AmazonChimeSDK/analytics/MeetingHistoryEventName.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import Foundation
3131
case meetingFailed
3232
/// The meeting reconnected.
3333
case meetingReconnected
34+
/// The WebSocket failed or closed with an error.
35+
case signalingDropped
3436
/// unknown
3537
case unknown
3638

@@ -56,6 +58,8 @@ import Foundation
5658
return "meetingFailed"
5759
case .meetingReconnected:
5860
return "meetingReconnected"
61+
case .signalingDropped:
62+
return "signalingDropped"
5963
case .unknown:
6064
return "unknown"
6165
}

AmazonChimeSDK/AmazonChimeSDK/ingestion/IngestionEventConverter.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ private typealias EAName = EventAttributeName
3636
if let audioError = eventAttributes[EventAttributeName.audioInputError] as? Error {
3737
audioErrorStr = String(describing: audioError)
3838
}
39+
40+
var signalingDroppedErrorStr: String?
41+
if let signalingDroppedError = eventAttributes[EventAttributeName.signalingDroppedError] as? Error {
42+
signalingDroppedErrorStr = String(describing: signalingDroppedError)
43+
}
3944

4045
var attributes = [String:AnyCodable]()
4146
attributes[EAName.timestampMs.description] = AnyCodable(eventAttributes[EAName.timestampMs])
@@ -53,6 +58,7 @@ private typealias EAName = EventAttributeName
5358
attributes[EAName.retryCount.description] = AnyCodable(eventAttributes[EAName.retryCount])
5459
attributes[EAName.videoInputError.description] = AnyCodable(videoErrorStr)
5560
attributes[EAName.audioInputError.description] = AnyCodable(audioErrorStr)
61+
attributes[EAName.signalingDroppedError.description] = AnyCodable(signalingDroppedErrorStr)
5662

5763
clientConfig.metadataAttributes.forEach({ (key: String, value: Any) in
5864
attributes[key] = AnyCodable(value)
@@ -162,6 +168,7 @@ private typealias EAName = EventAttributeName
162168
retryCount: meetingEvent.getRetryCount(),
163169
videoInputErrorMessage: meetingEvent.getVideoInputErrorMessage(),
164170
audioInputErrorMessage: meetingEvent.getAudioInputErrorMessage(),
171+
signalingDroppedErrorMessage: meetingEvent.getSignalingDroppedErrorMessage(),
165172
ttl: dirtyMeetingEventTtl)
166173
}
167174

AmazonChimeSDK/AmazonChimeSDK/ingestion/IngestionPayload.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import Foundation
2222
public let retryCount: Int?
2323
public let videoInputErrorMessage: String?
2424
public let audioInputErrorMessage: String?
25+
public let signalingDroppedErrorMessage: String?
2526
public let ttl: Int64?
2627

2728
public init(name: String,
@@ -37,6 +38,7 @@ import Foundation
3738
retryCount: Int? = nil,
3839
videoInputErrorMessage: String? = nil,
3940
audioInputErrorMessage: String? = nil,
41+
signalingDroppedErrorMessage: String? = nil,
4042
ttl: Int64? = nil) {
4143
self.name = name
4244
self.ts = ts
@@ -51,6 +53,7 @@ import Foundation
5153
self.retryCount = retryCount
5254
self.videoInputErrorMessage = videoInputErrorMessage
5355
self.audioInputErrorMessage = audioInputErrorMessage
56+
self.signalingDroppedErrorMessage = signalingDroppedErrorMessage
5457
self.ttl = ttl
5558
}
5659
}

AmazonChimeSDK/AmazonChimeSDK/internal/ingestion/database/IngestionMeetingEvent.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,9 @@ extension IngestionMeetingEvent {
7878
let item = eventAttributes[EventAttributeName.audioInputError.description]
7979
return item??.value as? String
8080
}
81+
82+
func getSignalingDroppedErrorMessage() -> String? {
83+
let item = eventAttributes[EventAttributeName.signalingDroppedError.description]
84+
return item??.value as? String
85+
}
8186
}

AmazonChimeSDK/AmazonChimeSDK/internal/utils/Converters.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ import Foundation
3838
return .meetingFailed
3939
case .meetingEnded:
4040
return .meetingEnded
41+
case .signalingDropped:
42+
return .signalingDropped
4143
case .unknown:
4244
return .unknown
4345
}

AmazonChimeSDK/AmazonChimeSDK/internal/video/DefaultVideoClientController.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,12 @@ extension DefaultVideoClientController: VideoClientDelegate {
178178
}
179179

180180
public func videoClientDidFail(_ client: VideoClient?, status: video_client_status_t, controlStatus: Int32) {
181-
logger.info(msg: "videoClientDidFail")
181+
logger.error(msg: "videoClientDidFail. status: \(status), controlStatus: \(controlStatus)")
182+
183+
eventAnalyticsController.publishEvent(name: .signalingDropped, attributes: [
184+
EventAttributeName.signalingDroppedError: VideoClientError(videoClientStatus: status)
185+
])
186+
182187
ObserverUtils.forEach(observers: videoObservers) { (observer: AudioVideoObserver) in
183188
observer.videoSessionDidStopWithStatus(sessionStatus:
184189
MeetingSessionStatus(statusCode: .videoServiceUnavailable))

0 commit comments

Comments
 (0)