Ditto 4.8.1-rc.1
Loading...
Searching...
No Matches
DittoSDK Namespace Reference

Classes

class  AwdlConfig
 Configuration for Apple Wireless Direct Link (AWDL) network transport. Not supported on all platforms. More...
 
class  BluetoothLEConfig
 Configuration for Bluetooth Low Energy network transport. Not supported on all platforms (yet). More...
 
class  Ditto
 The entrypoint to the Ditto SDK. More...
 
struct  DittoAddress
 An address uniquely representing another device on the Ditto network. More...
 
class  DittoAlreadyExistsIOException
 A file or directory already exists. More...
 
class  DittoAttachment
 A reference to a binary attachment file. More...
 
class  DittoAttachmentException
 Exception thrown for attachments related errors. More...
 
class  DittoAttachmentFetcher
 These objects are returned by calls to DittoCollection.FetchAttachment(DittoAttachmentToken, Action<DittoAttachmentFetchEvent>). More...
 
class  DittoAttachmentFetchEvent
 A representation of the events that can occur in relation to an attachment fetch. More...
 
class  DittoAttachmentFileNotFoundException
 Exception thrown while trying to create an attachment for a file that does not exist. More...
 
class  DittoAttachmentFilePermissionDeniedException
 Exception thrown when permission has been denied for a file operation while working with attachments. More...
 
class  DittoAttachmentNotFoundException
 Exception thrown when an attachment could not be found. More...
 
class  DittoAttachmentToken
 Serves as a token for a specific attachment that you can pass to a call to DittoCollection.FetchAttachment(DittoAttachmentToken, Action<DittoAttachmentFetchEvent>). More...
 
class  DittoAttachmentTokenInvalidException
 Exception thrown for an invalid attachment token. More...
 
class  DittoAuthenticationRequestEventArgs
 Data passed to the Ditto.DittoIdentityProviderAuthenticationRequest event handler when a peer wishes to use the current device as an authentication server. More...
 
struct  DittoAuthenticationStatus
 Provides info about the authentication status. More...
 
class  DittoAuthenticationSuccess
 Defines the properties and permissions of a user who has authenticated successfully and will be able to participate in the Ditto mesh. More...
 
class  DittoAuthenticator
 Provides access to authentication information and methods for logging on to Ditto Cloud. Relevant when using an OnlineWithAuthentication or an Online identity. More...
 
class  DittoBus
 Send and receive messages with remote Ditto peers in the mesh. More...
 
class  DittoCollection
 A reference to a collection in a DittoStore. More...
 
class  DittoCollectionsEvent
 Provides information about the changes that have occurred in relation to an event delivered when observing the collections in a DittoStore. It contains information about the collections that are known about as well as the collections that were previously known about in the previous event, along with information about what collections have been inserted, deleted, updated, or moved since the last event. More...
 
class  DittoConnect
 Configuration for network transports used to connect with Ditto big peers. More...
 
struct  DittoConnection
 Represents a connection between two peers in a Ditto mesh network. More...
 
class  DittoConnectionRequest
 Contains information about a remote peer that has requested a connection. More...
 
class  DittoCounter
 Represents a CRDT counter that can be upserted as part of a document or assigned to a property during an update of a document. More...
 
class  DittoCrdtException
 Exception thrown for generic CRDT errors. More...
 
class  DittoDepthLimitExceededValidationException
 Exception thrown when the depth limit for dictionary-like data has been exceeded. More...
 
class  DittoDiskUsage
 Entrypoint for accessing information about the amount of disk storage used by Ditto. This class can't be instantiated. You can access an instance through the ditto.DiskUsage API. More...
 
class  DittoDiskUsageChild
 A token returned by ObservePeers. Retain this object to continue receiving callback updates. More...
 
class  DittoDiskUsageObserver
 An observer monitoring disk usage changes. More...
 
class  DittoDocument
 A document in a DittoCollection. More...
 
class  DittoDocumentId
 An identifier for a DittoDocument More...
 
class  DittoDocumentIdPath
 Provides an interface to specify a path to a key in a document identifier that you can then call a function on to get the value at the specified key as a specific type. More...
 
class  DittoDocumentPath
 Provides an interface to specify a path to a key in a document that you can then call a function on to get the value at the specified key as a specific type. More...
 
class  DittoError
 Used to represent all Ditto-related errors that aren't thrown as exceptions. More...
 
class  DittoException
 An exception that is thrown when Ditto encounters an error. More...
 
class  DittoExperimental
 Upcoming SDK features made available for prototyping. More...
 
class  DittoFailedToCreateAttachmentException
 Exception thrown if an error ocurred while creating an attachment. More...
 
class  DittoFailedToFetchAttachmentException
 Exception thrown if an error ocurred while fetching an attachment. More...
 
class  DittoFFIException
 An exception that is thrown when Ditto FFI encounters an error. This exception contains additional details that can be useful for debugging and support. More...
 
class  DittoGlobal
 Configuration for all network transports. More...
 
class  DittoHttpListenConfig
 Configuration for less common data sync scenarios. Please read the documentation on the Ditto website for examples. Incorrect use of Listen can result in insecure configurations. More...
 
class  DittoIdentity
 Used to identify a given peer in your network. In practice a peer may be a user, a device, or it might be some other entity in your system. More...
 
class  DittoInvalidCborException
 The data does not represent valid CBOR data. More...
 
class  DittoInvalidJsonException
 The data does not represent a valid JSON string. More...
 
class  DittoIOException
 An error occurred relating to I/O. More...
 
class  DittoLanConfig
 Configuration for local LAN Wi-Fi network transport. More...
 
class  DittoListen
 Configuration for network transports used to allow incoming connections from other Ditto peers. More...
 
class  DittoLiveQuery
 A reference to a Live Query. The live query will respond to any changes relevant to the query that occur in the device's data store. Do not instantiate this by itself. The live query will keep the handler informed of all changes so long as it is not garbage collected or disposed. More...
 
class  DittoLiveQueryEvent
 Describes events delivered by a DittoLiveQuery. More...
 
class  DittoLiveQueryMove
 An object that describes how a document's position in a live query's list of matching documents has changed since the previous live query event. More...
 
class  DittoMutableCounter
 Represents a mutable CRDT counter that can be incremented by a specific amount while updating a document. More...
 
class  DittoMutableDocument
 A special reference to a DittoDocument that can be used to perform mutation on a document. Do not instantiate directly. This reference should never leave the scope of the lambda provided as part of a call to DittoPendingCursorOperation.Update(Action<List<DittoMutableDocument>>) or DittoPendingIdSpecificOperation.Update(Action<DittoMutableDocument>) and should not be used across different threads. More...
 
class  DittoMutableDocumentPath
 Provides an interface to specify a path to a key in a document that you can then call various update functions on. You obtain a DittoMutableDocumentPath by subscripting a DittoMutableDocument and you can then further subscript a DittoMutableDocumentPath to further specify the key of the document that you want to update. More...
 
class  DittoMutableRegister
 Represents a mutable CRDT register that can be updated while updating a document. More...
 
class  DittoNotADictionaryValidationException
 Exception thrown if given an invalid object when a dictionary was expected. More...
 
class  DittoNotFoundIOException
 A file or directory could not be found. More...
 
class  DittoNotJsonCompatibleException
 JSON Serialization for a provided object failed. More...
 
class  DittoOperationFailedIOException
 The operation failed for an unspecified reason. See error message for details. More...
 
struct  DittoPeer
 Represents a peer in a Ditto mesh network. More...
 
class  DittoPeersObserver
 A token returned by ObservePeers. Retain this object to continue receiving callback updates. More...
 
class  DittoPeerToPeer
 Configuration for network transport used to connect with other Ditto small peers. Some transports are not supported on all platforms. More...
 
class  DittoPendingCollectionsOperation
 These objects are returned when calling Collections() on DittoStore. More...
 
class  DittoPendingCursorOperation
 These objects are returned when using find-like functionality on DittoCollection objects. More...
 
