X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=example%2Fstorage.c;h=1fb79730eba16436ee2257d1e18efb20518d0a6b;hb=db154fa6dbcd3bb64f16669df2f24abf80e49296;hp=18304961efaee5498f72327fc3432abd35c7e320;hpb=9131482f7923cf9e90b5a715b38e70e3a229b052;p=m6w6%2Flibmemcached diff --git a/example/storage.c b/example/storage.c index 18304961..1fb79730 100644 --- a/example/storage.c +++ b/example/storage.c @@ -1,4 +1,5 @@ /* -*- Mode: C; tab-width: 2; c-basic-offset: 2; indent-tabs-mode: nil -*- */ +#include "config.h" #include #include #include @@ -15,36 +16,50 @@ struct list_entry { static struct list_entry *root; static uint64_t cas; -void put_item(struct item* item) { +bool initialize_storage(void) +{ + return true; +} + +void shutdown_storage(void) +{ + /* Do nothing */ +} + +void put_item(struct item* item) +{ struct list_entry* entry= (void*)item; + update_cas(item); - - if (root == NULL) + + if (root == NULL) { entry->next= entry->prev= entry; - } - else + } + else { entry->prev= root->prev; entry->next= root; entry->prev->next= entry; entry->next->prev= entry; } - + root= entry; } -struct item* get_item(const void* key, size_t nkey) { +struct item* get_item(const void* key, size_t nkey) +{ struct list_entry *walker= root; - if (root == NULL) + + if (root == NULL) { return NULL; - } - - do + } + + do { - if (((struct item*)walker)->nkey == nkey && - memcmp(((struct item*)walker)->key, key, nkey) == 0) + if (((struct item*)walker)->nkey == nkey && + memcmp(((struct item*)walker)->key, key, nkey) == 0) { return (struct item*)walker; } @@ -54,19 +69,20 @@ struct item* get_item(const void* key, size_t nkey) { return NULL; } -struct item* create_item(const void* key, size_t nkey, const void* data, +struct item* create_item(const void* key, size_t nkey, const void* data, size_t size, uint32_t flags, time_t exp) { struct item* ret= calloc(1, sizeof(struct list_entry)); - if (ret != NULL) + + if (ret != NULL) { ret->key= malloc(nkey); - if (size > 0) + if (size > 0) { ret->data= malloc(size); } - if (ret->key == NULL || (size > 0 && ret->data == NULL)) + if (ret->key == NULL || (size > 0 && ret->data == NULL)) { free(ret->key); free(ret->data); @@ -75,7 +91,7 @@ struct item* create_item(const void* key, size_t nkey, const void* data, } memcpy(ret->key, key, nkey); - if (data != NULL) + if (data != NULL) { memcpy(ret->data, data, size); } @@ -89,22 +105,23 @@ struct item* create_item(const void* key, size_t nkey, const void* data, return ret; } -bool delete_item(const void* key, size_t nkey) { +bool delete_item(const void* key, size_t nkey) +{ struct item* item= get_item(key, nkey); bool ret= false; - if (item) + if (item) { /* remove from linked list */ struct list_entry *entry= (void*)item; - - if (entry->next == entry) + + if (entry->next == entry) { /* Only one object in the list */ root= NULL; } else - { + { /* ensure that we don't loose track of the root, and this will * change the start position for the next search ;-) */ root= entry->next; @@ -121,27 +138,35 @@ bool delete_item(const void* key, size_t nkey) { return ret; } -void flush(uint32_t when) { +void flush(uint32_t when) +{ /* FIXME */ (void)when; /* remove the complete linked list */ - if (root == NULL) + if (root == NULL) { return; } root->prev->next= NULL; - while (root != NULL) + while (root != NULL) { struct item* tmp= (void*)root; root= root->next; - + free(tmp->key); free(tmp->data); free(tmp); } } -void update_cas(struct item* item) { +void update_cas(struct item* item) +{ item->cas= ++cas; } + +void release_item(struct item* item) +{ + (void)item; + /* EMPTY */ +}