Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions Ably.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@
211A610729DA05D700D169C5 /* ARTAttachRequestParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 211A610629DA05D700D169C5 /* ARTAttachRequestParams.m */; };
211A610829DA05D700D169C5 /* ARTAttachRequestParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 211A610629DA05D700D169C5 /* ARTAttachRequestParams.m */; };
211A610929DA05D700D169C5 /* ARTAttachRequestParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 211A610629DA05D700D169C5 /* ARTAttachRequestParams.m */; };
211BEC7C2F521F8300AF5B2D /* ARTPublishResult+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 211BEC7B2F521F8300AF5B2D /* ARTPublishResult+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
211BEC7D2F521F8300AF5B2D /* ARTPublishResult+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 211BEC7B2F521F8300AF5B2D /* ARTPublishResult+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
211BEC7E2F521F8300AF5B2D /* ARTPublishResult+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 211BEC7B2F521F8300AF5B2D /* ARTPublishResult+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
211BEC802F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 211BEC7F2F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
211BEC812F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 211BEC7F2F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
211BEC822F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 211BEC7F2F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
2124B78B29DB12A900AD8361 /* ARTVersion2Log.h in Headers */ = {isa = PBXBuildFile; fileRef = 2124B78A29DB12A900AD8361 /* ARTVersion2Log.h */; settings = {ATTRIBUTES = (Private, ); }; };
2124B78C29DB12A900AD8361 /* ARTVersion2Log.h in Headers */ = {isa = PBXBuildFile; fileRef = 2124B78A29DB12A900AD8361 /* ARTVersion2Log.h */; settings = {ATTRIBUTES = (Private, ); }; };
2124B78D29DB12A900AD8361 /* ARTVersion2Log.h in Headers */ = {isa = PBXBuildFile; fileRef = 2124B78A29DB12A900AD8361 /* ARTVersion2Log.h */; settings = {ATTRIBUTES = (Private, ); }; };
Expand Down Expand Up @@ -1142,6 +1148,8 @@
211A60FE29D8ABF100D169C5 /* ARTChannelStateChangeParams.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ARTChannelStateChangeParams.m; sourceTree = "<group>"; };
211A610229DA05C700D169C5 /* ARTAttachRequestParams.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ARTAttachRequestParams.h; path = PrivateHeaders/Ably/ARTAttachRequestParams.h; sourceTree = "<group>"; };
211A610629DA05D700D169C5 /* ARTAttachRequestParams.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ARTAttachRequestParams.m; sourceTree = "<group>"; };
211BEC7B2F521F8300AF5B2D /* ARTPublishResult+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ARTPublishResult+Private.h"; path = "PrivateHeaders/Ably/ARTPublishResult+Private.h"; sourceTree = "<group>"; };
211BEC7F2F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "ARTPublishResultSerial+Private.h"; path = "PrivateHeaders/Ably/ARTPublishResultSerial+Private.h"; sourceTree = "<group>"; };
2124B78A29DB12A900AD8361 /* ARTVersion2Log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARTVersion2Log.h; path = PrivateHeaders/Ably/ARTVersion2Log.h; sourceTree = "<group>"; };
2124B78E29DB13BD00AD8361 /* ARTInternalLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTInternalLog.m; sourceTree = "<group>"; };
2124B79229DB13C400AD8361 /* ARTInternalLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARTInternalLog.h; path = PrivateHeaders/Ably/ARTInternalLog.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1972,8 +1980,10 @@
84B18ACD2EE233C7003768C1 /* ARTDictionarySerializable.h */,
21C2BE4C2F0D214C00AE5E41 /* ARTPublishResult.h */,
21C2BE542F0D237100AE5E41 /* ARTPublishResult.m */,
211BEC7B2F521F8300AF5B2D /* ARTPublishResult+Private.h */,
21C2BE4D2F0D214C00AE5E41 /* ARTPublishResultSerial.h */,
21C2BE552F0D237100AE5E41 /* ARTPublishResultSerial.m */,
211BEC7F2F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h */,
21C2BE602F0D5B0E00AE5E41 /* ARTMessageSendStatus.h */,
21C2BE5C2F0D5B0100AE5E41 /* ARTMessageSendStatus.m */,
21C2BE642F0D776000AE5E41 /* ARTUpdateDeleteResult.h */,
Expand Down Expand Up @@ -2346,6 +2356,7 @@
D7AE18D21E5B410F00478D82 /* ARTPushChannelSubscriptions.h in Headers */,
D7D8F8251BC2C691009718F2 /* ARTTokenDetails.h in Headers */,
96A507A51A377DE90077CDF8 /* ARTNSDictionary+ARTDictionaryUtil.h in Headers */,
211BEC822F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h in Headers */,
D75A3F1B1DDE5B62002A4AAD /* ARTGCD.h in Headers */,
D3AD0EBD215E2FB000312105 /* ARTNSString+ARTUtil.h in Headers */,
215924B02D636B6B004A235C /* ARTWrapperSDKProxyPushDeviceRegistrations+Private.h in Headers */,
Expand All @@ -2362,6 +2373,7 @@
D5BB211126AA993E00AA5F3E /* ARTNSURL+ARTUtils.h in Headers */,
84039A4C2C811F49001C053E /* ARTChannelOptions+Private.h in Headers */,
EB1AE0CC1C5C1EB200D62250 /* ARTEventEmitter+Private.h in Headers */,
211BEC7D2F521F8300AF5B2D /* ARTPublishResult+Private.h in Headers */,
215F75F82922B1DB009E0E76 /* ARTClientInformation.h in Headers */,
D7DF738A1EA645300013CD36 /* ARTLocalDeviceStorage.h in Headers */,
960D07931A45F1D800ED8C8C /* ARTCrypto.h in Headers */,
Expand Down Expand Up @@ -2414,6 +2426,7 @@
EB1B541222FB1AB4006A59AC /* ARTPushChannel+Private.h in Headers */,
D710D55521949C8C008F54AD /* ARTPushActivationStateMachine.h in Headers */,
D710D58C21949D29008F54AD /* ARTPresenceMessage.h in Headers */,
211BEC7C2F521F8300AF5B2D /* ARTPublishResult+Private.h in Headers */,
D710D50521949C18008F54AD /* ARTRealtimeChannel+Private.h in Headers */,
D710D58E21949D29008F54AD /* ARTDataEncoder.h in Headers */,
D710D49221949AB7008F54AD /* ARTRest+Private.h in Headers */,
Expand Down Expand Up @@ -2468,6 +2481,7 @@
5CC1D9D92E7C302B005DC3ED /* ARTMessageVersion+Private.h in Headers */,
21A28E712E54EF3D007D0BFE /* ARTPublicRealtimeChannelUnderlyingObjects.h in Headers */,
D710D4A921949ADF008F54AD /* ARTRestChannels.h in Headers */,
211BEC812F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h in Headers */,
D710D4D821949BF9008F54AD /* ARTRealtimePresence.h in Headers */,
D710D48F21949AAE008F54AD /* ARTRest.h in Headers */,
D710D5B821949D4F008F54AD /* ARTAuthOptions+Private.h in Headers */,
Expand Down Expand Up @@ -2630,6 +2644,7 @@
D5BB213026AAA55C00AA5F3E /* ARTNSMutableURLRequest+ARTUtils.h in Headers */,
D710D68021949EA3008F54AD /* ARTOSReachability.h in Headers */,
D710D55B21949C8D008F54AD /* ARTPushActivationStateMachine.h in Headers */,
211BEC7E2F521F8300AF5B2D /* ARTPublishResult+Private.h in Headers */,
D710D5B221949D2A008F54AD /* ARTPresenceMessage.h in Headers */,
D710D51121949C19008F54AD /* ARTRealtimeChannel+Private.h in Headers */,
D710D5B421949D2A008F54AD /* ARTDataEncoder.h in Headers */,
Expand Down Expand Up @@ -2684,6 +2699,7 @@
5CC1D9D72E7C302B005DC3ED /* ARTMessageVersion+Private.h in Headers */,
21A28E722E54EF3D007D0BFE /* ARTPublicRealtimeChannelUnderlyingObjects.h in Headers */,
D710D4AF21949AE0008F54AD /* ARTRestChannels.h in Headers */,
211BEC802F5222EC00AF5B2D /* ARTPublishResultSerial+Private.h in Headers */,
D710D4E821949BFB008F54AD /* ARTRealtimePresence.h in Headers */,
D710D49121949AAF008F54AD /* ARTRest.h in Headers */,
D710D5C821949D50008F54AD /* ARTAuthOptions+Private.h in Headers */,
Expand Down
6 changes: 3 additions & 3 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ let package = Package(
.package(name: "msgpack", url: "https://github.com/rvi/msgpack-objective-C", from: "0.4.0"),
.package(name: "AblyDeltaCodec", url: "https://github.com/ably/delta-codec-cocoa", from: "1.3.5"),
.package(name: "Nimble", url: "https://github.com/quick/nimble", from: "11.2.2"),
.package(name: "ably-cocoa-plugin-support", url: "https://github.com/ably/ably-cocoa-plugin-support", from: "1.0.0")
// TODO: Unpin before release
.package(name: "ably-cocoa-plugin-support", url: "https://github.com/ably/ably-cocoa-plugin-support.git", .revision("f2468ee39f3e18955b0ec4fe41dc5a9906a72633"))
],
targets: [
.target(
Expand Down
7 changes: 6 additions & 1 deletion Source/ARTClientOptions.m
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,12 @@ - (NSString *)host:(NSString *)host forEnvironment:(NSString *)environment {
return nil;
}

return [publicPlugin internalPlugin];
id<APLiveObjectsInternalPluginProtocol> plugin = [publicPlugin internalPlugin];
if (!plugin.compatibleWithProtocolV6) {
[NSException raise:NSInternalInconsistencyException
format:@"This version of ably-cocoa requires a LiveObjects plugin compatible with protocol v6."];
}
return plugin;
}
#endif

Expand Down
4 changes: 3 additions & 1 deletion Source/ARTConnectionDetails.m
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ - (instancetype)initWithClientId:(NSString *_Nullable)clientId
connectionStateTtl:(NSTimeInterval)connectionStateTtl
serverId:(NSString *)serverId
maxIdleInterval:(NSTimeInterval)maxIdleInterval
objectsGCGracePeriod:(nullable NSNumber *)objectsGCGracePeriod {
objectsGCGracePeriod:(nullable NSNumber *)objectsGCGracePeriod
siteCode:(nullable NSString *)siteCode {
if (self = [super init]) {
_clientId = clientId;
_connectionKey = connectionKey;
Expand All @@ -21,6 +22,7 @@ - (instancetype)initWithClientId:(NSString *_Nullable)clientId
_serverId = serverId;
_maxIdleInterval = maxIdleInterval;
_objectsGCGracePeriod = objectsGCGracePeriod;
_siteCode = siteCode;
}
return self;
}
Expand Down
2 changes: 1 addition & 1 deletion Source/ARTDefault.m
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#import "ARTNSArray+ARTFunctional.h"
#import "ARTClientInformation+Private.h"

static NSString *const ARTDefault_apiVersion = @"5"; // CSV2
static NSString *const ARTDefault_apiVersion = @"6"; // CSV2

NSString *const ARTDefaultProduction = @"production";

Expand Down
3 changes: 2 additions & 1 deletion Source/ARTJsonLikeEncoder.m
Original file line number Diff line number Diff line change
Expand Up @@ -1096,7 +1096,8 @@ - (ARTConnectionDetails *)connectionDetailsFromDictionary:(NSDictionary *)input
connectionStateTtl:millisecondsToTimeInterval([input artInteger:@"connectionStateTtl"])
serverId:[input artString:@"serverId"]
maxIdleInterval:millisecondsToTimeInterval([input artInteger:@"maxIdleInterval"])
objectsGCGracePeriod:objectsGCGracePeriod];
objectsGCGracePeriod:objectsGCGracePeriod
siteCode:[input artString:@"siteCode"]];
}

