MEMCACHED_RESULT_ST(3)

πŸ’– MEMCACHED_RESULT_ST πŸ’–

okay bestie, so this is a page from libmemcached-awesome, and it's all about the memcached_result_st girlies β€” result sets!! πŸŽ€ if you've been raw-dogging char * returns this whole time, this is your sign to level up. let's get into it ✨


🌸 SYNOPSIS 🌸

#include <libmemcached/memcached.h>

Compile and link with -lmemcachedutil -lmemcached

typedef struct memcached_result_st memcached_result_st

✨ memcached_result_create

memcached_result_st *memcached_result_create(memcached_st *ptr,
memcached_result_st *result)

Parameters

  • ptr β€” pointer to an initialized memcached_st struct
  • result β€” pointer to a memcached_result_st instance you want initialized, or nullptr if you'd rather it just allocate a brand new one for you πŸ’…

Returns

pointer to the initialized memcached_result_st instance 🫢


✨ memcached_result_free

void memcached_result_free(memcached_result_st *result)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct

✨ memcached_result_key_value

const char *memcached_result_key_value(memcached_result_st *result)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct

Returns

the key value associated with the current result object πŸ”‘


✨ memcached_result_key_length

size_t memcached_result_key_length(const memcached_result_st *result)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct

Returns

the key length associated with the current result object πŸ“


✨ memcached_result_value

const char *memcached_result_value(memcached_result_st *result)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct

Returns

the result value associated with the current result object πŸ’Ž


✨ memcached_result_take_value

char *memcached_result_take_value(memcached_result_st *result)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct

Returns

the result value associated with the current result object 🎁


✨ memcached_result_length

size_t memcached_result_length(const memcached_result_st *result)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct

Returns

the result length associated with the current result object πŸ“


✨ memcached_result_flags

uint32_t memcached_result_flags(const memcached_result_st *result)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct

Returns

the flags associated with the current result object 🚩


✨ memcached_result_cas

uint64_t memcached_result_cas(const memcached_result_st *result)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct

Returns

the cas associated with the current result object πŸ‘‘


✨ memcached_result_set_value

memcached_return_t memcached_result_set_value(memcached_result_st
*result, const char *value, size_t length)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct
  • value β€” byte array to set the value of the current result object to
  • length β€” the length of value without any terminating zero

Returns

memcached_return_t indicating success βœ…


✨ memcached_result_set_flags

void memcached_result_set_flags(memcached_result_st *result, uint32_t
flags)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct
  • flags β€” a new value for the flags field

✨ memcached_result_set_expiration

void memcached_result_set_expiration(memcached_result_st *result, time_t
expiration)

Parameters

  • result β€” pointer to an initialized memcached_result_st struct
  • expiration β€” a new value for the expiration field

πŸ¦‹ DESCRIPTION πŸ¦‹

so libmemcached can optionally hand you back a memcached_result_st, which is literally just a result object, and it's the moment fr fr. why is it better than getting a plain character pointer back? okay so:

  • it's forward compatible with new return items that future memcached servers might implement (the best current example of this is the CAS return item ✨)
  • the structures can be reused, which saves you calls to malloc(3) πŸ’Έ

so like, the suggestion is literally right there: use result objects over char * return functions. it's giving glow-up, no cap. πŸ’…

⚠️ also important bestie β€” the structure of memcached_result_st has been encapsulated, so do NOT write code that directly accesses members of the structure. hands off the internals, okay?? πŸ™ˆ

memcached_result_create() will either allocate memory for a memcached_result_st, or it will initialize a structure you pass to it. your choice, main character πŸŽ€

memcached_result_free() will deallocate any memory attached to the structure. and if the structure itself was also allocated? yeah, it deallocates that too. clean sweep 🧹

memcached_result_key_value() returns the key value associated with the current result object. πŸ”‘

memcached_result_key_length() returns the key length associated with the current result object. πŸ“

memcached_result_value() returns the result value associated with the current result object. πŸ’Ž

memcached_result_take_value() returns and hands over the result value associated with the current result object. listen carefully though: you must call free(3) to release this value, unless you've made use of a custom allocator. and if you ARE using a custom allocator, then you're gonna need to create your own custom free() to release it. iykyk 😭

memcached_result_length() returns the result length associated with the current result object. πŸ“

memcached_result_flags() returns the flags associated with the current result object. 🚩

memcached_result_cas() returns the cas associated with the current result object. and heads up: this value will only be available if the server tests it. not always gonna show up for you, bestie πŸ’€

memcached_result_set_value() takes a byte array and a size, and sets the result to this value. this function is used for trigger responses. ✨

memcached_result_set_flags() takes a result structure and stores a new value for the flags field. 🚩

memcached_result_set_expiration() takes a result structure and stores a new value for the expiration field β€” and just so you know, this is only used by read through triggers. πŸ•°οΈ


πŸ’€ RETURN VALUE πŸ’€

varies, see particular functions. but the one universal rule?? all structures must have memcached_result_free() called on them for cleanup purposes. failure to do this will result in leaked memory. not the vibe. do not skip it. periodt. 🫢


πŸ”₯ SEE ALSO πŸ”₯


and that's the whole page babes!! πŸ’– this was libmemcached-awesome version 1.1, dated Jul 24, 2025 β€” go forth and free your result structs, mwah πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from