Mnemonic: rmr_em.c
Abstract: RMR emulation for testing
- Date: 20 March
+ Date: 20 March
Author: E. Scott Daniels
*/
if( mbuf != NULL ) {
if( m == NULL ) {
- m = (char *) malloc( sizeof( char ) * 32 );
+ m = (char *) malloc( sizeof( char ) * 32 );
}
h = (header_t *) mbuf->tp_buf;
memcpy( m, h->meid, 32 );
if( mbuf != NULL ) {
if( m == NULL ) {
- m = (char *) malloc( sizeof( char ) * 32 );
+ m = (char *) malloc( sizeof( char ) * 32 );
}
h = (header_t *) mbuf->tp_buf;
memcpy( m, h->src, 32 );
rmr_mbuf_t* rmr_send_msg( void* mrc, rmr_mbuf_t* mbuf ) {
if( mbuf != NULL ) {
- mbuf->state = 0;
+ mbuf->state = 0;
}
-
+
return mbuf;
}
rmr_mbuf_t* rmr_rts_msg( void* mrc, rmr_mbuf_t* mbuf ) {
if( mbuf != NULL ) {
- mbuf->state = 0;
+ mbuf->state = 0;
}
-
+
return mbuf;
}
rmr_mbuf_t* rmr_realloc_payload( rmr_mbuf_t* mbuf, int payload_len, int copy, int clone ) { // ensure message is large enough
- return rmr_alloc_msg( NULL, payload_len );
+ rmr_mbuf_t* nmb;
+ unsigned char* payload;
+
+ if( mbuf == NULL ) {
+ return NULL;
+ }
+
+ nmb = rmr_alloc_msg( NULL, payload_len );
+ if( copy ) {
+ memcpy( nmb->payload, mbuf->payload, mbuf->len );
+ nmb->len = mbuf->len;
+ } else {
+ nmb->len = 0;
+ }
+ nmb->state = mbuf->state;
+
+ if( ! clone ) {
+ free( mbuf );
+ }
+ return nmb;
}
void rmr_close( void* mrc ) {
if( ! state ) {
state = 1;
return 0;
- }
+ }
return 1;
}
+// ----------------------- wormhole dummies ---------------------------------------------
+
+typedef int rmr_whid_t;
+
+extern rmr_whid_t rmr_wh_open( void* vctx, char const* target ) {
+ static int whid = 0;
+
+ if( vctx == NULL ) {
+ return -1;
+ }
+ return whid++;
+}
+
+//extern rmr_mbuf_t* rmr_wh_call( void* vctx, rmr_whid_t whid, rmr_mbuf_t* msg, int call_id, int max_wait );
+
+extern rmr_mbuf_t* rmr_wh_send_msg( void* vctx, rmr_whid_t whid, rmr_mbuf_t* mbuf ) {
+ if( mbuf != NULL ) {
+ if( whid >= 0 ) {
+ mbuf->state = 0;
+ }
+
+ mbuf->state = 7;
+ }
+
+ return mbuf;
+}
+
+extern int rmr_wh_state( void* vctx, rmr_whid_t whid ) {
+ return whid >= 0;
+}
+
+extern void rmr_wh_close( void* vctx, int whid ){
+ return;
+}
+