- (ARTChannelMetrics *)channelMetricsFromDictionary:(NSDictionary *)input {
Expand Down
26 changes: 23 additions & 3 deletions Source/ARTPluginAPI.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
#import "ARTClientOptions+Private.h"
#import "ARTErrorInfo+Private.h"
#import "ARTConnectionDetails+Private.h"
#import "ARTPublishResult+Private.h"
#import "ARTPublishResultSerial+Private.h"

static ARTErrorInfo *_ourPublicErrorInfo(id<APPublicErrorInfo> pluginPublicErrorInfo) {
if (![pluginPublicErrorInfo isKindOfClass:[ARTErrorInfo class]]) {
Expand Down Expand Up @@ -51,7 +53,7 @@
return (ARTInternalLog *)pluginLogger;
}

static APRealtimeChannelState _convertOurRealtimeChannelState(ARTRealtimeChannelState ourRealtimeChannelState) {
APRealtimeChannelState ARTConvertToPluginChannelState(ARTRealtimeChannelState ourRealtimeChannelState) {
switch (ourRealtimeChannelState) {
case ARTRealtimeChannelInitialized:
return APRealtimeChannelStateInitialized;
Expand All @@ -69,7 +71,7 @@ static APRealtimeChannelState _convertOurRealtimeChannelState(ARTRealtimeChannel
return APRealtimeChannelStateFailed;
}

[NSException raise:NSInternalInconsistencyException format:@"_convertOurRealtimeChannelState failed to map %lu", ourRealtimeChannelState];
[NSException raise:NSInternalInconsistencyException format:@"ARTConvertToPluginChannelState failed to map %lu", ourRealtimeChannelState];
}

static ARTLogLevel _convertPluginLogLevel(APLogLevel pluginLogLevel) {
Expand All @@ -93,6 +95,10 @@ static ARTLogLevel _convertPluginLogLevel(APLogLevel pluginLogLevel) {

@implementation ARTPluginAPI

- (BOOL)usesLiveObjectsProtocolV6 {
return YES;
}

+ (void)registerSelf {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Expand Down Expand Up @@ -159,11 +165,25 @@ - (void)nosync_sendObjectWithObjectMessages:(NSArray<id<APObjectMessageProtocol>
completion:completion];
}

- (void)nosync_sendObjectWithObjectMessages:(NSArray<id<APObjectMessageProtocol>> *)objectMessages
channel:(id<APRealtimeChannel>)channel
completionWithResult:(void (^)(id<APPublishResultProtocol> _Nullable publishResult, id<APPublicErrorInfo> _Nullable error))completion {
ARTRealtimeChannelInternal *internalChannel = _internalRealtimeChannel(channel);
dispatch_assert_queue(internalChannel.queue);

[internalChannel sendObjectWithObjectMessages:objectMessages
completionWithResult:^(ARTPublishResult *publishResult, ARTErrorInfo *error) {
if (completion) {
completion(publishResult, error);
}
}];
}

- (APRealtimeChannelState)nosync_stateForChannel:(id<APRealtimeChannel>)channel {
ARTRealtimeChannelInternal *internalChannel = _internalRealtimeChannel(channel);
dispatch_assert_queue(internalChannel.queue);

return _convertOurRealtimeChannelState(internalChannel.state_nosync);
return ARTConvertToPluginChannelState(internalChannel.state_nosync);
}

- (void)nosync_fetchServerTimeForClient:(id<APRealtimeClient>)client
Expand Down
1 change: 1 addition & 0 deletions Source/ARTPublishResult.m
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#import "ARTPublishResult.h"
#import "ARTPublishResult+Private.h"
#import "ARTPublishResultSerial.h"

@implementation ARTPublishResult
Expand Down
1 change: 1 addition & 0 deletions Source/ARTPublishResultSerial.m
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#import "ARTPublishResultSerial.h"
#import "ARTPublishResultSerial+Private.h"

@implementation ARTPublishResultSerial

Expand Down
23 changes: 21 additions & 2 deletions Source/ARTRealtimeChannel.m
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
#import "ARTPushChannel+Private.h"
#endif

#import "ARTErrorInfo+Private.h"

#ifdef ABLY_SUPPORTS_PLUGINS
@import _AblyPluginSupportPrivate;
#import "ARTPluginAPI.h"
Expand Down Expand Up @@ -469,17 +471,27 @@ - (void)internalPostMessages:(id)data callback:(ARTPublishResultCallback)callbac
#ifdef ABLY_SUPPORTS_PLUGINS
- (void)sendObjectWithObjectMessages:(NSArray<id<APObjectMessageProtocol>> *)objectMessages
completion:(ARTCallback)completion {
[self sendObjectWithObjectMessages:objectMessages
completionWithResult:^(ARTPublishResult *publishResult, ARTErrorInfo *error) {
if (completion) {
completion(error);
}
}];
}

- (void)sendObjectWithObjectMessages:(NSArray<id<APObjectMessageProtocol>> *)objectMessages
completionWithResult:(void (^)(ARTPublishResult *_Nullable publishResult, ARTErrorInfo *_Nullable error))completion {
ARTProtocolMessage *pm = [[ARTProtocolMessage alloc] init];
pm.action = ARTProtocolMessageObject;
pm.channel = self.name;
pm.state = objectMessages;

[self publishProtocolMessage:pm callback:^(ARTMessageSendStatus *status) {
if (completion) {
completion(status.status.errorInfo);
completion(status.publishResult, status.status.errorInfo);
}
}];
}
}
#endif

- (void)internalSendEditRequestForMessage:(ARTMessage *)message
Expand Down Expand Up @@ -727,6 +739,13 @@ - (void)performTransitionToState:(ARTRealtimeChannelState)state withParams:(ARTC

[self emit:stateChange.event with:stateChange];

#ifdef ABLY_SUPPORTS_PLUGINS
id<APLiveObjectsInternalPluginProtocol> plugin = self.realtime.options.liveObjectsPlugin;
if ([plugin respondsToSelector:@selector(nosync_onChannelStateChanged:toState:reason:)]) {
[plugin nosync_onChannelStateChanged:self toState:ARTConvertToPluginChannelState(state) reason:params.errorInfo];
}
#endif

if (channelRetryListener) {
[channelRetryListener startTimer];
}
Expand Down
2 changes: 2 additions & 0 deletions Source/Ably.modulemap
Original file line number Diff line number Diff line change
Expand Up @@ -143,5 +143,7 @@ framework module Ably {
header "ARTMessageOperation+Private.h"
header "ARTMessage+Private.h"
header "ARTMessageSendStatus.h"
header "ARTPublishResult+Private.h"
header "ARTPublishResultSerial+Private.h"
}
}
6 changes: 5 additions & 1 deletion Source/PrivateHeaders/Ably/ARTConnectionDetails.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ NS_ASSUME_NONNULL_BEGIN
/// If the `objectsGCGracePeriod` is present in the `ConnectionDetails`, this contains an `NSNumber` wrapping an `NSTimeInterval` containing its value in seconds.
@property (readonly, nonatomic, nullable) NSNumber *objectsGCGracePeriod;

/// The site code of the server that the client is connected to (CD2j).
@property (nullable, readonly, nonatomic) NSString *siteCode;

- (instancetype)initWithClientId:(NSString *_Nullable)clientId
connectionKey:(NSString *_Nullable)connectionKey
maxMessageSize:(NSInteger)maxMessageSize
Expand All @@ -62,7 +65,8 @@ NS_ASSUME_NONNULL_BEGIN
connectionStateTtl:(NSTimeInterval)connectionStateTtl
serverId:(NSString *)serverId
maxIdleInterval:(NSTimeInterval)maxIdleInterval
objectsGCGracePeriod:(nullable NSNumber *)objectsGCGracePeriod;
objectsGCGracePeriod:(nullable NSNumber *)objectsGCGracePeriod
siteCode:(nullable NSString *)siteCode;

NS_ASSUME_NONNULL_END

Expand Down
4 changes: 4 additions & 0 deletions Source/PrivateHeaders/Ably/ARTPluginAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

@import Foundation;
@import _AblyPluginSupportPrivate;
#import "ARTTypes.h"

NS_ASSUME_NONNULL_BEGIN

/// Converts an `ARTRealtimeChannelState` to the equivalent `APRealtimeChannelState`.
APRealtimeChannelState ARTConvertToPluginChannelState(ARTRealtimeChannelState ourRealtimeChannelState);

/// Our implementation of `APPluginAPIProtocol`, which allows Ably-authored plugins to access the internals of this SDK.
@interface ARTPluginAPI: NSObject <APPluginAPIProtocol>

Expand Down
10 changes: 10 additions & 0 deletions Source/PrivateHeaders/Ably/ARTPublishResult+Private.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#import <Ably/ARTPublishResult.h>

#ifdef ABLY_SUPPORTS_PLUGINS
@import _AblyPluginSupportPrivate;
#endif

#ifdef ABLY_SUPPORTS_PLUGINS
@interface ARTPublishResult () <APPublishResultProtocol>
@end
#endif
10 changes: 10 additions & 0 deletions Source/PrivateHeaders/Ably/ARTPublishResultSerial+Private.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#import <Ably/ARTPublishResultSerial.h>

#ifdef ABLY_SUPPORTS_PLUGINS
@import _AblyPluginSupportPrivate;
#endif

#ifdef ABLY_SUPPORTS_PLUGINS
@interface ARTPublishResultSerial () <APPublishResultSerialProtocol>
@end
#endif
5 changes: 5 additions & 0 deletions Source/PrivateHeaders/Ably/ARTRealtimeChannel+Private.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#endif

@class ARTProtocolMessage;
@class ARTPublishResult;
@class ARTRealtimePresenceInternal;
@class ARTRealtimeAnnotationsInternal;
@class ARTChannelStateChangeParams;
Expand Down Expand Up @@ -158,6 +159,10 @@ ART_EMBED_INTERFACE_EVENT_EMITTER(ARTChannelEvent, ARTChannelStateChange *)
/// Provides the implementation for `-[ARTPluginAPI sendObjectWithObjectMessages:completion:]`. See documentation for that method in `APPluginAPIProtocol`.
- (void)sendObjectWithObjectMessages:(NSArray<id<APObjectMessageProtocol>> *)objectMessages
completion:(ARTCallback)completion;

/// Provides the implementation for `-[ARTPluginAPI sendObjectWithObjectMessages:completionWithResult:]`. See documentation for that method in `APPluginAPIProtocol`.
- (void)sendObjectWithObjectMessages:(NSArray<id<APObjectMessageProtocol>> *)objectMessages
completionWithResult:(void (^)(ARTPublishResult *_Nullable publishResult, ARTErrorInfo *_Nullable error))completion;
#endif

@end
Expand Down
Loading
Loading