static int cluster_name_cmp(uintptr_t val, struct AANode *node)
{
const char *name = (const char *)val;
- const ProxyCluster *cluster = (ProxyCluster *)node;
+ const ProxyCluster *cluster = container_of(node, ProxyCluster, node);
return strcmp(name, cluster->name);
}
static int conn_cstr_cmp(uintptr_t val, struct AANode *node)
{
const char *name = (const char *)val;
- const ProxyConnection *conn = (ProxyConnection *)node;
+ const ProxyConnection *conn = container_of(node, ProxyConnection, node);
return strcmp(name, conn->connstr);
}
static void conn_free(struct AANode *node, void *arg)
{
- ProxyConnection *conn = (ProxyConnection *)node;
+ ProxyConnection *conn = container_of(node, ProxyConnection, node);
aatree_destroy(&conn->userstate_tree);
if (conn->res)
static int state_user_cmp(uintptr_t val, struct AANode *node)
{
const char *name = (const char *)val;
- const ProxyConnectionState *state = (ProxyConnectionState *)node;
+ const ProxyConnectionState *state = container_of(node, ProxyConnectionState, node);
return strcmp(name, state->userinfo->username);
}
static void state_free(struct AANode *node, void *arg)
{
- ProxyConnectionState *state = (ProxyConnectionState *)node;
+ ProxyConnectionState *state = container_of(node, ProxyConnectionState, node);
if (state->db)
PQfinish(state->db);
memset(state, 0, sizeof(*state));
static int userinfo_cmp(uintptr_t val, struct AANode *node)
{
const char *name = (const char *)val;
- const ConnUserInfo *info = (ConnUserInfo *)node;
+ const ConnUserInfo *info = container_of(node, ConnUserInfo, node);
return strcmp(name, info->username);
}
static void userinfo_free(struct AANode *node, void *arg)
{
- ConnUserInfo *info = (ConnUserInfo *)node;
+ ConnUserInfo *info = container_of(node, ConnUserInfo, node);
pfree(info->username);
if (info->extra_connstr)
{
/* check if already have it */
node = aatree_search(&cluster->conn_tree, (uintptr_t)connstr);
if (node)
- conn = (ProxyConnection *)node;
+ conn = container_of(node, ProxyConnection, node);
/* add new connection */
if (!conn)
static void inval_one_umap(struct AANode *n, void *arg)
{
- ConnUserInfo *info = (ConnUserInfo *)n;
+ ConnUserInfo *info = container_of(n, ConnUserInfo, node);
SCInvalArg newStamp;
if (info->needs_reload)
static void inval_umapping(struct AANode *n, void *arg)
{
- ProxyCluster *cluster = (ProxyCluster *)n;
+ ProxyCluster *cluster = container_of(n, ProxyCluster, node);
aatree_walk(&cluster->userinfo_tree, AA_WALK_IN_ORDER, inval_one_umap, arg);
}
static void inval_fserver(struct AANode *n, void *arg)
{
- ProxyCluster *cluster = (ProxyCluster *)n;
+ ProxyCluster *cluster = container_of(n, ProxyCluster, node);
SCInvalArg newStamp = *(SCInvalArg *)arg;
if (cluster->needs_reload)
static void inval_userinfo_state(struct AANode *node, void *arg)
{
- ProxyConnectionState *cur = (ProxyConnectionState *)node;
+ ProxyConnectionState *cur = container_of(node, ProxyConnectionState, node);
ConnUserInfo *userinfo = arg;
if (cur->userinfo == userinfo && cur->db)
static void inval_userinfo_conn(struct AANode *node, void *arg)
{
- ProxyConnection *conn = (ProxyConnection *)node;
+ ProxyConnection *conn = container_of(node, ProxyConnection, node);
ConnUserInfo *userinfo = arg;
aatree_walk(&conn->userstate_tree, AA_WALK_IN_ORDER, inval_userinfo_state, userinfo);
node = aatree_search(&cluster->userinfo_tree, (uintptr_t)username);
if (node) {
- userinfo = (ConnUserInfo *)node;
+ userinfo = container_of(node, ConnUserInfo, node);
} else {
userinfo = MemoryContextAllocZero(cluster_mem, sizeof(*userinfo));
userinfo->username = MemoryContextStrdup(cluster_mem, username);
n = aatree_search(&fake_cluster_tree, (uintptr_t)connect_str);
if (n)
{
- cluster = (ProxyCluster *)n;
+ cluster = container_of(n, ProxyCluster, node);
goto done;
}
/* search if cached */
node = aatree_search(&cluster_tree, (uintptr_t)name);
if (node)
- cluster = (ProxyCluster *)node;
+ cluster = container_of(node, ProxyCluster, node);
/* create if not */
if (!cluster)
node = aatree_search(&conn->userstate_tree, (uintptr_t)username);
if (node) {
- cur = (ProxyConnectionState *)node;
+ cur = container_of(node, ProxyConnectionState, node);
} else {
cur = MemoryContextAlloc(cluster_mem, sizeof(*cur));
cur->userinfo = userinfo;
static void clean_state(struct AANode *node, void *arg)
{
- ProxyConnectionState *cur = (ProxyConnectionState *)node;
+ ProxyConnectionState *cur = container_of(node, ProxyConnectionState, node);
ConnUserInfo *uinfo = cur->userinfo;
struct MaintInfo *maint = arg;
ProxyConfig *cf = maint->cf;
static void clean_conn(struct AANode *node, void *arg)
{
- ProxyConnection *conn = (ProxyConnection *)node;
+ ProxyConnection *conn = container_of(node, ProxyConnection, node);
struct MaintInfo *maint = arg;
if (conn->res)
static void clean_cluster(struct AANode *n, void *arg)
{
- ProxyCluster *cluster = (ProxyCluster *)n;
+ ProxyCluster *cluster = container_of(n, ProxyCluster, node);
struct MaintInfo maint;
maint.cf = &cluster->config;