[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-server-cvs
Subject:    [Server-cvs] engine/context hxclfact.cpp,1.15,1.16
From:       dcollins () helixcommunity ! org
Date:       2010-11-15 16:45:35
Message-ID: 201011151645.oAFGjXV9029304 () mailer ! progressive-comp ! com
[Download RAW message or body]

Update of /cvsroot/server/engine/context
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5841/server/engine/context

Modified Files:
	hxclfact.cpp 
Log Message:
Synopsis
========
Large-File Support updates for the Proxy Cache and CDist

Branches: HEAD
Suggested Reviewers: JJ (pending)


Description
===========

This contains updates related to Large-File Support in 64-bit server builds
for modules related to the Proxy Cache and CDist.  For the most part,
32-bit builds should function the same as before.  At over 13,000 lines
and half-a-megabyte, this diff is extremely huge!

This needs a lot more dev testing, especially with actual large files,
and I haven't actually tried CDist yet, but I was able to stream a
media file, saving it in the cache, and play it back from the cache.
This worked from both an updated server and from a v14 server.

The intention is that this will be both backward-compatable and 32/64-bit
cross compatable.  A 32-bit proxy should cache up to 4GB of a larger file,
then go pass-through.


rncache:
~~~~~~~
Updated to read/write 64-bit integers to and from the cache.  Generally,
most things were changed to 64-bits unless there was a reason why this
would be problematic.  A bunch of 32-bit-specific integer manipulation was
moved into a new CacheInt class to simplify these changes.  IHXValues4 is
used to communicate 64-bit quantities with CDist.  (They're always set
as 64-bit values for simplicity, even on 32-bit builds.) 


miiplin:
~~~~~~~
Countless updates across all classes.  Updated to extract the new
64-bit stat data (described below.)  Large-files are only supported
when retrieved via RTSP.  The legacy binary MEI protocol was not updated
other than for compiler errors/warnings/etc.


meiffpln:
~~~~~~~~
Sets 64-bit stat values in the stat response (sent as an SDP message).
Since the old values were specifically named with "ulName" 32-bit integer
style names, we don't replace them but instead add new ones.  This time,
the names chosen are more like "Size64", "ModificationTime64", etc.
The new values will be ignored by a 32-bit proxy or CDist subscriber,
which will continue to use the 32-bit values.


cdist:
~~~~~
Primarily updated to extract the 64-bit stat values passed to it from rncache.


siiplin:
~~~~~~~
Updated to build correctly with the new HX_OFF_T Seek() API, but does
not support 64-bit file sizes.


server/protocol/sdp:
~~~~~~~~~~~~~~~~~~~
Updated to enable extracting 64-bit integer quantities from an SDP message.
THe IHXSDPAttrib interface was deprecated, replacing with IHXSDPAttrib2.


common/include:
~~~~~~~~~~~~~~
Added the IHXSDPAttrib2 interface.  Added a missing CLSID_IHXValues4
#define.  Updated the IHXCacheFile, IHXCacheFileSetVersion, and
IHXFastFileStats interfaces for 64-bits (using HX_OFF_T, which remains
32-bits on 32-bit builds).


server/engine/dataflow/fastfile.cpp:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RSS-related updates, and more 64-bit updates.


filesystem/local/full/smplfsys.cpp:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fixed a crash caused by an uninitialized character array pointer that was 
found during dev testing.


server/engine/context/hxclfact.cpp:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Updated to allow creation of IHXValues4 objects.


Files Affected
==============

server-restricted/cache/rncache/cacheint.h [new]
common/include/hxcache.h
common/include/hxfiles.h
common/include/hxpiids.h
common/include/ihxpckts.h
common/runtime/pub/hlxclib/stdlib.h
filesystem/local/full/smplfsys.cpp
server/engine/context/hxclfact.cpp
server/engine/core/_main.cpp
server/engine/dataflow/fastfile.cpp
server/engine/dataflow/pub/fastfile_factory.h
server/engine/dataflow/pub/fastfile.h
server/include/hxsdp.h
server/protocol/sdp/hxsdpp.cpp
server/protocol/sdp/hxsdpp.h
server/protocol/sdp/sdpstats.cpp
server-restricted/broadcast/transport/bcng/recv/strmsess.cpp
server-restricted/cache/meiffpln/meiffpln.cpp
server-restricted/cache/meiffpln/meiffpln.h
server-restricted/cache/meiplin/meikey.cpp
server-restricted/cache/meiplin/meikey.h
server-restricted/cache/miiplin/filesupp.cpp
server-restricted/cache/miiplin/filesupp.h
server-restricted/cache/miiplin/iids.cpp
server-restricted/cache/miiplin/meiconn.cpp
server-restricted/cache/miiplin/meiconn.h
server-restricted/cache/miiplin/meiresp.h
server-restricted/cache/miiplin/miientire.cpp
server-restricted/cache/miiplin/miientire.h
server-restricted/cache/miiplin/miifetch.cpp
server-restricted/cache/miiplin/miifetch.h
server-restricted/cache/miiplin/miifile.cpp
server-restricted/cache/miiplin/miifile.h
server-restricted/cache/miiplin/miifilep.cpp
server-restricted/cache/miiplin/miifilep.h
server-restricted/cache/miiplin/miilog.cpp
server-restricted/cache/miiplin/miilog.h
server-restricted/cache/miiplin/miiplin.cpp
server-restricted/cache/miiplin/miiplin.h
server-restricted/cache/miiplin/miipref.cpp
server-restricted/cache/miiplin/miipref.h
server-restricted/cache/miiplin/miistats.h
server-restricted/cache/miiplin/remoteconn.h
server-restricted/cache/miiplin/rmtcback.cpp
server-restricted/cache/miiplin/rmtcback.h
server-restricted/cache/miiplin/rmtfile.cpp
server-restricted/cache/miiplin/rmtfile.h
server-restricted/cache/miiplin/rtspconn.cpp
server-restricted/cache/miiplin/rtspconn.h
server-restricted/cache/miiplin/Umakefil
server-restricted/cache/rncache/cmegc.cpp
server-restricted/cache/rncache/cmegc.h
server-restricted/cache/rncache/datmgr.cpp
server-restricted/cache/rncache/datmgr.h
server-restricted/cache/rncache/fivemlist.cpp
server-restricted/cache/rncache/fivemlist.h
server-restricted/cache/rncache/fsmresp.cpp
server-restricted/cache/rncache/fsmresp.h
server-restricted/cache/rncache/fsresp.cpp
server-restricted/cache/rncache/fsresp.h
server-restricted/cache/rncache/rncache.cpp
server-restricted/cache/rncache/rncache.h
server-restricted/cache/rncache/rncadvise.cpp
server-restricted/cache/rncache/rncadvise.h
server-restricted/cache/rncache/rncf.cpp
server-restricted/cache/rncache/rncf.h
server-restricted/cache/rncache/Umakefil
server-restricted/cache/rncache/win32.pcf
server-restricted/cdist/cdadplin/cdadplin.cpp
server-restricted/cdist/cdadplin/cdadplin.h
server-restricted/cdist/cdadplin/cdadrule.cpp
server-restricted/cdist/cdadplin/cdadrule.h
server-restricted/cdist/cdistpln/cdistpln.cpp
server-restricted/cdist/cdistpln/cdistpln.h
server-restricted/proxy/proxylib/prxctxt.cpp
server-restricted/proxy/proxylib/prxroute.cpp
server-restricted/proxy/proxylib/prxymisc.cpp
server-restricted/proxy/proxylib/pub/prxroute.h
server-restricted/proxy/proxylib/pub/prxymisc.h
server_rn/cache/siiplin/mmsfob.cpp
server_rn/cache/siiplin/siiplin.cpp


Testing Performed
=================

Unit Tests:
- N/A

Integration Tests:
- Tested basic cold-cache and hot-cache playback with realvideo10.rm when playing
  from a v14 server.
- Same from a modified HEAD server.
- Streaming a large rm file via the proxy was causing an assert, which
  will be debugged post-checkin.  The same file streams ok directly from
  the origin.
- A ton more dev testing post-checkin when it's easier to build all the 
  platform/product variations.

Leak Tests:
- N/A

Performance Tests:
- N/A

Platforms Tested: linux-rhel5-x86_64
Builds Verified: linux-rhel5-x86_64


QA Hints
========
- N/A


Index: hxclfact.cpp
===================================================================
RCS file: /cvsroot/server/engine/context/hxclfact.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- hxclfact.cpp	7 Apr 2009 19:26:46 -0000	1.15
+++ hxclfact.cpp	15 Nov 2010 16:45:33 -0000	1.16
@@ -176,6 +176,12 @@
         ((IUnknown*)*ppUnknown)->AddRef();
         return HXR_OK;
     }
+    else if (IsEqualCLSID(rclsid, CLSID_IHXValues4))
+    {
+        *ppUnknown = (IUnknown*)(IHXValues4*)(new CHXHeader());
+        ((IUnknown*)*ppUnknown)->AddRef();
+        return HXR_OK;
+    }
     else if (IsEqualCLSID(rclsid, CLSID_IHXFileSystemManager))
     {
         *ppUnknown = (IUnknown*)(IHXFileSystemManager*)(new FSManager(m_proc));


_______________________________________________
Server-cvs mailing list
Server-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/server-cvs
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic