X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fbindings%2Frmr-python%2Frmr%2Frmr.py;h=9e45dd6092ae8933243c435e39a8fee3cf67e299;hb=50b92c56c2bbe5c4405f0bdd2eefbd21d65a8416;hp=b666299d6dc9e8316d6f2f6fe599bc7a306d86ce;hpb=655515ed9a0e30acf5ae57333d5b7fd2d9fc6773;p=ric-plt%2Flib%2Frmr.git diff --git a/src/bindings/rmr-python/rmr/rmr.py b/src/bindings/rmr-python/rmr/rmr.py index b666299..9e45dd6 100644 --- a/src/bindings/rmr-python/rmr/rmr.py +++ b/src/bindings/rmr-python/rmr/rmr.py @@ -69,7 +69,7 @@ def _get_mapping_dict(cache={}): RMR_ERR_TIMEOUT 12 message processing call timed out RMR_ERR_UNSET 13 the message hasn't been populated with a transport buffer RMR_ERR_TRUNC 14 received message likely truncated - RMR_ERR_INITFAILED 15 initialisation of something (probably message) failed + RMR_ERR_INITFAILED 15 initialization of something (probably message) failed """ if cache: @@ -93,6 +93,9 @@ def _state_to_status(stateno): return sdict.get(stateno, "UNKNOWN STATE") +_RCONST = _get_constants() + + ############## # PUBLIC API ############## @@ -100,7 +103,13 @@ def _state_to_status(stateno): # These constants are directly usable by importers of this library # TODO: Are there others that will be useful? -RMR_MAX_RCV_BYTES = _get_constants()["RMR_MAX_RCV_BYTES"] + +RMR_MAX_RCV_BYTES = _RCONST["RMR_MAX_RCV_BYTES"] +RMRFL_MTCALL = _RCONST.get("RMRFL_MTCALL", 0x02) # initialization flags +RMRFL_NONE = _RCONST.get("RMRFL_NONE", 0x0) +RMR_OK = _RCONST["RMR_OK"] # useful state constants +RMR_ERR_TIMEOUT = _RCONST["RMR_ERR_TIMEOUT"] +RMR_ERR_RETRY = _RCONST["RMR_ERR_RETRY"] class rmr_mbuf_t(Structure): @@ -213,6 +222,20 @@ def rmr_alloc_msg(vctx, size): return _rmr_alloc_msg(vctx, size) +_rmr_free_msg = rmr_c_lib.rmr_free_msg +_rmr_free_msg.argtypes = [c_void_p] +_rmr_free_msg.restype = None + + +def rmr_free_msg(mbuf): + """ + Refer to the rmr C documentation for rmr_free_msg + extern void rmr_free_msg( rmr_mbuf_t* mbuf ) + """ + if mbuf is not None: + _rmr_free_msg(mbuf) + + _rmr_payload_size = rmr_c_lib.rmr_payload_size _rmr_payload_size.argtypes = [POINTER(rmr_mbuf_t)] _rmr_payload_size.restype = c_int @@ -414,11 +437,8 @@ def message_summary(ptr_mbuf): dict: dict message summary """ - if ptr_mbuf.contents.len > RMR_MAX_RCV_BYTES: - return "Malformed message: message length is greater than the maximum possible" - return { - "payload": get_payload(ptr_mbuf), + "payload": get_payload(ptr_mbuf) if ptr_mbuf.contents.state == RMR_OK else None, "payload length": ptr_mbuf.contents.len, "message type": ptr_mbuf.contents.mtype, "subscription id": ptr_mbuf.contents.sub_id,