Merge bzr://10.0.3.21 Build: jenkins-Libmemcached-469
[awesomized/libmemcached] / docs / libmemcached_examples.rst
index 38d6f7b5ef4e9c331a4c4ae1134db0b3f69c7c1f..a43ee1a2a11f77a07cffd6614531359ab9e0d13b 100644 (file)
@@ -13,58 +13,63 @@ For full examples, test cases are found in tests/\*.c in the main
 distribution. These are always up to date, and are used for each test run of
 the library.
 
 distribution. These are always up to date, and are used for each test run of
 the library.
 
-------------------------------
-Creating and Freeing structure
-------------------------------
+
+---------------------
+Connecting to servers
+---------------------
 
 
 .. code-block:: c
 
 
 
 .. code-block:: c
 
-   memcached_st *memc;
-   memcached_return_t rc;
-   memc= memcached_create(NULL);
-   ...do stuff...
+  const char *config_string= "--SERVER=host10.example.com --SERVER=host11.example.com --SERVER=host10.example.com"
+  memcached_st *memc= memcached(config_string, strlen(config_string);
+  {
+  ...
+  }
    memcached_free(memc);
 
 
    memcached_free(memc);
 
 
-The above code would create a connection and then free the connection when
-finished.
+In the above code you create a :c:type:`memcached_st` object with three server 
+by making use of :c:func:`memcached_create`.
 
 
 
 
----------------------
-Connecting to servers
----------------------
+--------------------------
+Creating a pool of servers
+--------------------------
 
 
 
 .. code-block:: c
 
 
 
 
 .. code-block:: c
 
-   memcached_server_st *servers;
-   memcached_st *memc= memcached_create(NULL);
-   char servername[]= "0.example.com";
-   servers= memcached_server_list_append(NULL, servername, 400, &rc);
-   for (x= 0; x < 20; x++)
-   {
-     char buffer[SMALL_STRING_LEN];
-     snprintf(buffer, SMALL_STRING_LEN, "%u.example.com", 400+x);
-     servers= memcached_server_list_append(servers, buffer, 401, &rc);
-   }
-   rc= memcached_server_push(memc, servers);
-   memcached_server_free(servers);
-   memcached_free(memc);
+Creating a pool of Servers::
+
+  const char *config_string= "--SERVER=host10.example.com --SERVER=host11.example.com --SERVER=host10.example.com"; 
+  
+  memcached_pool_st* pool= memcached_pool(config_string, strlen(config_string));
+
+  memcached_return_t rc;
 
 
+  memcached_st *memc= memcached_pool_pop(pool, false, &rc);
 
 
-In the above code you create a \ ``memcached_st``\  object that you then feed in a
-single host into. In the for loop you build a \ ``memcached_server_st``\ 
-pointer that you then later feed via memcached_server_push() into the
-\ ``memcached_st``\  structure.
+  .... do work
 
 
-You can reuse the \ ``memcached_server_st``\  object with multile \ ``memcached_st``\ 
-structures.
+  /*
+    Release the memc_ptr that was pulled from the pool
+  */
+  memcached_pool_push(pool, memc);
+
+  /*
+    Destroy the pool.
+  */
+  memcached_pool_destroy(pool);
+
+
+
+In the above code you create a :c:type:`memcached_pool_st` object with three
+server by making use of :c:func:`memcached_pool()`.
+
+When :c:func:`memcached_pool_destroy()` all memory will be released that is associated
+with the pool.
 
 
 ----------------------------
 
 
 ----------------------------
@@ -75,26 +80,17 @@ Adding a value to the server
 
 .. code-block:: c
 
 
 .. code-block:: c
 
+Adding a value to the Server::
+
    char *key= "foo";
    char *key= "foo";
-   char *value;
-   size_t value_length= 8191;
-   unsigned int x;
-   value = (char*)malloc(value_length);
-   assert(value);
-   for (x= 0; x < value_length; x++)
-   value[x] = (char) (x % 127);
-   for (x= 0; x < 1; x++)
+   char *value= "value";
+
+   memcached_return_t rc= memcached_set(memc, key, strlen(key), value, value_length, (time_t)0, (uint32_t)0);
+
+   if (rc != MEMCACHED_SUCCESS)
    {
    {
-     rc= memcached_set(memc, key, strlen(key), 
-     value, value_length,
-     (time_t)0, (uint32_t)0);
-     assert(rc == MEMCACHED_SUCCESS);
+   ... // handle failure
    }
    }
-   free(value);
 
 
 It is best practice to always look at the return value of any operation.
 
 
 It is best practice to always look at the return value of any operation.
@@ -113,14 +109,14 @@ Fetching multiple values
    size_t key_length[]= {5, 3, 4};
    unsigned int x;
    uint32_t flags;
    size_t key_length[]= {5, 3, 4};
    unsigned int x;
    uint32_t flags;
+
    char return_key[MEMCACHED_MAX_KEY];
    size_t return_key_length;
    char *return_value;
    size_t return_value_length;
    char return_key[MEMCACHED_MAX_KEY];
    size_t return_key_length;
    char *return_value;
    size_t return_value_length;
+
    rc= memcached_mget(memc, keys, key_length, 3);
    rc= memcached_mget(memc, keys, key_length, 3);
+
    x= 0;
    while ((return_value= memcached_fetch(memc, return_key, &return_key_length, 
                                          &return_value_length, &flags, &rc)))
    x= 0;
    while ((return_value= memcached_fetch(memc, return_key, &return_key_length, 
                                          &return_value_length, &flags, &rc)))
@@ -131,7 +127,7 @@ Fetching multiple values
 
 
 Notice that you freed values returned from memcached_fetch(). The define
 
 
 Notice that you freed values returned from memcached_fetch(). The define
-\ ``MEMCACHED_MAX_KEY``\  is provided for usage.
+:c:type:`MEMCACHED_MAX_KEY` is provided for usage.
 
 
 
 
 
 
@@ -141,7 +137,7 @@ HOME
 
 
 To find out more information please check:
 
 
 To find out more information please check:
-`https://launchpad.net/libmemcached <https://launchpad.net/libmemcached>`_
+`http://libmemcached.org/ <http://libmemcached.org/>`_
 
 
 --------
 
 
 --------