class  DittoPendingIdSpecificOperation
 These objects are returned when using DittoCollection.FindById(string) functionality. More...
 
class  DittoPermissionDeniedIOException
 The operation failed due to insufficient permissions. More...
 
class  DittoPresence
 The entrypoint for all actions that relate presence of other peers known by the current peer, either directly or through other peers. More...
 
struct  DittoPresenceGraph
 Represent the states of all known peers. More...
 
class  DittoPresenceObserver
 A token returned by ObservePresence. Retain this object to continue receiving callback updates. More...
 
class  DittoQueryArgumentsInvalidException
 Exception thrown when the query arguments used were invalid. More...
 
class  DittoQueryException
 Exception thrown for query execution errors. More...
 
class  DittoQueryInvalidException
 Exception thrown for invalid queries. More...
 
class  DittoQueryNotSupportedException
 The query is syntactically valid but uses features that are either not supported at all yet or not supported in a particular context. More...
 
class  DittoQueryResult
 Represents the result of executing a DQL query. More...
 
class  DittoQueryResultItem
 Represents a single match of a DQL query, similar to a "row" in SQL terms. It's a reference type serving as a "cursor", allowing for efficient access of the underlying data in various formats. More...
 
class  DittoRegister
 Represents a CRDT register that can be upserted as part of a document or assigned to a property during an update of a document. More...
 
class  DittoRemotePeer
 A summary snapshot of the connections currently active with a remote peer. More...
 
class  DittoScopedWriteTransaction
 Exposes functionality that allows you to perform multiple operations on the store within a single write transaction. More...
 
class  DittoSingleDocumentLiveQueryEvent
 Provides information about a live query event relating to a single document live query. More...
 
class  DittoSizeLimitExceededValidationException
 Exception thrown when the size limit for some piece of data has been exceeded. More...
 
class  DittoSmallPeerInfo
 The entrypoint for small peer user info collection. More...
 
class  DittoStore
 A class encompassing functionality relating to the embedded storage. This is not a class you instantiate directly. Instead you access DittoStore objects using Ditto.Store. More...
 
class  DittoStoreBackendException
 Exception thrown for errors with the storage backend. More...
 
class  DittoStoreDocumentNotFoundExpcetion
 Exception thrown when a document could not be found. More...
 
class  DittoStoreException
 Exception thrown for Ditto store related issues. More...
 
class  DittoStoreObserver
 A store observer invokes an observation handler whenever results for its query change. More...
 
class  DittoSubscription
 A reference to a subscription to data with other remote peers. You do not instantiate DittoSubscription objects directly. Instead they are created by calling DittoPendingCursorOperation.Subscribe or DittoPendingIdSpecificOperation.Subscribe. More...
 
class  DittoSync
 Provides access to sync related functionality of Ditto. More...
 
class  DittoTcpListenConfig
 Configuration for less common data sync scenarios. Please read the documentation on the Ditto website for examples. Incorrect use of Listen can result in insecure configurations. More...
 
class  DittoTransportConditionChangedEventArgs
 Data passed to the Ditto.DittoTransportConditionChanged event handler when the condition of one of the underlying transports that Ditto uses changes. More...
 
class  DittoTransportConfig
 Configuration object specifying which network transports Ditto should use to sync data. More...
 
class  DittoTransportDiagnostics
 Provides a view into the state of the transports being used by Ditto at a point in time. More...
 
class  DittoTransportHandle
 Wrapper around an Action for cleaning up native transport resources. More...
 
class  DittoTransportSnapshot
 Provides information about a given transport at a point in time. More...
 
class  DittoUnsupportedException
 Operation is not supported. More...
 
class  DittoUpdateResult
 Provides information about a successful update operation on a document. More...
 
class  DittoValidationException
 Exception thrown for input validation failures. More...
 
class  DittoWriteTransaction
 Exposes functionality that allows you to perform multiple operations on the store within a single write transaction. More...
 
