Reference
Setup
struct Setup: EyesonEvent {
var locked: Bool
var recording: Recording?
var snapshots: [Snapshots.Item]?
var broadcasts: [Broadcasts.Item]?
}
Mode
struct Mode: EyesonEvent {
var video: Bool // false if audio only
var p2p: Bool // determines if MCU or SFU mode
}
Locked
struct Locked: EyesonEvent {
var locked: Bool
}
Chat
struct Chat: EyesonEvent {
var user: User
var message: String
}
Custom Message
struct Custom: EyesonEvent {
var content: String
}
Participants
struct Participants: EyesonEvent {
var audio: [User]
var video: [User]
var presenter: User?
}
Recording
struct Recording: EyesonEvent {
var id: String
var duration: Double? // nil if recording is currently active
var links: Links // present if recording file has been processed
var user: User
var createdAt: Date
}
Muted
struct Muted: EyesonEvent {
var by: User
}
Voice Activity
struct Voice: EyesonEvent {
var user: user
var active: Bool
}
Snapshots
struct Snapshots: EyesonEvent {
var items: [Item]
struct Item: Identifiable {
var id: String
var name: String
var links: Links
var user: User
var createdAt: Date
}
}
Broadcasts
struct Broadcasts: EyesonEvent {
var items: [Item]
struct Item: Identifiable {
var id: String
var platform: String
var playerUrl: URL
var user: User
}
}
Playback
struct Playback: EyesonEvent {
var items: [Item]
struct Item: Identifiable {
var id: String
var name: String
var url: URL
var replacementId: String
var audio: Bool
}
}
Stats
struct Stats: EyesonEvent {
var jitter: Double
var packetLoss: Double
var roundTripTime: Double
var nack: Double
var bitrateSend: Double // Bits per second sent
var bitrateReceive: Double // Bits per second received
var status: Status // Average quality good|ok|bad|unknown
var bytesSent: Double
var bytesReceived: Double
var time: TimeInterval
}
Terminated
struct Terminated: EyesonEvent {
var reason: TerminateReason
}
TerminateReason
enum TerminateReason {
case locked
case unwanted
case busy
case declined
case terminated
case gone
case other
}