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.
 
-------------------------------
-Creating and Freeing structure
-------------------------------
+
+---------------------
+Connecting to servers
+---------------------
 
 
 .. 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);
 
 
-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
 
-   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
 
+Adding a value to the Server::
+
    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.
@@ -113,14 +109,14 @@ Fetching multiple values
    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;
+
    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)))
@@ -131,7 +127,7 @@ Fetching multiple values
 
 
 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:
-`https://launchpad.net/libmemcached <https://launchpad.net/libmemcached>`_
+`http://libmemcached.org/ <http://libmemcached.org/>`_
 
 
 --------