/*
 * mmeIpcInterface.h
 *
 *  Created on: Aug 29, 2019
 *      Author: Anjana_Sreekumar
 */

#ifndef INCLUDE_MME_APP_INTERFACES_MMEIPCINTERFACE_H_
#define INCLUDE_MME_APP_INTERFACES_MMEIPCINTERFACE_H_

#include <ipcChannel.h>

namespace cmn{
namespace utils{
	class MsgBuffer;
}
}

class MmeIpcInterface {

public:
	MmeIpcInterface();
	virtual ~MmeIpcInterface();

	bool setup();
	void teardown();

	cmn::ipc::IpcChannel* sender();
	cmn::ipc::IpcChannel* reader();

	void handleIpcMsg(cmn::utils::MsgBuffer* buf);

	bool dispatchIpcMsg(char* buf, uint32_t len, cmn::ipc::IpcAddress& destAddr);

	bool dispatchIpcMsg(cmn::utils::MsgBuffer* msgBuf_p, cmn::ipc::IpcAddress& destAddr);

private:
	cmn::ipc::IpcChannel* sender_mp;
	cmn::ipc::IpcChannel* reader_mp;
};

#endif /* INCLUDE_MME_APP_INTERFACES_MMEIPCINTERFACE_H_ */
