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
2 changes: 1 addition & 1 deletion scripts/find-duplicate-spec-items
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Script to detect duplicate spec IDs in the client library spec
# This tends to happen when concurrent spec PRs are merged

SPEC_FILES = ["features", "chat-features"]
SPEC_FILES = ["features", "chat-features", "objects-features"]

has_errors = false

Expand Down
8 changes: 4 additions & 4 deletions textile/features.textile
Original file line number Diff line number Diff line change
Expand Up @@ -387,7 +387,7 @@ h3(#plugins). Plugins
* @(PC2)@ No generic plugin interface is specified, and therefore there is no common API exposed by all plugins. However, for type-safety, the opaque interface @Plugin@ should be used in strongly-typed languages as the type of the @ClientOptions.plugins@ collection as per "TO3o":#TO3o.
* @(PC3)@ A plugin provided with the @PluginType@ enum key value of @vcdiff@ should be capable of decoding "vcdiff"-encoded messages. It must implement the @VCDiffDecoder@ interface and the client library must be able to use it by casting it to this interface.
** @(PC3a)@ The base argument of the @VCDiffDecoder.decode@ method should receive the stored base payload of the last message on a channel as specified by "RTL19":#RTL19. If the base payload is a string it should be encoded to binary using UTF-8 before being passed as base argument of the @VCDiffDecoder.decode@ method.
* @(PC5)@ A plugin provided with the @PluginType@ enum key value of @Objects@ should provide the "RealtimeObjects":#RTO1 feature functionality for realtime channels ("RTL27":#RTL27). The plugin object itself is not expected to provide a public API. The type of the plugin object, and how it enables the Objects feature for a realtime channel, are left for individual implementations to decide.
* @(PC5)@ A plugin provided with the @PluginType@ enum key value of @Objects@ should provide the "RealtimeObjects":../objects-features#RTO1 feature functionality for realtime channels ("RTL27":#RTL27). The plugin object itself is not expected to provide a public API. The type of the plugin object, and how it enables the Objects feature for a realtime channel, are left for individual implementations to decide.
* @(PC4)@ A client library is allowed to accept plugins other than those specified in this specification, through the use of additional @ClientOptions.plugins@ keys defined by that library. The library is responsible for defining the interface of these plugins, and for making sure that these keys do not clash with the keys defined in this specification.

h3(#plugin-type). PluginType
Expand Down Expand Up @@ -681,7 +681,7 @@ h3(#realtime-channels). Channels
h3(#realtime-channel). RealtimeChannel

* @(RTL23)@ @RealtimeChannel#name@ attribute is a string containing the channel’s name
* @(RTL1)@ As soon as a @RealtimeChannel@ becomes attached, all incoming messages and presence messages (where 'incoming' is defined as 'received from Ably over the realtime transport') are processed and emitted where applicable. @PRESENCE@ and @SYNC@ messages are passed to the @RealtimePresence@ object ensuring it maintains a map of current members on a channel in realtime
* @(RTL1)@ As soon as a @RealtimeChannel@ becomes attached, all incoming messages, presence messages and object messages (where 'incoming' is defined as 'received from Ably over the realtime transport') are processed and emitted where applicable. @PRESENCE@ and @SYNC@ messages are passed to the @RealtimePresence@ object ensuring it maintains a map of current members on a channel in realtime. @OBJECT@ and @OBJECT_SYNC@ messages are passed to the @RealtimeObjects@ object ensuring it maintains an up-to-date representation of objects on a channel in realtime
* @(RTL2)@ The @RealtimeChannel@ implements @EventEmitter@ and emits @ChannelEvent@ events, where a @ChannelEvent@ is either a @ChannelState@ or @UPDATE@, and a @ChannelState@ is either @INITIALIZED@, @ATTACHING@, @ATTACHED@, @DETACHING@, @DETACHED@, @SUSPENDED@ and @FAILED@
** @(RTL2a)@ It emits a @ChannelState@ @ChannelEvent@ for every channel state change
** @(RTL2g)@ It emits an @UPDATE@ @ChannelEvent@ for changes to channel conditions for which the @ChannelState@ (e.g. @ATTACHED@) does not change, unless explicitly prevented by a more specific condition (see "RTL12":#RTL12). (The library must never emit a @ChannelState@ @ChannelEvent@ for a state equal to the previous state)
Expand Down Expand Up @@ -780,7 +780,7 @@ h3(#realtime-channel). RealtimeChannel
* @(RTL9)@ @RealtimeChannel#presence@ attribute:
** @(RTL9a)@ Returns the @RealtimePresence@ object for this channel
* @(RTL27)@ @RealtimeChannel#objects@ attribute:
** @(RTL27a)@ Returns the @RealtimeObjects@ object for this channel "RTO1":#RTO1
** @(RTL27a)@ Returns the @RealtimeObjects@ object for this channel "RTO1":../objects-features#RTO1
** @(RTL27b)@ It is a programmer error to access this property without first providing the @Objects@ plugin ("PC5":#PC5) in the client options. This programmer error should be handled in an idiomatic fashion; if this means accessing the property should throw an error, then the error should be an @ErrorInfo@ with @statusCode@ 400 and @code@ 40019.
* @(RTL10)@ @RealtimeChannel#history@ function:
** @(RTL10a)@ Supports all the same params as @RestChannel#history@
Expand Down Expand Up @@ -939,7 +939,7 @@ then the @enter@ request results in an error immediately.

h3(#realtime-objects). RealtimeObjects

Reserved for @RealtimeObjects@ feature specification. Reserved spec points: @RTO@, @RTLO@, @RTLC@, @RTLM@
Reserved for @RealtimeObjects@ feature specification, see "objects-features":../objects-features. Reserved spec points: @RTO@, @RTLO@, @RTLC@, @RTLM@

h3(#realtime-annotations). RealtimeAnnotations

Expand Down
Loading
Loading