dleslie     00/06/05 11:40:28

  Modified:    c/samples/ThreadSafe ThreadSafe.cpp
  Log:
  Changed input source global variable to a XalanNode.
  
  Revision  Changes    Path
  1.2       +19 -15    xml-xalan/c/samples/ThreadSafe/ThreadSafe.cpp
  
  Index: ThreadSafe.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/samples/ThreadSafe/ThreadSafe.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ThreadSafe.cpp    2000/06/05 18:11:11     1.1
  +++ ThreadSafe.cpp    2000/06/05 18:40:27     1.2
  @@ -41,9 +41,9 @@
        using std::string;
   #endif
   
  -// Used to hold compiled stylesheet, and XML source document.
  +// Used to hold compiled stylesheet and XML source document.
   StylesheetRoot* glbStylesheetRoot;
  -XSLTInputSource* glbSourceDoc;
  +XalanNode* glbDocSource;
   
   // Print messages tracking the progress of each thread, and the
   // beginning and end of the entire operation.
  @@ -60,7 +60,7 @@
   THREADFUNCTIONRETURN theThread(LPVOID        param)
   {
   // This routine uses a compiled stylesheet (glbStylesheetRoot), 
  -// and a binary input source (glbSourceDoc) to perform the 
  +// and a binary source tree (glbSourceDoc) to perform the 
   // transformation.
      
        const int       number = reinterpret_cast<int>(param);
  @@ -75,7 +75,7 @@
                                                                                
                          theXPathSupport);
        XPathFactoryDefault                             theXPathFactory;
   
  -     // Create a processor...and output start message.
  +     // Create a processor...and output the start message.
        XSLTEngineImpl  theProcessor(
                                        theParserLiaison,
                                        theXPathSupport,
  @@ -96,6 +96,9 @@
                                                theXPathSupport,
                                                theXObjectFactory);
   
  +  // Set the XSLTInputSource...
  +  XSLTInputSource xslIn(glbDocSource);
  +
        // Generate the output file name for this thread.
       ostrstream theFormatterOut;
       theFormatterOut << "birds" << number << ".out" << '\0';
  @@ -108,16 +111,17 @@
   
        // Set the processor to use the compiled stylesheet. Then do the 
transform
     // with the process() method that uses the compiled stylesheet.
  -     // Report both the start of the transformation and the termination of 
the thread.
  +     // Report the start of the transformation and the termination of the 
thread.
        theProcessor.setStylesheetRoot(glbStylesheetRoot);
        outputMessage(theThreadID,"Transforming");
  -  theProcessor.process(*glbSourceDoc,theResultTarget,ssExecutionContext);
  +  theProcessor.process(xslIn,theResultTarget,ssExecutionContext);
        outputMessage(theThreadID,"Finishing");
        return (0);
   }
   
   // Create and run the threads...
  -// Print messages tracking the progress of each thread...
  +// Print messages tracking the progress of each thread and of the 
  +// overall operation...
   void doThreads(int x)
   {
        DWORD dwStackSize = 4096;               // initial thread stack size
  @@ -190,7 +194,7 @@
                        XPathFactoryDefault                                   
ssXPathFactory;
   
                        // Create a processor...
  -      // This processor is used to compile the stylesheet. 
  +      // This processor is used to compile the stylesheet and the source 
document. 
         // Each thread uses its own processor to perform a transformation.
   
                        XSLTEngineImpl  ssProcessor(
  @@ -219,26 +223,26 @@
                        const XalanDOMString  theXSLFileName("birds.xsl");
                        const XalanDOMString  theXMLFileName("birds.xml");
   
  -                     // Our stylesheet input source...
  -                     XSLTInputSource         
ssStylesheetSourceXSL(c_wstr(theXSLFileName));
  +                     // Our stylesheet XML input document and XSL stylesheet
  +      XSLTInputSource   xmlDocSource(c_wstr(theXMLFileName));
  +                     XSLTInputSource         
xslStylesheetSource(c_wstr(theXSLFileName));
   
                        // Use the processor to create a StylesheetRoot for the 
specified
                        // input XSL.  This is the compiled stylesheet.  We 
don't have to
                        // delete it, since it is owned by the 
StylesheetConstructionContext
                        // instance.
  -                     glbStylesheetRoot = 
ssProcessor.processStylesheet(ssStylesheetSourceXSL,
  +                     glbStylesheetRoot = 
ssProcessor.processStylesheet(xslStylesheetSource,
                                                                                
                           ssConstructionContext);
                        assert(glbStylesheetRoot != 0);
                        
                        // Compile the XML source document as well. All threads 
will use
         // this binary representation of the source tree.
  -                     glbSourceDoc = new 
XSLTInputSource(c_wstr(theXMLFileName));
  +                     glbDocSource = 
ssProcessor.getSourceTreeFromInput(xmlDocSource);
         assert(glbSourceDoc != 0);
   
  -
         // Create and run the threads...
  -      // Every thread uses the same XML input object
  -      // XSL stylesheet object to perform a transformation.
  +      // Each thread uses the same XalanNode and 
  +      // StylesheetRoot to perform a transformation.
                        doThreads(10);
                }
                catch(...)
  
  
  

Reply via email to