Example #1
0
XnStatus XnServerSession::HandleCloseStream()
{
	XnStatus nRetVal = XN_STATUS_OK;

	// read it
	XnChar strStreamName[XN_DEVICE_MAX_STRING_LENGTH];
	XnUInt32 nDataSize = XN_DEVICE_MAX_STRING_LENGTH;
	XnUInt32 nType = XN_SENSOR_SERVER_MESSAGE_CLOSE_STREAM;
	nRetVal = m_privateIncomingPacker.ReadCustomData(nType, strStreamName, &nDataSize);
	XN_IS_STATUS_OK(nRetVal);

	XnStatus nActionResult = CloseStreamImpl(strStreamName);

	nRetVal = SendReply(XN_SENSOR_SERVER_MESSAGE_GENERAL_OP_RESPOND, nActionResult);
	XN_IS_STATUS_OK(nRetVal);

	return (XN_STATUS_OK);
}
Example #2
0
XnStatus XnServerSession::RemoveStreamImpl(const XnChar* strName)
{
	XnStatus nRetVal = XN_STATUS_OK;

	SessionStream* pStream = NULL;
	nRetVal = m_streamsHash.Get(strName, pStream);
	XN_IS_STATUS_OK(nRetVal);

	// first close it (so that ref count will be consistent)
	if (pStream->bIsOpen)
	{
		nRetVal = CloseStreamImpl(strName);
		XN_IS_STATUS_OK(nRetVal);
		pStream->bIsOpen = FALSE;
	}

	// release that stream
	nRetVal = m_pSensor->ReleaseStream(pStream->strStreamName);
	XN_IS_STATUS_OK(nRetVal);

	// if client had a buffer of this stream, release it
	XnStreamData* pStreamData = NULL;
	nRetVal = XnStreamDataSetGet(m_pStreamDataSet, pStream->strStreamName, &pStreamData);
	if (nRetVal == XN_STATUS_OK)
	{
		if (pStreamData->pInternal->pLockedBuffer != NULL)
		{
			m_pSensor->ReleaseFrameBuffer(pStream->strStreamName, pStreamData->pInternal->pLockedBuffer);
		}

		// free data
		XnStreamDataSetRemove(m_pStreamDataSet, pStreamData);
		XnStreamDataDestroy(&pStreamData);
	}

	// now remove it from client
	nRetVal = RemoveSessionModule(strName);
	XN_IS_STATUS_OK(nRetVal);

	return (XN_STATUS_OK);
}
Example #3
0
XnStatus XnServerSession::HandleCloseStream()
{
	XnStatus nRetVal = XN_STATUS_OK;

	// read it
	XnChar strStreamName[XN_DEVICE_MAX_STRING_LENGTH];
	XnUInt32 nDataSize = XN_DEVICE_MAX_STRING_LENGTH;
	XnUInt32 nType = XN_SENSOR_SERVER_MESSAGE_CLOSE_STREAM;
	nRetVal = m_privateIncomingPacker.ReadCustomData(nType, strStreamName, &nDataSize);
	XN_IS_STATUS_OK(nRetVal);

	XnStatus nActionResult = CloseStreamImpl(strStreamName);
	if (nActionResult != XN_STATUS_OK)
	{
		xnLogWarning(XN_MASK_SENSOR_SERVER, "Client %u failed to close stream '%s': %s", m_nID, strStreamName, xnGetStatusString(nActionResult));
	}

	nRetVal = SendReply(XN_SENSOR_SERVER_MESSAGE_GENERAL_OP_RESPOND, nActionResult);
	XN_IS_STATUS_OK(nRetVal);

	return (XN_STATUS_OK);
}