//------------------------------------------------------------------------------
void MobiCoreDriverDaemon::processNotify(Connection  *connection)
{
    // Read entire command data
    MC_DRV_CMD_NOTIFY_struct  cmd;
    //RECV_PAYLOAD_FROM_CLIENT(connection, &cmd);
    void *payload = (void *)((uintptr_t)&cmd + sizeof(mcDrvCommandHeader_t));
    uint32_t payload_len = sizeof(cmd) - sizeof(mcDrvCommandHeader_t);
    uint32_t rlen = connection->readData(payload, payload_len);
    if ((int) rlen < 0) {
        LOG_E("reading from Client failed");
        /* it is questionable, if writing to broken socket has any effect here. */
        // NOTE: notify fails silently
        //writeResult(connection, MC_DRV_RSP_SOCKET_ERROR);
        return;
    }
    if (rlen != payload_len) {
        LOG_E("wrong buffer length %i received from Client", rlen);
        // NOTE: notify fails silently
        //writeResult(connection, MC_DRV_RSP_PAYLOAD_LENGTH_ERROR);
        return;
    }

    // Device required
    MobiCoreDevice *device = (MobiCoreDevice *) (connection->connectionData);
    if (NULL == device) {
        LOG_V("%s: no device associated with connection", __FUNCTION__);
        // NOTE: notify fails silently
        // writeResult(connection,MC_DRV_RSP_DEVICE_NOT_OPENED);
        return;
    }

    device->notify(connection, cmd.sessionId);
    // NOTE: for notifications there is no response at all
}
//------------------------------------------------------------------------------
void MobiCoreDriverDaemon::processNotify(
    Connection  *connection
) {
	do
	{
		// Read entire command data
		mcDrvCmdNotifyPayload_t  cmdNotifyPayload;
		uint32_t rlen = connection->readData(
							&cmdNotifyPayload,
							sizeof(cmdNotifyPayload));
		if (sizeof(cmdNotifyPayload) != rlen)
		{
			LOG_E("processNotify(): NotifyPayload length error: %d", rlen);
			// NOTE: notify fails silently
			// writeResult(connection,MC_DRV_RSP_PAYLOAD_LENGTH_ERROR);
			break;
		}

		// Device required
		MobiCoreDevice *device = (MobiCoreDevice *) (connection->connectionData);
		if (NULL == device)
		{
			LOG_E("processNotify(): device is NULL");
			// NOTE: notify fails silently
			// writeResult(connection,MC_DRV_RSP_DEVICE_NOT_OPENED);
			break;
		}

		// REV axh: we cannot trust the clientLib to give us a valid
		//          sessionId here. Thus we have to check that it belongs to
		//          the clientLib's process.

		device->notify(cmdNotifyPayload.sessionId);
		// NOTE: for notifications there is no response at all
	} while(0);
}