summaryrefslogtreecommitdiff
path: root/configmgr/workben/local_io/cfglocal.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'configmgr/workben/local_io/cfglocal.cxx')
-rw-r--r--configmgr/workben/local_io/cfglocal.cxx666
1 files changed, 666 insertions, 0 deletions
diff --git a/configmgr/workben/local_io/cfglocal.cxx b/configmgr/workben/local_io/cfglocal.cxx
new file mode 100644
index 000000000000..8c2111b8f364
--- /dev/null
+++ b/configmgr/workben/local_io/cfglocal.cxx
@@ -0,0 +1,666 @@
+/*************************************************************************
+ *
+ * $RCSfile: cfglocal.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:13:43 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define _PRIVATE_TEST_
+
+#include <memory.h>
+#include <string.h>
+#include <stdio.h>
+
+#ifndef _VOS_SOCKET_HXX_
+#include <vos/socket.hxx>
+#endif
+
+#ifndef _CONFIGMGR_MISC_ATTRIBUTES_HXX_
+#include "attributes.hxx"
+#endif
+
+#ifndef _CONFIGMGR_SESSION_REMOTESESSION_HXX_
+#include "remotesession.hxx"
+#endif
+#ifndef _COM_SUN_STAR_XML_SAX_XDOCUMENTHANDLER_HPP_
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+#endif
+
+#ifndef _CPPUHELPER_SERVICEFACTORY_HXX_
+#include <cppuhelper/servicefactory.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE1_HXX_
+#include <cppuhelper/implbase1.hxx>
+#endif
+#ifndef _VOS_CONDITN_HXX_
+#include <vos/conditn.hxx>
+#endif
+
+#include <osl/time.h>
+
+#include "localsession.hxx"
+#include "confname.hxx"
+
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::xml;
+using namespace ::vos;
+using namespace ::cppu;
+using namespace ::configmgr;
+using namespace rtl;
+
+// #define USE_LAYOUT_NODE
+
+//=============================================================================
+//= a dirty littly class for printing ascii characters
+//=============================================================================
+class OAsciiOutput
+{
+protected:
+ sal_Char* m_pCharacters;
+
+public:
+ OAsciiOutput(const ::rtl::OUString& _rUnicodeChars);
+ ~OAsciiOutput() { delete m_pCharacters; }
+
+ const sal_Char* getCharacters() const { return m_pCharacters; }
+};
+
+//-----------------------------------------------------------------------------
+OAsciiOutput::OAsciiOutput(const ::rtl::OUString& _rUnicodeChars)
+{
+ sal_Int32 nLen = _rUnicodeChars.getLength();
+ m_pCharacters = new sal_Char[nLen + 1];
+ sal_Char* pFillPtr = m_pCharacters;
+ const sal_Unicode* pSourcePtr = _rUnicodeChars.getStr();
+#ifdef DBG_UTIL
+ sal_Bool bAsserted = sal_False;
+#endif
+ for (sal_Int32 i=0; i<nLen; ++i, ++pFillPtr, ++pSourcePtr)
+ {
+ OSL_ENSHURE(bAsserted || !(bAsserted = (*pSourcePtr >= 0x80)),
+ "OAsciiOutput::OAsciiOutput : non-ascii character found !");
+ *pFillPtr = *reinterpret_cast<const sal_Char*>(pSourcePtr);
+ }
+ *pFillPtr = 0;
+}
+
+#define ASCII_STRING(rtlOUString) OAsciiOutput(rtlOUString).getCharacters()
+#define UNI_STRING(salCharPtr) ::rtl::OUString::createFromAscii(salCharPtr)
+
+//=============================================================================
+//= OOpenNodeCallback
+//=============================================================================
+typedef ::cppu::WeakImplHelper1< sax::XDocumentHandler > OOpenNodeCallback_Base;
+class OOpenNodeCallback : public IOpenObjectCallback, public OOpenNodeCallback_Base
+{
+protected:
+ OUString m_sNodeId;
+ ::vos::OCondition& m_rFinishCondition;
+
+ enum ACTION { STARTELEMENT, CHARACTERS, ENDELEMENT };
+ ACTION m_eLastAction;
+ sal_Int32 m_nLevel;
+ sal_Bool m_bCloseStartTag;
+
+protected:
+ ~OOpenNodeCallback()
+ {
+ }
+
+public:
+ OOpenNodeCallback(::vos::OCondition& _rFinishCond) : m_rFinishCondition(_rFinishCond), m_nLevel(0), m_eLastAction(ENDELEMENT), m_bCloseStartTag(sal_False) { }
+
+ OUString getNodeId() const { return m_sNodeId; }
+
+ // IOpenObjectCallback
+ virtual void gotObjectId(const OUString &aName);
+
+ // IDataRequestCallback
+ virtual Reference< sax::XDocumentHandler > getDataReader() { return static_cast< sax::XDocumentHandler* >(this); }
+
+ // IRequestCallback
+ virtual void acknowledged(sal_Int32 _nTransId);
+ virtual void failed(sal_Int32 _nErrorCode);
+ virtual void done(const StatusInfo& _rStatus);
+
+ // IInterface
+ virtual void SAL_CALL acquire( ) throw (::com::sun::star::uno::RuntimeException) { OOpenNodeCallback_Base::acquire(); }
+ virtual void SAL_CALL release( ) throw (::com::sun::star::uno::RuntimeException) { OOpenNodeCallback_Base::release(); }
+
+ // XDocumentHandler
+ virtual void SAL_CALL startDocument( ) throw(sax::SAXException, RuntimeException) { }
+ virtual void SAL_CALL endDocument( ) throw(sax::SAXException, RuntimeException) { }
+ virtual void SAL_CALL startElement( const ::rtl::OUString& aName, const Reference< sax::XAttributeList >& xAttribs ) throw(sax::SAXException, RuntimeException);
+ virtual void SAL_CALL endElement( const ::rtl::OUString& aName ) throw(sax::SAXException, RuntimeException);
+ virtual void SAL_CALL characters( const ::rtl::OUString& aChars ) throw(sax::SAXException, RuntimeException);
+ virtual void SAL_CALL ignorableWhitespace( const ::rtl::OUString& aWhitespaces ) throw(sax::SAXException, RuntimeException) { }
+ virtual void SAL_CALL processingInstruction( const ::rtl::OUString& aTarget, const ::rtl::OUString& aData ) throw(sax::SAXException, RuntimeException) { }
+ virtual void SAL_CALL setDocumentLocator( const Reference< sax::XLocator >& xLocator ) throw(sax::SAXException, RuntimeException) { }
+};
+
+//.............................................................................
+inline void linefeed()
+{
+ // printf("\n");
+}
+
+//.............................................................................
+void printTabs(sal_Int32 _nCount)
+{
+ sal_Char* pBuffer = new sal_Char[2 * _nCount + 1];
+ memset(pBuffer, ' ', 2 * _nCount);
+ pBuffer[2 * _nCount] = 0;
+ // printf(pBuffer);
+}
+
+//-----------------------------------------------------------------------------
+void SAL_CALL OOpenNodeCallback::startElement( const ::rtl::OUString& _rName, const Reference< sax::XAttributeList >& xAttribs ) throw(sax::SAXException, RuntimeException)
+{
+ switch (m_eLastAction)
+ {
+ case STARTELEMENT:
+ if (m_bCloseStartTag)
+ {
+ // printf(">");
+ }
+
+ m_bCloseStartTag = sal_False;
+ // no break
+ case CHARACTERS:
+ case ENDELEMENT:
+ linefeed();
+ printTabs(m_nLevel);
+ break;
+ }
+ m_eLastAction = STARTELEMENT;
+ ++m_nLevel;
+ // printf("<%s", ASCII_STRING(_rName));
+ m_bCloseStartTag = sal_True;
+}
+
+//-----------------------------------------------------------------------------
+void SAL_CALL OOpenNodeCallback::endElement( const ::rtl::OUString& _rName ) throw(sax::SAXException, RuntimeException)
+{
+ --m_nLevel;
+ switch (m_eLastAction)
+ {
+ case STARTELEMENT:
+ if (m_bCloseStartTag)
+ {
+ // printf("/>");
+ }
+
+ m_bCloseStartTag = sal_False;
+ break;
+ case ENDELEMENT:
+ linefeed();
+ printTabs(m_nLevel);
+ // dont break
+ case CHARACTERS:
+ // printf("</%s>", ASCII_STRING(_rName));
+ break;
+ }
+ m_eLastAction = ENDELEMENT;
+}
+
+//-----------------------------------------------------------------------------
+void SAL_CALL OOpenNodeCallback::characters( const ::rtl::OUString& _rChars ) throw(sax::SAXException, RuntimeException)
+{
+ if (STARTELEMENT == m_eLastAction)
+ {
+ if (m_bCloseStartTag && _rChars.trim().getLength())
+ {
+ // printf(">");
+ m_bCloseStartTag = sal_False;
+ }
+ }
+ if (_rChars.trim().getLength() != 0)
+ {
+ // printf("%s", ASCII_STRING(_rChars));
+ m_eLastAction = CHARACTERS;
+ }
+}
+
+//-----------------------------------------------------------------------------
+void OOpenNodeCallback::gotObjectId(const OUString &_nId)
+{
+ m_sNodeId = _nId;
+ // printf("object id %i\n", m_nNodeId);
+}
+
+//-----------------------------------------------------------------------------
+void OOpenNodeCallback::acknowledged(sal_Int32 _nTransId)
+{
+ // printf("acknowledged, transaction id : %i\n", _nTransId);
+}
+
+//-----------------------------------------------------------------------------
+void OOpenNodeCallback::failed(sal_Int32 _nErrorCode)
+{
+ // printf("failed because of a connection error (%i)\n", _nErrorCode);
+ m_rFinishCondition.set();
+}
+
+//-----------------------------------------------------------------------------
+void OOpenNodeCallback::done(const StatusInfo& _rStatus)
+{
+ if (_rStatus.nCode)
+ {
+ printf("\n\ndone, but had an error : %s\n", ASCII_STRING(_rStatus.sMessage));
+ }
+ else
+ {
+ // printf("\n\nsuccessfully done\n", ASCII_STRING(_rStatus.sMessage));
+ }
+
+ m_rFinishCondition.set();
+}
+
+//=============================================================================
+//= ONodeUpdater
+//=============================================================================
+class ONodeUpdater : public IDOMNodeDataProvider
+{
+ sal_Bool m_bWriterLevel;
+ sal_Bool m_bAdd;
+public:
+ ONodeUpdater(sal_Bool _bStartAtWriterLevel, sal_Bool bAdd) : m_bWriterLevel(_bStartAtWriterLevel), m_bAdd(bAdd) { }
+
+ virtual void writeNodeData(const Reference< sax::XDocumentHandler >& _rHandler);
+};
+
+//-----------------------------------------------------------------------------
+void ONodeUpdater::writeNodeData(const Reference< sax::XDocumentHandler >& _rHandler)
+{
+ AttributeListImpl *pAttr = new AttributeListImpl;
+ Reference< sax::XAttributeList > xEmptyAttrList = pAttr;
+
+ pAttr = new AttributeListImpl;
+ pAttr->addAttribute(UNI_STRING("type"),UNI_STRING("CDATA"),UNI_STRING("string"));
+ Reference< sax::XAttributeList > xStringAttrList = pAttr;
+
+ if (m_bWriterLevel)
+ _rHandler->startElement(UNI_STRING("Writer"), xEmptyAttrList);
+#ifdef USE_LAYOUT_NODE
+ _rHandler->startElement(UNI_STRING("Layout"), xEmptyAttrList);
+ _rHandler->startElement(UNI_STRING("TabStops"), xEmptyAttrList);
+ if (m_bAdd)
+ _rHandler->characters(UNI_STRING("0.90"));
+ else
+ _rHandler->characters(UNI_STRING("99.99"));
+
+ _rHandler->endElement(UNI_STRING("TabStops"));
+ _rHandler->endElement(UNI_STRING("Layout"));
+#else
+ // _rHandler->startElement(UNI_STRING("com.sun.star.office.Setup"), xEmptyAttrList);
+ _rHandler->startElement(UNI_STRING("Modules"), xEmptyAttrList);
+ _rHandler->startElement(UNI_STRING("StandFonts"), xEmptyAttrList);
+ _rHandler->startElement(UNI_STRING("Standard"), xStringAttrList);
+ _rHandler->startElement(UNI_STRING("value"), xEmptyAttrList);
+ if (m_bAdd)
+ _rHandler->characters(UNI_STRING("Arial"));
+ else
+ _rHandler->characters(UNI_STRING("Courier"));
+
+ _rHandler->endElement(UNI_STRING("value"));
+ _rHandler->endElement(UNI_STRING("Standard"));
+ _rHandler->endElement(UNI_STRING("StandFonts"));
+ _rHandler->endElement(UNI_STRING("Modules"));
+ // _rHandler->endElement(UNI_STRING("com.sun.star.office.Setup"));
+
+ _rHandler->ignorableWhitespace(OUString());
+#endif
+ if (m_bWriterLevel)
+ _rHandler->endElement(UNI_STRING("Writer"));
+}
+
+//=============================================================================
+//= OSessionListener
+//=============================================================================
+class OSessionListener : public ISessionListener
+{
+protected:
+ oslInterlockedCount m_refCount;
+
+public:
+ // ISessionListener
+ virtual void nodeUpdated(const ::rtl::OUString& _rNodePath);
+ virtual void nodeDeleted(const ::rtl::OUString& _rNodePath);
+ virtual void nodeAdded(const ::rtl::OUString& _rNodePath);
+
+ // IInterface
+ virtual void SAL_CALL acquire( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release( ) throw (::com::sun::star::uno::RuntimeException);
+};
+
+//-----------------------------------------------------------------------------
+void OSessionListener::nodeUpdated(const ::rtl::OUString& _rNodePath)
+{
+ // printf("[listener] : a node was updated, node path : %s\n", ASCII_STRING(_rNodePath));
+}
+
+//-----------------------------------------------------------------------------
+void OSessionListener::nodeDeleted(const ::rtl::OUString& _rNodePath)
+{
+ // printf("[listener] : a node was deleted, node path : %s\n", ASCII_STRING(_rNodePath));
+}
+
+//-----------------------------------------------------------------------------
+void OSessionListener::nodeAdded(const ::rtl::OUString& _rNodePath)
+{
+ // printf("\n[listener] : a node was added, node path : %s", ASCII_STRING(_rNodePath));
+}
+
+//-----------------------------------------------------------------------------
+void SAL_CALL OSessionListener::acquire( ) throw (::com::sun::star::uno::RuntimeException)
+{
+ osl_incrementInterlockedCount(&m_refCount);
+}
+
+//-----------------------------------------------------------------------------
+void SAL_CALL OSessionListener::release( ) throw (::com::sun::star::uno::RuntimeException)
+{
+ if (!osl_decrementInterlockedCount(&m_refCount))
+ delete this;
+}
+
+//=============================================================================
+//=============================================================================
+
+//=============================================================================
+static ::rtl::OUString sHost;
+static sal_Int32 nPort;
+static ::rtl::OUString sRegistry = ::rtl::OUString::createFromAscii("applicat.rdb");
+
+//=============================================================================
+sal_Bool collectArgs(int argc, char * argv[])
+{
+ if (argc > 1)
+ {
+ sal_Char* pConnectTo = argv[1];
+ sal_Char* pSeparator = strchr(pConnectTo, ':');
+ if (pSeparator && (0 != *(pSeparator + 1)))
+ {
+ sHost = ::rtl::OUString(pConnectTo, pSeparator - pConnectTo, RTL_TEXTENCODING_ASCII_US);
+ nPort = ::rtl::OUString::createFromAscii(pSeparator + 1).toInt32();
+
+ if (argc > 2)
+ sRegistry = ::rtl::OUString::createFromAscii(argv[2]);
+ return sal_True;
+ }
+ }
+
+ printf("cfgclient - registry server client test ...\n\r\n\r");
+ printf("usage :\n\r");
+ printf(" cfgclient <server>:<port> [<registry file>]\n\r\n\r");
+ printf(" <server> : machine to connect to\n\r");
+ printf(" <port> : port to connect to\n\r");
+ printf(" <registry file> : (optional) registry to bootstrap from. defaulted to \"applicat.rdb\"\n\r\n\r");
+ return sal_False;
+}
+
+//=============================================================================
+
+#if (defined UNX) || (defined OS2)
+void main( int argc, char * argv[] )
+#else
+void _cdecl main( int argc, char * argv[] )
+#endif
+{
+ Reference< XMultiServiceFactory > xORB;
+ try
+ {
+ xORB = createRegistryServiceFactory(sRegistry, ::rtl::OUString());
+ }
+ catch (Exception& e)
+ {
+ printf("could not bootstrap the services from %s\n\r", ASCII_STRING(sRegistry));
+ printf(" (error message : %s)", ASCII_STRING(e.Message));
+ }
+
+ if (!xORB.is())
+ {
+ fprintf(stdout, "could not create the service factory !");
+ return;
+ }
+
+ ORef< OSessionListener > xListener = new OSessionListener;
+ {
+/*
+ ORemoteSession aSession(xORB);
+ // --------- connect ----------
+ sal_Bool bSuccess = aSession.connect(sHost, nPort, &aTimeout);
+ if (!bSuccess)
+ {
+ printf("could not connect to the server (error : %i) ...", aSession.getConnectionError());
+ return;
+ }
+*/
+
+ void testSession(const Reference< XMultiServiceFactory > &xORB, bool bPrint);
+
+ for (int i=0;i<100;i++)
+ {
+ TimeValue aStartTime, aEndTime;
+ osl_getSystemTime(&aStartTime);
+ testSession(xORB, false);
+ osl_getSystemTime(&aEndTime);
+
+ sal_Int32 nSeconds = aEndTime.Seconds - aStartTime.Seconds;
+ sal_Int32 nNanoSec = aEndTime.Nanosec - aStartTime.Nanosec;
+ if (nNanoSec < 0)
+ {
+ nNanoSec = 1000000000 - nNanoSec;
+ nSeconds++;
+ }
+
+ cout << "Time: " << nSeconds << ". " << nNanoSec << endl;
+ }
+ }
+}
+
+void testSession(const Reference< XMultiServiceFactory > &xORB, bool bPrint)
+{
+ TimeValue aTimeout;
+ aTimeout.Seconds = 5;
+ aTimeout.Nanosec = 0;
+
+
+ // create it .. and connect
+ LocalSession aSession(xORB);
+
+ // --------- openSession ----------
+
+ OUString aRootPath = OUString::createFromAscii("f:/local/SRC598/configmgr/workben/local_io");
+ // f:/local/SRC595/configmgr/workben/local_io);
+ aSession.open(aRootPath);
+
+ if (aSession.isOpen())
+ {
+ if (bPrint) printf("\nopened the session ...");
+ }
+ else
+ {
+ printf("\ncould not open the session ... exiting\n\n");
+ return;
+ }
+
+ // aSession.setListener(xListener.getBodyPtr());
+
+ OCondition aWaitForSomething;
+ aWaitForSomething.reset();
+
+ // --------- openNode ----------
+ char* pWriterNode = "com.sun.star.Setup/Modules";
+ if (bPrint) printf("\nsending an openNode request for %s ...\n", pWriterNode);
+ ORef< OOpenNodeCallback > xOpenCallback = new OOpenNodeCallback(aWaitForSomething);
+ aSession.openNode(UNI_STRING(pWriterNode), 2, xOpenCallback.getBodyPtr());
+
+ aTimeout.Seconds = 30;
+ switch (aWaitForSomething.wait(&aTimeout))
+ {
+ case ICondition::result_error:
+ printf("error while waiting for the callback ... exiting\n\n");
+ return;
+ case ICondition::result_timeout:
+ if (bPrint) printf("timed out ... exiting\n\n");
+ return;
+ }
+
+ OUString sOpenedNode = xOpenCallback->getNodeId();
+
+// aSession.getNode(UNI_STRING("com.sun.star.Spreadsheet"), NULL);
+//
+// // --------- getNode (1) ----------
+//#ifdef USE_LAYOUT_NODE
+// char* pLayoutNode = "com.sun.star.office.Setup/Modules";
+//#else
+ char* pLayoutNode = "com.sun.star.Setup/Modules";
+//#endif
+// printf("\nsending an getNode request for %s ...\n", pLayoutNode);
+// aWaitForSomething.reset();
+// aSession.getNode(UNI_STRING(pLayoutNode), new OOpenNodeCallback(aWaitForSomething));
+//
+// switch (aWaitForSomething.wait(&aTimeout))
+// {
+// case ICondition::result_error:
+// printf("error while waiting for the callback ... exiting\n\n");
+// return;
+// case ICondition::result_timeout:
+// printf("timed out ... exiting\n\n");
+// return;
+// }
+
+ // --------- addNode ----------
+ if (bPrint) printf("\n\naddNode ....");
+ ONodeUpdater aAddTabstops(sal_False, true); // true = WRITER LEVEL
+ aWaitForSomething.reset();
+ aSession.addNode(sOpenedNode, UNI_STRING(pLayoutNode), &aAddTabstops, new OOpenNodeCallback(aWaitForSomething));
+ switch (aWaitForSomething.wait(&aTimeout))
+ {
+ case ICondition::result_error:
+ printf("error while waiting for the callback ... exiting\n\n");
+ return;
+ case ICondition::result_timeout:
+ if (bPrint) printf("timed out ... exiting\n\n");
+ return;
+ }
+
+ // --------- updateNode ----------
+ if (bPrint) printf("\n\nokay, let's try an update ....\n");
+
+ ONodeUpdater aUpdateWriter(sal_False, false);
+ aWaitForSomething.reset();
+ aSession.updateNode(sOpenedNode, UNI_STRING(pLayoutNode), &aUpdateWriter, new OOpenNodeCallback(aWaitForSomething));
+
+ switch (aWaitForSomething.wait(&aTimeout))
+ {
+ case ICondition::result_error:
+ printf("error while waiting for the callback ... exiting\n\n");
+ return;
+ case ICondition::result_timeout:
+ if (bPrint) printf("timed out ... exiting\n\n");
+ return;
+ }
+
+ // --------- deleteNode ----------
+ char* pLayoutNode2 = "com.sun.star.Setup/Modules/StandFonts";
+
+ if (bPrint) printf("\n\ndeleteNode ....");
+ aWaitForSomething.reset();
+ aSession.deleteNode(sOpenedNode, UNI_STRING(pLayoutNode2), new OOpenNodeCallback(aWaitForSomething));
+ switch (aWaitForSomething.wait(&aTimeout))
+ {
+ case ICondition::result_error:
+ printf("error while waiting for the callback ... exiting\n\n");
+ return;
+ case ICondition::result_timeout:
+ if (bPrint) printf("timed out ... exiting\n\n");
+ return;
+ }
+
+/*
+ // --------- startListening ----------
+ printf("\n\nadding a listener for the Layout node\n");
+ Sequence< ::rtl::OUString > aNodesToListen(1);
+ aNodesToListen[0] = UNI_STRING(pLayoutNode);
+ aSession.startListening(aNodesToListen, NULL);
+
+ printf("waiting 10 seconds ....\n\n");
+ aWaitForSomething.reset();
+ aTimeout.Seconds = 10;
+ aWaitForSomething.wait(&aTimeout);
+*/
+ // --------- getNode (2) ----------
+// printf("\ndoing a new getNode for the Layout node ...\n");
+// aWaitForSomething.reset();
+// aSession.getNode(UNI_STRING(pLayoutNode), new OOpenNodeCallback(aWaitForSomething));
+// switch (aWaitForSomething.wait(&aTimeout))
+// {
+// case ICondition::result_error:
+// printf("error while waiting for the callback ... exiting\n\n");
+// return;
+// case ICondition::result_timeout:
+// printf("timed out ... exiting\n\n");
+// return;
+// }
+
+ aSession.closeNode(sOpenedNode, NULL);
+ aSession.close(NULL);
+
+}
+