NCExternalSignalingController.h 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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 "NCSignalingMessage.h"
  7. @class NCExternalSignalingController;
  8. @class TalkAccount;
  9. @class SignalingParticipant;
  10. extern NSString * const NCExternalSignalingControllerDidUpdateParticipantsNotification;
  11. extern NSString * const NCExternalSignalingControllerDidReceiveJoinOfParticipantNotification;
  12. extern NSString * const NCExternalSignalingControllerDidReceiveLeaveOfParticipantNotification;
  13. extern NSString * const NCExternalSignalingControllerDidReceiveStartedTypingNotification;
  14. extern NSString * const NCExternalSignalingControllerDidReceiveStoppedTypingNotification;
  15. typedef NS_ENUM(NSInteger, NCExternalSignalingSendMessageStatus) {
  16. SendMessageSuccess = 0,
  17. SendMessageSocketError,
  18. SendMessageApplicationError
  19. };
  20. @protocol NCExternalSignalingControllerDelegate <NSObject>
  21. - (void)externalSignalingController:(NCExternalSignalingController *)externalSignalingController didReceivedSignalingMessage:(NSDictionary *)signalingMessageDict;
  22. - (void)externalSignalingController:(NCExternalSignalingController *)externalSignalingController didReceivedParticipantListMessage:(NSDictionary *)participantListMessageDict;
  23. - (void)externalSignalingControllerShouldRejoinCall:(NCExternalSignalingController *)externalSignalingController;
  24. - (void)externalSignalingControllerWillRejoinCall:(NCExternalSignalingController *)externalSignalingController;
  25. - (void)externalSignalingController:(NCExternalSignalingController *)externalSignalingController shouldSwitchToCall:(NSString *)roomToken;
  26. @end
  27. @interface NCExternalSignalingController : NSObject
  28. typedef void (^SendMessageCompletionBlock)(NSURLSessionWebSocketTask *task, NCExternalSignalingSendMessageStatus status);
  29. typedef void (^JoinRoomExternalSignalingCompletionBlock)(NSError *error);
  30. @property (nonatomic, strong) NSString *currentRoom;
  31. @property (nonatomic, strong) TalkAccount *account;
  32. @property (nonatomic, assign) BOOL disconnected;
  33. @property (nonatomic, weak) id<NCExternalSignalingControllerDelegate> delegate;
  34. - (instancetype)initWithAccount:(TalkAccount *)account server:(NSString *)serverUrl andTicket:(NSString *)ticket;
  35. - (BOOL)hasMCU;
  36. - (NSString *)sessionId;
  37. - (void)joinRoom:(NSString *)roomId withSessionId:(NSString *)sessionId withFederation:(NSDictionary * _Nullable)federationDict withCompletionBlock:(JoinRoomExternalSignalingCompletionBlock)block;
  38. - (void)leaveRoom:(NSString *)roomId;
  39. - (void)sendCallMessage:(NCSignalingMessage *)message;
  40. - (void)sendSendOfferMessageWithSessionId:(NSString *)sessionId andRoomType:(NSString *)roomType;
  41. - (void)sendRoomMessageOfType:(NSString *)messageType andRoomType:(NSString *)roomType;
  42. - (void)requestOfferForSessionId:(NSString *)sessionId andRoomType:(NSString *)roomType;
  43. - (SignalingParticipant * _Nullable)getParticipantFromSessionId:(NSString * _Nonnull)sessionId;
  44. - (NSMutableDictionary * _Nonnull)getParticipantMap;
  45. - (void)connect;
  46. - (void)forceConnect;
  47. - (void)disconnect;
  48. - (void)forceReconnectForRejoin;
  49. @end