Wasabi ExpressPlay SDK for Embedded Systems  1.23.0
Data Structures | Macros | Typedefs | Enumerations | Functions
ShiEngine.h File Reference

DRM Engine. More...

#include "ShiResults.h"
#include "ShiTypes.h"
#include "ShiInterfaces.h"
#include "ShiList.h"
#include "ShiLicense.h"
#include "ShiService.h"
#include "ShiProperties.h"

Go to the source code of this file.

Data Structures

struct  SHI_EngineEventInfoItem
 A single event information item. More...
 
struct  SHI_EngineEventInfoItems
 List of event information items. More...
 
struct  SHI_EngineEvent
 Information about an event received by a SHI_EngineListener. More...
 
struct  SHI_LicenseDataReceivedEvent
 Event data for all SHI_ENGINE_EVENT_LICENSE_DATA_RECEIVED events. More...
 
struct  SHI_EngineListener
 Recipient of event callbacks. More...
 
struct  SHI_EngineListenerInterface
 Interface implemented by an application in order to receive event notifications from a SHI_Engine. More...
 
struct  SHI_EngineConfig
 Configuration passed as an argument to the SHI_Engine_Create factory function. More...
 
struct  SHI_RegistrationDataManager
 Interface implemented and passed to SHI_Engine_ProcessServiceTokenEx to modify where the SDK should get the personality and nodes from and where to save nodes and links. More...
 

Macros

#define SHI_ERROR_ENGINE_NOT_PERSONALIZED   (SHI_ERROR_BASE_API_ENGINE - 0)
 
#define SHI_ERROR_ENGINE_INVALID_TEMPLATE   (SHI_ERROR_BASE_API_ENGINE - 1)
 
#define SHI_ERROR_ENGINE_POST_VACUUM   (SHI_ERROR_BASE_API_ENGINE - 2)
 
#define SHI_ERROR_ENGINE_NO_CONFIG_TOKEN   (SHI_ERROR_BASE_API_ENGINE - 3)
 
#define SHI_ERROR_ENGINE_ALREADY_PERSONALIZED   (SHI_ERROR_BASE_API_ENGINE - 4)
 
#define SHI_ENGINE_PROP_VERSION   "Version"
 The SHI_Engine supports the SHI_Properties interface that you can access through the SHI_Engine_GetInterface method. More...
 
#define SHI_ENGINE_PROP_BUILD_DATE   "BuildDate"
 SHI_DATA_TYPE_STRING. More...
 
#define SHI_ENGINE_PROP_IS_PERSONALIZED   "IsPersonalized"
 SHI_DATA_TYPE_BOOLEAN. More...
 
#define SHI_ENGINE_PROP_PERSONALITY   "Personality"
 SHI_DATA_TYPE_OBJECT. More...
 
#define SHI_ENGINE_PROP_HTTP_PROXY_HOST_NAME   "HttpProxyHostname"
 SHI_DATA_TYPE_STRING. More...
 
#define SHI_ENGINE_PROP_HTTP_PROXY_PORT   "HttpProxyPort"
 SHI_DATA_TYPE_INTEGER. More...
 
#define SHI_ENGINE_PROP_HTTP_PROXY_ENABLED   "HttpProxyEnabled"
 SHI_DATA_TYPE_BOOLEAN. More...
 
#define SHI_ENGINE_PROP_HTTPS_PROXY_HOST_NAME   "HttpsProxyHostname"
 SHI_DATA_TYPE_STRING. More...
 
#define SHI_ENGINE_PROP_HTTPS_PROXY_PORT   "HttpsProxyPort"
 SHI_DATA_TYPE_INTEGER. More...
 
#define SHI_ENGINE_PROP_HTTP_CONNECTION_TIMEOUT   "HttpConnectionTimeout"
 SHI_DATA_TYPE_INTEGER. More...
 
#define SHI_ENGINE_PROP_HTTP_IO_TIMEOUT   "HttpIOTimeout"
 SHI_DATA_TYPE_INTEGER. More...
 
#define SHI_ENGINE_PROP_PREFERRED_LANGUAGES   "PreferredLanguages"
 SHI_DATA_TYPE_ARRAY of SHI_DATA_TYPE_STRING. More...
 
#define SHI_ENGINE_PROP_CACHE_POLICY   "CachePolicy"
 SHI_DATA_TYPE_INTEGER. More...
 
