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 allocate_away(struct Client *);
|
||||||
void free_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 */
|
#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 *pclient_heap = NULL;
|
||||||
static rb_bh *user_heap = NULL;
|
static rb_bh *user_heap = NULL;
|
||||||
static rb_bh *away_heap = NULL;
|
static rb_bh *away_heap = NULL;
|
||||||
|
static rb_bh *metadata_heap = NULL;
|
||||||
static char current_uid[IDLEN];
|
static char current_uid[IDLEN];
|
||||||
|
|
||||||
struct Dictionary *nd_dict = NULL;
|
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");
|
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");
|
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");
|
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");
|
away_heap = rb_bh_create(AWAYLEN, AWAY_HEAP_SIZE, "away_heap");
|
||||||
|
|
||||||
rb_event_addish("check_pings", check_pings, NULL, 30);
|
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
|
void
|
||||||
init_uid(void)
|
init_uid(void)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue