*/
gras_error_t
gras_msgtype_declare(const char *name,
- gras_datadesc_type_t *payload,
- gras_msgtype_t **dst) {
- return gras_msgtype_declare_v(name, 0, payload, dst);
+ gras_datadesc_type_t *payload) {
+ return gras_msgtype_declare_v(name, 0, payload);
}
/**
gras_error_t
gras_msgtype_declare_v(const char *name,
short int version,
- gras_datadesc_type_t *payload,
- gras_msgtype_t **dst) {
+ gras_datadesc_type_t *payload) {
gras_error_t errcode;
gras_msgtype_t *msgtype;
TRY(gras_set_add(_gras_msgtype_set, (gras_set_elm_t*)msgtype,
&gras_msgtype_free));
-
+
return no_error;
}
string_type = gras_datadesc_by_name("string");
gras_assert(string_type);
}
-
+
+ DEBUG3("send %s to %s:%d", msgtype->name,
+ gras_socket_peer_name(sock),gras_socket_peer_port(sock));
TRY(gras_trp_chunk_send(sock, GRAS_header, 6));
TRY(gras_datadesc_send(sock, string_type, &msgtype->name));
RAISE2(mismatch_error,"GRAS protocol mismatch (got %d, use %d)",
(int)header[4], (int)GRAS_header[4]);
r_arch = (int)header[5];
- DEBUG2("Handle an incoming message using protocol %d from arch %s",
+ DEBUG2("Handle an incoming message using protocol %d (remote is %s)",
(int)header[4],gras_datadesc_arch_name(r_arch));
TRY(gras_datadesc_recv(sock, string_type, r_arch, &msg_name));
VERB1("Waiting for message %s",msgt_want->name);
- start = now = gras_time();
+ start = now = gras_os_time();
gras_dynar_foreach(pd->msg_queue,cpt,msg){
if (msg.type->code == msgt_want->code) {
msg.payload_size = payload_size_got;
TRY(gras_dynar_push(pd->msg_queue,&msg));
- now=gras_time();
+ now=gras_os_time();
if (now - start + 0.001 < timeout) {
RAISE1(timeout_error,"Timeout while waiting for msg %s",msgt_want->name);
}
return mismatch_error;
}
+void
+gras_cbl_free(void *data){
+ gras_cblist_t *list=*(void**)data;
+ if (list) {
+ gras_dynar_free(list->cbs);
+ free(list);
+ }
+}
+
gras_error_t
gras_cb_register(gras_msgtype_t *msgtype,
gras_cb_t cb) {