class  DittoWriteTransactionPendingCursorOperation
 These objects are returned when using DittoScopedWriteTransaction.Find(string), DittoScopedWriteTransaction.Find(string, Dictionary<string, object>), or DittoScopedWriteTransaction.FindAll. More...
 
class  DittoWriteTransactionPendingIdSpecificOperation
 These objects are returned when using DittoScopedWriteTransaction.FindById(string) functionality. More...
 
class  DittoWriteTransactionResult
 Provides information about the result of an operation on a document that was part of a write transaction. More...
 
interface  IDittoAuthenticationDelegate
 Provides feedback to the developer about Ditto authentication status. More...
 
interface  IDittoObserver
 An observation token returned by any observation API in the Ditto SDK. More...
 
class  WifiAwareConfig
 Configuration for Wi-Fi Aware network transport. Not supported on all platforms. More...
 

Enumerations

enum  FileType { Directory , File , SymLink }
 
enum  DittoConnectionRequestAuthorization { Allow , Deny }
 Indicates whether a connection request should be authorized. More...
 
enum  DittoLogLevel {
  Error = 1 , Warning = 2 , Info = 3 , Debug = 4 ,
  Verbose = 5
}
 The different log levels that Ditto supports.
 
enum  DittoIdentityType {
  OfflinePlayground , OnlineWithAuthentication , OnlinePlayground , SharedKey ,
  Manual
}
 The identity types you can use with Ditto. More...
 
enum  DittoSmallPeerInfoSyncScope { BigPeerOnly , LocalPeerOnly }
 Specifies which peers to replicate the small peer info to. More...
 
enum  DittoSortDirection { Ascending = 1 , Descending = 2 }
 Describes the lexicographic or numeric sorting direction for a query. More...
 
enum  DittoWriteStrategy { Merge = 1 , InsertIfAbsent = 2 , InsertDefaultIfAbsent = 3 , UpdateDifferentValues }
 Defines the various strategies available when inserting a document into a collection. More...
 
enum  DittoConditionSource : uint {
  Bluetooth = 0 , Tcp = 1 , Awdl = 2 , Mdns = 3 ,
  WifiAware = 4
}
 The subsystem which is reporting a condition change.
 
enum  DittoConnectionPriority { DontConnect = 0 , Normal = 1 , High = 2 }
 The priority with which the local device should reach out to particular remote peers in the Ditto mesh. More...
 
enum  DittoConnectionType { Bluetooth , AccessPoint , P2PWiFi , WebSocket }
 The transport protocol used by two peers to communicate within a given connection.
 
enum  DittoTransportCondition : uint {
  Unknown = 0 , Ok = 1 , GenericFailure = 2 , AppInBackground = 3 ,
  MdnsFailure = 4 , TcpListenFailure = 5 , NoBleCentralPermission = 6 , NoBlePeripheralPermission = 7 ,
  CannotEstablishConnection = 8 , BleDisabled = 9 , NoBleHardware = 10 , WifiDisabled = 11 ,
  TemporarilyUnavailable = 12
}
 The different conditions that a transport can be in at a point in time.
 

Functions

void Cancel ()
 A sync subscription configures Ditto to receive updates from remote peers about documents matching the subscription's query.
 

Enumeration Type Documentation

◆ DittoConnectionPriority

The priority with which the local device should reach out to particular remote peers in the Ditto mesh.

For most use-cases, this API is not required as Ditto will automatically create an optimal P2P mesh. Certain use-cases, however, might require more manual control over how the mesh is formed.

Enumerator
DontConnect 

Do not attempt to connect. Note that connections can be established by either peer, so the remote peer might still connect to this Ditto unless they are similarly configured.

Normal 

Connect with normal priority. This is also the default case unless specified otherwise.

High 

Connect with high priority. Remote peers which are assigned this connection priority will be preferred over normal priority peers.

This priority will only have a meaningful effect once there are more nearby peers than the local Ditto instance is able to simultaneously connect to.

◆ DittoConnectionRequestAuthorization

Indicates whether a connection request should be authorized.

Enumerator
Allow 

The connection request will be allowed.

