Ditto 4.8.0
Loading...
Searching...
No Matches
DittoSDK.Ditto Class Referencesealed

The entrypoint to the Ditto SDK. More...

Inherits Drop.

Public Member Functions

 Ditto (DittoIdentity identity=default, string workingDir=null)
 Initializes a new instance of the Ditto class.
 
string AppId ()
 Get the Ditto application Id.
 
void StartSync ()
 Starts the network transports. Ditto will connect to other devices.
 
void StopSync ()
 Stops all network transports.
 
void SetOfflineOnlyLicenseToken (string licenseToken)
 Activate an offline Ditto instance by setting a license token. You cannot sync with Ditto before you have activated it. The offline license token is only valid for Development, Manual, OfflinePlayground and SharedKey identities.
 
DittoTransportDiagnostics TransportDiagnostics ()
 Request bulk status information about the transports. This is mostly intended for statistical or debugging purposes.
 
DittoPeersObserver ObservePeers (Action< List< DittoRemotePeer > > callback)
 Request information about Ditto peers in range of this device. This method returns an observer which should be held as long as updates are required. A newly registered observer will have a peers update delivered to it immediately. From then on it will be invoked repeatedly when Ditto devices come and go, or the active connections to them change.
 
void DisableSyncWithV3 ()
 Disable sync with peers running version 3 or lower of the Ditto SDK.
 
void RunGarbageCollection ()
 Removes all sync metadata for any remote peers which aren't currently connected. This method shouldn't usually be called. Manually running garbage collection often will result in slower sync times. Ditto automatically runs a garbage collection process in the background at optimal times.
 

Protected Member Functions

override void Dispose (bool disposing)
 Overload for types to dispose of resources, regardless of whether the type is being disposed or finalized. Note that finalization occurs on a dedicated thread.
 

Properties

static string Version [get]
 Gets a string containing the semantic version of the Ditto SDK. Example: 4.5.0.
 
bool IsSyncActive [get]
 Gets a value indicating whether or not sync is active. Use StartSync() to activate and StopSync() to deactivate sync.
 
bool Activated [get]
 Gets a value indicating whether or not the SDK has been activated.
 
string DeviceName [get, set]
 Gets or sets a custom identifier for this peer.
 
ulong SiteId [get]
 Gets the unique identifier of a peer in Ditto's distributed mesh network.
 
string PersistenceDirectory [get]
 Gets the persistence directory used by Ditto to persist data.
 
DittoStore Store [get]
 Gets a reference to the embedded data store.
 
DittoSync Sync [get]
 Gets the instance that provides access to the SDK's sync functionality.
 
DittoPresence Presence [get]
 Gets a reference to the presence manager.
 
DittoDiskUsage DiskUsage [get]
 Gets a reference to the disk usage.
 
string SDKVersion [get]
 Gets a string identifying the version of the Ditto SDK including some metadata.

See also
Ditto.Version

 
DittoAuthenticator Auth [get]
 Gets a DittoAuthenticator that provides access to authentication information and methods for logging on to Ditto Cloud.
 
DittoTransportConfig TransportConfig [get, set]
 Gets or sets assign a new transports configuration. By default peer-to-peer transports are enabled.
 
DittoSmallPeerInfo SmallPeerInfo [get]
 Provides access to the SDK's small peer info functionality.
 

Events

EventHandler< DittoTransportConditionChangedEventArgsDittoTransportConditionChanged
 An optional EventHandler delegate that can be provided to get updates about events relating to changes in network transports.
 
EventHandler< DittoAuthenticationRequestEventArgsDittoIdentityProviderAuthenticationRequest
 An optional EventHandler delegate that can be provided to respond to incoming authentication requests from peers who wish to join the Ditto mesh. Requires setup of signing and verification keys in the Http part of TransportConfig.
 

Detailed Description

The entrypoint to the Ditto SDK.

For a Ditto instance to continue to connect to other devices it must be kept in scope.

Constructor & Destructor Documentation

◆ Ditto()

DittoSDK.Ditto.Ditto ( DittoIdentity identity = default,
string workingDir = null )
inline

Initializes a new instance of the Ditto class.

Parameters
identityProvide the identity of the entity that is interacting with Ditto.
workingDirThe directory that will be used to persist Ditto data.

Member Function Documentation

◆ AppId()

string DittoSDK.Ditto.AppId ( )
inline

Get the Ditto application Id.

Returns
The Ditto application Id.

◆ DisableSyncWithV3()

void DittoSDK.Ditto.DisableSyncWithV3 ( )
inline

Disable sync with peers running version 3 or lower of the Ditto SDK.

Required for the execution of mutating DQL statements.

This setting spreads to other peers on connection. Those peers will in turn spread it further until all peers in the mesh take on the same setting. This is irreversible and will persist across restarts of the Ditto instance.

