#include <rpc/rpc.h>
#include "vm_basic_types.h"
+#include "vm_assert.h"
#include "rpcin.h"
struct RpcChannel;
} RpcChannel;
+/**
+ * Wrapper for the start function of an RPC channel struct.
+ *
+ * @param[in] chan The RPC channel instance.
+ *
+ * @return TRUE on success.
+ */
+static INLINE Bool
+RpcChannel_Start(RpcChannel *chan)
+{
+ ASSERT(chan != NULL);
+ ASSERT(chan->start != NULL);
+
+ return chan->start(chan);
+}
+
+
+/**
+ * Wrapper for the stop function of an RPC channel struct.
+ *
+ * @param[in] chan The RPC channel instance.
+ */
+
+static INLINE void
+RpcChannel_Stop(RpcChannel *chan)
+{
+ ASSERT(chan != NULL);
+ ASSERT(chan->stop != NULL);
+
+ chan->stop(chan);
+}
+
/**
* Wrapper for the send function of an RPC channel struct.
*
char **result,
size_t *resultLen)
{
+ ASSERT(chan != NULL);
+ ASSERT(chan->send != NULL);
+
return chan->send(chan, data, dataLen, result, resultLen);
}
* Start the RPC channel if it's been created. The channel may be NULL if this is
* not running in the context of a VM.
*/
- if (state->ctx.rpc && !state->ctx.rpc->start(state->ctx.rpc)) {
+ if (state->ctx.rpc && !RpcChannel_Start(state->ctx.rpc)) {
goto error;
}
error:
if (state->ctx.rpc != NULL) {
- state->ctx.rpc->shutdown(state->ctx.rpc);
+ RpcChannel_Destroy(state->ctx.rpc);
state->ctx.rpc = NULL;
}
if (state->ctx.mainLoop != NULL) {