#define SHI_ENGINE_PROP_NEMO   "Nemo"
 SHI_DATA_TYPE_OBJECT. More...
 
#define SHI_ENGINE_VACUUM_FLAG_NODES   (1)
 vacuuming types More...
 
#define SHI_ENGINE_VACUUM_FLAG_LINKS   (2)
 remove expired links More...
 
#define SHI_ENGINE_VACUUM_FLAG_SEASHELL   (4)
 remove expired seashell objects More...
 
#define SHI_ENGINE_VACUUM_FLAG_DONT_SAVE_RECENT_LINK   (8)
 most recent expired link will not be spared More...
 
#define SHI_ENGINE_VACUUM_FLAG_WIPE   (16)
 remove everything but personality More...
 

Typedefs

typedef struct SHI_EngineListenerInstance SHI_EngineListenerInstance
 
typedef struct SHI_EngineListenerInterface SHI_EngineListenerInterface
 
typedef struct SHI_RegistrationDataManager SHI_RegistrationDataManager
 Interface implemented and passed to SHI_Engine_ProcessServiceTokenEx to modify where the SDK should get the personality and nodes from and where to save nodes and links. More...
 
typedef struct SHI_Engine SHI_Engine
 A SHI_Engine object is the initial point of interaction between an application and a DRM Engine. More...
 

Enumerations

enum  SHI_EngineCachePolicy {
  SHI_ENGINE_CACHE_CACHE_LINKS,
  SHI_ENGINE_CACHE_RELOAD_LINKS
}
 Caching policies. More...
 
enum  SHI_EngineCertChain {
  SHI_ENGINE_CERT_CHAIN_NEMO_SIGN,
  SHI_ENGINE_CERT_CHAIN_NEMO_ENCRYPT
}
 certificate chain types More...
 
enum  SHI_EngineEventType {
  SHI_ENGINE_EVENT_SERVICE_ADDED,
  SHI_ENGINE_EVENT_SERVICE_REMOVED,
  SHI_ENGINE_EVENT_SERVICE_CHANGED,
  SHI_ENGINE_EVENT_SERVICE_USER_ADDED,
  SHI_ENGINE_EVENT_SERVICE_USER_REMOVED,
  SHI_ENGINE_EVENT_SERVICE_USER_CHANGED,
  SHI_ENGINE_EVENT_TRANSACTION_BEGIN,
  SHI_ENGINE_EVENT_TRANSACTION_END,
  SHI_ENGINE_EVENT_TRANSACTION_PROGRESS,
  SHI_ENGINE_EVENT_LICENSE_DATA_RECEIVED
}
 Types of events that a SHI_EngineEventListener may receive. More...
 

Functions

SHI_PUBLIC_API void * SHI_Engine_GetInterface (SHI_Engine *self, SHI_InterfaceId iface_id)
 Obtains a pointer to a SHI_Engine object with a different interface. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_Destroy (SHI_Engine *self)
 Destroys this engine object. More...
 
SHI_PUBLIC_API SHI_Boolean SHI_Engine_IsPersonalized (SHI_Engine *self)
 Indicates whether or not this engine has been personalized. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_Personalize (SHI_Engine *self, const char *token, SHI_Size token_size, const void *cookie)
 Requests that this engine engage in the personalization process. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_UpdatePersonality (SHI_Engine *self, const char *token, SHI_Size token_size, const void *cookie)
 Requests that this engine engage in the personality update process to renew its public credentials. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_GetTrustedTime (SHI_Engine *self, SHI_DateTime *now)
 Returns the current value of the trusted time. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_ProcessServiceToken (SHI_Engine *self, const char *token, SHI_Size token_size, const void *cookie)
 Requests that this engine process a service token, such as a Broadband Action Token. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_ProcessServiceTokenEx (SHI_Engine *self, const char *token, SHI_Size token_size, const void *cookie, SHI_RegistrationDataManager *registration_data_manager)
 Use this API instead of SHI_Engine_ProcessServiceToken if you want to overwrite the default behavior for saving and loading nodes and links during registration. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_EnumerateServices (SHI_Engine *self, SHI_List **services)
 Gets the list of the services that are currently configured for this engine. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_EnumerateServiceUsers (SHI_Engine *self, const char *service_id, SHI_List **users)
 Gets a list of service users of one or more of this engine's configured services. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_EnumerateServiceSubscriptions (SHI_Engine *self, const char *service_id, const char *user_id, SHI_List **subscriptions)
 Gets a list of subscriptions associated with one or more of the engine's configured services. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_CreateLicense (SHI_Engine *self, SHI_License **license)
 Creates a new SHI_License object managed by this engine. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_UpdateSecurityData (SHI_Engine *self, const char *service_id, SHI_UInt32 last_update, const void *cookie)
 Updates security data for a specified service configured for this engine object. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_VacuumData (SHI_Engine *self, SHI_Flags vacuum_options)
 Removes expired data stored in Sushi's database. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_GetObjectDetails (SHI_Engine *self, const char *object_id, SHI_Attribute **details)
 Gets the details of this Octopus object. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_DeleteObject (SHI_Engine *self, const char *object_id)
 Removes the given Octopus object from the Sushi database. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_GetLinkIds (SHI_Engine *self, SHI_Data **id_array)
 Gets list of all Octopus links known to this Sushi instance. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_GetNodeIds (SHI_Engine *self, SHI_Data **id_array)
 Gets list of all Octopus nodes known to this Sushi instance. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_TransformURITemplate (SHI_Engine *self, const char *uri_template, SHI_Data **uri)
 Transforms a URI template according to the "URI Templates for Marlin" specification. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_GetCertificateChain (SHI_Engine *self, SHI_EngineCertChain cert_chain, SHI_Data **cert_array)
 Get the certificates of the specified certificate chain. More...
 