Calling this method before StartSync is recommended whenever possible. This improves performance of initial sync when this peer has never before connected to a Ditto mesh for which sync with v3 peers is disabled.

◆ Dispose()

override void DittoSDK.Ditto.Dispose ( bool disposing)
inlineprotected

Overload for types to dispose of resources, regardless of whether the type is being disposed or finalized. Note that finalization occurs on a dedicated thread.

Parameters
disposingtrue when invoked from an explicit Dispose() call. false when invoked from the finalizer.

◆ ObservePeers()

DittoPeersObserver DittoSDK.Ditto.ObservePeers ( Action< List< DittoRemotePeer > > callback)
inline

Request information about Ditto peers in range of this device. This method returns an observer which should be held as long as updates are required. A newly registered observer will have a peers update delivered to it immediately. From then on it will be invoked repeatedly when Ditto devices come and go, or the active connections to them change.

Parameters
callbackThe Action that will be invoked when there is a presence update.
Returns
A DittoPeersObserver instance, which must be retained to continue receiving callback updates.

◆ RunGarbageCollection()

void DittoSDK.Ditto.RunGarbageCollection ( )
inline

Removes all sync metadata for any remote peers which aren't currently connected. This method shouldn't usually be called. Manually running garbage collection often will result in slower sync times. Ditto automatically runs a garbage collection process in the background at optimal times.

Manually running garbage collection is typically only useful during testing if large amounts of data are being generated. Alternatively, if an entire data set is to be evicted and it's clear that maintaining this metadata isn't necessary, then garbage collection could be run after evicting the old data.

◆ SetOfflineOnlyLicenseToken()

void DittoSDK.Ditto.SetOfflineOnlyLicenseToken ( string licenseToken)
inline

Activate an offline Ditto instance by setting a license token. You cannot sync with Ditto before you have activated it. The offline license token is only valid for Development, Manual, OfflinePlayground and SharedKey identities.

Parameters
licenseTokenThe license token to activate the Ditto instance with, which you can find on the Ditto portal (https://portal.ditto.live).
Exceptions
DittoExceptionThrown if the provided license token is expired or invalid.
ExceptionThrown if you attempt to set an offline license token on an online idetity.

◆ StartSync()

void DittoSDK.Ditto.StartSync ( )
inline

Starts the network transports. Ditto will connect to other devices.

By default Ditto will enable all peer-to-peer transport types. The network configuration can be customized using the SetTransportConfig method.

Performance of initial sync when bootstrapping a new peer can be improved by calling DisableSyncWithV3 before calling StartSync. Only do this when all peers in the mesh are known to be running Ditto v4 or higher.

Exceptions
DittoExceptionThrown if the Ditto instance hasn't been activated by a successful call to SetLicenseToken.

◆ StopSync()

void DittoSDK.Ditto.StopSync ( )
inline

Stops all network transports.

You may continue to use the database locally but no data will sync to or from other devices.

◆ TransportDiagnostics()

DittoTransportDiagnostics DittoSDK.Ditto.TransportDiagnostics ( )
inline

Request bulk status information about the transports. This is mostly intended for statistical or debugging purposes.

Returns
An instance of DittoTransportDiagnostics that represents the current state of the network transports that the SDK is using.

Property Documentation

◆ Activated

bool DittoSDK.Ditto.Activated
get

Gets a value indicating whether or not the SDK has been activated.

If false then you need to call Ditto.SetLicenseToken(string) before interacting with the SDK.

◆ DeviceName

string DittoSDK.Ditto.DeviceName
getset

Gets or sets a custom identifier for this peer.

When using ObservePeers(), each remote peer is represented by a short UTF-8 "device name". By default this will be a truncated version of the device's hostname.

Changes to this property after StartSync() was called will only take effect after the next restart of sync. The value does not need to be unique among peers. Device names longer than 24 bytes will be truncated once StartSync() is called.

◆ PersistenceDirectory

string DittoSDK.Ditto.PersistenceDirectory
get

Gets the persistence directory used by Ditto to persist data.

It is not recommended to directly read or write to this directory as its structure and contents are managed by Ditto and may change in future versions.

When DittoLogger is enabled, logs may be written to this directory even after a Ditto instance was deallocated. Please refer to the documentation of DittoLogger for more information.

◆ SiteId

ulong DittoSDK.Ditto.SiteId
get

Gets the unique identifier of a peer in Ditto's distributed mesh network.

IMPORTANT: This must be unique or the merging and conflict resolution will have unexpected behavior.

◆ TransportConfig

DittoTransportConfig DittoSDK.Ditto.TransportConfig
getset

Gets or sets assign a new transports configuration. By default peer-to-peer transports are enabled.

You may use this method to alter the configuration at any time, however sync will not begin until StartSync() is called.