NCSignalingMessage.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. /**
  2. * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
  3. * SPDX-License-Identifier: GPL-3.0-or-later
  4. */
  5. #import <Foundation/Foundation.h>
  6. #import "WebRTC/RTCIceCandidate.h"
  7. #import "WebRTC/RTCSessionDescription.h"
  8. extern NSString *const kRoomTypeVideo;
  9. extern NSString *const kRoomTypeScreen;
  10. typedef NS_ENUM(NSInteger, NCSignalingMessageType) {
  11. kNCSignalingMessageTypeUnknown,
  12. kNCSignalingMessageTypeCandidate,
  13. kNCSignalingMessageTypeOffer,
  14. kNCSignalingMessageTypeAnswer,
  15. kNCSignalingMessageTypeUnshareScreen,
  16. kNCSignalingMessageTypeControl,
  17. kNCSignalingMessageTypeMute,
  18. kNCSignalingMessageTypeUnmute,
  19. kNCSignalingMessageTypeNickChanged,
  20. kNCSignalingMessageTypeRaiseHand,
  21. kNCSignalingMessageTypeRecording,
  22. kNCSignalingMessageTypeReaction,
  23. kNCSignalingMessageTypeStartedTyping,
  24. kNCSignalingMessageTypeStoppedTyping
  25. };
  26. @interface NCSignalingMessage : NSObject
  27. @property(nonatomic, readonly) NSString *from;
  28. @property(nonatomic, readonly) NSString *to;
  29. @property(nonatomic, readonly) NSString *sid;
  30. @property(nonatomic, readonly) NSString *type;
  31. @property(nonatomic, readonly) NSDictionary *payload;
  32. @property(nonatomic, readonly) NSString *roomType;
  33. @property(nonatomic, assign) NSString *broadcaster;
  34. + (NCSignalingMessage *)messageFromJSONString:(NSString *)jsonString;
  35. + (NCSignalingMessage *)messageFromJSONDictionary:(NSDictionary *)jsonDict;
  36. + (NCSignalingMessage *)messageFromExternalSignalingJSONDictionary:(NSDictionary *)jsonDict;
  37. + (NSString *)getMessageSid;
  38. - (NSDictionary *)messageDict;
  39. - (NSDictionary *)functionDict;
  40. - (NCSignalingMessageType)messageType;
  41. @end
  42. @interface NCICECandidateMessage : NCSignalingMessage
  43. @property(nonatomic, readonly) RTCIceCandidate *candidate;
  44. - (instancetype)initWithValues:(NSDictionary *)values;
  45. - (instancetype)initWithCandidate:(RTCIceCandidate *)candidate
  46. from:(NSString *)from
  47. to:(NSString *)to
  48. sid:(NSString *)sid
  49. roomType:(NSString *)roomType
  50. broadcaster:(NSString *)broadcaster;
  51. @end
  52. @interface NCSessionDescriptionMessage : NCSignalingMessage
  53. @property(nonatomic, readonly) RTCSessionDescription *sessionDescription;
  54. @property(nonatomic, readonly) NSString *nick;
  55. - (instancetype)initWithValues:(NSDictionary *)values;
  56. - (instancetype)initWithSessionDescription:(RTCSessionDescription *)sessionDescription
  57. from:(NSString *)from
  58. to:(NSString *)to
  59. sid:(NSString *)sid
  60. roomType:(NSString *)roomType
  61. broadcaster:(NSString *)broadcaster
  62. nick:(NSString *)nick;
  63. @end
  64. @interface NCUnshareScreenMessage : NCSignalingMessage
  65. - (instancetype)initWithValues:(NSDictionary *)values;
  66. - (instancetype)initWithFrom:(NSString *)from
  67. to:(NSString *)to
  68. sid:(NSString *)sid
  69. roomType:(NSString *)roomType
  70. payload:(NSDictionary *)payload;
  71. @end
  72. @interface NCControlMessage : NCSignalingMessage
  73. - (instancetype)initWithValues:(NSDictionary *)values;
  74. @end
  75. @interface NCMuteMessage : NCSignalingMessage
  76. - (instancetype)initWithValues:(NSDictionary *)values;
  77. - (instancetype)initWithFrom:(NSString *)from
  78. to:(NSString *)to
  79. sid:(NSString *)sid
  80. roomType:(NSString *)roomType
  81. payload:(NSDictionary *)payload;
  82. @end
  83. @interface NCUnmuteMessage : NCSignalingMessage
  84. - (instancetype)initWithValues:(NSDictionary *)values;
  85. - (instancetype)initWithFrom:(NSString *)from
  86. to:(NSString *)to
  87. sid:(NSString *)sid
  88. roomType:(NSString *)roomType
  89. payload:(NSDictionary *)payload;
  90. @end
  91. @interface NCNickChangedMessage : NCSignalingMessage
  92. - (instancetype)initWithValues:(NSDictionary *)values;
  93. - (instancetype)initWithFrom:(NSString *)from
  94. to:(NSString *)to
  95. sid:(NSString *)sid
  96. roomType:(NSString *)roomType
  97. payload:(NSDictionary *)payload;
  98. @end
  99. @interface NCRaiseHandMessage : NCSignalingMessage
  100. - (instancetype)initWithValues:(NSDictionary *)values;
  101. - (instancetype)initWithFrom:(NSString *)from
  102. to:(NSString *)to
  103. sid:(NSString *)sid
  104. roomType:(NSString *)roomType
  105. payload:(NSDictionary *)payload;
  106. @end
  107. @interface NCRecordingMessage : NCSignalingMessage
  108. @property(nonatomic, readonly) NSInteger status;
  109. - (instancetype)initWithValues:(NSDictionary *)values;
  110. @end
  111. @interface NCReactionMessage : NCSignalingMessage
  112. @property(nonatomic, readonly) NSString *reaction;
  113. - (instancetype)initWithValues:(NSDictionary *)values;
  114. - (instancetype)initWithFrom:(NSString *)from
  115. to:(NSString *)to
  116. sid:(NSString *)sid
  117. roomType:(NSString *)roomType
  118. payload:(NSDictionary *)payload;
  119. @end
  120. @interface NCStartedTypingMessage : NCSignalingMessage
  121. - (instancetype)initWithFrom:(NSString *)from
  122. sendTo:(NSString *)to
  123. withPayload:(NSDictionary *)payload
  124. forRoomType:(NSString *)roomType;
  125. - (instancetype)initWithValues:(NSDictionary *)values;
  126. @end
  127. @interface NCStoppedTypingMessage : NCSignalingMessage
  128. - (instancetype)initWithFrom:(NSString *)from
  129. sendTo:(NSString *)to
  130. withPayload:(NSDictionary *)payload
  131. forRoomType:(NSString *)roomType;
  132. - (instancetype)initWithValues:(NSDictionary *)values;
  133. @end