added PlaylistExecutor, with a minimal implementation using Helix libraries
This commit is contained in:
parent
cc16ebe3e5
commit
45edb6399e
|
@ -0,0 +1,87 @@
|
|||
#!/bin/sh
|
||||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2004 Media Development Loan Fund
|
||||
#
|
||||
# This file is part of the LiveSupport project.
|
||||
# http://livesupport.campware.org/
|
||||
# To report bugs, send an e-mail to bugs@campware.org
|
||||
#
|
||||
# LiveSupport is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LiveSupport is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LiveSupport; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#
|
||||
# Author : $Author: maroy $
|
||||
# Version : $Revision: 1.1 $
|
||||
# Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/bin/autogen.sh,v $
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Run this to set up the build system: configure, makefiles, etc.
|
||||
# (based on the version in enlightenment's cvs)
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
package="PlaylistExecutor"
|
||||
|
||||
# assume we're in $basedir/bin
|
||||
basedir=`dirname $0`/..
|
||||
test -z "$basedir" && basedir=.
|
||||
|
||||
tmpdir=$basedir/tmp
|
||||
|
||||
cd "$tmpdir"
|
||||
DIE=0
|
||||
|
||||
# look at all other directories as seen from ${basedir}/tmp
|
||||
tmpdir=.
|
||||
bindir=../bin
|
||||
etcdir=../etc
|
||||
|
||||
(autoheader --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "You must have autoconf installed to compile $package."
|
||||
echo "Download the appropriate package for your distribution,"
|
||||
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
|
||||
DIE=1
|
||||
}
|
||||
|
||||
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "You must have autoconf installed to compile $package."
|
||||
echo "Download the appropriate package for your distribution,"
|
||||
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
|
||||
DIE=1
|
||||
}
|
||||
|
||||
if test "$DIE" -eq 1; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$*"; then
|
||||
echo "I am going to run ./configure with no arguments - if you wish "
|
||||
echo "to pass any to it, please specify them on the $0 command line."
|
||||
fi
|
||||
|
||||
echo "Generating configuration files for $package, please wait...."
|
||||
|
||||
configure_ac=${etcdir}/configure.ac
|
||||
configure=${tmpdir}/configure
|
||||
|
||||
#echo " aclocal $ACLOCAL_FLAGS"
|
||||
#aclocal $ACLOCAL_FLAGS
|
||||
echo " autoheader ${configure_ac}"
|
||||
autoheader ${configure_ac}
|
||||
echo " autoconf -o ${configure} ${configure_ac}"
|
||||
autoconf -o ${configure} ${configure_ac}
|
||||
|
||||
${configure} "$@" && echo
|
|
@ -0,0 +1,80 @@
|
|||
#!/bin/sh
|
||||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2004 Media Development Loan Fund
|
||||
#
|
||||
# This file is part of the LiveSupport project.
|
||||
# http://livesupport.campware.org/
|
||||
# To report bugs, send an e-mail to bugs@campware.org
|
||||
#
|
||||
# LiveSupport is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LiveSupport is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LiveSupport; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#
|
||||
# Author : $Author: maroy $
|
||||
# Version : $Revision: 1.1 $
|
||||
# Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/bin/gen_coverage_data.sh,v $
|
||||
#-------------------------------------------------------------------------------
|
||||
#-------------------------------------------------------------------------------
|
||||
# This script generates code coverage data for the module
|
||||
#-------------------------------------------------------------------------------
|
||||
module="LiveSupport PlaylistExecutor"
|
||||
|
||||
reldir=`dirname $0`/..
|
||||
basedir=`cd $reldir; pwd; cd -`
|
||||
bindir=$basedir/bin
|
||||
docdir=$basedir/doc
|
||||
tmpdir=$basedir/tmp
|
||||
|
||||
usrdir=`cd $basedir/../../usr; pwd; cd -`
|
||||
|
||||
coverage_report_dir=$docdir/coverage
|
||||
|
||||
raw_coverage_file=$tmpdir/raw_coverage.info
|
||||
coverage_file=$tmpdir/coverage.info
|
||||
|
||||
lcov=$usrdir/bin/lcov
|
||||
genhtml=$usrdir/bin/genhtml
|
||||
|
||||
|
||||
cd $basedir
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Re-configure with covarege collection enabled, compile and run the tests
|
||||
#-------------------------------------------------------------------------------
|
||||
$bindir/autogen.sh --enable-coverage
|
||||
make clean
|
||||
make check
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Generate some symlinks so that the sources are visible from tmpdir
|
||||
#-------------------------------------------------------------------------------
|
||||
ln -s $basedir/include $tmpdir/include
|
||||
ln -s $basedir/src $tmpdir/src
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Use lcov to generate an HTML report on the coverage data
|
||||
#-------------------------------------------------------------------------------
|
||||
$lcov -d $tmpdir -c > $raw_coverage_file
|
||||
$lcov -e $raw_coverage_file "$tmpdir/*" > $coverage_file
|
||||
rm -rf $coverage_report_dir
|
||||
mkdir -p $coverage_report_dir
|
||||
$genhtml -t "$module" -o $coverage_report_dir $coverage_file
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Clean up
|
||||
#-------------------------------------------------------------------------------
|
||||
rm -f $tmpdir/include
|
||||
rm -f $tmpdir/src
|
|
@ -0,0 +1 @@
|
|||
keep me
|
|
@ -0,0 +1,178 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2004 Media Development Loan Fund
|
||||
#
|
||||
# This file is part of the LiveSupport project.
|
||||
# http://livesupport.campware.org/
|
||||
# To report bugs, send an e-mail to bugs@campware.org
|
||||
#
|
||||
# LiveSupport is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LiveSupport is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LiveSupport; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#
|
||||
# Author : $Author: maroy $
|
||||
# Version : $Revision: 1.1 $
|
||||
# Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/etc/Makefile.in,v $
|
||||
#
|
||||
# @configure_input@
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# General command definitions
|
||||
#-------------------------------------------------------------------------------
|
||||
MKDIR = mkdir -p
|
||||
RM = rm -f
|
||||
RMDIR = rm -rf
|
||||
DOXYGEN = doxygen
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Basic directory and file definitions
|
||||
#-------------------------------------------------------------------------------
|
||||
BASE_DIR = @builddir@
|
||||
DOC_DIR = ${BASE_DIR}/doc
|
||||
DOXYGEN_DIR = ${DOC_DIR}/doxygen
|
||||
COVERAGE_DIR = ${DOC_DIR}/coverage
|
||||
ETC_DIR = ${BASE_DIR}/etc
|
||||
INCLUDE_DIR = ${BASE_DIR}/include
|
||||
LIB_DIR = ${BASE_DIR}/lib
|
||||
SRC_DIR = ${BASE_DIR}/src
|
||||
TMP_DIR = ${BASE_DIR}/tmp
|
||||
|
||||
USR_DIR = ${BASE_DIR}/../../usr
|
||||
USR_INCLUDE_DIR = ${USR_DIR}/include
|
||||
USR_LIB_DIR = ${USR_DIR}/lib
|
||||
BOOST_INCLUDE_DIR = ${USR_INCLUDE_DIR}/boost-1_31
|
||||
LIBXMLPP_INCLUDE_DIR = ${USR_INCLUDE_DIR}/libxml++-1.0
|
||||
|
||||
HELIX_INCLUDE_DIR = ${USR_INCLUDE_DIR}/helix
|
||||
HELIX_LIB_DIR = ${USR_LIB_DIR}/helix
|
||||
HELIX_LIBS = ${HELIX_LIB_DIR}/runtlib.a \
|
||||
${HELIX_LIB_DIR}/syslib.a \
|
||||
${HELIX_LIB_DIR}/contlib.a \
|
||||
${HELIX_LIB_DIR}/debuglib.a \
|
||||
${HELIX_LIB_DIR}/utillib.a
|
||||
HELIX_CFLAGS = -march=i686 -D_UNIX
|
||||
|
||||
|
||||
MODULES_DIR = ${BASE_DIR}/..
|
||||
|
||||
CORE_DIR = ${MODULES_DIR}/core
|
||||
CORE_INCLUDE_DIR = ${CORE_DIR}/include
|
||||
CORE_LIB_DIR = ${CORE_DIR}/lib
|
||||
CORE_LIB = livesupport_core
|
||||
CORE_LIB_FILE = ${CORE_LIB_DIR}/lib${CORE_LIB}.a
|
||||
|
||||
VPATH = ${SRC_DIR}
|
||||
|
||||
TEST_RESULTS = ${DOC_DIR}/testResults.xml
|
||||
# the text result XSLT has to be relative to the test result file, e.g. TMP_DIR
|
||||
TEST_XSLT = ../etc/testResultToHtml.xsl
|
||||
|
||||
PLAYLIST_EXECUTOR_LIB = livesupport_playlist_executor
|
||||
PLAYLIST_EXECUTOR_LIB_FILE = ${LIB_DIR}/lib${PLAYLIST_EXECUTOR_LIB}.a
|
||||
TEST_RUNNER = ${TMP_DIR}/testRunner
|
||||
|
||||
DOXYGEN_CONFIG = ${ETC_DIR}/doxygen.config
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Configuration parameters
|
||||
#-------------------------------------------------------------------------------
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXXFLAGS = @CXXFLAGS@ @DEFS@ @COVERAGE_CXXFLAGS@ \
|
||||
-Wall -Wno-long-long \
|
||||
${HELIX_CFLAGS} \
|
||||
-I${USR_INCLUDE_DIR} \
|
||||
-I${BOOST_INCLUDE_DIR} \
|
||||
-I${LIBXMLPP_INCLUDE_DIR} \
|
||||
-I${HELIX_INCLUDE_DIR} \
|
||||
-I${CORE_INCLUDE_DIR} \
|
||||
-I${INCLUDE_DIR} -I${TMP_DIR}
|
||||
LDFLAGS = @LDFLAGS@ -L${USR_LIB_DIR} -L${CORE_LIB_DIR} -L${HELIX_LIB_DIR} \
|
||||
-L${LIB_DIR}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Dependencies
|
||||
#-------------------------------------------------------------------------------
|
||||
PLAYLIST_EXECUTOR_LIB_OBJS = ${TMP_DIR}/HelixPlayer.o \
|
||||
${TMP_DIR}/AdviseSink.o \
|
||||
${TMP_DIR}/AuthenticationManager.o \
|
||||
${TMP_DIR}/ClientContext.o \
|
||||
${TMP_DIR}/ErrorSink.o \
|
||||
${TMP_DIR}/HelixIIDs.o
|
||||
TEST_RUNNER_OBJS = ${TMP_DIR}/HelixPlayerTest.o \
|
||||
${TMP_DIR}/TestRunner.o
|
||||
TEST_RUNNER_LIBS = -l${PLAYLIST_EXECUTOR_LIB} -l${CORE_LIB} \
|
||||
${HELIX_LIBS} \
|
||||
-lxml++-1.0 -lcppunit -ldl -lm -lpthread
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Targets
|
||||
#-------------------------------------------------------------------------------
|
||||
.PHONY: all dir_setup doc clean docclean depclean distclean
|
||||
|
||||
all: dir_setup ${PLAYLIST_EXECUTOR_LIB_FILE}
|
||||
|
||||
dir_setup: ${TMP_DIR} ${DOXYGEN_DIR}
|
||||
|
||||
doc:
|
||||
${DOXYGEN} ${DOXYGEN_CONFIG}
|
||||
|
||||
clean:
|
||||
${RM} ${PLAYLIST_EXECUTOR_LIB_OBJS} ${PLAYLIST_EXECUTOR_LIB_FILE}
|
||||
${RM} ${TEST_RUNNER_OBJS} ${TEST_RUNNER}
|
||||
${RM} ${TMP_DIR}/*.bb ${TMP_DIR}/*.bbg ${TMP_DIR}/*.da ${TMP_DIR}/*.info
|
||||
|
||||
docclean:
|
||||
${RMDIR} ${DOXYGEN_DIR}/html
|
||||
${RMDIR} ${COVERAGE_DIR}/*
|
||||
${RM} ${TEST_RESULTS}
|
||||
|
||||
depclean: clean
|
||||
|
||||
distclean: clean docclean
|
||||
${RMDIR} ${TMP_DIR}/config* ${TMP_DIR}/autom4te*
|
||||
|
||||
check: all ${TEST_RUNNER}
|
||||
LD_LIBRARY_PATH=${USR_LIB_DIR} ${TEST_RUNNER} \
|
||||
-o ${TEST_RESULTS} -s ${TEST_XSLT}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Specific targets
|
||||
#-------------------------------------------------------------------------------
|
||||
${PLAYLIST_EXECUTOR_LIB_FILE}: ${PLAYLIST_EXECUTOR_LIB_OBJS}
|
||||
${AR} crus $@ $^
|
||||
|
||||
${TMP_DIR}:
|
||||
${MKDIR} ${TMP_DIR}
|
||||
|
||||
${DOXYGEN_DIR}:
|
||||
${MKDIR} ${DOXYGEN_DIR}
|
||||
|
||||
${TEST_RUNNER}: ${CORE_LIB_FILE} ${TEST_RUNNER_OBJS} ${PLAYLIST_EXECUTOR_LIB_FILE}
|
||||
${CXX} ${LDFLAGS} -o $@ ${TEST_RUNNER_OBJS} ${TEST_RUNNER_LIBS}
|
||||
|
||||
${CORE_LIB_FILE}:
|
||||
${MAKE} -C ${CORE_DIR}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Pattern rules
|
||||
#-------------------------------------------------------------------------------
|
||||
${TMP_DIR}/%.o : ${SRC_DIR}/%.cxx
|
||||
${CXX} ${CPPFLAGS} ${CXXFLAGS} -c -o $@ $<
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
dnl-----------------------------------------------------------------------------
|
||||
dnl Copyright (c) 2004 Media Development Loan Fund
|
||||
dnl
|
||||
dnl This file is part of the LiveSupport project.
|
||||
dnl http://livesupport.campware.org/
|
||||
dnl To report bugs, send an e-mail to bugs@campware.org
|
||||
dnl
|
||||
dnl LiveSupport is free software; you can redistribute it and/or modify
|
||||
dnl it under the terms of the GNU General Public License as published by
|
||||
dnl the Free Software Foundation; either version 2 of the License, or
|
||||
dnl (at your option) any later version.
|
||||
dnl
|
||||
dnl LiveSupport is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
dnl GNU General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU General Public License
|
||||
dnl along with LiveSupport; if not, write to the Free Software
|
||||
dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
dnl
|
||||
dnl
|
||||
dnl Author : $Author: maroy $
|
||||
dnl Version : $Revision: 1.1 $
|
||||
dnl Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/etc/configure.ac,v $
|
||||
dnl-----------------------------------------------------------------------------
|
||||
|
||||
dnl-----------------------------------------------------------------------------
|
||||
dnl NOTE: Run all configure related scripts from the tmp directory of the
|
||||
dnl project.
|
||||
dnl This is due to the fact that configure spreads a lot of trash around,
|
||||
dnl like atom4te cache directories, config.* files, etc. into the directory
|
||||
dnl it is being run from. We clearly don't want these in our base directory.
|
||||
dnl-----------------------------------------------------------------------------
|
||||
AC_INIT(PlaylistExecutor, 1.0, bugs@campware.org)
|
||||
AC_PREREQ(2.59)
|
||||
AC_COPYRIGHT([Copyright (c) 2004 Media Development Loan Fund under the GNU GPL])
|
||||
AC_REVISION($Revision: 1.1 $)
|
||||
|
||||
AC_CONFIG_SRCDIR(../src/HelixPlayer.cxx)
|
||||
|
||||
AC_CONFIG_HEADERS(configure.h)
|
||||
AC_PROG_CXX()
|
||||
|
||||
AC_CHECK_HEADERS(getopt.h)
|
||||
|
||||
dnl-----------------------------------------------------------------------------
|
||||
dnl enable compilaton for code coverage data
|
||||
dnl-----------------------------------------------------------------------------
|
||||
AC_SUBST(COVERAGE_CXXFLAGS)
|
||||
|
||||
AC_ARG_ENABLE( coverage,
|
||||
[ --enable-coverage enable code coverage data generaton (no) ],
|
||||
ENABLE_COVERAGE=${enableval}, ENABLE_COVERAGE="no" )
|
||||
|
||||
if test "x${ENABLE_COVERAGE}" == "xyes" ; then
|
||||
COVERAGE_CXXFLAGS="-fprofile-arcs -ftest-coverage"
|
||||
AC_MSG_RESULT([compiling in code coverage mode])
|
||||
else
|
||||
AC_MSG_RESULT([not compiling in code coverage mode])
|
||||
fi
|
||||
|
||||
|
||||
AC_CONFIG_FILES(../Makefile:../etc/Makefile.in)
|
||||
|
||||
AC_OUTPUT()
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE helixPlayer [
|
||||
|
||||
<!ELEMENT helixPlayer EMPTY >
|
||||
<!ATTLIST helixPlayer dllPath CDATA #REQUIRED >
|
||||
]>
|
||||
<helixPlayer dllPath = "../../usr/lib/helix"
|
||||
/>
|
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0"?>
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>LiveSupport unit test results</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Preface</h1>
|
||||
This document is part of the
|
||||
<a href="http://livesupport.campware.org/">LiveSupport</a>
|
||||
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
|
||||
Development Loan Fund</a>, under the GNU
|
||||
<a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.
|
||||
<br/>
|
||||
This is an automatically generated document.
|
||||
<h1>Scope</h1>
|
||||
This document contains the generated unit test results for the
|
||||
<a href="http://livesupport.campware.org/">LiveSupport</a> project.
|
||||
<h1>Summary</h1>
|
||||
<xsl:for-each select="//Statistics">
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Total number of tests:</b></td>
|
||||
<td><xsl:value-of select="Tests"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Tests passed:</b></td>
|
||||
<td><xsl:value-of select="count(/*/SuccessfulTests/Test)"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Tests failed:</b></td>
|
||||
<td><xsl:value-of select="Failures"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Test errors:</b></td>
|
||||
<td><xsl:value-of select="Errors"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:for-each>
|
||||
<h1>Tests</h1>
|
||||
<table>
|
||||
<tr>
|
||||
<th>test name</th>
|
||||
<th>test status</th>
|
||||
</tr>
|
||||
<xsl:for-each select="//Test | //FailedTest">
|
||||
<xsl:sort select="Name"/>
|
||||
<tr>
|
||||
<td><xsl:value-of select="Name"/></td>
|
||||
<xsl:if test="ancestor::FailedTests"><td bgcolor="red">failed</td></xsl:if>
|
||||
<xsl:if test="ancestor::SuccessfulTests"><td bgcolor="lightblue">passed</td></xsl:if>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
|
@ -0,0 +1 @@
|
|||
keep me
|
|
@ -0,0 +1,309 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/AdviseSink.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include "HelixDefs.h"
|
||||
|
||||
#include <hxcom.h>
|
||||
|
||||
#include "AdviseSink.h"
|
||||
|
||||
using namespace LiveSupport::PlaylistExecutor;
|
||||
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Construct the advise sink
|
||||
*----------------------------------------------------------------------------*/
|
||||
AdviseSink::AdviseSink(IUnknown * pUnknown) throw ()
|
||||
: lRefCount(0)
|
||||
, pUnknown(NULL)
|
||||
, pRegistry(NULL)
|
||||
, pScheduler(NULL)
|
||||
{
|
||||
if (pUnknown) {
|
||||
this->pUnknown = pUnknown;
|
||||
this->pUnknown->AddRef();
|
||||
|
||||
if (HXR_OK != this->pUnknown->QueryInterface(IID_IHXRegistry,
|
||||
(void**)&pRegistry)) {
|
||||
pRegistry = NULL;
|
||||
}
|
||||
|
||||
if (HXR_OK != this->pUnknown->QueryInterface(IID_IHXScheduler,
|
||||
(void**)&pScheduler)) {
|
||||
pScheduler = NULL;
|
||||
}
|
||||
|
||||
IHXPlayer* pPlayer;
|
||||
if (HXR_OK == this->pUnknown->QueryInterface(IID_IHXPlayer,
|
||||
(void**)&pPlayer)) {
|
||||
pPlayer->AddAdviseSink(this);
|
||||
pPlayer->Release();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Destruct the advise sink
|
||||
*----------------------------------------------------------------------------*/
|
||||
AdviseSink::~AdviseSink(void) throw ()
|
||||
{
|
||||
if (pScheduler) {
|
||||
pScheduler->Release();
|
||||
pScheduler = NULL;
|
||||
}
|
||||
|
||||
if (pRegistry) {
|
||||
pRegistry->Release();
|
||||
pRegistry = NULL;
|
||||
}
|
||||
|
||||
if (pUnknown) {
|
||||
pUnknown->Release();
|
||||
pUnknown = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// IUnknown methods
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Implement this to export the interfaces supported by your
|
||||
* object.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::QueryInterface(REFIID riid,
|
||||
void ** ppvObj) throw ()
|
||||
{
|
||||
if (IsEqualIID(riid, IID_IUnknown)) {
|
||||
AddRef();
|
||||
*ppvObj = (IUnknown*)(IHXClientAdviseSink*)this;
|
||||
return HXR_OK;
|
||||
} else if (IsEqualIID(riid, IID_IHXClientAdviseSink)) {
|
||||
AddRef();
|
||||
*ppvObj = (IHXClientAdviseSink*)this;
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
*ppvObj = NULL;
|
||||
return HXR_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Increase the refence count.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP_(ULONG32)
|
||||
AdviseSink::AddRef() throw ()
|
||||
{
|
||||
return InterlockedIncrement(&lRefCount);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Decreaese the refence count.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP_(ULONG32)
|
||||
AdviseSink::Release() throw ()
|
||||
{
|
||||
if (InterlockedDecrement(&lRefCount) > 0) {
|
||||
return lRefCount;
|
||||
}
|
||||
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// IHXClientAdviseSink methods
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called to advise the client that the position or length of the
|
||||
* current playback context has changed.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnPosLength(UINT32 ulPosition,
|
||||
UINT32 ulLength) throw ()
|
||||
{
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called to advise the client a presentation has been opened.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnPresentationOpened() throw ()
|
||||
{
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called to advise the client a presentation has been closed.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnPresentationClosed() throw ()
|
||||
{
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called to advise the client that the presentation statistics
|
||||
* have changed.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnStatisticsChanged(void) throw ()
|
||||
{
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called by client engine to inform the client that a seek is
|
||||
* about to occur. The render is informed the last time for the
|
||||
* stream's time line before the seek, as well as the first new
|
||||
* time for the stream's time line after the seek will be completed.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnPreSeek(ULONG32 ulOldTime,
|
||||
ULONG32 ulNewTime) throw ()
|
||||
{
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called by client engine to inform the client that a seek has
|
||||
* just occured. The render is informed the last time for the
|
||||
* stream's time line before the seek, as well as the first new
|
||||
* time for the stream's time line after the seek.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnPostSeek(ULONG32 ulOldTime,
|
||||
ULONG32 ulNewTime) throw ()
|
||||
{
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called by client engine to inform the client that a stop has
|
||||
* just occured.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnStop(void) throw ()
|
||||
{
|
||||
HXTimeval now;
|
||||
|
||||
// Find out the current time and subtract the beginning time to
|
||||
// figure out how many seconds we played
|
||||
now = pScheduler->GetCurrentSchedulerTime();
|
||||
ulStopTime = now.tv_sec;
|
||||
|
||||
// TODO: maybe save the number of seconds played?
|
||||
// GetGlobal()->g_ulNumSecondsPlayed = ulStopTime - ulStartTime;
|
||||
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called by client engine to inform the client that a pause has
|
||||
* just occured. The render is informed the last time for the
|
||||
* stream's time line before the pause.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnPause(ULONG32 ulTime) throw ()
|
||||
{
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called by client engine to inform the client that a begin or
|
||||
* resume has just occured. The render is informed the first time
|
||||
* for the stream's time line after the resume.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnBegin(ULONG32 ulTime) throw ()
|
||||
{
|
||||
HXTimeval now;
|
||||
|
||||
// Record the current time, so we can figure out many seconds we played
|
||||
now = pScheduler->GetCurrentSchedulerTime();
|
||||
ulStartTime = now.tv_sec;
|
||||
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called by client engine to inform the client that buffering
|
||||
* of data is occuring. The render is informed of the reason for
|
||||
* the buffering (start-up of stream, seek has occured, network
|
||||
* congestion, etc.), as well as percentage complete of the
|
||||
* buffering process.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnBuffering(ULONG32 ulFlags,
|
||||
UINT16 unPercentComplete) throw ()
|
||||
{
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Called by client engine to inform the client is contacting
|
||||
* hosts(s).
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AdviseSink::OnContacting(const char* pHostName) throw ()
|
||||
{
|
||||
return HXR_OK;
|
||||
}
|
||||
|
|
@ -0,0 +1,273 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/AdviseSink.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef AdviseSink_h
|
||||
#define AdviseSink_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include <hxtypes.h>
|
||||
#include <hxcore.h>
|
||||
#include <hxmon.h>
|
||||
#include <hxengin.h>
|
||||
#include <hxclsnk.h>
|
||||
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace PlaylistExecutor {
|
||||
|
||||
using namespace LiveSupport;
|
||||
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
/**
|
||||
* A Helix client advise sink, receiving notifications on the status
|
||||
* of the client playing.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
*/
|
||||
class AdviseSink : public IHXClientAdviseSink
|
||||
{
|
||||
private:
|
||||
/**
|
||||
* The reference count for this object.
|
||||
*/
|
||||
LONG32 lRefCount;
|
||||
|
||||
/**
|
||||
* The pointer to the object this is an advise sink for.
|
||||
*/
|
||||
IUnknown * pUnknown;
|
||||
|
||||
/**
|
||||
* Pointer to the registry of pUnkown.
|
||||
*/
|
||||
IHXRegistry * pRegistry;
|
||||
|
||||
/**
|
||||
* Pointer to the scheduler of pUnkown.
|
||||
*/
|
||||
IHXScheduler * pScheduler;
|
||||
|
||||
/**
|
||||
* The time playing is started.
|
||||
*/
|
||||
UINT32 ulStartTime;
|
||||
|
||||
/**
|
||||
* The time playing os stopped.
|
||||
*/
|
||||
UINT32 ulStopTime;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
AdviseSink(IUnknown * pUnknown) throw ();
|
||||
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual
|
||||
~AdviseSink(void) throw ();
|
||||
|
||||
// IUnknown methods
|
||||
|
||||
/**
|
||||
* Query the object to determine if it supports a specific interface.
|
||||
*
|
||||
* @param riid the reference identifier for the interface queried.
|
||||
* @param ppvObj points to an interface pointer, that is filled
|
||||
* if the requested interface is implemented.
|
||||
*/
|
||||
STDMETHOD(QueryInterface) (THIS_
|
||||
REFIID riid,
|
||||
void** ppvObj) throw ();
|
||||
|
||||
/**
|
||||
* Increase the objects reference count by one.
|
||||
*
|
||||
* @return the new reference count.
|
||||
*/
|
||||
STDMETHOD_(ULONG32,AddRef) (THIS) throw ();
|
||||
|
||||
/**
|
||||
* Decreases the objects reference count by one. If the count
|
||||
* reaches 0, the object is destroyed.
|
||||
*
|
||||
* @return the new value of the reference count.
|
||||
*/
|
||||
STDMETHOD_(ULONG32,Release) (THIS) throw ();
|
||||
|
||||
// IHXClientAdviseSink methods
|
||||
|
||||
/**
|
||||
* Called to advise the client that the position or length of the
|
||||
* current playback context has changed.
|
||||
*
|
||||
* @param ulPosition the new position of the playback.
|
||||
* @param ulLength the new length of the playback.
|
||||
*/
|
||||
STDMETHOD(OnPosLength) (THIS_
|
||||
UINT32 ulPosition,
|
||||
UINT32 ulLength) throw ();
|
||||
|
||||
/**
|
||||
* Called to advise the client a presentation has been opened.
|
||||
*/
|
||||
STDMETHOD(OnPresentationOpened) (THIS) throw ();
|
||||
|
||||
/**
|
||||
* Called to advise the client a presentation has been closed.
|
||||
*/
|
||||
STDMETHOD(OnPresentationClosed) (THIS) throw ();
|
||||
|
||||
/**
|
||||
* Called to advise the client that the presentation statistics
|
||||
* have changed.
|
||||
*/
|
||||
STDMETHOD(OnStatisticsChanged) (THIS) throw ();
|
||||
|
||||
/**
|
||||
* Called by client engine to inform the client that a seek is
|
||||
* about to occur. The render is informed the last time for the
|
||||
* stream's time line before the seek, as well as the first new
|
||||
* time for the stream's time line after the seek will be completed.
|
||||
*
|
||||
* @param ulOldTime the end of the stream's time line before the
|
||||
* current seek.
|
||||
* @param ulNewTime the beginning of the stream's time line after the
|
||||
* current seek.
|
||||
*/
|
||||
STDMETHOD (OnPreSeek) (THIS_
|
||||
ULONG32 ulOldTime,
|
||||
ULONG32 ulNewTime) throw ();
|
||||
|
||||
/**
|
||||
* Called by client engine to inform the client that a seek has
|
||||
* just occured. The render is informed the last time for the
|
||||
* stream's time line before the seek, as well as the first new
|
||||
* time for the stream's time line after the seek.
|
||||
*
|
||||
* @param ulOldTime the end of the stream's time line before the
|
||||
* current seek.
|
||||
* @param ulNewTime the beginning of the stream's time line after the
|
||||
* current seek.
|
||||
*/
|
||||
STDMETHOD (OnPostSeek) (THIS_
|
||||
ULONG32 ulOldTime,
|
||||
ULONG32 ulNewTime) throw ();
|
||||
|
||||
/**
|
||||
* Called by client engine to inform the client that a stop has
|
||||
* just occured.
|
||||
*/
|
||||
STDMETHOD (OnStop) (THIS) throw ();
|
||||
|
||||
/**
|
||||
* Called by client engine to inform the client that a pause has
|
||||
* just occured. The render is informed the last time for the
|
||||
* stream's time line before the pause.
|
||||
*
|
||||
* @param ulTime the time in the streams time line before being
|
||||
* paused.
|
||||
*/
|
||||
STDMETHOD (OnPause) (THIS_
|
||||
ULONG32 ulTime) throw ();
|
||||
|
||||
/**
|
||||
* Called by client engine to inform the client that a begin or
|
||||
* resume has just occured. The render is informed the first time
|
||||
* for the stream's time line after the resume.
|
||||
*
|
||||
* The time in the streams time line from which to begin or resume.
|
||||
*/
|
||||
STDMETHOD (OnBegin) (THIS_
|
||||
ULONG32 ulTime) throw ();
|
||||
|
||||
/**
|
||||
* Called by client engine to inform the client that buffering
|
||||
* of data is occuring. The render is informed of the reason for
|
||||
* the buffering (start-up of stream, seek has occured, network
|
||||
* congestion, etc.), as well as percentage complete of the
|
||||
* buffering process.
|
||||
*
|
||||
* @param ulFlags the reason for the buffering, one of:
|
||||
* BUFFERING_START_UP, BUFFERING_SEEK, BUFFERING_CONGESTION
|
||||
* or BUFFERING_LIVE_PAUSE
|
||||
* @param unPercentComplete the percentage of the buffering that has
|
||||
* completed.
|
||||
*/
|
||||
STDMETHOD (OnBuffering) (THIS_
|
||||
ULONG32 ulFlags,
|
||||
UINT16 unPercentComplete) throw ();
|
||||
|
||||
|
||||
/**
|
||||
* Called by client engine to inform the client is contacting
|
||||
* hosts(s).
|
||||
*
|
||||
* @param pHostName the name of the host being contacted.
|
||||
*/
|
||||
STDMETHOD (OnContacting) (THIS_
|
||||
const char* pHostName) throw ();
|
||||
|
||||
};
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
|
||||
} // namespace PlaylistExecutor
|
||||
} // namespace LiveSupport
|
||||
|
||||
#endif // AdviseSink_h
|
||||
|
|
@ -0,0 +1,134 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/AuthenticationManager.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include "HelixDefs.h"
|
||||
|
||||
#include <hxcom.h>
|
||||
|
||||
#include "AuthenticationManager.h"
|
||||
|
||||
using namespace LiveSupport::PlaylistExecutor;
|
||||
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Construct the Authentication manager
|
||||
*----------------------------------------------------------------------------*/
|
||||
AuthenticationManager::AuthenticationManager() throw ()
|
||||
: lRefCount(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Destruct the Authentication manager
|
||||
*----------------------------------------------------------------------------*/
|
||||
AuthenticationManager::~AuthenticationManager() throw ()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// IUnknown methods
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Implement this to export the interfaces supported by your
|
||||
* object.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AuthenticationManager::QueryInterface(REFIID riid,
|
||||
void ** ppvObj) throw ()
|
||||
{
|
||||
if (IsEqualIID(riid, IID_IUnknown)) {
|
||||
AddRef();
|
||||
*ppvObj = (IUnknown*)(IHXAuthenticationManager*)this;
|
||||
return HXR_OK;
|
||||
} else if (IsEqualIID(riid, IID_IHXAuthenticationManager)) {
|
||||
AddRef();
|
||||
*ppvObj = (IHXAuthenticationManager*)this;
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
*ppvObj = NULL;
|
||||
return HXR_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Increase the refence count.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP_(UINT32)
|
||||
AuthenticationManager::AddRef() throw ()
|
||||
{
|
||||
return InterlockedIncrement(&lRefCount);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Decreaese the refence count.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP_(UINT32)
|
||||
AuthenticationManager::Release() throw ()
|
||||
{
|
||||
if (InterlockedDecrement(&lRefCount) > 0) {
|
||||
return lRefCount;
|
||||
}
|
||||
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Handle an authentication request.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
AuthenticationManager::HandleAuthenticationRequest(
|
||||
IHXAuthenticationManagerResponse* pResponse)
|
||||
throw ()
|
||||
{
|
||||
// pass on anything
|
||||
return HXR_OK;
|
||||
}
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/AuthenticationManager.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef AuthenticationManager_h
|
||||
#define AuthenticationManager_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include <hxauth.h>
|
||||
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace PlaylistExecutor {
|
||||
|
||||
using namespace LiveSupport;
|
||||
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
/**
|
||||
* A Helix client authentication manager.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
*/
|
||||
class AuthenticationManager : public IHXAuthenticationManager
|
||||
{
|
||||
private:
|
||||
/**
|
||||
* The reference count of this object.
|
||||
*/
|
||||
INT32 lRefCount;
|
||||
|
||||
|
||||
public:
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
AuthenticationManager() throw ();
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual
|
||||
~AuthenticationManager() throw ();
|
||||
|
||||
// IUnknown methods
|
||||
|
||||
/**
|
||||
* Query the object to determine if it supports a specific interface.
|
||||
*
|
||||
* @param riid the reference identifier for the interface queried.
|
||||
* @param ppvObj points to an interface pointer, that is filled
|
||||
* if the requested interface is implemented.
|
||||
*/
|
||||
STDMETHOD(QueryInterface) (THIS_
|
||||
REFIID riid,
|
||||
void** ppvObj) throw ();
|
||||
|
||||
/**
|
||||
* Increase the objects reference count by one.
|
||||
*
|
||||
* @return the new reference count.
|
||||
*/
|
||||
STDMETHOD_(ULONG32,AddRef) (THIS) throw ();
|
||||
|
||||
/**
|
||||
* Decreases the objects reference count by one. If the count
|
||||
* reaches 0, the object is destroyed.
|
||||
*
|
||||
* @return the new value of the reference count.
|
||||
*/
|
||||
STDMETHOD_(ULONG32,Release) (THIS) throw ();
|
||||
|
||||
|
||||
// IHXAuthenticationManager methods
|
||||
|
||||
/**
|
||||
* Get a user name and password, or other authentication parameters.
|
||||
*
|
||||
* @param pResponse Ponter to an IHXAuthenticationManagerResponse
|
||||
* interface that manages the response.
|
||||
*/
|
||||
STDMETHOD(HandleAuthenticationRequest)
|
||||
(IHXAuthenticationManagerResponse* pResponse)
|
||||
throw ();
|
||||
};
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
|
||||
} // namespace PlaylistExecutor
|
||||
} // namespace LiveSupport
|
||||
|
||||
#endif // AuthenticationManager_h
|
||||
|
|
@ -0,0 +1,243 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/ClientContext.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include "HelixDefs.h"
|
||||
|
||||
#include <hxbuffer.h>
|
||||
#include <hxmangle.h>
|
||||
#include <hxstrutl.h>
|
||||
|
||||
#include "ErrorSink.h"
|
||||
#include "AuthenticationManager.h"
|
||||
#include "ClientContext.h"
|
||||
|
||||
using namespace LiveSupport::PlaylistExecutor;
|
||||
|
||||
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Construct the Client Context
|
||||
*----------------------------------------------------------------------------*/
|
||||
ClientContext::ClientContext() throw ()
|
||||
: lRefCount(0)
|
||||
, pClientSink(NULL)
|
||||
, pErrorSink(NULL)
|
||||
, pAuthMgr(NULL)
|
||||
, pDefaultPrefs(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Destruct the Client Context
|
||||
*----------------------------------------------------------------------------*/
|
||||
ClientContext::~ClientContext() throw ()
|
||||
{
|
||||
Close();
|
||||
};
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Initialize the Client Context
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
ClientContext::Init(IUnknown * pUnknown,
|
||||
IHXPreferences * pPreferences,
|
||||
char * pszGUID) throw ()
|
||||
{
|
||||
char* pszCipher = NULL;
|
||||
|
||||
pClientSink = new AdviseSink(pUnknown);
|
||||
pErrorSink = new ErrorSink(pUnknown);
|
||||
pAuthMgr = new AuthenticationManager();
|
||||
|
||||
if (pClientSink) {
|
||||
pClientSink->AddRef();
|
||||
}
|
||||
|
||||
if (pErrorSink) {
|
||||
pErrorSink->AddRef();
|
||||
}
|
||||
|
||||
if(pAuthMgr) {
|
||||
pAuthMgr->AddRef();
|
||||
}
|
||||
|
||||
if (pPreferences) {
|
||||
pDefaultPrefs = pPreferences;
|
||||
pDefaultPrefs->AddRef();
|
||||
}
|
||||
|
||||
if (pszGUID && *pszGUID) {
|
||||
// Encode GUID
|
||||
pszCipher = Cipher(pszGUID);
|
||||
SafeStrCpy(this->pszGUID, pszCipher, 256);
|
||||
} else {
|
||||
this->pszGUID[0] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* De-Initialize the Client Context
|
||||
*----------------------------------------------------------------------------*/
|
||||
void ClientContext::Close() throw ()
|
||||
{
|
||||
HX_RELEASE(pClientSink);
|
||||
HX_RELEASE(pErrorSink);
|
||||
HX_RELEASE(pAuthMgr);
|
||||
HX_RELEASE(pDefaultPrefs);
|
||||
}
|
||||
|
||||
|
||||
// IUnknown methods
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Implement this to export the interfaces supported by your
|
||||
* object.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
ClientContext::QueryInterface(REFIID riid,
|
||||
void ** ppvObj) throw ()
|
||||
{
|
||||
if (IsEqualIID(riid, IID_IUnknown)) {
|
||||
AddRef();
|
||||
*ppvObj = this;
|
||||
return HXR_OK;
|
||||
} else if (IsEqualIID(riid, IID_IHXPreferences)) {
|
||||
AddRef();
|
||||
*ppvObj = (IHXPreferences*)this;
|
||||
return HXR_OK;
|
||||
} else if (pClientSink &&
|
||||
pClientSink->QueryInterface(riid, ppvObj) == HXR_OK) {
|
||||
pClientSink->AddRef();
|
||||
*ppvObj = pClientSink;
|
||||
return HXR_OK;
|
||||
} else if (pErrorSink &&
|
||||
pErrorSink->QueryInterface(riid, ppvObj) == HXR_OK) {
|
||||
pErrorSink->AddRef();
|
||||
*ppvObj = pErrorSink;
|
||||
return HXR_OK;
|
||||
} else if (pAuthMgr &&
|
||||
pAuthMgr->QueryInterface(riid, ppvObj) == HXR_OK) {
|
||||
pErrorSink->AddRef();
|
||||
*ppvObj = pAuthMgr;
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
*ppvObj = NULL;
|
||||
return HXR_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Increase the refence count.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP_(ULONG32)
|
||||
ClientContext::AddRef() throw ()
|
||||
{
|
||||
return InterlockedIncrement(&lRefCount);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Decreaese the refence count.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP_(ULONG32)
|
||||
ClientContext::Release() throw ()
|
||||
{
|
||||
if (InterlockedDecrement(&lRefCount) > 0) {
|
||||
return lRefCount;
|
||||
}
|
||||
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// IHXPreferences methods
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Read a Preference from the registry.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
ClientContext::ReadPref(const char * pPrekKey,
|
||||
IHXBuffer *& pBuffer) throw ()
|
||||
{
|
||||
HX_RESULT hResult = HXR_OK;
|
||||
|
||||
if ((stricmp(pPrekKey, CLIENT_GUID_REGNAME) == 0) && (*pszGUID)) {
|
||||
// Create a Buffer
|
||||
pBuffer = new CHXBuffer();
|
||||
pBuffer->AddRef();
|
||||
|
||||
// Copy the encoded GUID into the pBuffer
|
||||
pBuffer->Set((UCHAR*)pszGUID, strlen(pszGUID) + 1);
|
||||
} else if (pDefaultPrefs) {
|
||||
hResult = pDefaultPrefs->ReadPref(pPrekKey, pBuffer);
|
||||
} else {
|
||||
hResult = HXR_NOTIMPL;
|
||||
}
|
||||
|
||||
return hResult;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Write a Preference to the registry.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
ClientContext::WritePref(const char * pPrekKey,
|
||||
IHXBuffer * pBuffer) throw ()
|
||||
{
|
||||
if (pDefaultPrefs) {
|
||||
return pDefaultPrefs->WritePref(pPrekKey, pBuffer);
|
||||
} else {
|
||||
return HXR_OK;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,214 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/ClientContext.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef ClientContext_h
|
||||
#define ClientContext_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include <hxprefs.h>
|
||||
#include <ihxpckts.h>
|
||||
|
||||
#include "AdviseSink.h"
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace PlaylistExecutor {
|
||||
|
||||
using namespace LiveSupport;
|
||||
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
class ExampleErrorMessages;
|
||||
|
||||
/**
|
||||
* A Helix client context.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
*/
|
||||
class ClientContext : public IHXPreferences
|
||||
{
|
||||
private:
|
||||
/**
|
||||
* The reference count of this object.
|
||||
*/
|
||||
LONG32 lRefCount;
|
||||
|
||||
/**
|
||||
* The advise sink recieving event notifications.
|
||||
*/
|
||||
AdviseSink * pClientSink;
|
||||
|
||||
/**
|
||||
* The error sink, receiving error notifications.
|
||||
*/
|
||||
ErrorSink * pErrorSink;
|
||||
|
||||
/**
|
||||
* The authentication manager.
|
||||
*/
|
||||
AuthenticationManager * pAuthMgr;
|
||||
|
||||
/**
|
||||
* The preferences.
|
||||
*/
|
||||
IHXPreferences* pDefaultPrefs;
|
||||
|
||||
/**
|
||||
* The GUID for this context.
|
||||
*/
|
||||
char pszGUID[256]; /* Flawfinder: ignore */
|
||||
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
ClientContext() throw ();
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual
|
||||
~ClientContext() throw ();
|
||||
|
||||
/**
|
||||
* Initialize the client context.
|
||||
* Always close a context by calling Close().
|
||||
*
|
||||
* @param pUnknown pointer to the object this will be a context for.
|
||||
* @param pPreferences pointer to the helix preferences used.
|
||||
* @param pszGUID the globally unique ID, if any, for the context.
|
||||
* @see #Close
|
||||
*/
|
||||
void
|
||||
Init(IUnknown * pUnknown,
|
||||
IHXPreferences * pPreferences,
|
||||
char * pszGUID) throw ();
|
||||
|
||||
/**
|
||||
* De-Initialize the client context.
|
||||
*
|
||||
* @see #Init
|
||||
*/
|
||||
void Close() throw ();
|
||||
|
||||
/**
|
||||
* Return the ErrorSink object for this client context.
|
||||
*
|
||||
* @return the ErrorSink object for this client context.
|
||||
*/
|
||||
ErrorSink *
|
||||
getErrorSink(void) const throw ()
|
||||
{
|
||||
return pErrorSink;
|
||||
}
|
||||
|
||||
// IUnknown methods
|
||||
|
||||
/**
|
||||
* Query the object to determine if it supports a specific interface.
|
||||
*
|
||||
* @param riid the reference identifier for the interface queried.
|
||||
* @param ppvObj points to an interface pointer, that is filled
|
||||
* if the requested interface is implemented.
|
||||
*/
|
||||
STDMETHOD(QueryInterface) (THIS_
|
||||
REFIID riid,
|
||||
void** ppvObj) throw ();
|
||||
|
||||
/**
|
||||
* Increase the objects reference count by one.
|
||||
*
|
||||
* @return the new reference count.
|
||||
*/
|
||||
STDMETHOD_(ULONG32,AddRef) (THIS) throw ();
|
||||
|
||||
/**
|
||||
* Decreases the objects reference count by one. If the count
|
||||
* reaches 0, the object is destroyed.
|
||||
*
|
||||
* @return the new value of the reference count.
|
||||
*/
|
||||
STDMETHOD_(ULONG32,Release) (THIS) throw ();
|
||||
|
||||
// IHXPreferences methods
|
||||
|
||||
/**
|
||||
* Reaad a preference from the registry or configuration file.
|
||||
*
|
||||
* @param pPrekKey pointer to the name of the preference.
|
||||
* @param pBuffer return a pointer to an IHXBuffer interface
|
||||
* that manages the value of the preference.
|
||||
*/
|
||||
STDMETHOD(ReadPref) (THIS_
|
||||
const char * pPrekKey,
|
||||
IHXBuffer *& pBuffer) throw ();
|
||||
|
||||
/**
|
||||
* Writes a preference to the registry of configuration file.
|
||||
*
|
||||
* @param pPrekKey pointer to the name of the preference.
|
||||
* @param pBuffer return a pointer to an IHXBuffer interface
|
||||
* that manages the value of the preference.
|
||||
*/
|
||||
STDMETHOD(WritePref) (THIS_
|
||||
const char * pPrekKey,
|
||||
IHXBuffer * pBuffer) throw ();
|
||||
|
||||
};
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
|
||||
} // namespace PlaylistExecutor
|
||||
} // namespace LiveSupport
|
||||
|
||||
#endif // ClientContext_h
|
||||
|
|
@ -0,0 +1,150 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/ErrorSink.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include "HelixDefs.h"
|
||||
|
||||
#include <hxcom.h>
|
||||
|
||||
#include "ErrorSink.h"
|
||||
|
||||
using namespace LiveSupport::PlaylistExecutor;
|
||||
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Construct the Error Sink
|
||||
*----------------------------------------------------------------------------*/
|
||||
ErrorSink::ErrorSink(IUnknown* pUnknown) throw ()
|
||||
: lRefCount(0),
|
||||
pPlayer(NULL),
|
||||
lastHelixErrorCode(0)
|
||||
{
|
||||
IHXClientEngine* pEngine = NULL;
|
||||
pUnknown->QueryInterface(IID_IHXClientEngine, (void**)&pEngine );
|
||||
if( pEngine ) {
|
||||
IUnknown* pTmp = NULL;
|
||||
pEngine->GetPlayer(0, pTmp);
|
||||
pPlayer = (IHXPlayer*)pTmp;
|
||||
}
|
||||
|
||||
HX_RELEASE( pEngine );
|
||||
// HX_ASSERT(pPlayer);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Destruct the Error Sink
|
||||
*----------------------------------------------------------------------------*/
|
||||
ErrorSink::~ErrorSink() throw ()
|
||||
{
|
||||
HX_RELEASE(pPlayer);
|
||||
}
|
||||
|
||||
// IUnknown methods
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Implement this to export the interfaces supported by your
|
||||
* object.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
ErrorSink::QueryInterface(REFIID riid,
|
||||
void ** ppvObj) throw ()
|
||||
{
|
||||
if (IsEqualIID(riid, IID_IUnknown)) {
|
||||
AddRef();
|
||||
*ppvObj = (IUnknown*)(IHXErrorSink*)this;
|
||||
return HXR_OK;
|
||||
} else if (IsEqualIID(riid, IID_IHXErrorSink)) {
|
||||
AddRef();
|
||||
*ppvObj = (IHXErrorSink*) this;
|
||||
return HXR_OK;
|
||||
}
|
||||
|
||||
*ppvObj = NULL;
|
||||
return HXR_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Increase the refence count.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP_(ULONG32)
|
||||
ErrorSink::AddRef() throw ()
|
||||
{
|
||||
return InterlockedIncrement(&lRefCount);
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Decreaese the refence count.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP_(ULONG32)
|
||||
ErrorSink::Release() throw ()
|
||||
{
|
||||
if (InterlockedDecrement(&lRefCount) > 0) {
|
||||
return lRefCount;
|
||||
}
|
||||
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// IHXErrorSink methods
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Handle an error event.
|
||||
*----------------------------------------------------------------------------*/
|
||||
STDMETHODIMP
|
||||
ErrorSink::ErrorOccurred(const UINT8 unSeverity,
|
||||
const ULONG32 ulHXCode,
|
||||
const ULONG32 ulUserCode,
|
||||
const char * pUserString,
|
||||
const char * pMoreInfoURL) throw ()
|
||||
{
|
||||
lastHelixErrorCode = ulHXCode;
|
||||
|
||||
return HXR_OK;
|
||||
}
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/ErrorSink.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef ErrorSink_h
|
||||
#define ErrorSink_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include <hxcore.h>
|
||||
#include <hxerror.h>
|
||||
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace PlaylistExecutor {
|
||||
|
||||
using namespace LiveSupport;
|
||||
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
/**
|
||||
* A Helix error sink
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
*/
|
||||
class ErrorSink : public IHXErrorSink
|
||||
{
|
||||
protected:
|
||||
/**
|
||||
* The reference count of this object.
|
||||
*/
|
||||
LONG32 lRefCount;
|
||||
|
||||
/**
|
||||
* The player this sink gets errors from.
|
||||
*/
|
||||
IHXPlayer * pPlayer;
|
||||
|
||||
/**
|
||||
* The last Helix error code receieved.
|
||||
*/
|
||||
UINT32 lastHelixErrorCode;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param pUnkown pointer to the object this is an erro sink for.
|
||||
*/
|
||||
ErrorSink(IUnknown* pUnknown) throw ();
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual
|
||||
~ErrorSink() throw ();
|
||||
|
||||
// IUnknown methods
|
||||
|
||||
/**
|
||||
* Query the object to determine if it supports a specific interface.
|
||||
*
|
||||
* @param riid the reference identifier for the interface queried.
|
||||
* @param ppvObj points to an interface pointer, that is filled
|
||||
* if the requested interface is implemented.
|
||||
*/
|
||||
STDMETHOD(QueryInterface) (THIS_
|
||||
REFIID riid,
|
||||
void** ppvObj) throw ();
|
||||
|
||||
/**
|
||||
* Increase the objects reference count by one.
|
||||
*
|
||||
* @return the new reference count.
|
||||
*/
|
||||
STDMETHOD_(ULONG32,AddRef) (THIS) throw ();
|
||||
|
||||
/**
|
||||
* Decreases the objects reference count by one. If the count
|
||||
* reaches 0, the object is destroyed.
|
||||
*
|
||||
* @return the new value of the reference count.
|
||||
*/
|
||||
STDMETHOD_(ULONG32,Release) (THIS) throw ();
|
||||
|
||||
|
||||
// IHXErrorSink methods
|
||||
|
||||
/**
|
||||
* After you have registered your error sink with an
|
||||
* IHXErrorSinkControl
|
||||
* (either in the server or player core) this method will be called to
|
||||
* report an error, event, or status message.
|
||||
*
|
||||
* @param unSeverity the type of report.
|
||||
* @param ulHXCode Helix Architecture error code.
|
||||
* @param ulUserCode User-specific error code.
|
||||
* @param pUserString User-specific error string.
|
||||
* @param pMoreInfoURL pointer to a user-specific URL for more info.
|
||||
*/
|
||||
STDMETHOD(ErrorOccurred) (THIS_
|
||||
const UINT8 unSeverity,
|
||||
const ULONG32 ulHXCode,
|
||||
const ULONG32 ulUserCode,
|
||||
const char * pUserString,
|
||||
const char * pMoreInfoURL)
|
||||
throw ();
|
||||
|
||||
/**
|
||||
* Get the Helix error code for the last error occured.
|
||||
*
|
||||
* @return the Helix error code for the last error occured.
|
||||
*/
|
||||
ULONG32
|
||||
getLastErrorCode(void) const throw ()
|
||||
{
|
||||
return lastHelixErrorCode;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
|
||||
} // namespace PlaylistExecutor
|
||||
} // namespace LiveSupport
|
||||
|
||||
#endif // ErrorSink_h
|
||||
|
|
@ -0,0 +1,524 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/HelixDefs.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef HelixDefs_h
|
||||
#define HelixDefs_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* This is a list of defines used by the Helix Library.
|
||||
* Some of these are Linux-specific, watch out when porting to other
|
||||
* platforms.
|
||||
*----------------------------------------------------------------------------*/
|
||||
#ifndef HELIX_CONFIG_MS_PSDK
|
||||
#define HELIX_CONFIG_MS_PSDK 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_3GPP
|
||||
#define HELIX_FEATURE_3GPP 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_ADVANCEDGROUPMGR
|
||||
#define HELIX_FEATURE_ADVANCEDGROUPMGR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_ALT_URL
|
||||
#define HELIX_FEATURE_ALT_URL 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_ASM
|
||||
#define HELIX_FEATURE_ASM 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO
|
||||
#define HELIX_FEATURE_AUDIO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIOHOOK
|
||||
#define HELIX_FEATURE_AUDIOHOOK 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_AIFF
|
||||
#define HELIX_FEATURE_AUDIO_AIFF 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_AU
|
||||
#define HELIX_FEATURE_AUDIO_AU 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_28_8
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_28_8 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_AMRNB
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_AMRNB 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_AMRWB
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_AMRWB 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_GECKO
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_GECKO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_INTERLEAVE_ALL
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_INTERLEAVE_ALL 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_O5_6
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_O5_6 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_QCELP
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_QCELP 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_RAAC
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_RAAC 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_SIPRO
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_SIPRO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_CODEC_TOKYO
|
||||
#define HELIX_FEATURE_AUDIO_CODEC_TOKYO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_INACCURATESAMPLING
|
||||
#define HELIX_FEATURE_AUDIO_INACCURATESAMPLING 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_INCOMPLETESAMPLE
|
||||
#define HELIX_FEATURE_AUDIO_INCOMPLETESAMPLE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_MPA_LAYER1
|
||||
#define HELIX_FEATURE_AUDIO_MPA_LAYER1 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_MPA_LAYER2
|
||||
#define HELIX_FEATURE_AUDIO_MPA_LAYER2 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_MPA_LAYER3
|
||||
#define HELIX_FEATURE_AUDIO_MPA_LAYER3 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_MPEG4
|
||||
#define HELIX_FEATURE_AUDIO_MPEG4 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_MULTIPLAYER_PAUSE
|
||||
#define HELIX_FEATURE_AUDIO_MULTIPLAYER_PAUSE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_POSTMIXHOOK
|
||||
#define HELIX_FEATURE_AUDIO_POSTMIXHOOK 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_PREMIXHOOK
|
||||
#define HELIX_FEATURE_AUDIO_PREMIXHOOK 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_RALF
|
||||
#define HELIX_FEATURE_AUDIO_RALF 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_REAL
|
||||
#define HELIX_FEATURE_AUDIO_REAL 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUDIO_WAVE
|
||||
#define HELIX_FEATURE_AUDIO_WAVE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUTHENTICATION
|
||||
#define HELIX_FEATURE_AUTHENTICATION 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_AUTOUPGRADE
|
||||
#define HELIX_FEATURE_AUTOUPGRADE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_BASICGROUPMGR
|
||||
#define HELIX_FEATURE_BASICGROUPMGR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_CHUNKRES
|
||||
#define HELIX_FEATURE_CHUNKRES 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_CLIENT
|
||||
#define HELIX_FEATURE_CLIENT 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_COOKIES
|
||||
#define HELIX_FEATURE_COOKIES 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_CORECOMM
|
||||
#define HELIX_FEATURE_CORECOMM 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_CROSSFADE
|
||||
#define HELIX_FEATURE_CROSSFADE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_DBG_LOG
|
||||
#define HELIX_FEATURE_DBG_LOG 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_DIRECT_SOUND
|
||||
#define HELIX_FEATURE_DIRECT_SOUND 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_DRM
|
||||
#define HELIX_FEATURE_DRM 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_DTDR_AUDIO_DECODER
|
||||
#define HELIX_FEATURE_DTDR_AUDIO_DECODER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_DTDR_DECRYPTER
|
||||
#define HELIX_FEATURE_DTDR_DECRYPTER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_DTDR_ENCODER
|
||||
#define HELIX_FEATURE_DTDR_ENCODER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_DTDR_MIXER
|
||||
#define HELIX_FEATURE_DTDR_MIXER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_EVENTMANAGER
|
||||
#define HELIX_FEATURE_EVENTMANAGER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_FIFOCACHE
|
||||
#define HELIX_FEATURE_FIFOCACHE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_FILESYSTEMMGR
|
||||
#define HELIX_FEATURE_FILESYSTEMMGR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_FRAGMENTBUFFER
|
||||
#define HELIX_FEATURE_FRAGMENTBUFFER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_FULLGUID
|
||||
#define HELIX_FEATURE_FULLGUID 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_GAINTOOL
|
||||
#define HELIX_FEATURE_GAINTOOL 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_GIF_BROKENIMAGE
|
||||
#define HELIX_FEATURE_GIF_BROKENIMAGE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_GROUPMGR
|
||||
#define HELIX_FEATURE_GROUPMGR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_HTTPCLOAK
|
||||
#define HELIX_FEATURE_HTTPCLOAK 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_HTTP_GZIP
|
||||
#define HELIX_FEATURE_HTTP_GZIP 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_HYPER_NAVIGATE
|
||||
#define HELIX_FEATURE_HYPER_NAVIGATE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_IGNORE_SIGPIPE
|
||||
#define HELIX_FEATURE_IGNORE_SIGPIPE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_ISMA
|
||||
#define HELIX_FEATURE_ISMA 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_LIMITER
|
||||
#define HELIX_FEATURE_LIMITER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_MASTERTAC
|
||||
#define HELIX_FEATURE_MASTERTAC 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_MEDIAMARKER
|
||||
#define HELIX_FEATURE_MEDIAMARKER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_MEMMAP_IO
|
||||
#define HELIX_FEATURE_MEMMAP_IO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_META
|
||||
#define HELIX_FEATURE_META 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_MIXER
|
||||
#define HELIX_FEATURE_MIXER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_MP3FF_LENIENT
|
||||
#define HELIX_FEATURE_MP3FF_LENIENT 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_MP3FF_ONDEMANDMETAINFO
|
||||
#define HELIX_FEATURE_MP3FF_ONDEMANDMETAINFO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_MP3FF_SHOUTCAST
|
||||
#define HELIX_FEATURE_MP3FF_SHOUTCAST 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_MP4_FILEFORMAT_ALTERNATES
|
||||
#define HELIX_FEATURE_MP4_FILEFORMAT_ALTERNATES 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_NESTEDMETA
|
||||
#define HELIX_FEATURE_NESTEDMETA 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_NETCHECK
|
||||
#define HELIX_FEATURE_NETCHECK 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_NETINTERFACES
|
||||
#define HELIX_FEATURE_NETINTERFACES 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_NETSERVICES_SHIM
|
||||
#define HELIX_FEATURE_NETSERVICES_SHIM 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_NEXTGROUPMGR
|
||||
#define HELIX_FEATURE_NEXTGROUPMGR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_OPTIMIZED_SCHEDULER
|
||||
#define HELIX_FEATURE_OPTIMIZED_SCHEDULER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_OVERLAYMGR
|
||||
#define HELIX_FEATURE_OVERLAYMGR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PAC
|
||||
#define HELIX_FEATURE_PAC 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PACKETHOOKMGR
|
||||
#define HELIX_FEATURE_PACKETHOOKMGR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PLAYBACK_LOCAL
|
||||
#define HELIX_FEATURE_PLAYBACK_LOCAL 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PLAYBACK_NET
|
||||
#define HELIX_FEATURE_PLAYBACK_NET 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PLAYERNAVIGATOR
|
||||
#define HELIX_FEATURE_PLAYERNAVIGATOR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PLUGINHANDLER2
|
||||
#define HELIX_FEATURE_PLUGINHANDLER2 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PNA
|
||||
#define HELIX_FEATURE_PNA 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PREFERENCES
|
||||
#define HELIX_FEATURE_PREFERENCES 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PREFETCH
|
||||
#define HELIX_FEATURE_PREFETCH 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PROGDOWN
|
||||
#define HELIX_FEATURE_PROGDOWN 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_PROXYMGR
|
||||
#define HELIX_FEATURE_PROXYMGR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RAREND_ADV_PACKET_FEEDER
|
||||
#define HELIX_FEATURE_RAREND_ADV_PACKET_FEEDER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RAREND_BANDWIDTH_LISTER
|
||||
#define HELIX_FEATURE_RAREND_BANDWIDTH_LISTER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RAREND_PREREDSTONE_SUPPORT
|
||||
#define HELIX_FEATURE_RAREND_PREREDSTONE_SUPPORT 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RAREND_SURESTREAM
|
||||
#define HELIX_FEATURE_RAREND_SURESTREAM 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RDT
|
||||
#define HELIX_FEATURE_RDT 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RECORDCONTROL
|
||||
#define HELIX_FEATURE_RECORDCONTROL 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_REGISTRY
|
||||
#define HELIX_FEATURE_REGISTRY 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RESAMPLER
|
||||
#define HELIX_FEATURE_RESAMPLER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RESOURCEMGR
|
||||
#define HELIX_FEATURE_RESOURCEMGR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_REVERTER
|
||||
#define HELIX_FEATURE_REVERTER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_BANDWIDTH_NEGOTIATOR
|
||||
#define HELIX_FEATURE_RMFF_BANDWIDTH_NEGOTIATOR 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_DYNAMICASM
|
||||
#define HELIX_FEATURE_RMFF_DYNAMICASM 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_INDEXTABLE
|
||||
#define HELIX_FEATURE_RMFF_INDEXTABLE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_LEGACYAUDIO
|
||||
#define HELIX_FEATURE_RMFF_LEGACYAUDIO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_LICENSING
|
||||
#define HELIX_FEATURE_RMFF_LICENSING 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_LIVEINFO
|
||||
#define HELIX_FEATURE_RMFF_LIVEINFO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_MULTIRATE
|
||||
#define HELIX_FEATURE_RMFF_MULTIRATE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_ONDEMANDMETAINFO
|
||||
#define HELIX_FEATURE_RMFF_ONDEMANDMETAINFO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_TIMEOFFSET_FIXUP
|
||||
#define HELIX_FEATURE_RMFF_TIMEOFFSET_FIXUP 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_TIMEOFFSET_HANDLER
|
||||
#define HELIX_FEATURE_RMFF_TIMEOFFSET_HANDLER 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RMFF_VIEWSOURCE
|
||||
#define HELIX_FEATURE_RMFF_VIEWSOURCE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_RTP
|
||||
#define HELIX_FEATURE_RTP 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SECURECONN
|
||||
#define HELIX_FEATURE_SECURECONN 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SETSRCPROPS
|
||||
#define HELIX_FEATURE_SETSRCPROPS 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SINKCONTROL
|
||||
#define HELIX_FEATURE_SINKCONTROL 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMARTERNETWORK
|
||||
#define HELIX_FEATURE_SMARTERNETWORK 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL1
|
||||
#define HELIX_FEATURE_SMIL1 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL2
|
||||
#define HELIX_FEATURE_SMIL2 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL2_ANIMATION
|
||||
#define HELIX_FEATURE_SMIL2_ANIMATION 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL2_BRUSH
|
||||
#define HELIX_FEATURE_SMIL2_BRUSH 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT
|
||||
#define HELIX_FEATURE_SMIL2_MULTIWINDOWLAYOUT 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL2_TRANSITIONS
|
||||
#define HELIX_FEATURE_SMIL2_TRANSITIONS 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL2_VALIDATION
|
||||
#define HELIX_FEATURE_SMIL2_VALIDATION 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL_REPEAT
|
||||
#define HELIX_FEATURE_SMIL_REPEAT 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL_SITE
|
||||
#define HELIX_FEATURE_SMIL_SITE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SMIL_SOUNDLEVEL
|
||||
#define HELIX_FEATURE_SMIL_SOUNDLEVEL 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_STATS
|
||||
#define HELIX_FEATURE_STATS 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_SYSTEMREQUIRED
|
||||
#define HELIX_FEATURE_SYSTEMREQUIRED 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_THREADSAFE_MEMMAP_IO
|
||||
#define HELIX_FEATURE_THREADSAFE_MEMMAP_IO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_TIMEDTEXT
|
||||
#define HELIX_FEATURE_TIMEDTEXT 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_TRANSPORT_MULTICAST
|
||||
#define HELIX_FEATURE_TRANSPORT_MULTICAST 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_TURBOPLAY
|
||||
#define HELIX_FEATURE_TURBOPLAY 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDEO
|
||||
#define HELIX_FEATURE_VIDEO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDEO_CODEC_RV10
|
||||
#define HELIX_FEATURE_VIDEO_CODEC_RV10 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDEO_CODEC_RV20
|
||||
#define HELIX_FEATURE_VIDEO_CODEC_RV20 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDEO_CODEC_RV30
|
||||
#define HELIX_FEATURE_VIDEO_CODEC_RV30 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDEO_CODEC_RV40
|
||||
#define HELIX_FEATURE_VIDEO_CODEC_RV40 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDEO_H263
|
||||
#define HELIX_FEATURE_VIDEO_H263 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDEO_MPEG4
|
||||
#define HELIX_FEATURE_VIDEO_MPEG4 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDEO_REAL
|
||||
#define HELIX_FEATURE_VIDEO_REAL 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDREND_OPTIMIZEDVIDEO
|
||||
#define HELIX_FEATURE_VIDREND_OPTIMIZEDVIDEO 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIDREND_SYNCSMOOTHING
|
||||
#define HELIX_FEATURE_VIDREND_SYNCSMOOTHING 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIEWPORT
|
||||
#define HELIX_FEATURE_VIEWPORT 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VIEWSOURCE
|
||||
#define HELIX_FEATURE_VIEWSOURCE 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_VOLUME
|
||||
#define HELIX_FEATURE_VOLUME 1
|
||||
#endif
|
||||
#ifndef HELIX_FEATURE_XMLPARSER
|
||||
#define HELIX_FEATURE_XMLPARSER 1
|
||||
#endif
|
||||
#ifndef THREADS_SUPPORTED
|
||||
#define THREADS_SUPPORTED 1
|
||||
#endif
|
||||
#ifndef USE_XWINDOWS
|
||||
#define USE_XWINDOWS 1
|
||||
#endif
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE 1
|
||||
#endif
|
||||
#ifndef _LINUX
|
||||
#define _LINUX 1
|
||||
#endif
|
||||
#ifndef _LITTLE_ENDIAN
|
||||
#define _LITTLE_ENDIAN 1
|
||||
#endif
|
||||
#ifndef _RED_HAT_5_X_
|
||||
#define _RED_HAT_5_X_ 1
|
||||
#endif
|
||||
#ifndef _REENTRANT
|
||||
#define _REENTRANT 1
|
||||
#endif
|
||||
#ifndef _TIMEDWAITS_RECURSIVE_MUTEXES
|
||||
#define _TIMEDWAITS_RECURSIVE_MUTEXES 1
|
||||
#endif
|
||||
#ifndef _UNIX
|
||||
#define _UNIX 1
|
||||
#endif
|
||||
#ifndef _UNIX_THREADED_NETWORK_IO
|
||||
#define _UNIX_THREADED_NETWORK_IO 1
|
||||
#endif
|
||||
#ifndef _UNIX_THREADS_SUPPORTED
|
||||
#define _UNIX_THREADS_SUPPORTED 1
|
||||
#endif
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
|
||||
#endif // HelixDefs_h
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/HelixIIDs.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
// this is just a file that by including the ones below defines some IIDs
|
||||
// needed by the Helix library.
|
||||
|
||||
#include "HelixDefs.h"
|
||||
|
||||
|
||||
#define INITGUID
|
||||
#define NCIHACK
|
||||
#include <hxtypes.h>
|
||||
#include <hxcom.h>
|
||||
#include <hxiids.h>
|
||||
#include <hxpiids.h>
|
||||
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/HelixPlayer.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include "HelixDefs.h"
|
||||
|
||||
#include "HelixPlayer.h"
|
||||
|
||||
|
||||
using namespace LiveSupport::Core;
|
||||
using namespace LiveSupport::PlaylistExecutor;
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
/**
|
||||
* Function pointer type for the SetDLLAccessPath function.
|
||||
*/
|
||||
typedef HX_RESULT (HXEXPORT_PTR FPRMSETDLLACCESSPATH) (const char*);
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
/**
|
||||
* The shared object access path.
|
||||
*/
|
||||
static DLLAccessPath accessPath;
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* The name of the config element for this class
|
||||
*----------------------------------------------------------------------------*/
|
||||
const std::string HelixPlayer::configElementNameStr = "helixPlayer";
|
||||
|
||||
|
||||
/**
|
||||
* The name of the attribute to get shared object path.
|
||||
*/
|
||||
static const std::string dllPathName = "dllPath";
|
||||
|
||||
/**
|
||||
* The name of the client core shared object, as found under dllPath
|
||||
*/
|
||||
static const std::string clntcoreName = "/clntcore.so";
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* The main thread function for handling Helix events.
|
||||
*----------------------------------------------------------------------------*/
|
||||
void *
|
||||
LiveSupport::PlaylistExecutor::eventHandlerThread(void * helixPlayer)
|
||||
throw ()
|
||||
{
|
||||
HelixPlayer * hPlayer = (HelixPlayer *) helixPlayer;
|
||||
|
||||
while (hPlayer->handleEvents) {
|
||||
struct _HXxEvent * event = 0;
|
||||
hPlayer->clientEngine->EventOccurred(event);
|
||||
usleep(10000);
|
||||
}
|
||||
|
||||
pthread_exit(0);
|
||||
}
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Configure the Helix Player.
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayer :: configure(const xmlpp::Element & element)
|
||||
throw (std::invalid_argument,
|
||||
std::logic_error)
|
||||
{
|
||||
if (element.get_name() != configElementNameStr) {
|
||||
std::string eMsg = "Bad configuration element ";
|
||||
eMsg += element.get_name();
|
||||
throw std::invalid_argument(eMsg);
|
||||
}
|
||||
|
||||
const xmlpp::Attribute * attribute;
|
||||
|
||||
if (!(attribute = element.get_attribute(dllPathName))) {
|
||||
std::string eMsg = "Missing attribute ";
|
||||
eMsg += dllPathName;
|
||||
throw std::invalid_argument(eMsg);
|
||||
}
|
||||
dllPath = attribute->get_value();
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Initialize the Helix Player
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayer :: initialize(void) throw (std::exception)
|
||||
{
|
||||
// open the Helix Client Core shared object
|
||||
std::string staticLibPath(dllPath);
|
||||
staticLibPath += clntcoreName;
|
||||
if (DLLAccess::DLL_OK != dllAccess.open(staticLibPath.c_str())) {
|
||||
throw std::exception();
|
||||
}
|
||||
|
||||
// get the main entry function pointers
|
||||
FPRMSETDLLACCESSPATH setDLLAccessPath;
|
||||
|
||||
createEngine = (FPRMCREATEENGINE) dllAccess.getSymbol("CreateEngine");
|
||||
closeEngine = (FPRMCLOSEENGINE) dllAccess.getSymbol("CloseEngine");
|
||||
setDLLAccessPath =
|
||||
(FPRMSETDLLACCESSPATH) dllAccess.getSymbol("SetDLLAccessPath");
|
||||
|
||||
if (!createEngine || !closeEngine || !setDLLAccessPath) {
|
||||
throw std::exception();
|
||||
}
|
||||
|
||||
// set the DLL access path
|
||||
std::string str = "";
|
||||
str += "DT_Common=";
|
||||
str += dllPath;
|
||||
str += '\0';
|
||||
str += "DT_Plugins=";
|
||||
str += dllPath;
|
||||
str += '\0';
|
||||
str += "DT_Codecs=";
|
||||
str += dllPath;
|
||||
|
||||
setDLLAccessPath(str.c_str());
|
||||
|
||||
// create the client engine and the player
|
||||
if (HXR_OK != createEngine(&clientEngine)) {
|
||||
throw std::exception();
|
||||
}
|
||||
|
||||
if (HXR_OK != clientEngine->CreatePlayer(player)) {
|
||||
throw std::exception();
|
||||
}
|
||||
|
||||
// create and attach the client context
|
||||
clientContext = new ClientContext();
|
||||
clientContext->AddRef();
|
||||
|
||||
IHXPreferences * preferences = 0;
|
||||
player->QueryInterface(IID_IHXPreferences, (void**) &preferences);
|
||||
clientContext->Init(player, preferences, "");
|
||||
player->SetClientContext(clientContext);
|
||||
HX_RELEASE(preferences);
|
||||
|
||||
// create and attach the error sink
|
||||
IHXErrorSinkControl * errorSinkControl;
|
||||
player->QueryInterface(IID_IHXErrorSinkControl,
|
||||
(void**) &errorSinkControl);
|
||||
if (errorSinkControl) {
|
||||
IHXErrorSink * errorSink;
|
||||
clientContext->QueryInterface(IID_IHXErrorSink, (void**) &errorSink);
|
||||
if (errorSink) {
|
||||
errorSinkControl->AddErrorSink(errorSink,
|
||||
HXLOG_EMERG,
|
||||
HXLOG_DEBUG);
|
||||
HX_RELEASE(errorSink);
|
||||
}
|
||||
HX_RELEASE(errorSinkControl);
|
||||
}
|
||||
|
||||
// start the event handling thread
|
||||
handleEvents = true;
|
||||
int ret;
|
||||
if ((ret = pthread_create(&eventHandlingThread,
|
||||
NULL,
|
||||
eventHandlerThread,
|
||||
(void *) this))) {
|
||||
// TODO: signal return code
|
||||
throw std::exception();
|
||||
}
|
||||
|
||||
// set up other variables
|
||||
playing = false;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* De-initialize the Helix Player
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayer :: deInitialize(void)
|
||||
{
|
||||
// signal stop to and wait for the event handling thread to stop
|
||||
handleEvents = false;
|
||||
pthread_join(eventHandlingThread, 0);
|
||||
|
||||
// release Helix resources
|
||||
clientContext->Release();
|
||||
|
||||
clientEngine->ClosePlayer(player);
|
||||
player->Release();
|
||||
|
||||
closeEngine(clientEngine);
|
||||
|
||||
dllAccess.close();
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Specify which file to play
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayer :: playThis(const std::string fileUrl)
|
||||
throw (std::invalid_argument)
|
||||
{
|
||||
// the only way to check if this is a valid URL is to see if the
|
||||
// source count increases for the player.
|
||||
UINT16 sourceCount = player->GetSourceCount();
|
||||
if (HXR_OK != player->OpenURL(fileUrl.c_str())) {
|
||||
throw std::invalid_argument("can't open URL");
|
||||
}
|
||||
if (sourceCount == player->GetSourceCount()) {
|
||||
throw std::invalid_argument("can't open URL");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Start playing
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayer :: start(void) throw (std::logic_error)
|
||||
{
|
||||
if (player->GetSourceCount() == 0) {
|
||||
throw std::logic_error("HelixPlayer::playThis() not called yet");
|
||||
}
|
||||
player->Begin();
|
||||
playing = true;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Tell if we're playing
|
||||
*----------------------------------------------------------------------------*/
|
||||
bool
|
||||
HelixPlayer :: isPlaying(void) throw ()
|
||||
{
|
||||
if (playing) {
|
||||
playing = !player->IsDone();
|
||||
}
|
||||
|
||||
return playing;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Stop playing
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayer :: stop(void) throw (std::logic_error)
|
||||
{
|
||||
if (!isPlaying()) {
|
||||
throw std::logic_error("HelixPlayer is not yet playing, can't stop it");
|
||||
}
|
||||
player->Stop();
|
||||
|
||||
playing = false;
|
||||
// TODO: gather error info from the ErrorSink
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* A global function needed by the Helix library, this will return the
|
||||
* access path to shared objects.
|
||||
*----------------------------------------------------------------------------*/
|
||||
DLLAccessPath* GetDLLAccessPath(void)
|
||||
{
|
||||
return &accessPath;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,278 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/HelixPlayer.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef HelixPlayer_h
|
||||
#define HelixPlayer_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
#include <dllacces.h>
|
||||
#include <dllpath.h>
|
||||
|
||||
#include "LiveSupport/Core/Configurable.h"
|
||||
|
||||
#include "AdviseSink.h"
|
||||
#include "ErrorSink.h"
|
||||
#include "AuthenticationManager.h"
|
||||
#include "ClientContext.h"
|
||||
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace PlaylistExecutor {
|
||||
|
||||
using namespace LiveSupport;
|
||||
using namespace LiveSupport::Core;
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
/**
|
||||
* A class to play audio files and SMIL files through the Helix
|
||||
* Community Library.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
*/
|
||||
class HelixPlayer :
|
||||
virtual public Configurable
|
||||
{
|
||||
friend void * eventHandlerThread(void *) throw();
|
||||
|
||||
private:
|
||||
/**
|
||||
* The name of the configuration XML elmenent used by HelixPlayer
|
||||
*/
|
||||
static const std::string configElementNameStr;
|
||||
|
||||
/**
|
||||
* The full path to the Helix library shared objects.
|
||||
*/
|
||||
std::string dllPath;
|
||||
|
||||
/**
|
||||
* The shared object access point.
|
||||
*/
|
||||
DLLAccess dllAccess;
|
||||
|
||||
/**
|
||||
* Function pointer to create the Helix engine.
|
||||
*/
|
||||
FPRMCREATEENGINE createEngine;
|
||||
|
||||
/**
|
||||
* Function pointer to close the Helix engine.
|
||||
*/
|
||||
FPRMCLOSEENGINE closeEngine;
|
||||
|
||||
/**
|
||||
* The Helix Client engine.
|
||||
*/
|
||||
IHXClientEngine * clientEngine;
|
||||
|
||||
/**
|
||||
* The Helix player.
|
||||
*/
|
||||
IHXPlayer * player;
|
||||
|
||||
/**
|
||||
* The example client context.
|
||||
*/
|
||||
ClientContext * clientContext;
|
||||
|
||||
/**
|
||||
* The URL to play.
|
||||
*/
|
||||
std::string url;
|
||||
|
||||
/**
|
||||
* The event handling thread.
|
||||
*/
|
||||
pthread_t eventHandlingThread;
|
||||
|
||||
/**
|
||||
* Flag to mark if the event handling thread should be running
|
||||
* and handling events.
|
||||
* This is set by the HelixPlayer object, and read by the thread
|
||||
* to determine when to stop.
|
||||
*/
|
||||
bool handleEvents;
|
||||
|
||||
/**
|
||||
* Flag to indicate if the player is currently playing.
|
||||
* Make sure no to rely on this flag, as it's not aware of
|
||||
* the case that the playing has ended naturally. Always
|
||||
* call isPlaying() instead.
|
||||
*/
|
||||
bool playing;
|
||||
|
||||
|
||||
public:
|
||||
/**
|
||||
* A virtual destructor, as this class has virtual functions.
|
||||
*/
|
||||
virtual
|
||||
~HelixPlayer(void) throw ()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the name of the XML element this object expects
|
||||
* to be sent to a call to configure().
|
||||
*
|
||||
* @return the name of the expected XML configuration element.
|
||||
*/
|
||||
static const std::string
|
||||
getConfigElementName(void) throw ()
|
||||
{
|
||||
return configElementNameStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure the object based on the XML element supplied.
|
||||
*
|
||||
* @param element the XML element to configure the object from.
|
||||
* @exception std::invalid_argument if the supplied XML element
|
||||
* contains bad configuraiton information
|
||||
* @exception std::logic_error if the scheduler daemon has already
|
||||
* been configured, and can not be reconfigured.
|
||||
*/
|
||||
virtual void
|
||||
configure(const xmlpp::Element & element)
|
||||
throw (std::invalid_argument,
|
||||
std::logic_error);
|
||||
|
||||
/**
|
||||
* Initialize the Helix Player object, so that it is ready to
|
||||
* play audio files.
|
||||
*
|
||||
* @exception std::exception on initialization problems.
|
||||
*/
|
||||
virtual void
|
||||
initialize(void) throw (std::exception);
|
||||
|
||||
/**
|
||||
* De-initialize the Helix Player object.
|
||||
*/
|
||||
virtual void
|
||||
deInitialize(void);
|
||||
|
||||
/**
|
||||
* Specify which audio resource to play.
|
||||
* The file may be a playlist, referencing other files, which
|
||||
* will be accessed automatically.
|
||||
* Note: this call will <b>not</b> start playing! You will
|
||||
* have to call the start() function to begin playing.
|
||||
*
|
||||
* @param fileUrl a URL to a file
|
||||
* @exception std::invalid_argument if the supplied fileUrl
|
||||
* seems to be invalid.
|
||||
* @see #start
|
||||
*/
|
||||
virtual void
|
||||
playThis(const std::string fileUrl) throw (std::invalid_argument);
|
||||
|
||||
/**
|
||||
* Start playing.
|
||||
* This call will start playing the active playlist, which was
|
||||
* set by a previous call to playThis().
|
||||
* Playing can be stopped by calling stop().
|
||||
*
|
||||
* @exception std::logic_error if there was no previous call to
|
||||
* playThis().
|
||||
* @see #playThis
|
||||
* @see #stop
|
||||
*/
|
||||
virtual void
|
||||
start(void) throw (std::logic_error);
|
||||
|
||||
/**
|
||||
* Tell if we're currently playing.
|
||||
*
|
||||
* @return true of the player is currently playing, false
|
||||
* otherwise.
|
||||
*/
|
||||
virtual bool
|
||||
isPlaying(void) throw ();
|
||||
|
||||
/**
|
||||
* Stop playing.
|
||||
*
|
||||
* @exception std::logic_error if there was no previous call to
|
||||
* start()
|
||||
*/
|
||||
virtual void
|
||||
stop(void) throw (std::logic_error);
|
||||
};
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
/**
|
||||
* The main function of the thread that calls for handling of events
|
||||
* in the createEngine all the time.
|
||||
*
|
||||
* @param helixPlayer a pointer to the HelixPlayer object that started
|
||||
* this thread.
|
||||
* @return always 0
|
||||
*/
|
||||
void *
|
||||
eventHandlerThread(void * helixPlayer) throw ();
|
||||
|
||||
|
||||
} // namespace PlaylistExecutor
|
||||
} // namespace LiveSupport
|
||||
|
||||
/**
|
||||
* A global function returning the shared object access path to
|
||||
* the Helix library.
|
||||
*/
|
||||
DLLAccessPath* GetDLLAccessPath(void);
|
||||
|
||||
|
||||
#endif // HelixPlayer_h
|
||||
|
|
@ -0,0 +1,188 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/HelixPlayerTest.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#else
|
||||
#error "Need unistd.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
#include "HelixPlayer.h"
|
||||
#include "HelixPlayerTest.h"
|
||||
|
||||
|
||||
using namespace LiveSupport::PlaylistExecutor;
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(HelixPlayerTest);
|
||||
|
||||
/**
|
||||
* The name of the configuration file for the Helix player.
|
||||
*/
|
||||
static const std::string configFileName = "etc/helixPlayer.xml";
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Set up the test environment
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayerTest :: setUp(void) throw ()
|
||||
{
|
||||
try {
|
||||
Ptr<xmlpp::DomParser>::Ref parser(
|
||||
new xmlpp::DomParser(configFileName, true));
|
||||
const xmlpp::Document * document = parser->get_document();
|
||||
const xmlpp::Element * root = document->get_root_node();
|
||||
|
||||
helixPlayer.reset(new HelixPlayer());
|
||||
helixPlayer->configure(*root);
|
||||
|
||||
} catch (std::invalid_argument &e) {
|
||||
std::cerr << "semantic error in configuration file" << std::endl;
|
||||
} catch (xmlpp::exception &e) {
|
||||
std::cerr << e.what() << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Clean up the test environment
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayerTest :: tearDown(void) throw ()
|
||||
{
|
||||
helixPlayer.reset();
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Test to see if the HelixPlayer engine can be started and stopped
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayerTest :: firstTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
try {
|
||||
helixPlayer->initialize();
|
||||
CPPUNIT_ASSERT(!helixPlayer->isPlaying());
|
||||
helixPlayer->deInitialize();
|
||||
} catch (std::exception &e) {
|
||||
CPPUNIT_FAIL("failed to initialize or de-initialize HelixPlayer");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Play something simple
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayerTest :: simplePlayTest(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
helixPlayer->initialize();
|
||||
helixPlayer->playThis("file:var/test.mp3");
|
||||
CPPUNIT_ASSERT(!helixPlayer->isPlaying());
|
||||
helixPlayer->start();
|
||||
CPPUNIT_ASSERT(helixPlayer->isPlaying());
|
||||
while (helixPlayer->isPlaying()) {
|
||||
usleep(10000);
|
||||
}
|
||||
CPPUNIT_ASSERT(!helixPlayer->isPlaying());
|
||||
helixPlayer->deInitialize();
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Check for error conditions
|
||||
*----------------------------------------------------------------------------*/
|
||||
void
|
||||
HelixPlayerTest :: checkErrorConditions(void)
|
||||
throw (CPPUNIT_NS::Exception)
|
||||
{
|
||||
helixPlayer->initialize();
|
||||
|
||||
bool gotException;
|
||||
|
||||
CPPUNIT_ASSERT(!helixPlayer->isPlaying());
|
||||
|
||||
gotException = false;
|
||||
try {
|
||||
helixPlayer->start();
|
||||
} catch (std::logic_error &e) {
|
||||
gotException = true;
|
||||
}
|
||||
CPPUNIT_ASSERT(gotException);
|
||||
|
||||
gotException = false;
|
||||
try {
|
||||
helixPlayer->stop();
|
||||
} catch (std::logic_error &e) {
|
||||
gotException = true;
|
||||
}
|
||||
CPPUNIT_ASSERT(gotException);
|
||||
|
||||
gotException = false;
|
||||
try {
|
||||
helixPlayer->playThis("totally/bad/URL");
|
||||
} catch (std::invalid_argument &e) {
|
||||
gotException = true;
|
||||
}
|
||||
CPPUNIT_ASSERT(gotException);
|
||||
|
||||
gotException = false;
|
||||
try {
|
||||
helixPlayer->start();
|
||||
} catch (std::logic_error &e) {
|
||||
gotException = true;
|
||||
}
|
||||
CPPUNIT_ASSERT(gotException);
|
||||
|
||||
helixPlayer->deInitialize();
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/Attic/HelixPlayerTest.h,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef HelixPlayerTest_h
|
||||
#define HelixPlayerTest_h
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error This is a C++ include file
|
||||
#endif
|
||||
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#include <cppunit/extensions/HelperMacros.h>
|
||||
|
||||
|
||||
namespace LiveSupport {
|
||||
namespace PlaylistExecutor {
|
||||
|
||||
/* ================================================================ constants */
|
||||
|
||||
|
||||
/* =================================================================== macros */
|
||||
|
||||
|
||||
/* =============================================================== data types */
|
||||
|
||||
/**
|
||||
* Unit test for the HelixPlayer class.
|
||||
*
|
||||
* @author $Author: maroy $
|
||||
* @version $Revision: 1.1 $
|
||||
* @see HelixPlayer
|
||||
*/
|
||||
class HelixPlayerTest : public CPPUNIT_NS::TestFixture
|
||||
{
|
||||
CPPUNIT_TEST_SUITE(HelixPlayerTest);
|
||||
CPPUNIT_TEST(firstTest);
|
||||
CPPUNIT_TEST(simplePlayTest);
|
||||
CPPUNIT_TEST(checkErrorConditions);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
private:
|
||||
|
||||
/**
|
||||
* The helix player to use for the tests.
|
||||
*/
|
||||
Ptr<HelixPlayer>::Ref helixPlayer;
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
/**
|
||||
* A simple test.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
firstTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
/**
|
||||
* Play something simple.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
simplePlayTest(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
/**
|
||||
* Check for error conditions.
|
||||
*
|
||||
* @exception CPPUNIT_NS::Exception on test failures.
|
||||
*/
|
||||
void
|
||||
checkErrorConditions(void) throw (CPPUNIT_NS::Exception);
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Set up the environment for the test case.
|
||||
*/
|
||||
void
|
||||
setUp(void) throw ();
|
||||
|
||||
/**
|
||||
* Clean up the environment after the test case.
|
||||
*/
|
||||
void
|
||||
tearDown(void) throw ();
|
||||
};
|
||||
|
||||
|
||||
/* ================================================= external data structures */
|
||||
|
||||
|
||||
/* ====================================================== function prototypes */
|
||||
|
||||
|
||||
} // namespace PlaylistExecutor
|
||||
} // namespace LiveSupport
|
||||
|
||||
#endif // HelixPlayerTest_h
|
||||
|
|
@ -0,0 +1,281 @@
|
|||
/*------------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Media Development Loan Fund
|
||||
|
||||
This file is part of the LiveSupport project.
|
||||
http://livesupport.campware.org/
|
||||
To report bugs, send an e-mail to bugs@campware.org
|
||||
|
||||
LiveSupport is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
LiveSupport is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LiveSupport; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Author : $Author: maroy $
|
||||
Version : $Revision: 1.1 $
|
||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/playlistExecutor/src/TestRunner.cxx,v $
|
||||
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/* ============================================================ include files */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "configure.h"
|
||||
#endif
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#else
|
||||
#error "Need unistd.h"
|
||||
#endif
|
||||
|
||||
#if HAVE_GETOPT_H
|
||||
#include <getopt.h>
|
||||
#else
|
||||
#error "Need getopt.h"
|
||||
#endif
|
||||
|
||||
#include <fstream>
|
||||
|
||||
#include <cppunit/BriefTestProgressListener.h>
|
||||
#include <cppunit/CompilerOutputter.h>
|
||||
#include <cppunit/XmlOutputter.h>
|
||||
#include <cppunit/extensions/TestFactoryRegistry.h>
|
||||
#include <cppunit/TestResult.h>
|
||||
#include <cppunit/TestResultCollector.h>
|
||||
#include <cppunit/TestRunner.h>
|
||||
|
||||
#include "LiveSupport/Core/Ptr.h"
|
||||
|
||||
|
||||
using namespace LiveSupport::Core;
|
||||
|
||||
/* =================================================== local data structures */
|
||||
|
||||
|
||||
/* ================================================ local constants & macros */
|
||||
|
||||
/**
|
||||
* Our copyright notice, should be at most 80 columns
|
||||
*/
|
||||
static const char copyrightNotice[] =
|
||||
"Copyright (c) 2004 Media Development Loan Fund under the GNU GPL";
|
||||
|
||||
/**
|
||||
* String describing the short options.
|
||||
*/
|
||||
static const char options[] = "ho:s:v";
|
||||
|
||||
/**
|
||||
* Structure describing the long options
|
||||
*/
|
||||
static const struct option longOptions[] = {
|
||||
{ "help", no_argument, 0, 'h' },
|
||||
{ "output", required_argument, 0, 'o' },
|
||||
{ "stylesheet", required_argument, 0, 's' },
|
||||
{ "version", no_argument, 0, 'v' },
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
/**
|
||||
* The encoding to use for the output file.
|
||||
*/
|
||||
static const std::string encoding = "utf-8";
|
||||
|
||||
/**
|
||||
* The output XML file name.
|
||||
*/
|
||||
static Ptr<std::string>::Ref xmlOutFileName;
|
||||
|
||||
/**
|
||||
* The XSLT attached to the output file.
|
||||
*/
|
||||
static Ptr<std::string>::Ref xsltFileName;
|
||||
|
||||
|
||||
/* =============================================== local function prototypes */
|
||||
|
||||
/**
|
||||
* Print program version.
|
||||
*
|
||||
* @param os the std::ostream to print to.
|
||||
*/
|
||||
static void
|
||||
printVersion ( std::ostream & os );
|
||||
|
||||
/**
|
||||
* Print program usage information.
|
||||
*
|
||||
* @param invocation the command line command used to invoke this program.
|
||||
* @param os the std::ostream to print to.
|
||||
*/
|
||||
static void
|
||||
printUsage ( const char invocation[],
|
||||
std::ostream & os );
|
||||
|
||||
/**
|
||||
* Process command line arguments.
|
||||
*
|
||||
* @param argc the number of arguments.
|
||||
* @param argv the arguments themselves.
|
||||
* @return true of all went well, false in case the program should exit
|
||||
* after this call.
|
||||
*/
|
||||
static bool
|
||||
processArguments(int argc, char *argv[]);
|
||||
|
||||
|
||||
/* ============================================================= module code */
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Run all tests
|
||||
*----------------------------------------------------------------------------*/
|
||||
int
|
||||
main( int argc,
|
||||
char * argv[] ) throw ()
|
||||
{
|
||||
if (!processArguments(argc, argv)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Create the event manager and test controller
|
||||
CPPUNIT_NS::TestResult controller;
|
||||
|
||||
// Add a listener that colllects test result
|
||||
CPPUNIT_NS::TestResultCollector result;
|
||||
controller.addListener( &result );
|
||||
|
||||
// Add a listener that print dots as test run.
|
||||
CPPUNIT_NS::BriefTestProgressListener progress;
|
||||
controller.addListener( &progress );
|
||||
|
||||
// Add the top suite to the test runner
|
||||
CPPUNIT_NS::TestRunner runner;
|
||||
runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
|
||||
runner.run( controller );
|
||||
|
||||
// Print test in a compiler compatible format.
|
||||
CPPUNIT_NS::CompilerOutputter outputter( &result, std::cerr );
|
||||
outputter.setLocationFormat("%p:%l:");
|
||||
outputter.write();
|
||||
|
||||
// also generate an XML document as an output
|
||||
std::ofstream xmlOutFile(xmlOutFileName->c_str());
|
||||
CPPUNIT_NS::XmlOutputter xmlOutputter(&result, xmlOutFile, encoding);
|
||||
xmlOutputter.setStandalone(false);
|
||||
if (xsltFileName) {
|
||||
xmlOutputter.setStyleSheet(*xsltFileName);
|
||||
}
|
||||
xmlOutputter.write();
|
||||
xmlOutFile.flush();
|
||||
xmlOutFile.close();
|
||||
|
||||
return result.wasSuccessful() ? 0 : 1;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Process command line arguments.
|
||||
*----------------------------------------------------------------------------*/
|
||||
static bool
|
||||
processArguments(int argc, char *argv[])
|
||||
{
|
||||
int i;
|
||||
|
||||
while ((i = getopt_long(argc, argv, options, longOptions, 0)) != -1) {
|
||||
switch (i) {
|
||||
case 'h':
|
||||
printUsage(argv[0], std::cout);
|
||||
return false;
|
||||
|
||||
case 'o':
|
||||
xmlOutFileName.reset(new std::string(optarg));
|
||||
break;
|
||||
|
||||
case 's':
|
||||
xsltFileName.reset(new std::string(optarg));
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
printVersion(std::cout);
|
||||
return false;
|
||||
|
||||
default:
|
||||
printUsage(argv[0], std::cout);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (optind < argc) {
|
||||
std::cerr << "error processing command line arguments" << std::endl;
|
||||
printUsage(argv[0], std::cout);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!xmlOutFileName) {
|
||||
std::cerr << "mandatory option output file name not specified"
|
||||
<< std::endl;
|
||||
printUsage(argv[0], std::cout);
|
||||
return false;
|
||||
}
|
||||
|
||||
std::cerr << "writing output to '" << *xmlOutFileName << '\'' << std::endl;
|
||||
if (xsltFileName) {
|
||||
std::cerr << "using XSLT file '" << *xsltFileName << '\'' << std::endl;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Print program version.
|
||||
*----------------------------------------------------------------------------*/
|
||||
static void
|
||||
printVersion ( std::ostream & os )
|
||||
{
|
||||
os << PACKAGE_NAME << ' ' << PACKAGE_VERSION << std::endl
|
||||
<< "Unit test runner" << std::endl
|
||||
<< copyrightNotice << std::endl;
|
||||
}
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Print program usage.
|
||||
*----------------------------------------------------------------------------*/
|
||||
static void
|
||||
printUsage ( const char invocation[],
|
||||
std::ostream & os )
|
||||
{
|
||||
os << PACKAGE_NAME << ' ' << PACKAGE_VERSION << std::endl
|
||||
<< "Unit test runner" << std::endl
|
||||
<< std::endl
|
||||
<< "Usage: " << invocation << " [OPTION]"
|
||||
<< std::endl
|
||||
<< " mandatory options:" << std::endl
|
||||
<< " -o, --output=file.name write test results into this XML file"
|
||||
<< std::endl
|
||||
<< " optional options:" << std::endl
|
||||
<< " -s, --stylesheet specify this XSLT for the output file"
|
||||
<< std::endl
|
||||
<< " this is either an absolute URI, or a"
|
||||
<< std::endl
|
||||
<< " relative path for the output document"
|
||||
<< std::endl
|
||||
<< " -h, --help display this help and exit" << std::endl
|
||||
<< " -v, --version display version information and exit"
|
||||
<< std::endl
|
||||
<< std::endl
|
||||
<< "Report bugs to " << PACKAGE_BUGREPORT << std::endl;
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
keep me
|
Binary file not shown.
Loading…
Reference in New Issue