[Common-cvs] include hxbrdcst.h, 1.2, 1.2.40.1 hxiids.h, 1.36.2.4, 1.36.2.5

[Common-cvs] include hxbrdcst.h, 1.2, 1.2.40.1 hxiids.h, 1.36.2.4, 1.36.2.5

jrmoore at helixcommunity.org jrmoore at helixcommunity.org
Mon Dec 19 14:33:24 PST 2005


Update of /cvsroot/common/include
In directory cvs:/tmp/cvs-serv27252/common/include

Modified Files:
      Tag: SERVER_10_1_STABLE
	hxbrdcst.h hxiids.h 
Log Message:
Synopsis
========
This is a port of PR 145079: SLTA quits when pull split finished
(should listen for new pull split requests).

https://bugbox.dev.prognet.com/show_bug.cgi?id=152715
Branch : SERVER_10_1_STABLE_RN

Reviewers: Eswar

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

SLTA in pull splitting mode waits for a player to connect to the configured
receiver(HUS). Upon a player's request for a content, the server contacts
SLTA to start the transmission. For a temporary receiver (according to code,
a receiver's configuration for PathPrefix="/" puts it in temp receiver
list), SLTA pings the receiver at regular intervals so as to know whether
the receiver is alive.

When the player stops the playback, Server closes the connection to SLTA.
This causes the pings to fail. After a number of ping timeouts, SLTA reports
an error to the IHXErrorMessages object. SLTA also registers itself as a
ErrorSink upon startup. Upon receipt of the error, IHXErrorMessages reports
the error to all its sinks including SLTA, causing the SLTA to quit.

The solution is to check, whether the config has any pull mode settings and
if so ignore any error in ::ErrorOccured of SLTA.

The issue here is slta resides in a dll (iqsltalib.dll) and the config file
reading is in another dll(rembrdcst.dll). New functions are exported in
rembrdcst so that slta can query whether it operated in pull mode.

GUID change for IHXRemoteBroadcastServices caused Producer to fail on load as
Producer was  still querying for old GUID. GUID change also makes it impossible
to use new rembrdcst.dll with old producer.

Fix is to create a new interface IHXRemoteBroadcastServices2 (with new
function ::IsPullconfigured) deriving from IHXRemoteBroadcastServices and
make RemoteBroadcastPlugin implement both interfaces.

Files Affected
==============
common/include/hxbrdcst.h
common/include/hxiids.h

server-restricted/broadcast/transport/bcng/common/brdcstcfg.cpp
server-restricted/broadcast/transport/bcng/common/pub/brdcstcfg.h

server-restricted/broadcast/transport/bcng/send-remote/rembrdcst.cpp
server-restricted/broadcast/transport/bcng/send-remote/pub/rembrdcst.h

server_rn/broadcast/app/iqsltalib/iqslta.cpp
server_rn/broadcast/app/iqsltalib/iqslta.h

Testing Performed
=================
Build Verified: linux-2.2-libc6-i586-server, win32-i386-vc6,
                    sunos-5.8-sparc-server

Platforms Tested: sunos-5.8-sparc-server

QA Hints:
=========
Set up the SLTA and RMSERVE as described in the PR. Start up two real-player clients
playing the pull-stream. Then stop one of the players and wait a couple minutes (timeout
period). The second player should continue to play. Also, the SLTA should keep running
allowing new players to pull the stream. Also test new server with old producer. 


Index: hxbrdcst.h
===================================================================
RCS file: /cvsroot/common/include/hxbrdcst.h,v
retrieving revision 1.2
retrieving revision 1.2.40.1
diff -u -d -r1.2 -r1.2.40.1
--- hxbrdcst.h	18 Dec 2002 18:15:39 -0000	1.2
+++ hxbrdcst.h	19 Dec 2005 22:33:21 -0000	1.2.40.1
@@ -39,11 +39,11 @@
 /*
  * Forward declarations of some interfaces defined here-in.
  */