SHI_PUBLIC_API SHI_Result SHI_Engine_Create (const SHI_EngineConfig *config, SHI_Engine **engine)
 Creates a SHI_Engine object. More...
 

Detailed Description

DRM Engine.

Macro Definition Documentation

◆ SHI_ENGINE_PROP_BUILD_DATE

#define SHI_ENGINE_PROP_BUILD_DATE   "BuildDate"

SHI_DATA_TYPE_STRING.

◆ SHI_ENGINE_PROP_CACHE_POLICY

#define SHI_ENGINE_PROP_CACHE_POLICY   "CachePolicy"

SHI_DATA_TYPE_INTEGER.

◆ SHI_ENGINE_PROP_HTTP_CONNECTION_TIMEOUT

#define SHI_ENGINE_PROP_HTTP_CONNECTION_TIMEOUT   "HttpConnectionTimeout"

SHI_DATA_TYPE_INTEGER.

◆ SHI_ENGINE_PROP_HTTP_IO_TIMEOUT

#define SHI_ENGINE_PROP_HTTP_IO_TIMEOUT   "HttpIOTimeout"

SHI_DATA_TYPE_INTEGER.

◆ SHI_ENGINE_PROP_HTTP_PROXY_ENABLED

#define SHI_ENGINE_PROP_HTTP_PROXY_ENABLED   "HttpProxyEnabled"

SHI_DATA_TYPE_BOOLEAN.

◆ SHI_ENGINE_PROP_HTTP_PROXY_HOST_NAME

#define SHI_ENGINE_PROP_HTTP_PROXY_HOST_NAME   "HttpProxyHostname"

SHI_DATA_TYPE_STRING.

◆ SHI_ENGINE_PROP_HTTP_PROXY_PORT

#define SHI_ENGINE_PROP_HTTP_PROXY_PORT   "HttpProxyPort"

SHI_DATA_TYPE_INTEGER.

◆ SHI_ENGINE_PROP_HTTPS_PROXY_HOST_NAME

#define SHI_ENGINE_PROP_HTTPS_PROXY_HOST_NAME   "HttpsProxyHostname"

SHI_DATA_TYPE_STRING.

◆ SHI_ENGINE_PROP_HTTPS_PROXY_PORT

#define SHI_ENGINE_PROP_HTTPS_PROXY_PORT   "HttpsProxyPort"

SHI_DATA_TYPE_INTEGER.

◆ SHI_ENGINE_PROP_IS_PERSONALIZED

#define SHI_ENGINE_PROP_IS_PERSONALIZED   "IsPersonalized"

SHI_DATA_TYPE_BOOLEAN.

◆ SHI_ENGINE_PROP_NEMO

#define SHI_ENGINE_PROP_NEMO   "Nemo"

SHI_DATA_TYPE_OBJECT.

◆ SHI_ENGINE_PROP_PERSONALITY

#define SHI_ENGINE_PROP_PERSONALITY   "Personality"

SHI_DATA_TYPE_OBJECT.

◆ SHI_ENGINE_PROP_PREFERRED_LANGUAGES

#define SHI_ENGINE_PROP_PREFERRED_LANGUAGES   "PreferredLanguages"

SHI_DATA_TYPE_ARRAY of SHI_DATA_TYPE_STRING.

◆ SHI_ENGINE_PROP_VERSION

#define SHI_ENGINE_PROP_VERSION   "Version"

The SHI_Engine supports the SHI_Properties interface that you can access through the SHI_Engine_GetInterface method.

The following properties are guaranteed to be defined with the corresponding data type.SHI_DATA_TYPE_INTEGER

◆ SHI_ENGINE_VACUUM_FLAG_DONT_SAVE_RECENT_LINK

#define SHI_ENGINE_VACUUM_FLAG_DONT_SAVE_RECENT_LINK   (8)

most recent expired link will not be spared

◆ SHI_ENGINE_VACUUM_FLAG_LINKS

#define SHI_ENGINE_VACUUM_FLAG_LINKS   (2)

remove expired links

◆ SHI_ENGINE_VACUUM_FLAG_NODES

#define SHI_ENGINE_VACUUM_FLAG_NODES   (1)

vacuuming types

remove expired nodes

◆ SHI_ENGINE_VACUUM_FLAG_SEASHELL

#define SHI_ENGINE_VACUUM_FLAG_SEASHELL   (4)

remove expired seashell objects

◆ SHI_ENGINE_VACUUM_FLAG_WIPE

#define SHI_ENGINE_VACUUM_FLAG_WIPE   (16)

remove everything but personality

◆ SHI_ERROR_ENGINE_ALREADY_PERSONALIZED

#define SHI_ERROR_ENGINE_ALREADY_PERSONALIZED   (SHI_ERROR_BASE_API_ENGINE - 4)

◆ SHI_ERROR_ENGINE_INVALID_TEMPLATE

#define SHI_ERROR_ENGINE_INVALID_TEMPLATE   (SHI_ERROR_BASE_API_ENGINE - 1)

◆ SHI_ERROR_ENGINE_NO_CONFIG_TOKEN

#define SHI_ERROR_ENGINE_NO_CONFIG_TOKEN   (SHI_ERROR_BASE_API_ENGINE - 3)

◆ SHI_ERROR_ENGINE_NOT_PERSONALIZED

#define SHI_ERROR_ENGINE_NOT_PERSONALIZED   (SHI_ERROR_BASE_API_ENGINE - 0)

◆ SHI_ERROR_ENGINE_POST_VACUUM

#define SHI_ERROR_ENGINE_POST_VACUUM   (SHI_ERROR_BASE_API_ENGINE - 2)

Typedef Documentation

◆ SHI_EngineListenerInstance

◆ SHI_EngineListenerInterface

◆ SHI_RegistrationDataManager

Interface implemented and passed to SHI_Engine_ProcessServiceTokenEx to modify where the SDK should get the personality and nodes from and where to save nodes and links.

Enumeration Type Documentation

◆ SHI_EngineCachePolicy

Caching policies.

Enumerator
SHI_ENGINE_CACHE_CACHE_LINKS 
SHI_ENGINE_CACHE_RELOAD_LINKS 

◆ SHI_EngineCertChain

certificate chain types

Enumerator
SHI_ENGINE_CERT_CHAIN_NEMO_SIGN 

nemo signing cert and chain including trust anchor

nemo encryption cert and chain including trust anchor

SHI_ENGINE_CERT_CHAIN_NEMO_ENCRYPT 

◆ SHI_EngineEventType

Types of events that a SHI_EngineEventListener may receive.

Enumerator
SHI_ENGINE_EVENT_SERVICE_ADDED 
SHI_ENGINE_EVENT_SERVICE_REMOVED 
SHI_ENGINE_EVENT_SERVICE_CHANGED 
SHI_ENGINE_EVENT_SERVICE_USER_ADDED 
SHI_ENGINE_EVENT_SERVICE_USER_REMOVED 
SHI_ENGINE_EVENT_SERVICE_USER_CHANGED 
SHI_ENGINE_EVENT_TRANSACTION_BEGIN 
SHI_ENGINE_EVENT_TRANSACTION_END 
SHI_ENGINE_EVENT_TRANSACTION_PROGRESS 
SHI_ENGINE_EVENT_LICENSE_DATA_RECEIVED