Deny 

The connection request will be denied.

◆ DittoIdentityType

The identity types you can use with Ditto.

  • OfflinePlayground: Develop peer-to-peer apps with no cloud connection. This mode offers no security and must only be used for development.
  • OnlineWithAuthentication: Run Ditto in secure production mode, logging on to Ditto Cloud or on on-premises authentication server.User permissions are centrally managed.
  • OnlinePlayground: Test a Ditto Cloud app without authentication ("Playground mode"). This mode offers no security and must only be used for development.
  • SharedKey: A mode where any device is trusted provided they know the secret key.This is a simplistic authentication model normally only suitable for private apps where users and devices are both trusted.
  • Manual: A manually-provided certificate identity.This accepts a base64-encoded bundle.

◆ DittoSmallPeerInfoSyncScope

Specifies which peers to replicate the small peer info to.

By default, the small peer info is replicated only to the big peer. This behavior can be customized to better match a specific application.

◆ DittoSortDirection

Describes the lexicographic or numeric sorting direction for a query.

Enumerator
Ascending 

Informs the query to return values sorted in a lexicographic or numeric ascending order.

Descending 

Informs the query to return values sorted in a lexicographic or numeric descending order.

◆ DittoWriteStrategy

Defines the various strategies available when inserting a document into a collection.

Enumerator
Merge 

An existing document will be merged with the document being inserted, if there is a pre-existing document.

InsertIfAbsent 

Insert the document only if there is not already a document with the same identifier in the store. If there is already a document in the store with the same identifier then this will be a no-op.

InsertDefaultIfAbsent 

Insert the document, with its contents treated as default data, only if there is not already a document with the same identifier in the store. If there is already a document in the store with the same identifier then this will be a no-op. Use this strategy if you want to insert default data for a given document identifier, which you want to treat as common initial data amongst all peers and that you expect to be mutated or overwritten in due course.

UpdateDifferentValues 

The existing document will be updated based on the document being inserted. If there is a pre-existing document in the local store with the same ID, compare its value to the current value of the document. Update any differing register and attachment leaf values in the document to match the given value. Nothing is removed. This is equivalent to using an if statement to check each value in the provided payload against the local document value. <warning> In cases of concurrent writes, non-differing values will be overridden by peers because this write strategy excludes values from the given payload that are identical to those in the local store. </warning>

Function Documentation

◆ Cancel()

void DittoSDK.Cancel ( )

A sync subscription configures Ditto to receive updates from remote peers about documents matching the subscription's query.

Create a sync subscription by calling DittoSync.RegisterSubscription. The subscription will remain active until either explicitly cancelled or the owning Ditto object goes out of scope or Cancel() is called. / public class DittoSyncSubscription { private readonly WeakReference<Ditto> ditto;

internal DittoSyncSubscription(Ditto ditto, string query, Dictionary<string, object> arguments, byte[] queryArgumentsCbor) { this.ditto = new WeakReference<Ditto>(ditto); this.QueryString = query; this.QueryArguments = arguments; this.QueryArgumentsCbor = queryArgumentsCbor; }

/

/ Gets the Ditto instance this subscription belongs to. / public Ditto Ditto => this.ditto.GetValue();

/

/ Gets the query string of the sync subscription. / public string QueryString { get; private set; }

/

/ Gets the query arguments of the sync subscription. / public Dictionary<string, object> QueryArguments { get; private set; }

/

/ Gets a value indicating whether the sync subscription has been cancelled or not. / Also, a sync subscription is considered cancelled / if the owning Ditto object goes out of scope. / public bool IsCancelled => !this.Ditto?.Sync.SubscriptionConcurrentDict.ContainsKey(this) ?? true;

NOTE: We carry the arguments CBOR data through in order to avoid having to re-encode it again when cancelling/removing/unregistering the sync subscription. internal byte[] QueryArgumentsCbor { get; private set; }

/

/ Cancels the sync subscription so that new changes matching the query are / no longer received from other peers. No-op if it's already cancelled or / the owning Ditto object goes out of scope.