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