pd->userdata = NULL;
TRY(gras_dynar_new( &(pd->msg_queue), sizeof(gras_msg_t), NULL ));
TRY(gras_dynar_new( &(pd->cbl_list), sizeof(gras_cblist_t *), NULL ));
+ TRY(gras_dynar_new( &(pd->sockets), sizeof(gras_socket_t*), NULL));
return no_error;
}
gras_dynar_free(pd->msg_queue);
gras_dynar_free(pd->cbl_list);
+ gras_dynar_free(pd->sockets);
}
+gras_dynar_t *
+gras_socketset_get(void) {
+ return gras_procdata_get()->sockets;
+}
/* registered callbacks for each message */
gras_dynar_t *cbl_list; /* elm type: gras_cblist_t */
-
- /* The channel we are listening to in SG for formated messages */
- int chan;
- gras_socket_t *sock; /* the corresponding socket (SG only) */
-
- /* The channel we are listening to in SG for raw send/recv */
- int rawChan;
- gras_socket_t *rawSock;/* the corresponding socket (SG only) */
+ /* SG only elements. In RL, they are part of the OS ;) */
+ int chan; /* Formated messages channel */
+ int rawChan; /* Unformated echange channel */
+ gras_dynar_t *sockets; /* all sockets known to this process */
/* globals of the process */
void *userdata;
} gras_procdata_t;
+/* Access */
+gras_dynar_t * gras_socketset_get(void);
+
/* FIXME: mv to _private? */
gras_procdata_t *gras_procdata_get(void);
gras_error_t gras_procdata_init(void);