+++ /dev/null
-<!DOCTYPE html PUBLIC "html">
-<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <link rel="stylesheet" type="text/css" href="tizen.css" media="screen">
- <script type="text/javascript" src="snippet.js"></script><title>Account API</title>
- </head>
- <body id="page-content" onload="prettyPrint()">
- <div class="api" id="::ServiceAdaptorClient">
- <div class="supported-platforms"><img class="mobile-mandatory emulator" title="Mandatory, Supported by Tizen Mobile emulator" src="mw_icon.png"></div>
- <div class="title"><h1>Service Adaptor Client API</h1></div>
- <div class="brief">
- The Service Adaptor Client API provides developer with common interfaces like using local service to communicate with remote storage systems.
- Service Adaptor Client provides functions kind of Authorization, Storage ones.
- </div>
- <div class="description">
- <p>
- The basic concepts are:
- </p>
- <ul>
- <li>
- <b>Authorization plugin</b> will allow the Tizen Device users to authorize (login)
- into 3rd party clouds or other systems. After authorize user will be able to perform
- operation on the Tizen
- Device to manage 3rd party storage systems files via Storage Plugin. </li>
- <li>
- <b>Storage plugin</b> will allow the Tizen Device users (after authorization using Authorization plugin) to see and manage
- files stored on 3rd party storage clouds (or other storages) transparently like local files. Users will be allowed to download files from storage
- to Tizen Device, edit these files, remove them or upload files from Tizen Device to 3rd party storages. </li>
- </ul>
- <p>
- For more information about how to use Service Adaptor Client API, see <a href="../../../../../org.tizen.guides/html/native/social/service_adaptor_client_n.html">Service Adaptor Client Guide</a>.
- </p>
- </div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
-
- <!-- Table of Contents -->
- <div class="typedefs" id="TableOfContents">
- <h2>Table of Contents</h2>
- <ul class="toc">
- <li>1. <a href="#typedefs-section">Global Type Definitions</a>
- <ul class="toc">
- <li>1.1. <a href="#ServiceErrorCodes">Service Error Codes</a></li>
- </ul>
- </li>
- <li>2. <a href="#ServiceAdaptorAPI">Service Adaptor API</a>
- <ul class="toc">
- <li>2.1. <a href="#ServiceAdaptorAPITypeDefinition">Service Adaptor API Types Definition</a>
- <ul class="toc">
- <li>2.1.1. <a href="#ServiceAdaptorAPIServiceAdaptorHandle">Service Adaptor Handle</a></li>
- <li>2.1.2. <a href="#ServiceAdaptorAPIServiceAdaptorPluginCB">Service Adaptor Plugin Callback</a></li>
- </ul>
- </li>
- <li>2.2. <a href="#ServiceAdaptorAPIMethods">Methods</a>
- </ul>
- </li>
- <li>3. <a href="#ServicePluginAPI">Service Plugin API</a>
- <ul class="toc">
- <li>3.1. <a href="#ServicePluginAPITypesDefinition">Service Plugin API Types Definition</a>
- <ul class="toc">
- <li>3.1.1. <a href="#ServicePluginAPIServicePluginHandle">Service Plugin Handle</a></li>
- <li>3.1.2. <a href="#ServicePluginAPIServicePluginServiceType">Service Plugin Service Type</a></li>
- <li>3.1.3. <a href="#ServicePluginAPIServicePluginMacros">Service Plugin API Macros</a></li>
- </ul>
- </li>
- <li>3.2. <a href="#ServicePluginAPIMethods">Methods</a>
- </ul>
- </li>
- <li>4. <a href="#StorageAPI">Storage API</a>
- <ul class="toc">
- <li>4.1. <a href="#StorageAPIDefinition">Storage API Types Definition</a>
- <ul class="toc">
- <li>4.1.1. <a href="#StorageAPIFile">Service storage file</a></li>
- <li>4.1.2. <a href="#StorageAPIFileList">Service storage file list</a></li>
- <li>4.1.3. <a href="#StorageAPIStorageTask">Service storage task</a></li>
- <li>4.1.4. <a href="#StorageAPIStorageTaskState">Service storage task state</a></li>
- <li>4.1.5. <a href="#StorageAPIStorageFileCallback">Service storage file callback</a></li>
- <li>4.1.6. <a href="#StorageAPIStorageFileListCallback">Service storage file list callback</a></li>
- <li>4.1.7. <a href="#StorageAPIStorageResultCallback">Service storage result callback</a></li>
- <li>4.1.8. <a href="#StorageAPIStorageTaskProgressCallback">Service storage task progress callback</a></li>
- <li>4.1.9. <a href="#StorageAPIStorageTaskStateCallback">Service storage task state callback</a></li>
- </ul>
- </li>
- <li>4.2. <a href="#StorageAPIMethods">Methods</a>
- </ul>
- </li>
- </ul>
- <hr>
- </div>
- <!-- Summary of Interfaces and Methods -->
- <div class="typedefs">
- <h2 id="method-summary">Summary of Interfaces and Methods</h2>
- <table class="informaltable">
- <thead><tr>
- <th>Interface</th>
- <th>Method</th>
- </tr></thead>
- <tbody>
- <tr>
- <td><a href="#ServiceAdaptorAPI"> Service Adaptor API</a></td>
- <td>
- int <a href="#::ServiceAdaptorClient::service_adaptor_create">service_adaptor_create</a> (<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> *service_adaptor)<br>
- int <a href="#::ServiceAdaptorClient::service_adaptor_destroy">service_adaptor_destroy</a> (<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> service_adaptor)<br>
- int <a href="#::ServiceAdaptorClient::service_adaptor_foreach_plugin">service_adaptor_foreach_plugin</a> (<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> service_adaptor, <a href="#ServiceAdaptorAPIServiceAdaptorPluginCB">service_adaptor_plugin_cb</a> callback, void * user_data)<br>
- int <a href="#::ServiceAdaptorClient::service_adaptor_query_plugin_by_file">service_adaptor_query_plugin_by_file</a> (<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> service_adaptor, const char *file_path, char **plugin_uri)<br>
- int <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message</a> (char **message)<br>
- int <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result</a> (int *err)
- </td>
- </tr>
- <tr>
- <td><a href="#ServicePluginAPI">Service Plugin API</a></td>
- <td>
- int <a href="#::ServiceAdaptorClient::service_adaptor_create_plugin">service_adaptor_create_plugin</a> (<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> service_adaptor, const char *plugin_uri, <a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> *plugin)<br>
- int <a href="#::ServiceAdaptorClient::service_plugin_add_property">service_plugin_add_property</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *key, const char *value)<br>
- int <a href="#::ServiceAdaptorClient::service_plugin_get_property">service_plugin_get_property</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *key, char **value)<br>
- int <a href="#::ServiceAdaptorClient::service_plugin_remove_property">service_plugin_remove_property</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *key)<br>
- int <a href="#::ServiceAdaptorClient::service_plugin_start">service_plugin_start</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, int service_mask)<br>
- int <a href="#::ServiceAdaptorClient::service_plugin_stop">service_plugin_stop</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin)<br>
- int <a href="#::ServiceAdaptorClient::service_plugin_destroy">service_plugin_destroy</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin)<br>
- </tr>
- <tr>
- <td><a href="#StorageAPI">Storage API</a></td>
- <td>
- int <a href="#::ServiceAdaptorClient::service_storage_create_download_task">service_storage_create_download_task</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *storage_path, const char *download_path, <a href="#StorageAPIStorageTask">service_storage_task_h</a> *task)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_create_download_thumbnail_task">service_storage_create_download_thumbnail_task</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *storage_path, const char *download_path, int thumbnail_size, <a href="#StorageAPIStorageTask">service_storage_task_h</a> *task)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_create_upload_task">service_storage_create_upload_task</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *file_path, const char *upload_path, <a href="#StorageAPIStorageTask">service_storage_task_h</a> *task)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_set_task_progress_cb">service_storage_set_task_progress_cb</a> (<a href="#StorageAPIStorageTask">service_storage_task_h</a> task, <a href="#StorageAPIStorageTaskProgressCallback">service_storage_task_progress_cb</a> callback, void *user_data)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_set_task_state_changed_cb">service_storage_set_task_state_changed_cb</a> (<a href="#StorageAPIStorageTask">service_storage_task_h</a> task, <a href="#StorageAPIStorageTaskStateCallback">service_storage_task_state_cb</a> callback, void *user_data)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_unset_task_progress_cb">service_storage_unset_task_progress_cb</a> (<a href="#StorageAPIStorageTask">service_storage_task_h</a> task)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_unset_task_state_changed_cb">service_storage_unset_task_state_changed_cb</a> (<a href="#StorageAPIStorageTask">service_storage_task_h</a> task)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_start_task">service_storage_start_task</a> (<a href="#StorageAPIStorageTask">service_storage_task_h</a> task)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_cancel_task">service_storage_cancel_task</a> (<a href="#StorageAPIStorageTask">service_storage_task_h</a> task)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_destroy_task">service_storage_destroy_task</a> (<a href="#StorageAPIStorageTask">service_storage_task_h</a> task)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_get_file_list">service_storage_get_file_list</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *dir_path, <a href="#StorageAPIStorageFileListCallback">service_storage_file_list_cb</a> callback, void *user_data)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_list_get_length">service_storage_file_list_get_length</a> (<a href="#StorageAPIFileList">service_storage_file_list_h</a> list, int *length)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_list_foreach_file">service_storage_file_list_foreach_file</a> (<a href="#StorageAPIFileList">service_storage_file_list_h</a> list, <a href="#StorageAPIStorageFileCallback">service_storage_file_cb</a> callback, void *user_data)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_list_clone">service_storage_file_list_clone</a> (<a href="#StorageAPIFileList">service_storage_file_list_h</a> src_list, <a href="#StorageAPIFileList">service_storage_file_list_h</a> *dst_list)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_list_destroy">service_storage_file_list_destroy</a> (<a href="#StorageAPIFileList">service_storage_file_list_h</a> list)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_clone">service_storage_file_clone</a> (<a href="#StorageAPIFile">service_storage_file_h</a> src_file, <a href="#StorageAPIFile">service_storage_file_h</a> *dst_file)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_get_logical_path">service_storage_file_get_logical_path</a> (<a href="#StorageAPIFile">service_storage_file_h</a> file, char **path)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_get_physical_path">service_storage_file_get_physical_path</a> (<a href="#StorageAPIFile">service_storage_file_h</a> file, char **path)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_get_size">service_storage_file_get_size</a> (<a href="#StorageAPIFile">service_storage_file_h</a> file, unsigned long long *size)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_is_dir">service_storage_file_is_dir</a> (<a href="#StorageAPIFile">service_storage_file_h</a> file, bool *is_dir)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_file_destroy">service_storage_file_destroy</a> (<a href="#StorageAPIFile">service_storage_file_h</a> file)<br>
- int <a href="#::ServiceAdaptorClient::service_storage_remove">service_storage_remove</a> (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *remove_path, <a href="#StorageAPIStorageResultCallback">service_storage_result_cb</a> callback, void *user_data)<br>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- Global Type Definitions -->
- <div class="typedefs" id="typedefs-section">
- <h2>1. Global Type Definitions</h2>
- <div class="typedef" id="ServiceErrorCodes">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceErrorCode"></a>
- <h3>1.1 Service Error Codes</h3>
- <div class="brief">
- Specify error codes returned by API functionality.
- </div>
- <pre class="webidl prettyprint"> enum service_adaptor_error_e {"SERVICE_ADAPTOR_ERROR_NONE", "SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED",
- "SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER", "SERVICE_ADAPTOR_ERROR_TIMED_OUT", "SERVICE_ADAPTOR_ERROR_NO_DATA",
- "SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED", "SERVICE_ADAPTOR_ERROR_UNKNOWN", "SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE",
- "SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED", "SERVICE_ADAPTOR_ERROR_NOT_AUTHORIZED", "SERVICE_ADAPTOR_ERROR_INVALID_STATE"
- }; </pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <ul>
- <li>
- SERVICE_ADAPTOR_ERROR_NONE - Success </li>
- <li>
- SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED - Service plugin does not support API </li>
- <li>
- SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER - The parameter is invalid </li>
- <li>
- SERVICE_ADAPTOR_ERROR_TIMED_OUT - API time out </li>
- <li>
- SERVICE_ADAPTOR_ERROR_NO_DATA - There is no data available </li>
- <li>
- SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED - Permission denied </li>
- <li>
- SERVICE_ADAPTOR_ERROR_UNKNOWN - Unknown error </li>
- <li>
- SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE - IPC Connection unstabled </li>
- <li>
- SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED - The error occured from Plugin, See detail from <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and Plugin SPEC </li>
- <li>
- SERVICE_ADAPTOR_ERROR_NOT_AUTHORIZED - Need Autholization </li>
- <li>
- SERVICE_ADAPTOR_ERROR_INVALID_STATE - The handle state is invalid for processing API </li>
-
- </ul>
- </div>
- </div>
- </div>
-
- <!-- Service Adaptor API -->
- <div class="interfaces" id="ServiceAdaptorAPI">
- <h2>2. Service Adaptor API</h2>
- <div class="brief">
- The Service Adaptor API provides functions to manage service adaptor handle and creation of service plugin
- </div>
-
- <!-- Service Adaptor API Types Definition -->
- <div class="interface" id="ServiceAdaptorAPITypeDefinition">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorTypesDefinition"></a>
- <h3>2.1. Service Adaptor API Types Definition</h3>
- <div class="interface" id ="ServiceAdaptorAPIServiceAdaptorHandle">
- <h4>2.1.1 Service Adaptor Handle</h4>
- <div class="brief">
- The handle for connection and managing plugin handle of Service Adaptor. <br>
- The handle can be created by <a href="#::ServiceAdaptorClient::service_adaptor_create">service_adaptor_create()</a>. <br>
- When a handle is no longer needed, use <a href="#::ServiceAdaptorClient::service_adaptor_destroy">service_adaptor_destroy()</a>
-
- </div>
- <pre class="webidl prettyprint"> typedef struct _service_adaptor_s* service_adaptor_h </pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- </div>
- <div class="interface" id ="ServiceAdaptorAPIServiceAdaptorPluginCB">
- <h4>2.1.2 Service Adaptor Plugin Callback</h4>
- <div class="brief">
- Callback for <a href="#::ServiceAdaptorClient::service_adaptor_foreach_plugin">service_adaptor_foreach_plugin()</a> API
- </div>
- <pre class="webidl prettyprint"> typedef bool(* service_adaptor_plugin_cb) (char *plugin_uri, int service_mask, void *user_data) </pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin_uri</span>:
- The service plugin's unique uri, this value be set by plugin
- </li>
- <li class="param">
- <span class="name">service_mask</span>:
- Masked value for installed service plugins, this value can be masked multiple enum (<a href="#ServicePluginAPIServicePluginServiceType">service_plugin_service_type_e</a>)
- </li>
- <li class="param">
- <span class="name">user_data</span>:
- Passed data from <a href="#::ServiceAdaptorClient::service_adaptor_foreach_plugin">service_adaptor_foreach_plugin()</a>
- </li>
- </ul>
- </div>
- </div>
- </div>
-
- <!-- Methods -->
- <div class="interfaces" id="ServiceAdaptorAPIMethods">
- <h3>2.2 Methods</h3>
- <!-- service_adaptor_create -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_adaptor_create">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_create"></a>
- <code><b><span class="methodName">service_adaptor_create</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Create Service Adaptor.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_create(<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> *service_adaptor);
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Create Service Adaptor handle. The Service Adaptor is needed to use other functionality in this API.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">service_adaptor</span>:
- Handle for new Service Adaptor.
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- service_adaptor must be released memory using <a href="#::ServiceAdaptorClient::service_adaptor_destroy">service_adaptor_destroy()</a> when a program no longer needs any function of Service Adaptor
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_h service_adaptor = NULL;
-service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
-ret = service_adaptor_create(&service_adaptor);
-
-if (SERVICE_ADAPTOR_ERROR_NONE == ret)
-{
- some_operations();
- service_adaptor_destroy(service_adaptor);
-}
-else
-{
- log_error("Creating Service Adaptor failed", ret);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_adaptor_destroy -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_adaptor_destroy">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_destroy"></a>
- <code><b><span class="methodName">service_adaptor_destroy</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Destroy Service Adaptor.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_destroy(<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> service_adaptor);
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Destroy Service Adaptor. It must called after a program no longer needs any function of Service Adaptor.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">service_adaptor</span>:
- Handle to Service Adaptor.
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Precondition</span></p>
- service_adaptor must be issued by <a href="#::ServiceAdaptorClient::service_adaptor_create">service_adaptor_create()</a>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_h service_adaptor = NULL;
-service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
-ret = service_adaptor_create(&service_adaptor);
-
-if (SERVICE_ADAPTOR_ERROR_NONE == ret)
-{
- some_operations();
- service_adaptor_destroy(service_adaptor);
-}
-else
-{
- log_error("Creating Service Adaptor failed", ret);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_adaptor_foreach_plugin -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_adaptor_foreach_plugin">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_foreach_plugin"></a>
- <code><b><span class="methodName">service_adaptor_foreach_plugin</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Foreach the list of plugins.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_foreach_plugin(<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> service_adaptor, <a href="#ServiceAdaptorAPIServiceAdaptorPluginCB">service_adaptor_plugin_cb</a> callback, void * user_data);
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Foreach the list of plugins. This function will call callback function for all installed plugins.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">service_adaptor</span>:
- The handle of Service Adaptor
- </li>
- <li class="param">
- <span class="name">callback</span>:
- The callback for foreach plugin
- </li>
- <li class="param">
- <span class="name">user_data</span>:
- Passed data to callback
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no available plugins
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Precondition</span></p>
- service_adaptor must be issued by <a href="#::ServiceAdaptorClient::service_adaptor_create">service_adaptor_create()</a>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool plugin_cb(char *plugin_uri, int service_mask, void *user_data)
-{
- do_something_with_plugin(plugin_uri, service_mask);
- return true;
-}
-
-void process_plugins(service_adaptor_h service_adaptor)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_adaptor_foreach_plugin(service_adaptor, plugin_cb, NULL);
-
- switch(ret)
- {
- case SERVICE_ADAPTOR_ERROR_NONE: return;
- case SERVICE_ADAPTOR_ERROR_NO_DATA: log_error("There is no installed plugin"); break;
- default: log_error("Unknown error", ret);
- }
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_adaptor_query_plugin_by_file -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_adaptor_query_plugin_by_file">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_query_plugin_by_file"></a>
- <code><b><span class="methodName">service_adaptor_query_plugin_by_file</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Retrieve an plugin URI with local file path.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_query_plugin_by_file(<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> service_adaptor, const char *file_path, char **plugin_uri)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- For specific files that is located in cloud but be shown to such as local files (that is operated by Unified Storage System with Service Adaptor),
- this API can find which plugin is used for that file (showing to likes local file). Please reference details to description for Unified Storage System.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">service_adaptor</span>:
- The handle of Service Adaptor
- </li>
- <li class="param">
- <span class="name">file_path</span>:
- The local file path
- </li>
- <li class="param">
- <span class="name">plugin_uri</span>:
- The specfic string for use plugin, this values are set by plugin
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no data (also returned if given file is just local (not storage) file)
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- plugin_uri must be released using free()
- </div>
- <div class="exception">
- <p><span class="name">Precondition</span></p>
- service_adaptor must be issued by <a href="#::ServiceAdaptorClient::service_adaptor_create">service_adaptor_create()</a>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void process_files(service_adaptor_h service_adaptor, const char *file)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
- char *plugin_uri = NULL;
-
- ret = service_adaptor_query_plugin_by_file(service_adaptor, file, &plugin_uri);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- if (0 == strcmp("org.tizen.plugin.my_plugin", plugin_uri))
- {
- view_file(file);
- }
- else
- {
- log_warrning("File is not managed by my_plugin");
- }
- }
- else
- {
- log_error("Error occurred", ret);
- }
- free(plugin_uri);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_adaptor_get_last_error_message -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_adaptor_get_last_error_message">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_get_last_error_message"></a>
- <code><b><span class="methodName">service_adaptor_get_last_error_message</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Gets service specific last result error message.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_get_last_error_message(char **message)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- This function retrieves the last error code that be issued from plugin.
- When if API function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, gets using this function.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">message</span>:
- The error message that is defined service plugin SPEC
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no error message
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- message must be released using free()
- Thread safe functions
- The result string's detail specification is defined service plugin or provider.
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
-ret = do_some_operations_on_plugin();
-
-if (SERVICE_ADAPTOR_ERROR_NONE == ret)
-{
- return;
-}
-else if (SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED == ret)
-{
- char *message = NULL;
- if (SERVICE_ADAPTOR_ERROR_NONE == service_adaptor_get_last_error_message(&message);
- {
- show_plugin_message(message);
- free(message);
- }
-}
-else
-{
- log_error("Unknown error", ret);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_adaptor_get_last_result -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_adaptor_get_last_result">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServiceAdaptorAPI::service_adaptor_get_last_result"></a>
- <code><b><span class="methodName">service_adaptor_get_last_result</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Gets service specific last result.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_get_last_result(int *err)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- This function retrieves the last error code that be issued from plugin.
- When if API function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, gets using this function.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">err</span>:
- The error number that is defined service plugin SPEC
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no error message
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- Thread safe functions
- The result number's detail specification is defined service plugin or provider.
- The detail error message can be got using <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a>
-
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
-ret = do_some_operations_on_plugin();
-
-if (SERVICE_ADAPTOR_ERROR_NONE == ret)
-{
- return;
-}
-else if (SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED == ret)
-{
- int err_msg = 0;
- if (SERVICE_ADAPTOR_ERROR_NONE == service_adaptor_get_last_result(&err_msg);
- {
- handle_plugin_error(err_msg);
- }
-}
-else
-{
- log_error("Unknown error", ret);
-}
- </pre>
- </div>
- </dd>
- </dl>
- </div>
- </div>
- <!-- Service Plugin API -->
- <div class="interfaces" id="ServicePluginAPI">
- <h2>3. Service Plugin API</h2>
- <div class="brief">
- The Service Plugin API provides functions to manage the plugin set’s property and state.
- </div>
- <!-- Service Plugin API Types Definition -->
- <div class="interface" id="ServicePluginAPITypesDefinition">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginTypesDefinition"></a>
- <h3>3.1. Service Plugin API Types Definition</h3>
- <!-- Service Plugin Handle -->
- <div class="interface" id ="ServicePluginAPIServicePluginHandle">
- <h4>3.1.1 Service Plugin Handle</h4>
- <div class="brief">
- The Plugn handle for Service Adaptor. <br>
- The handle can be created by <a href="#::ServiceAdaptorClient::service_adaptor_create_plugin">service_adaptor_create_plugin()</a><br>
- When a handle is no longer needed, use <a href="#::ServiceAdaptorClient::service_plugin_destroy">service_plugin_destroy()</a>
- </div>
- <pre class="webidl prettyprint"> struct _service_plugin_s* service_plugin_h </pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- </div>
- <!-- Service Plugin Service Type -->
- <div class="interface" id ="ServicePluginAPIServicePluginServiceType">
- <h4>3.1.2 Service Plugin Service Type</h4>
- <div class="brief">
- Type of service in plugin.
- </div>
- <pre class="webidl prettyprint"> enum service_plugin_service_type_e {"SERVICE_PLUGIN_SERVICE_AUTH", "SERVICE_PLUGIN_SERVICE_STORAGE"}; </pre>
- <div class="description">
- <ul>
- <li>
- SERVICE_PLUGIN_SERVICE_AUTH - Auth service type flag </li>
- <li>
- SERVICE_PLUGIN_SERVICE_STORAGE - Storage service type flag </li>
- </ul>
- </div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- </div>
- <!-- Service Plugin API Macros -->
- <div class="interface" id ="ServicePluginAPIServicePluginMacros">
- <h4>3.1.3 Service Plugin API Macros</h4>
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::SERVICE_PLUGIN_PROPERTY_APP_KEY">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::SERVICE_PLUGIN_PROPERTY_APP_KEY"></a>
- <code><b><span class="methodName">SERVICE_PLUGIN_PROPERTY_APP_KEY</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Definition for the service_plugin property Application Key
- </div>
- <div class="synopsis"><pre class="signature prettyprint">#define SERVICE_PLUGIN_PROPERTY_APP_KEY "http://tizen.org/service-adaptor/plugin/property/app_key"
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Definition for the service_plugin property: The application id be issued from service provider for 3<sup>rd</sup> party developer
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- </dd>
- </dl>
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::SERVICE_PLUGIN_PROPERTY_APP_SECRET">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::SERVICE_PLUGIN_PROPERTY_APP_SECRET"></a>
- <code><b><span class="methodName">SERVICE_PLUGIN_PROPERTY_APP_SECRET</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Definition for the service_plugin property Application Secret
- </div>
- <div class="synopsis"><pre class="signature prettyprint">#define SERVICE_PLUGIN_PROPERTY_APP_SECRET "http://tizen.org/service-adaptor/plugin/property/app_secret"
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Definition for the service_plugin property: The application password be issued from service provider for 3<sup>rd</sup> party developer
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- </dd>
- </dl>
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::SERVICE_PLUGIN_PROPERTY_USER_ID">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::SERVICE_PLUGIN_PROPERTY_USER_ID"></a>
- <code><b><span class="methodName">SERVICE_PLUGIN_PROPERTY_USER_ID</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Definition for the service_plugin property User ID
- </div>
- <div class="synopsis"><pre class="signature prettyprint">#define SERVICE_PLUGIN_PROPERTY_APP_SECRET "http://tizen.org/service-adaptor/plugin/property/app_secret"
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Definition for the service_plugin property: The user id for using specific service provider for 3<sup>rd</sup> party developer
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- </dd>
- </dl>
- </div>
- </div>
- <div class="interfaces" id="ServicePluginAPIMethods">
- <h3>3.2 Methods</h3>
- <!-- service_adaptor_create_plugin -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_adaptor_create_plugin">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_adaptor_create_plugin"></a>
- <code><b><span class="methodName">service_adaptor_create_plugin</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Create service plugin handle.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_adaptor_create_plugin(<a href="#ServiceAdaptorAPIServiceAdaptorHandle">service_adaptor_h</a> service_adaptor, const char *plugin_uri, <a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> *plugin);
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Create service plugin handle using plugin_uri
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">service_adaptor</span>:
- The handle of Service Adaptor
- </li>
- <li class="param">
- <span class="name">plugin_uri</span>:
- The specific string for use plugin, this values are set by plugin
- </li>
- <li class="param">
- <span class="name">plugin</span>:
- The handle for use Plugin APIs.
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- plugin must be released memory using <a href="#::ServiceAdaptorClient::service_plugin_destroy">service_plugin_destroy()</a> when you no longer needs plugin's
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_adaptor_h service_adaptor = NULL;
-service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
-ret = service_adaptor_create(&service_adaptor);
-
-if (SERVICE_ADAPTOR_ERROR_NONE == ret)
-{
- service_plugin_h plugin = NULL;
- const char *plugin_uri = "org.tizen.plugin.my_plugin";
-
- ret = service_adaptor_create_plugin(service_adaptor, plugin_uri, &plugin);
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- do_something();
- service_plugin_destroy(plugin);
- }
- else
- {
- log_error("Creating plugin failed", ret);
- }
- service_adaptor_destroy(service_adaptor);
-}
-else
-{
- log_error("Creating Service Adaptor failed", ret);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_plugin_add_property -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_plugin_add_property">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_add_property"></a>
- <code><b><span class="methodName">service_plugin_add_property </span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Add Plugin Property.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_plugin_add_property(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *key, const char *value)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Add Plugin Property.
- The plguin property is used for plugin's basic or optional requirement. <br>
- This value is not used in Adaptor layer, but it can be uesd to important Key for plugin with service provider.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin</span>:
- The handle for use Plugin APIs
- </li>
- <li class="param">
- <span class="name">key</span>:
- The key of plugin property defined in <a href="#ServicePluginAPIServicePluginMacros">3.1.3 Service Plugin API Macros</a>
- </li>
- <li class="param">
- <span class="name">value</span>:
- The value of plugin property that matched key
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- Some kind of property key(Not mandatory) is defined in this API (That is named to SERVICE_PLUGIN_PROPERTY_XXX) <br>
- If the key already exists in the property its current value is replaced with the new value . <br>
- plugin must be released memory using <a href="#::ServiceAdaptorClient::service_plugin_destroy">service_plugin_destroy()</a> when you no longer needs plugin's API
-
- </div>
- <div class="exception">
- <p><span class="name">Precondition</span></p>
- plugin must be issued by <a href="#::ServiceAdaptorClient::service_adaptor_create_plugin">service_adaptor_create_plugin()</a>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void create_plugin(service_adaptor_h service_adaptor)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
- service_plugin_h plugin = NULL;
- const char *plugin_uri = "org.tizen.plugin.my_plugin";
-
- ret = service_adaptor_create_plugin(service_adaptor, plugin_uri, &plugin);
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- service_plugin_add_property(plugin, SERVICE_PLUGIN_PROPERTY_USER_ID, "The King");
- do_something();
- service_plugin_destroy(plugin);
- }
- else
- {
- log_error("Creating plugin failed", ret);
- }
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_plugin_get_property -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_plugin_get_property">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_get_property"></a>
- <code><b><span class="methodName">service_plugin_get_property </span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Gets Plugin Property.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_plugin_get_property(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *key, char **value)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Add Plugin Property.
- The plguin property is used for plugin's basic or optional requirement. <br>
- This value is not used in Adaptor layer, but it can be uesd to important Key for plugin with service provider.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin</span>:
- The handle for use Plugin APIs
- </li>
- <li class="param">
- <span class="name">key</span>:
- The key of plugin property defined in <a href="#ServicePluginAPIServicePluginMacros">3.1.3 Service Plugin API Macros</a>
- </li>
- <li class="param">
- <span class="name">value</span>:
- The value of plugin property that matched key
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no property
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- Some kind of property key(Not mandatory) is defined in this API (That is named to SERVICE_PLUGIN_PROPERTY_XXX) <br>
- value must be released using free()
- </div>
- <div class="exception">
- <p><span class="name">Precondition</span></p>
- plugin must be issued by <a href="#::ServiceAdaptorClient::service_adaptor_create_plugin">service_adaptor_create_plugin()</a>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool check_plugin(service_plugin_h service_plugin)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
- char *value = NULL;
-
- ret = service_plugin_get_property(plugin, SERVICE_PLUGIN_PROPERTY_USER_ID, &value);
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- bool retVal = check_user(value);
-
- free(value);
- return retVal;
- }
- else
- {
- log_error("Creating plugin failed", ret);
- }
- return false;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_plugin_remove_property -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_plugin_remove_property">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_remove_property"></a>
- <code><b><span class="methodName">service_plugin_remove_property</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Remove Plugin Property
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_plugin_remove_property(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *key)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Remove property that has been added before from plugin.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin</span>:
- The handle for use Plugin APIs
- </li>
- <li class="param">
- <span class="name">key</span>:
- The key of plugin property defined in <a href="#ServicePluginAPIServicePluginMacros">3.1.3 Service Plugin API Macros</a>
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- Some kind of property key (not mandatory) is defined in this API (That is named to SERVICE_PLUGIN_PROPERTY_XXX)
- </div>
- <div class="exception">
- <p><span class="name">Precondition</span></p>
- plugin must be issued by <a href="#::ServiceAdaptorClient::service_adaptor_create_plugin">service_adaptor_create_plugin()</a>
- The function property already set by <a href="#::ServiceAdaptorClient::service_plugin_add_property">service_plugin_add_property</a>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool reset_plugin(service_plugin_h service_plugin)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_plugin_remove_property(plugin, SERVICE_PLUGIN_PROPERTY_USER_ID);
- return (SERVICE_ADAPTOR_ERROR_NONE == ret);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_plugin_start -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_plugin_start">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_start"></a>
- <code><b><span class="methodName">service_plugin_start</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Requests start initialization for service plugin.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_plugin_start (<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, int service_mask)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Requests start initialization for service plugin. After start is done plugin is operational and plugin functionality can be used.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin</span>:
- The handle for use Plugin APIs
- </li>
- <li class="param">
- <span class="name">service_mask</span>:
- The flag for use service plugins, this flag can be masked multiple enum (<a href="#ServicePluginAPIServicePluginServiceType">service_plugin_service_type_e</a>
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER</span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NOT_AUTHORIZED</span>
- Need authorization
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
- Timed out
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- service_mask must be input using 'bit or' operation with <a href="#ServicePluginAPIServicePluginServiceType">service_plugin_service_type_e</a>
- - for example,<br>
- int service_mask |= SERVIE_PLUGIN_SERVICE_AUTH;<br>
- service_mask |= SERVICE_PLUGIN_SERVICE_STORAGE; <br>
- int ret = service_plugin_start(m_plugin , service_mask ); <br>
- If a program needs to stop plugin manually, use <a href="#::ServiceAdaptorClient::service_plugin_stop">service_plugin_stop()</a>.
- But in <a href="#::ServiceAdaptorClient::service_plugin_destroy">service_plugin_destroy()</a>, automatically stop service plugin
- </div>
- <div class="exception">
- <p><span class="name">Precondition</span></p>
- plugin must be issued by <a href="#::ServiceAdaptorClient::service_adaptor_create_plugin">service_adaptor_create_plugin()</a>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_plugin_h service_plugin = NULL;
-
-create_service_plugin(&service_plugin);
-add_properties_to_plugin(service_plugin);
-
-int mask = SERVIE_PLUGIN_SERVICE_AUTH;
-
-service_plugin_start(service_plugin, mask);
-do_something();
-
-service_plugin_destroy(service_plugin);
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_plugin_stop -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_plugin_stop">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_stop"></a>
- <code><b><span class="methodName">service_plugin_stop</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Requests stop manually for service plugin.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_plugin_stop(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Requests stop manually for service plugin. This operation could be perform e.g. to change plugin state and start it again.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin</span>:
- The handle for use Plugin APIs
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER</span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
- Timed out
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN</span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- If a program needs to stop plugin manually, use this function.
- But in <a href="#::ServiceAdaptorClient::service_plugin_destroy">service_plugin_destroy()</a>, automatically stop service plugin
- plugin must be released memory using <a href="#::ServiceAdaptorClient::service_plugin_destroy">service_plugin_destroy()</a> when you no longer needs plugin's API
- </div>
- <div class="exception">
- <p><span class="name">Precondition</span></p>
- plugin must be issued by <a href="#::ServiceAdaptorClient::service_adaptor_create_plugin">service_adaptor_create_plugin()</a>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_plugin_h service_plugin = NULL;
-
-create_service_plugin(&service_plugin);
-add_properties_to_plugin(service_plugin);
-
-int mask = SERVIE_PLUGIN_SERVICE_AUTH;
-
-service_plugin_start(service_plugin, mask);
-
-do_something();
-
-service_plugin_stop(service_plugin);
-service_plugin_change_to_annother_user_id(service_plugin);
-service_plugin_start(service_plugin, mask);
-
-do_something(); //do the same with another user id
-
-service_plugin_destroy(service_plugin);
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_plugin_destroy -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_plugin_destroy">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_plugin_destroy"></a>
- <code><b><span class="methodName">service_plugin_destroy</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Stop and destroy Service Plugin.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_plugin_destroy(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <p>
- Requests stop (if not already stopped) and destroy Service Plugin.<br>
- It must called after a program no longer needs APIs of specific plugin.
- </p>
- </div>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin</span>:
- The handle for use Plugin APIs
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER</span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN</span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Precondition</span></p>
- plugin must be issued by <a href="#::ServiceAdaptorClient::service_adaptor_create_plugin">service_adaptor_create_plugin()</a>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">service_plugin_h service_plugin = NULL;
-
-create_service_plugin(&service_plugin);
-add_properties_to_plugin(service_plugin);
-
-int mask = SERVIE_PLUGIN_SERVICE_AUTH;
-
-service_plugin_start(service_plugin, mask);
-do_something();
-
-service_plugin_destroy(service_plugin);
- </pre>
- </div>
- </dd>
- </dl>
- </div>
- </div>
- <!-- Service Plugin API -->
- <div class="interfaces" id="StorageAPI">
- <h2>4. Storage API</h2>
- <div class="brief">
- Storage API provide functions for access and managing storage service.
- </div>
- <div class="interface" id="StorageAPIDefinition">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::StorageTypesDefinition"></a>
- <h3>4.1. Storage API Types Definition</h3>
- <!-- Service storage file -->
- <div class="interface" id ="StorageAPIFile">
- <h4>4.1.1 Service storage file</h4>
- <div class="brief">
- The handle of file or directory in storage.
- </div>
- <pre class="webidl prettyprint"> struct _service_storage_file_s* service_storage_file_h</pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- </div>
- <!-- Service storage file list -->
- <div class="interface" id ="StorageAPIFileList">
- <h4>4.1.2 Service storage file list</h4>
- <div class="brief">
- The list handle of file or directory in storage.
- </div>
- <pre class="webidl prettyprint"> struct _service_storage_file_list_s* service_storage_file_list_h</pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- </div>
- <!-- Service storage task -->
- <div class="interface" id ="StorageAPIStorageTask">
- <h4>4.1.3 Service storage task</h4>
- <div class="brief">
- The handle of async task for storage service.
- </div>
- <pre class="webidl prettyprint"> struct _service_storage_task_s* service_storage_task_h</pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- </div>
- <!-- Service storage task state -->
- <div class="interface" id ="StorageAPIStorageTaskState">
- <h4>4.1.4 Service storage task state</h4>
- <div class="brief">
- The handle of async task for storage service.
- </div>
- <pre class="webidl prettyprint"> enum service_storage_task_state_e={"SERVICE_STORAGE_TASK_IN_PROGRESS", "SERVICE_STORAGE_TASK_COMPLETED",
- "SERVICE_STORAGE_TASK_CANCELED", "SERVICE_STORAGE_TASK_FAILED"};
- </pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="description">
- <ul>
- <li>
- SERVICE_STORAGE_TASK_IN_PROGRESS - The task is progressing </li>
- <li>
- SERVICE_STORAGE_TASK_COMPLETED - The task was completed </li>
- <li>
- SERVICE_STORAGE_TASK_CANCELED - The task was canceled </li>
- <li>
- SERVICE_STORAGE_TASK_FAILED - The task was failed </li>
-
- </ul>
- </div>
- </div>
- <!-- Service storage file callback -->
- <div class="interface" id ="StorageAPIStorageFileCallback">
- <h4>4.1.5 Service storage file callback</h4>
- <div class="brief">
- Callback for <a href="#::ServiceAdaptorClient::service_storage_file_list_foreach_file">service_storage_file_list_foreach_file()</a> API
- </div>
- <pre class="webidl prettyprint"> typedef bool(*service_storage_file_cb)(<a href="#StorageAPIFile">service_storage_file_h</a> file, void *user_data) </pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">file</span>:
- The handle of file
- </li>
- <li class="param">
- <span class="name">user_data</span>:
- Passed data from <a href="#::ServiceAdaptorClient::service_storage_file_list_foreach_file">service_storage_file_list_foreach_file()</a>
- </li>
- </ul>
- </div>
- </div>
- <!-- Service storage file list callback -->
- <div class="interface" id ="StorageAPIStorageFileListCallback">
- <h4>4.1.6 Service storage file list callback</h4>
- <div class="brief">
- Callback for <a href="#::ServiceAdaptorClient::service_storage_get_file_list">service_storage_get_file_list()</a> API
- </div>
- <pre class="webidl prettyprint"> void(* service_storage_file_list_cb)(int result, <a href="#StorageAPIFileList">service_storage_file_list_h</a> list, void *user_data) </pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">result</span>:
- Result code for <a href="#::ServiceAdaptorClient::service_storage_get_file_list">service_storage_get_file_list()</a> (see <a href="#::ServiceAdaptorClient::ServiceErrorCode">service_adaptor_error_e</a>)
- <p><span class="return">Possible value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no files
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT </span>
- Timed out
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED </span>
- Failed in Plugin internal. <br>
- Error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- Error codes and messages are described in Service Plugin.
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN</span>
- Unknown error
- </li>
- </ul>
- </li>
- <li class="param">
- <span class="name">list</span>:
- The handle of file list
- </li>
- <li class="param">
- <span class="name">user_data</span>:
- Passed data from <a href="#::ServiceAdaptorClient::service_storage_get_file_list">service_storage_get_file_list()</a>
- </li>
- </ul>
- </div>
- </div>
- <!-- Service storage result callback -->
- <div class="interface" id ="StorageAPIStorageResultCallback">
- <h4>4.1.7 Service storage result callback</h4>
- <div class="brief">
- Callback for getting async storage operation result.
- </div>
- <pre class="webidl prettyprint"> void(* service_storage_result_cb)(int result, void *user_data) </pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">result</span>:
- Result code for storage async operation (see <a href="#::ServiceAdaptorClient::ServiceErrorCode">service_adaptor_error_e</a>)
- <p><span class="return">Possible value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no files
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT </span>
- Timed out
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED </span>
- Failed in Plugin internal. <br>
- Error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- Error codes and messages are described in Service Plugin.
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN</span>
- Unknown error
- </li>
- </ul>
- </li>
- <li class="param">
- <span class="name">user_data</span>:
- Passed data from request function
- </li>
- </ul>
- </div>
- </div>
- <!-- Service storage task progress callback -->
- <div class="interface" id ="StorageAPIStorageTaskProgressCallback">
- <h4>4.1.8 Service storage task progress callback</h4>
- <div class="brief">
- Callback for progress of storage task
- </div>
- <pre class="webidl prettyprint"> void(* service_storage_task_progress_cb)(unsigned long long progress, unsigned long long total, void *user_data) </pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">progress</span>:
- The progressed amount of storage task
- </li>
- <li class="param">
- <span class="name">total</span>:
- The total amount of storage task
- </li>
- <li class="param">
- <span class="name">user_data</span>:
- Passed data from <a href="#::ServiceAdaptorClient::service_storage_set_task_progress_cb">service_storage_set_task_progress_cb</a>
- </li>
- </ul>
- </div>
- </div>
- <!-- Service storage task state callback -->
- <div class="interface" id ="StorageAPIStorageTaskStateCallback">
- <h4>4.1.9 Service storage task state callback</h4>
- <div class="brief">
- Callback for changing state of storage task.
- </div>
- <pre class="webidl prettyprint"> void(* service_storage_task_state_cb)(service_storage_task_state_e state, void *user_data)</pre>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">state</span>:
- The state of storage task
- </li>
- <li class="param">
- <span class="name">user_data</span>:
- Passed data from <a href="#::ServiceAdaptorClient::service_storage_set_task_state_changed_cb">service_storage_set_task_state_changed_cb()</a>
- </li>
- </ul>
- </div>
- </div>
- </div>
-
- <div class="interfaces" id="StorageAPIMethods">
- <h3>4.2 Methods</h3>
- <!-- service_storage_create_download_task -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_create_download_task">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_create_download_task"></a>
- <code><b><span class="methodName">service_storage_create_download_task</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Creates storage task for download file from storage.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_create_download_task(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *storage_path, const char *download_path, <a href="#StorageAPIStorageTask">service_storage_task_h</a> *task)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span></p>
- <ul>
- <li> http://tizen.org/privilege/mediastorage
- </li>
- <li> http://tizen.org/privilege/externalstorage
- </li>
- </ul>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin </span>:
- The handle for use Plugin APIs
- </li>
- <li class="param">
- <span class="name">storage_path </span>:
- The source file path in storage (Physical path)
- </li>
- <li class="param">
- <span class="name">download_path </span>:
- The source file path in storage (Physical path)
- </li>
- <li class="param">
- <span class="name">task</span>:
- The handle of storage task
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
- Permission denied
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
- The handle's state is invalid
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no files
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
- Timed out
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED</span>
- Not supported API in this plugin
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
- Failed in Plugin internal
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- task must be released memory using <a href="#::ServiceAdaptorClient::service_storage_destroy_task">service_storage_destroy_task()</a> when the task no longer run <br>
- If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool create_task(service_plugin_h plugin)
-{
- service_storage_task_h task = NULL;
- const char *storage_path = "/my_file.txt";
- const char *download_path = "/";
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_storage_create_download_task(plugin, storage_path, download_path, task);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- ret = service_storage_start_task(task);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- return true;
- }
- else
- {
- log_error("Cannot start task", ret);
- service_storage_destroy_task(task);
- }
- }
- else
- {
- log_error("Cannot create task", ret);
- }
- return false;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_create_download_thumbnail_task -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_create_download_thumbnail_task">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_create_download_thumbnail_task"></a>
- <code><b><span class="methodName">service_storage_create_download_thumbnail_task</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Creates storage task for download thumbnail from storage.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_create_download_thumbnail_task(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *storage_path, const char *download_path, int thumbnail_size, <a href="#StorageAPIStorageTask">service_storage_task_h</a> *task)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span></p>
- <ul>
- <li> http://tizen.org/privilege/mediastorage
- </li>
- <li> http://tizen.org/privilege/externalstorage
- </li>
- </ul>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin </span>:
- The handle for use Plugin APIs
- </li>
- <li class="param">
- <span class="name">storage_path </span>:
- The source file path in storage (Physical path)
- </li>
- <li class="param">
- <span class="name">download_path </span>:
- The source file path in storage (Physical path)
- </li>
- <li class="param">
- <span class="name">thumbnail_size</span>:
- The size level of thumbnail, the level is defined service plugin SPEC
- </li>
- <li class="param">
- <span class="name">task</span>:
- The handle of storage task
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
- Permission denied
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
- The handle's state is invalid
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no files
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
- Timed out
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED</span>
- Not supported API in this plugin
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
- Failed in Plugin internal
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- If thumbnail_size is 0 , gets default size thumbnail, the default size must be defined plugin SPEC <br>
- If thumbnail_size is -1 , gets minimum size thumbnail be supported plugin <br>
- If thumbnail_size is -2 , gets maximum size thumbnail be supported plugin <br>
- task must be released memory using <a href="#::ServiceAdaptorClient::service_storage_destroy_task">service_storage_destroy_task()</a> when the task no longer run <br>
- If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool download_thumbnail(service_plugin_h plugin)
-{
- service_storage_task_h task = NULL;
- const char *storage_path = "/my_file.png";
- const char *download_path = "/.thumbnails/";
- int size = -1;
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_storage_create_download_task(plugin, storage_path, download_path, size, task);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- ret = service_storage_start_task(task);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- return true;
- }
- else
- {
- log_error("Cannot start task", ret);
- service_storage_destroy_task(task);
- }
- }
- else
- {
- log_error("Cannot create task", ret);
- }
- return false;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_create_upload_task -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_create_upload_task">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_create_upload_task"></a>
- <code><b><span class="methodName">service_storage_create_upload_task</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Creates storage task for upload file to storage
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_create_upload_task(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *file_path, const char *upload_path, <a href="#StorageAPIStorageTask">service_storage_task_h</a> *task)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span></p>
- <ul>
- <li> http://tizen.org/privilege/mediastorage
- </li>
- <li> http://tizen.org/privilege/externalstorage
- </li>
- </ul>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin </span>:
- The handle for use Plugin APIs
- </li>
- <li class="param">
- <span class="name">file_path </span>:
- The upload file path in local (Logical path)
- </li>
- <li class="param">
- <span class="name">upload_path </span>:
- The upload target path in storage (Physical path)
- </li>
- <li class="param">
- <span class="name">task</span>:
- The handle of storage task
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
- Permission denied
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
- The handle's state is invalid
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no files
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_TIMED_OUT</span>
- Timed out
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED</span>
- Not supported API in this plugin
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
- Failed in Plugin internal
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- task must be released memory using <a href="#::ServiceAdaptorClient::service_storage_destroy_task">service_storage_destroy_task()</a> when the task no longer run <br>
- If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool upload(service_plugin_h plugin)
-{
- service_storage_task_h task = NULL;
- const char *upload_path = "/my_file.png";
- const char *upload_path = "/";
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_storage_create_upload_task (plugin, upload_path, upload_path, task);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- ret = service_storage_start_task(task);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- return true;
- }
- else
- {
- log_error("Cannot start task", ret);
- service_storage_destroy_task(task);
- }
- }
- else
- {
- log_error("Cannot create task", ret);
- }
- return false;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_set_task_progress_cb -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_set_task_progress_cb">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_set_task_progress_cb"></a>
- <code><b><span class="methodName">service_storage_set_task_progress_cb</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Sets a callback function to be invoked when progress of the task running
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_set_task_progress_cb(<a href="#StorageAPIStorageTask">service_storage_task_h</a> task, <a href="#StorageAPIStorageTaskProgressCallback">service_storage_task_progress_cb</a> callback, void *user_data)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">task </span>:
- The handle of storage task
- </li>
- <li class="param">
- <span class="name">callback </span>:
- The callback function to register
- </li>
- <li class="param">
- <span class="name">user_data </span>:
- The user data to be passed to the callback function
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED </span>
- Failed in Plugin internal
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- Error codes and messages are described in Service Plugin.
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void task_progress_cb(unsigned long long progress, unsigned long long total, void *user_data)
-{
- if (progress < total)
- {
- update_progress_bar(progress);
- }
- else
- {
- close_progress_bar();
- }
-}
-
-void create_task(service_plugin_h plugin)
-{
- service_storage_task_h task = NULL;
-
- create_download_task(task);
- set_task_properties(task);
-
- service_storage_set_task_progress_cb(task, task_progress_cb, NULL);
-
- start_task(task);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_set_task_state_changed_cb -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_set_task_state_changed_cb">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_set_task_state_changed_cb"></a>
- <code><b><span class="methodName">service_storage_set_task_state_changed_cb</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Sets a callback function to be invoked when change of the task running state
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_set_task_state_changed_cb(<a href="#StorageAPIStorageTask">service_storage_task_h</a> task, <a href="#StorageAPIStorageTaskStateCallback">service_storage_task_state_cb</a> callback, void *user_data)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">task </span>:
- The handle of storage task
- </li>
- <li class="param">
- <span class="name">callback </span>:
- The callback function to register
- </li>
- <li class="param">
- <span class="name">user_data </span>:
- The user data to be passed to the callback function
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED </span>
- Failed in Plugin internal
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- Error codes and messages are described in Service Plugin.
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void task_state_cb(service_storage_task_state_e state, void *user_data)
-{
- if (SERVICE_STORAGE_TASK_COMPLETED == state)
- {
- ending_task_process();
- }
-}
-
-void create_task(service_plugin_h plugin)
-{
- service_storage_task_h task = NULL;
-
- create_download_task(task);
- set_task_properties(task);
-
- service_storage_set_task_progress_cb(task, task_progress_cb, NULL);
- service_storage_set_task_state_changed_cb(task, task_state_cb, NULL);
-
- start_task(task);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_unset_task_progress_cb -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_unset_task_progress_cb">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_unset_task_progress_cb"></a>
- <code><b><span class="methodName">service_storage_unset_task_progress_cb</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Unsets the progress callback function.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_unset_task_progress_cb(<a href="#StorageAPIStorageTask">service_storage_task_h</a> task)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">task </span>:
- The handle of storage task
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- This function must be called before starting task (see <a href="#::ServiceAdaptorClient::service_storage_start_task">service_storage_start_task()</a>)
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void set_state_cb_in_task(service_storage_task_h task)
-{
- service_storage_unset_task_progress_cb(task);
- service_storage_set_task_progress_cb(task, task_progress_cb2, NULL);
-}
-
-void create_task(service_plugin_h plugin)
-{
- service_storage_task_h task = NULL;
-
- create_download_task(task);
- set_task_properties(task);
- set_progress_cb_in_task(task);
-
- start_task(task);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_unset_task_state_changed_cb -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_unset_task_state_changed_cb">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_unset_task_state_changed_cb"></a>
- <code><b><span class="methodName">service_storage_unset_task_state_changed_cb</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Unsets the state changed callback function
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_unset_task_state_changed_cb(<a href="#StorageAPIStorageTask">service_storage_task_h</a> task)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">task </span>:
- The handle of storage task
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- This function must be called before starting task (see <a href="#::ServiceAdaptorClient::service_storage_start_task">service_storage_start_task()</a>)
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void set_state_cb_in_task(service_storage_task_h task)
-{
- service_storage_unset_task_progress_cb(task);
- service_storage_set_task_state_changed_cb(task, task_state_cb, NULL);
-}
-
-void create_task(service_plugin_h plugin)
-{
- service_storage_task_h task = NULL;
-
- create_download_task(task);
- set_task_properties(task);
- set_state_cb_in_task(task);
-
- start_task(task);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_start_task -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_start_task">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_start_task"></a>
- <code><b><span class="methodName">service_storage_start_task</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Starts storage task, asynchronously.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_start_task(<a href="#StorageAPIStorageTask">service_storage_task_h</a> task)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">task </span>:
- The handle of storage task
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED </span>
- Failed in Plugin internal
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- Error codes and messages are described in Service Plugin.
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void create_task(service_plugin_h plugin)
-{
- service_storage_task_h task = NULL;
-
- create_download_task(task);
- set_task_properties(task);
- set_task_callbacks(task);
-
- service_storage_start_task(task);
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_cancel_task -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_cancel_task">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_cancel_task"></a>
- <code><b><span class="methodName">service_storage_cancel_task</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Cancels storage task.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_cancel_task(<a href="#StorageAPIStorageTask">service_storage_task_h</a> task);
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">task</span>:
- The handle of storage task
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
- Failed in Plugin internal
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- task must be released memory using <a href="#::ServiceAdaptorClient::service_storage_destroy_task">service_storage_destroy_task()</a> when the task no longer run <br>
- If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- Error codes and messages are described in Service Plugin.
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void cancel_task(service_storage_task_h task)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_storage_cancel_task(task);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- service_storage_destroy_task(task);
- }
- else
- {
- log_error("Cannot cancel task", ret);
- }
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_destroy_task -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_destroy_task">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_destroy_task"></a>
- <code><b><span class="methodName">service_storage_destroy_task</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Destroys storage task.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_destroy_task(<a href="#StorageAPIStorageTask">service_storage_task_h</a> task)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">task</span>:
- The handle of storage task
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED</span>
- Failed in Plugin internal
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool upload(service_plugin_h plugin)
-{
- service_storage_task_h task = NULL;
- const char *upload_path = "/my_file.png";
- const char *upload_path = "/";
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_storage_create_upload_task (plugin, upload_path, upload_path, task);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- ret = service_storage_start_task(task);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- return true;
- }
- else
- {
- log_error("Cannot start task", ret);
- service_storage_destroy_task(task);
- }
- }
- else
- {
- log_error("Cannot create task", ret);
- }
- return false;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_get_file_list -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_get_file_list">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_get_file_list"></a>
- <code><b><span class="methodName">service_storage_get_file_list</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Gets file list from storage, asynchronously.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_get_file_list(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *dir_path, <a href="#StorageAPIStorageFileListCallback">service_storage_file_list_cb</a> callback, void *user_data)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin </span>:
- The handle for use Plugin APIs
- </li>
- <li class="param">
- <span class="name">dir_path </span>:
- The dir path (Physical path)
- </li>
- <li class="param">
- <span class="name">callback </span>:
- The callback for getting file list
- </li>
- <li class="param">
- <span class="name">user_data </span>:
- The user data to be passed to the callback function
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
- Permission denied
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
- The handle's state is invalid
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE </span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED </span>
- Not supported API in this plugin
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- For the dir_path , "/" means root path.
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void file_list_cb(int result, service_storage_file_list_h list, void *user_data)
-{
- if(SERVICE_ADAPTOR_ERROR_NONE != result)
- {
- log_error("Cannot get file list", ret);
- return;
- }
-
- process_files_list(list);
-}
-
-void process_directory(service_plugin_h plugin, const char *dir_path)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_storage_get_file_list(plugin, dir_path, file_list_cb, NULL);
-
- if (SERVICE_ADAPTOR_ERROR_NONE != ret)
- {
- log_error("Cannot process direcory", ret);
- }
-}
-
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_list_get_length -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_list_get_length">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_list_get_length"></a>
- <code><b><span class="methodName">service_storage_file_list_get_length</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Gets length of the file list handle.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_list_get_length(<a href="#StorageAPIFileList">service_storage_file_list_h</a> list, int *length)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">list </span>:
- The file list handle
- </li>
- <li class="param">
- <span class="name">length </span>:
- The length of the file list handle
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- </ul>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void file_list_cb(int result, service_storage_file_list_h list, void *user_data)
-{
- if(SERVICE_ADAPTOR_ERROR_NONE != result)
- {
- log_error("Cannot get file list", ret);
- return;
- }
-
- int length;
-
- service_storage_file_list_get_length(list, &length);
- if (length > 0)
- {
- process_files_list(list);
- }
- else
- {
- log_warrning("Empty file list");
- }
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_list_foreach_file -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_list_foreach_file">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_list_foreach_file"></a>
- <code><b><span class="methodName">service_storage_file_list_foreach_file</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Foreach All of the file from file list.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_list_foreach_file(<a href="#StorageAPIFileList">service_storage_file_list_h</a> list, <a href="#StorageAPIStorageFileCallback">service_storage_file_cb</a> callback, void *user_data)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">list </span>:
- The file list handle
- </li>
- <li class="param">
- <span class="name">callback </span>:
- The callback for foreach file
- </li>
- <li class="param">
- <span class="name">user_data </span>:
- Passed data to callback
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no file
- </li>
- </ul>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool storage_file_cb(service_storage_file_h file, void *user_data)
-{
- bool isDir = false;
- service_storage_file_is_dir(file, &isDir);
- if (!isDir)
- {
- service_storage_file_h copy = NULL;
- service_storage_file_clone(file, ©);
- do_something(copy);
- service_storage_file_destroy(copy);
- }
- return true;
-}
-
-void process_file_list(service_storage_file_list_h list)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_storage_file_list_foreach_file(list, storage_file_cb, NULL);
-
- if (SERVICE_ADAPTOR_ERROR_NONE != ret)
- {
- log_error("Foreach operation failed", ret);
- }
-}
-
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_list_clone -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_list_clone">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_list_clone"></a>
- <code><b><span class="methodName">service_storage_file_list_clone</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Clones the file list handle.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_list_clone(<a href="#StorageAPIFileList">service_storage_file_list_h</a> src_list, <a href="#StorageAPIFileList">service_storage_file_list_h</a> *dst_list)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">src_list </span>:
- The source handle
- </li>
- <li class="param">
- <span class="name">dst_list </span>:
- The destination handle
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- file must be released memory using <a href="#::ServiceAdaptorClient::service_storage_file_list_destroy">service_storage_file_list_destroy()</a> when you no longer needs this handle
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void file_list_cb(int result, service_storage_file_list_h list, void *user_data)
-{
- if(SERVICE_ADAPTOR_ERROR_NONE != result)
- {
- log_error("Cannot get file list", ret);
- return;
- }
-
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
- service_storage_file_list_h list_copy = NULL:
-
- ret = service_storage_file_list_clone(list, &list_copy);
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- process_files(list);
- process_files_second_iteration(list_copy);
-
- service_storage_file_list_destroy(list_copy);
- }
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_list_destroy -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_list_destroy">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_list_destroy"></a>
- <code><b><span class="methodName">service_storage_file_list_destroy</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Destroys the file list handle.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_list_destroy(<a href="#StorageAPIFileList">service_storage_file_list_h</a> list)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">list </span>:
- The file list handle
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- It must be used for cloned file list handle
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void file_list_cb(int result, service_storage_file_list_h list, void *user_data)
-{
- if(SERVICE_ADAPTOR_ERROR_NONE != result)
- {
- log_error("Cannot get file list", ret);
- return;
- }
-
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
- service_storage_file_list_h list_copy = NULL:
-
- ret = service_storage_file_list_clone(list, &list_copy);
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- process_files(list);
- process_files_second_iteration(list_copy);
-
- service_storage_file_list_destroy(list_copy);
- }
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_clone -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_clone">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_clone"></a>
- <code><b><span class="methodName">service_storage_file_clone</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Clones the file handle.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_clone(<a href="#StorageAPIFile">service_storage_file_h</a> src_file, <a href="#StorageAPIFile">service_storage_file_h</a> *dst_file)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">src_file</span>:
- The source handle
- </li>
- <li class="param">
- <span class="name">dst_file</span>:
- The destination handle
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- file must be released memory using <a href="#::ServiceAdaptorClient::service_storage_file_destroy">service_storage_file_destroy()</a> when you no longer needs this handle
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool storage_file_cb(service_storage_file_h file, void *user_data)
-{
- bool isDir = false;
- service_storage_file_is_dir(file, &isDir);
- if (!isDir)
- {
- service_storage_file_h file_copy = NULL;
- service_storage_file_clone(file, &file_copy);
- do_something(file_copy);
- service_storage_file_destroy(file_copy);
- }
- return true;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_get_logical_path -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_get_logical_path">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_get_logical_path"></a>
- <code><b><span class="methodName">service_storage_file_get_logical_path</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Gets logical path from file handle.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_get_logical_path(<a href="#StorageAPIFile">service_storage_file_h</a> file, char **path)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">file</span>:
- The source handle
- </li>
- <li class="param">
- <span class="name">path</span>:
- The logical path of file
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no data
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- path must be released with free() function
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool get_file_path(service_storage_file_h file, char **path)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
- char *_path = NULL;
-
- ret = service_storage_file_get_logical_path(file, &_path);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- *path = _path;
- return true;
- }
- else
- {
- log_error("Cannot get logical path", ret);
- }
-
- return false;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_get_physical_path -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_get_physical_path">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_get_physical_path"></a>
- <code><b><span class="methodName">service_storage_file_get_physical_path</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Gets physical path from file handle.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_get_physical_path(<a href="#StorageAPIFile">service_storage_file_h</a> file, char **path)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">file</span>:
- The source handle
- </li>
- <li class="param">
- <span class="name">path</span>:
- The physical path of file
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NO_DATA </span>
- There is no data
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- path must be released with free() function
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool get_file_physical_path(service_storage_file_h file, char **path)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
- char *_path = NULL;
-
- ret = service_storage_file_get_physical_path(file, &_path);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- *path = _path;
- return true;
- }
- else
- {
- log_error("Cannot get logical path", ret);
- }
-
- return false;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_get_size -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_get_size">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_get_size"></a>
- <code><b><span class="methodName">service_storage_file_get_size</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Gets size of a file.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_get_size(<a href="#StorageAPIFile">service_storage_file_h</a> file, unsigned long long *size)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">file</span>:
- The source handle
- </li>
- <li class="param">
- <span class="name">size</span>:
- The size of file (byte)
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- </ul>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool get_file_size(service_storage_file_h file, unsigned long long **size)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
- unsigned long long _size = -1;
-
- ret = service_storage_file_get_size(file, &_size);
-
- if (SERVICE_ADAPTOR_ERROR_NONE == ret)
- {
- *size = _size;
- return true;
- }
- else
- {
- log_error("Cannot get file size", ret);
- }
-
- return false;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_is_dir -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_is_dir">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_is_dir"></a>
- <code><b><span class="methodName">service_storage_file_is_dir</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Gets information if file handle is directory or not.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_is_dir(<a href="#StorageAPIFile">service_storage_file_h</a> file, bool *is_dir)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">file</span>:
- The source handle
- </li>
- <li class="param">
- <span class="name">is_dir</span>:
- true on directory, false on file
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- </ul>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool storage_file_cb(service_storage_file_h file, void *user_data)
-{
- bool isDir = false;
-
- service_storage_file_is_dir(file, &isDir);
-
-
- if (!isDir)
- {
- do_some_file_operations(file);
- }
-
- return true;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_file_destroy -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_file_destroy">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_file_destroy"></a>
- <code><b><span class="methodName">service_storage_file_destroy</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Clones the file handle.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_file_destroy(<a href="#StorageAPIFile">service_storage_file_h</a> file)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">file</span>:
- The handle of file or directory in storage
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- </ul>
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">bool storage_file_cb(service_storage_file_h file, void *user_data)
-{
- bool isDir = false;
- service_storage_file_is_dir(file, &isDir);
- if (!isDir)
- {
- service_storage_file_h file_copy = NULL;
- service_storage_file_clone(file, &file_copy);
- do_something(file_copy);
- service_storage_file_destroy(file_copy);
- }
- return true;
-}
- </pre>
- </div>
- </dd>
- </dl>
- <!-- service_storage_remove -->
- <dl>
- <dt class="method" id="::ServiceAdaptorClient::service_storage_remove">
- <a class="backward-compatibility-anchor" name="::ServiceAdaptorClient::ServicePluginAPI::service_storage_remove"></a>
- <code><b><span class="methodName">service_storage_remove</span></b></code>
- </dt>
- <dd>
- <div class="brief">
- Removes file or directory in storage.
- </div>
- <div class="synopsis"><pre class="signature prettyprint">int service_storage_remove(<a href="#ServicePluginAPIServicePluginHandle">service_plugin_h</a> plugin, const char *remove_path, <a href="#StorageAPIStorageResultCallback">service_storage_result_cb</a> callback, void *user_data)
- </pre></div>
- <p><span class="version">
- Since: </span>
- 2.4
- </p>
- <p><span class="privilegelevel">
- Privilege level: </span>
- Public
- </p>
- <div class="parameters">
- <p><span class="param">Parameters:</span></p>
- <ul>
- <li class="param">
- <span class="name">plugin </span>:
- The handle for use Plugin APIs
- </li>
- <li class="param">
- <span class="name">remove_path </span>:
- The target file or directory for remove (Physical path)
- </li>
- <li class="param">
- <span class="name">callback </span>:
- The callback for getting file list
- </li>
- <li class="param">
- <span class="name">user_data </span>:
- The user data to be passed to the callback function
- </li>
- </ul>
- </div>
- <div class="returntype">
- <p><span class="return">Return value:</span></p>
- <ul>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NONE</span>
- Successful
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_PERMISSION_DENIED </span>
- Permission denied
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_STATE </span>
- The handle's state is invalid
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_INVALID_PARAMETER </span>
- Invalid parameter
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_IPC_UNSTABLE</span>
- IPC failed with Service Adaptor Daemon
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_NOT_SUPPORTED </span>
- Not supported API in this plugin
- </li>
- <li class="returntypes">
- <span class="name">SERVICE_ADAPTOR_ERROR_UNKNOWN </span>
- Unknown error
- </li>
- </ul>
- </div>
- <div class="exception">
- <p><span class="name">Remarks</span></p>
- If the function returns SERVICE_ADAPTOR_ERROR_PLUGIN_FAILED, error code and error message can be obtained using
- <a href="#::ServiceAdaptorClient::service_adaptor_get_last_result">service_adaptor_get_last_result()</a> and <a href="#::ServiceAdaptorClient::service_adaptor_get_last_error_message">service_adaptor_get_last_error_message()</a> method. <br>
- Error codes and messages are described in Service Plugin.
- </div>
- <div class="example">
- <span class="example"><p>Code example:</p></span><pre name="code" class="examplecode prettyprint">void file_list_cb(int result, service_storage_file_list_h list, void *user_data)
-{
- if(SERVICE_ADAPTOR_ERROR_NONE != result)
- {
- log_error("Cannot get file list", ret);
- return;
- }
-
- process_files_list(list);
-}
-
-void process_directory(service_plugin_h plugin, const char *dir_path)
-{
- service_adaptor_error_e ret = SERVICE_ADAPTOR_ERROR_UNKNOWN;
-
- ret = service_storage_get_file_list(plugin, dir_path, file_list_cb, NULL);
-
- if (SERVICE_ADAPTOR_ERROR_NONE != ret)
- {
- log_error("Cannot process direcory", ret);
- }
-}
-
- </pre>
- </div>
- </dd>
- </dl>
- </div>
- </div>
- </div>
- <div id="page-footer">
- <div class="copyright" align="center">
- Except as noted, this content - excluding the Code Examples - is licensed under <a href="http://creativecommons.org/licenses/by/3.0/legalcode" target="_blank">Creative Commons Attribution 3.0</a> and all of the Code Examples contained herein are licensed under <a href="https://www.tizen.org/bsd-3-clause-license" target="_blank">BSD-3-Clause</a>. <br>For details, see the <a href="https://www.tizen.org/content-license" target="_blank">Content License</a>.
- </div>
- <script type="text/javascript">
-
- var _gaq = _gaq || [];
- _gaq.push(['_setAccount', 'UA-25976949-1']);
- _gaq.push(['_setDomainName', 'tizen.org']);
- _gaq.push(['_trackPageview']);
-
- (function () {
- var ga = document.createElement('script');
- ga.type = 'text/javascript';
- ga.async = true;
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
- var s = document.getElementsByTagName('script')[0];
- s.parentNode.insertBefore(ga, s);
- })();
-
- </script>
- </div>
- </body>
-</html>