[Common-cvs] include hxfiles.h,1.8.30.3,1.8.30.4
rdolas at helixcommunity.org rdolas at helixcommunity.orgUpdate of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3926
Modified Files:
Tag: SERVER_11_1
hxfiles.h
Log Message:
Synopsis
========
This CR includes fix for PR 198654: QA: ContentMarker: Unable to block the
content recording when subscriber serves the content from Publisher.
Quick link to the PR:
https://bugs.dev.prognet.com/show_bug.cgi?id=198654
Branch: SERVER_11_1_RN, HEAD, BORABORA
Suggested Reviewer: Darrick, Srinivasa Rao, Vijendra
Description
===========
In content caching scenario, When subscriber caches the content from Publisher and
serves it to the client, Content recording does not get blocked even if it is
blocked on publisher as well as subscriber.
There are fixes for Subscriber as well as Publisher code as described below:
FIX for Publisher:
When the ContentMarker is set on Publisher we should set the Flags for disabling the
content recording in the SDP Describe response from the publisher. We need to set the
5th bit of the flags variable of the SDP Description for disabling the content
recording. For updating this flags I have implemented the IHXContentRecordability
for the MEI File Format Plugin. So when we have ContentMarker set in the config file
for the Content / mountpoint then we are setting the m_ucContentMarker as 1 for the
MEI FF Plugin. When the m_ucContentMarker is set then we are adding the Flags as 16
to the file header.
Files Affected
==============
server_rn/cache/meiffpln/meiffpln.h
server_rn/cache/meiffpln/meiffpln.cpp
common/include/hxfiles.h
FIX for Subscriber:
After getting the Flags from the SDP Description sent by the publisher we need to
store this Flags value. Now the real problem was to propagate the stored Flags value
to the player from the Subscriber. For propagating this value I am using the
m_fileAccessTime variable as this value does not seems to be used anywhere and anyway
we are overwriting the file access time inside the CMIIFileObject::RemoteStatDone()
with the current system time.
When we call the MEIStatDone() method for sending the stat of the file from the Subscriber,
we are now sending the Flags for disabling the Content Recording as m_fileAccessTime. And
now we are not overwriting the file access time with the system time and instead we are
setting the Flags which we send as m_fileAccessTime.
Then this Flags value eventually propagates to the Player::Session::StatDone() method where
we are storing this Flags value to the Player::Session::m_ulFlags member variable.
After that we will get the actual file header inside of Player::Session::FileHeaderReady()
method and then we will get the Flags from the file header. Then we will OR the Flags got
from the file header with the m_ulFlags got from the meiffpln and then sets the Flags
property of the file header with the m_ulFlags.
Files Affected
==============
server_rn/cache/miiplin/miifile.cpp
server_rn/cache/miiplin/rtspconn.cpp
server_rn/cache/miiplin/rtspconn.h
common/include/hxfiles.h
server/engine/session/player.cpp
server/engine/session/pub/player.h
Testing Performed
=================
Unit Tests:
- Tested that the Content Recording is getting blocked when the ContentMarker is set
at both the publisher and subscriber or when set at the publisher end only.
Integration Tests:
- None
Leak Tests:
- None
Performance Tests:
- None
Build verified: win32-i386-vc7, linux-rhel4-i686, sunos-5.9-sparc-server
Platforms Tested: win32-i386-vc7
QA Hints
========
Please verify that the content recording is getting blocked when the ContentMarker
is set at both the publisher and subscriber or at the publisher end only.
Index: hxfiles.h
===================================================================
RCS file: /cvsroot/common/include/hxfiles.h,v
retrieving revision 1.8.30.3
retrieving revision 1.8.30.4
diff -u -d -r1.8.30.3 -r1.8.30.4
--- hxfiles.h 28 Jun 2007 13:59:47 -0000 1.8.30.3
+++ hxfiles.h 26 Nov 2007 05:43:37 -0000 1.8.30.4
@@ -275,6 +275,15 @@
ULONG32 ulInfo) PURE;
};
+
+/****************************************************************************
+ * Defines:
+ * CONTENT_RECORD_BLOCKING
+ * Purpose:
+ * Flags for Content Record Blocking Feature
+ */
+#define CONTENT_RECORD_BLOCKING (1<<4)
+
/****************************************************************************
*
* Interface: