presence: Add set_metadata() and delete_metadata().
This commit is contained in:
parent
95cc7c44e8
commit
e5847c3ef3
|
@ -614,4 +614,7 @@ extern char *generate_uid(void);
|
|||
void allocate_away(struct Client *);
|
||||
void free_away(struct Client *);
|
||||
|
||||
void set_metadata(struct Client *, const char *, const char *);
|
||||
void delete_metadata(struct Client *, const char *);
|
||||
|
||||
#endif /* INCLUDED_client_h */
|
||||
|
|
32
src/client.c
32
src/client.c
|
@ -77,6 +77,7 @@ static rb_bh *lclient_heap = NULL;
|
|||
static rb_bh *pclient_heap = NULL;
|
||||
static rb_bh *user_heap = NULL;
|
||||
static rb_bh *away_heap = NULL;
|
||||
static rb_bh *metadata_heap = NULL;
|
||||
static char current_uid[IDLEN];
|
||||
|
||||
struct Dictionary *nd_dict = NULL;
|
||||
|
@ -120,6 +121,7 @@ init_client(void)
|
|||
lclient_heap = rb_bh_create(sizeof(struct LocalUser), LCLIENT_HEAP_SIZE, "lclient_heap");
|
||||
pclient_heap = rb_bh_create(sizeof(struct PreClient), PCLIENT_HEAP_SIZE, "pclient_heap");
|
||||
user_heap = rb_bh_create(sizeof(struct User), USER_HEAP_SIZE, "user_heap");
|
||||
metadata_heap = rb_bh_create(sizeof(struct MetadataEntry), USER_HEAP_SIZE, "metadata_heap");
|
||||
away_heap = rb_bh_create(AWAYLEN, AWAY_HEAP_SIZE, "away_heap");
|
||||
|
||||
rb_event_addish("check_pings", check_pings, NULL, 30);
|
||||
|
@ -1746,6 +1748,36 @@ free_away(struct Client *client_p)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
set_metadata(struct Client *client_p, const char *key, const char *value)
|
||||
{
|
||||
struct MetadataEntry *md;
|
||||
|
||||
if(client_p->user != NULL)
|
||||
{
|
||||
md = rb_bh_alloc(metadata_heap);
|
||||
rb_strlcpy(md->key, key, NICKLEN);
|
||||
rb_strlcpy(md->value, value, TOPICLEN);
|
||||
|
||||
irc_dictionary_add(client_p->user->metadata, key, md);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
delete_metadata(struct Client *client_p, const char *key)
|
||||
{
|
||||
struct MetadataEntry *md;
|
||||
|
||||
if(client_p->user != NULL)
|
||||
{
|
||||
md = irc_dictionary_delete(client_p->user->metadata, key);
|
||||
if (md == NULL)
|
||||
return;
|
||||
|
||||
rb_free(md);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
init_uid(void)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue