Changeset 1014:908ffbb81f60 in freeDiameter for libfdproto
- Timestamp:
- Mar 29, 2013, 6:30:59 PM (11 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libfdproto/messages.c
r1009 r1014 122 122 struct session *msg_sess; /* Cached message session if any */ 123 123 struct { 124 void (*fct)(void *, struct msg **); 124 void (*anscb)(void *, struct msg **); 125 void (*expirecb)(void *, DiamId_t, size_t, struct msg **); 125 126 void * data; 126 127 struct timespec timeout; 127 } msg_cb; /* Callback to be called when an answer is received, if not NULL */128 } msg_cb; /* Callback to be called when an answer is received, or timeout expires, if not NULL */ 128 129 DiamId_t msg_src_id; /* Diameter Id of the peer this message was received from. This string is malloc'd and must be freed */ 129 130 size_t msg_src_id_len; /* cached length of this string */ … … 775 776 msg->msg_public.msg_eteid 776 777 ) ); 777 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: rwb:%p rt:%d cb:%p (%p) qry:%p asso:%d sess:%p src:%s(%zd)|",778 INOBJHDRVAL, msg->msg_rawbuffer, msg->msg_routable, msg->msg_cb. fct, msg->msg_cb.data, msg->msg_query, msg->msg_associated, msg->msg_sess, msg->msg_src_id?:"(nil)", msg->msg_src_id_len) );778 CHECK_FCT( dump_add_str(outstr, offset, outlen, INOBJHDR "intern: rwb:%p rt:%d cb:%p,%p(%p) qry:%p asso:%d sess:%p src:%s(%zd)|", 779 INOBJHDRVAL, msg->msg_rawbuffer, msg->msg_routable, msg->msg_cb.anscb, msg->msg_cb.expirecb, msg->msg_cb.data, msg->msg_query, msg->msg_associated, msg->msg_sess, msg->msg_src_id?:"(nil)", msg->msg_src_id_len) ); 779 780 return 0; 780 781 } … … 1030 1031 1031 1032 /* Associate / get answer callbacks */ 1032 int fd_msg_anscb_associate( struct msg * msg, void ( *anscb)(void *, struct msg **), void * data, const struct timespec *timeout )1033 { 1034 TRACE_ENTRY("%p %p %p ", msg, anscb, data);1033 int fd_msg_anscb_associate( struct msg * msg, void ( *anscb)(void *, struct msg **), void * data, void (*expirecb)(void *, DiamId_t, size_t, struct msg **), const struct timespec *timeout ) 1034 { 1035 TRACE_ENTRY("%p %p %p %p", msg, anscb, expirecb, data); 1035 1036 1036 1037 /* Check the parameters */ … … 1040 1041 return anscb ? EINVAL : 0; /* we associate with requests only */ 1041 1042 1042 CHECK_PARAMS( (anscb == NULL) || (msg->msg_cb.fct == NULL) ); /* We are not overwritting a cb */ 1043 CHECK_PARAMS( (anscb == NULL) || (msg->msg_cb.anscb == NULL) ); /* We are not overwritting a cb */ 1044 CHECK_PARAMS( (expirecb == NULL) || (msg->msg_cb.expirecb == NULL) ); /* We are not overwritting a cb */ 1043 1045 1044 1046 /* Associate callback and data with the message, if any */ 1045 msg->msg_cb.fct = anscb; 1047 msg->msg_cb.anscb = anscb; 1048 msg->msg_cb.expirecb = expirecb; 1046 1049 msg->msg_cb.data = data; 1047 1050 if (timeout) { … … 1052 1055 } 1053 1056 1054 int fd_msg_anscb_get( struct msg * msg, void (**anscb)(void *, struct msg **), void ** data )1055 { 1056 TRACE_ENTRY("%p %p %p ", msg, anscb, data);1057 int fd_msg_anscb_get( struct msg * msg, void (**anscb)(void *, struct msg **), void (**expirecb)(void *, DiamId_t, size_t, struct msg **), void ** data ) 1058 { 1059 TRACE_ENTRY("%p %p %p %p", msg, anscb, expirecb, data); 1057 1060 1058 1061 /* Check the parameters */ 1059 CHECK_PARAMS( CHECK_MSG(msg) && anscb && data);1062 CHECK_PARAMS( CHECK_MSG(msg) ); 1060 1063 1061 1064 /* Copy the result */ 1062 *anscb = msg->msg_cb.fct; 1063 *data = msg->msg_cb.data; 1065 if (anscb) 1066 *anscb = msg->msg_cb.anscb; 1067 if (data) 1068 *data = msg->msg_cb.data; 1069 if (expirecb) 1070 *expirecb = msg->msg_cb.expirecb; 1064 1071 1065 1072 return 0;
Note: See TracChangeset
for help on using the changeset viewer.