-typedef _INTERFACE  IHXRemoteBroadcastServices	              IHXRemoteBroadcastServices;
+typedef _INTERFACE  IHXRemoteBroadcastServices               IHXRemoteBroadcastServices;
 typedef _INTERFACE  IHXRemoteBroadcastConfiguration          IHXRemoteBroadcastConfiguration;
 typedef _INTERFACE  IHXRemoteBroadcastConfigurationResponse  IHXRemoteBroadcastConfigurationResponse;
-typedef _INTERFACE  IHXAuthResponse  IHXAuthResponse;
-
+typedef _INTERFACE  IHXAuthResponse                          IHXAuthResponse;
+typedef _INTERFACE  IHXRemoteBroadcastServices2              IHXRemoteBroadcastServices2;
 
 /****************************************************************************
  * 
@@ -144,6 +144,38 @@
     STDMETHOD_(UINT32,GetTime)     (THIS) PURE;
 };
 
+/****************************************************************************
+ * 
+ *  Interface:
+ * 
+ *	IHXRemoteBroadcastServices2
+ * 
+ *  Purpose:
+ *       Derives from IHXRemoteBroadcastServices providing additional 
+ *  functionality to know whether the configuration has any pull setting
+ *   
+ *  IID_IHXRemoteBroadcastServices2:
+ * 
+ *    {A0A86867-EE8A-4888-A65E-62AA33D0E9BB}
+ */
+
+DEFINE_GUID(IID_IHXRemoteBroadcastServices2,0xa0a86867, 0xee8a, 0x4888, 0xa6, 0x5e, 0x62, 0xaa, 0x33, 0xd0, 0xe9, 0xbb);
+
+#undef  INTERFACE
+#define INTERFACE   IHXRemoteBroadcastServices2
+
+DECLARE_INTERFACE_(IHXRemoteBroadcastServices2, IHXRemoteBroadcastServices)
+{ 
+      /************************************************************************
+     *	Method:
+     *	    IHXRemoteBroadcastServices2::IsPullConfigured
+     *	Purpose:
+     *	    Returns true if the configuration consists of pull setting(s)
+     */
+
+    STDMETHOD_(BOOL, IsPullConfigured) (THIS) PURE; //returns true if SLTA is started with pull configuration
+};
+
 // {C88D3530-1455-11d6-93D7-0002B31090EC}
 DEFINE_GUID(IID_IHXAuthResponse, 
 0xc88d3530, 0x1455, 0x11d6, 0x93, 0xd7, 0x0, 0x2, 0xb3, 0x10, 0x90, 0xec);

Index: hxiids.h
===================================================================
RCS file: /cvsroot/common/include/hxiids.h,v
retrieving revision 1.36.2.4
retrieving revision 1.36.2.5
diff -u -d -r1.36.2.4 -r1.36.2.5
--- hxiids.h	3 May 2005 02:56:54 -0000	1.36.2.4
+++ hxiids.h	19 Dec 2005 22:33:21 -0000	1.36.2.5
@@ -779,6 +779,7 @@
 
 #ifndef _HXBRDCST_H_
 DEFINE_GUID_ENUM(IID_IHXRemoteBroadcastServices, 0x8f933081, 0x27b6, 0x11d5, 0x95, 0x69, 0x0, 0x90, 0x27, 0x42, 0xe8, 0x32)
+DEFINE_GUID_ENUM(IID_IHXRemoteBroadcastServices2, 0xa0a86867, 0xee8a, 0x4888, 0xa6, 0x5e, 0x62, 0xaa, 0x33, 0xd0, 0xe9, 0xbb)
 DEFINE_GUID_ENUM(IID_IHXRemoteBroadcastConfiguration, 0x8f933083, 0x27b6, 0x11d5, 0x95, 0x69, 0x0, 0x90, 0x27, 0x42, 0xe8, 0x32)
 DEFINE_GUID_ENUM(IID_IHXRemoteBroadcastConfigurationResponse, 0x67c1ba10, 0x39bc, 0x11d5, 0x95, 0x6a, 0x0, 0x90, 0x27, 0x42, 0xe8, 0x32)
 #endif




More information about the Common-cvs mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.