(file) Return to cimom_handle.html CVS log (file) (dir) Up to [Pegasus] / pegasus

File: [Pegasus] / pegasus / Attic / cimom_handle.html (download) / (as text)
Revision: 1.1.2.2, Fri Mar 7 17:56:48 2003 UTC (21 years, 2 months ago) by mday
Branch: mday-2-0-patches
Changes since 1.1.2.1: +476 -3569 lines
changed CIMOMHandle to incorporate architecture team comments

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>PEP # ?: Pegasus 2.2 CIMOMHandle</title>
    <link rel="stylesheet" type="text/css" href="http://www.soft-hackle.net/md.css">
  </head>

  <body>
  <table >
    <tr>

      <td>
	<img height="70" src="http://www.opengroup.org/images/pegicon2.gif" width="70" border="0">
      </td>
      <td>
	<h1>PEP # ?: Pegasus CIMOMHandle</h1>
      </td>
    </tr>
  </table>

    <table class="comment">
      <tr align="left">
	<th>Type</th><th>Status</th><th>Approveers</th>
      </tr>
      <tr>
	<td>Architecture</td><td>Draft</td><td>Pegasus architecture team</td>
      </tr>
    </table>
    <table class="comment">
      <tr align="left">
	<th>Version</th><th>Date</th><th>Author</th><th>Comments</th>
      </tr>
      <tr>
	<td>1.0</td><td>Thu Feb 13 11:58:12 2003</td><td>Mike Day</td><td><i>initial submission</i></td>
      </tr>
      <tr>
	<td>2.0</td><td>Fri Mar  7 12:17:45 2003</td><td>Mike Day</td>
	<td><i>
	    Changed handling of timeout to use an OperationContext container.<br>
	    Upgraded interfaces to be consistent with CIMClient. <br>
	    Changed exception specification to throw CIMException.<br>
	    Exception error code and string are captured from CIMResponseMessage<br>
	    and rethrown to provider whenever the CIM_ERR code is not zero.
	  </i></td>
      </tr>
    </table>
    
    <hr>

      <h2>Summary</h2>
      <p>
	The CIMOMHandle in Pegasus is the object that providers must
	use to gain access to Pegasus services including the
	repository and other providers. A functioning CIMOMHandle is
	necessary for association support. 
      </p>
      <p>
	The CIMOMhandle also serves a useful role for asynchronous
	providers in that it facilitates communication of status
	between Pegasus and its providers. For example, some providers
	must always remain loaded, or must ensure they are not
	unloaded during a critical or time consuming operation. They
	need the CIMOMHandle to indicate this status back to
	Pegasus.
      </p>
      
      <h2>Problem Solved/Feature Added</h2>
      <p>
	The CIMOMHandle in Pegasus does not work right now. This
	document proposes a redesign of the CIMOMHandle to ensure it
	works and fulfills present and future requirements. 
      </p>

      <h3>Solution Requirements</h3>
      <p>
	Pegasus requires the CIMOMHandle to provide the following
	facilities: 
      </p>
      <div class="example">
	<ol>
	  <li>Complete procedural interface to Pegasus client
	    operations.</li>
	  <li>Execution threads must be separated to avoid any
	    possibility of deadlock. Recursion into the provider is
	    therefore allowed. Recursion into the CIMOMHandle is not.</li>
	  <li>The Pegasus Provider Manager must know when a given
	    provider is executing a call back into Pegasus via the
	    CIMOMHandle.</li>
	  <li>Providers must be able to proactively protect themselves from being
	    unloaded.</li>
	  <li>The CIMOM handle must recover completely whenever it is
	    called recursively.</li>
	</ol>
      </div>

      <h3>Proposed Solution</h3>
      <p>
	This document proposes adding a new Server component to
	Pegasus that acts as a binary request encoder/decoder. The
	CIMOMHandle presents providers with what is logically a CIMClient
	interface. However, instead of generating CIM/XML operations,
	the CIMOMHandle enqueues binary CIMRequest/Response messages
	to the new Server component. 
      </p>

      <p>
	The new Server component fulfills the role of both request
	decoder and response encoder. Except that it does not
	encode/decode; it only passes the preformed messages through
	the normal execution path and forwards the response back to
	the CIMOMHandle.
      </p>

      <h4>Existing Pegasus Client Request Processing</h4>
      <div class="comment" align="center">
      <img alt="Existing Pegasus client request flow"
	   src="http://www.soft-hackle.net/peg_client.jpg"</img>
	<p>
	  Existing client operations arrive at Pegasus as CIM/XML
	  documents and are decoded into CIMMessage objects. Then they
	  are dispatched to Pegasus. Responses are encoded from
	  CIMMessage objects back into CIM/XML documents. 
	</p>
      </div>
      

      <h4>CIMOMHandle Request Processing</h4>
      <div class="comment" align="center">
      <img alt="Existing Pegasus client request flow"
	   src="http://www.soft-hackle.net/binary_client.jpg"</img>
	<p>
	  CIMOMHandle client requests originate as CIMMessage
	  objects. They don't need to be decoded. They follow the
	  exact same processing path as <i>decoded</i> client
	  operations.
	</p>
	<p>
	  Responses to CIMOMHandle operations follow the exact same
	  processing paths as Client responses, up to the encoding
	  step. Instead of being encoded and transmitted, they are
	  enqueued back to the CIMOMhandle. The CIMOMHandle marshals
	  the response data and returns from the method call back to
	  the provider. 
	</p>
      </div>

      <h2> Advantages and disadvantages of proposed design</h2>
      <p>
	The advantages to this proposal include the following: 
	<ol class="enumerated">
	  <li>Small incremental code size, around 2k. Very small
	    memory footprint. Each CIMOMHandle uses as much memory as
	    a MessageQueue plus around 400 bytes, requires no Thread.</li>
	  <li>Requires no additional libraries (such as
	    CIMClient).</li>
	  <li>Performance is much faster than CIMClient due to the
	    elimination of message encoding/decoding.</li>
	  <li>Asynchronous operation is preserved intact.</li>
	  <li>The Binary Request handler can be reused for other
	    procedural client interfaces (SOAP, Java, etc.). 
	</ol>
      </p>
      
      <h2>Alternative approaches and their advantages and
	disadvantages.</h2>
      <p>
	The alternative I considered was to use the CIMClient class to
	invoke the client interface from the CIMOMHandle. However,
	this approach has the following disadvantages: 
	<ol class="enumerated">
	  <li>Size and resources. Each CIMOMHandle would require its
	    own CIMClient class. It would consume an HTTPConnection
	    and associated resources for every method invocation.</li>
	  <li>Performance. Most of the CPU cycles would be wasted
	    encoding a CIMMessage, transmitting the XML, decoding the XML,
	    re-encoding the XML, and re-decoding the XML once again.</li>
	</ol>
      </p>

      <h2> Proposed schedule.</h2>
      <p>
	This proposal is already implemented. Source code is included
	at the end of this document. It can be committed to the head
	of the repository immediately upon acceptance by the
	Architecture Team. 
      </p>

      <h2>Risk Mitigation</h2>
      <p>
	To Mimimize risk, I have already implemented and tested this
      proposal in the mday-2-0-patches branch of the CVS repository. </p>

      <h2>Source Code</h2>

      <h3>CIMOMHandle.h</h3>
      <!-- code2html add -lcc -n src/Pegasus/Provider/CIMOMHandle.h
      --><!-- code2html delete start --><pre><a name="1_line1">  1</a> <font color="#444444">//%///-*-c++-*-/////////////////////////////////////////////////////////////////</font>
<a name="1_line2">  2</a> <font color="#444444">//</font>
<a name="1_line3">  3</a> <font color="#444444">// Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,</font>
<a name="1_line4">  4</a> <font color="#444444">// The Open Group, Tivoli Systems</font>
<a name="1_line5">  5</a> <font color="#444444">//</font>
<a name="1_line6">  6</a> <font color="#444444">// Permission is hereby granted, free of charge, to any person obtaining a copy</font>
<a name="1_line7">  7</a> <font color="#444444">// of this software and associated documentation files (the &quot;Software&quot;), to</font>
<a name="1_line8">  8</a> <font color="#444444">// deal in the Software without restriction, including without limitation the</font>
<a name="1_line9">  9</a> <font color="#444444">// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</font>
<a name="1_line10"> 10</a> <font color="#444444">// sell copies of the Software, and to permit persons to whom the Software is</font>
<a name="1_line11"> 11</a> <font color="#444444">// furnished to do so, subject to the following conditions:</font>
<a name="1_line12"> 12</a> <font color="#444444">//</font>
<a name="1_line13"> 13</a> <font color="#444444">// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN</font>
<a name="1_line14"> 14</a> <font color="#444444">// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED</font>
<a name="1_line15"> 15</a> <font color="#444444">// &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT</font>
<a name="1_line16"> 16</a> <font color="#444444">// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR</font>
<a name="1_line17"> 17</a> <font color="#444444">// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT</font>
<a name="1_line18"> 18</a> <font color="#444444">// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</font>
<a name="1_line19"> 19</a> <font color="#444444">// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION</font>
<a name="1_line20"> 20</a> <font color="#444444">// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font>
<a name="1_line21"> 21</a> <font color="#444444">//</font>
<a name="1_line22"> 22</a> <font color="#444444">//==============================================================================</font>
<a name="1_line23"> 23</a> <font color="#444444">//</font>
<a name="1_line24"> 24</a> <font color="#444444">// Author: Chip Vincent (cvincent@us.ibm.com)</font>
<a name="1_line25"> 25</a> <font color="#444444">//</font>
<a name="1_line26"> 26</a> <font color="#444444">// Modified By: Mike Brasher (mbrasher@bmc.com)</font>
<a name="1_line27"> 27</a> <font color="#444444">//              Yi Zhou, Hewlett-Packard Company (yi_zhou@hp.com)</font>
<a name="1_line28"> 28</a> <font color="#444444">//              Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)</font>
<a name="1_line29"> 29</a> <font color="#444444">//              Mike Day, IBM (mdday@us.ibm.com)</font>
<a name="1_line30"> 30</a> <font color="#444444">//</font>
<a name="1_line31"> 31</a> <font color="#444444">//%/////////////////////////////////////////////////////////////////////////////</font>
<a name="1_line32"> 32</a> 
<a name="1_line33"> 33</a> 
<a name="1_line34"> 34</a> <font color="0000ff"><strong>#ifndef Pegasus_CIMOMHandle_h</strong></font>
<a name="1_line35"> 35</a> <font color="0000ff"><strong>#define Pegasus_CIMOMHandle_h</strong></font>
<a name="1_line36"> 36</a> 
<a name="1_line37"> 37</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/Config.h&gt;</font></strong></font>
<a name="1_line38"> 38</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/ModuleController.h&gt;</font></strong></font>
<a name="1_line39"> 39</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/OperationContext.h&gt;</font></strong></font>
<a name="1_line40"> 40</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/CIMObject.h&gt;</font></strong></font>
<a name="1_line41"> 41</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/CIMObjectPath.h&gt;</font></strong></font>
<a name="1_line42"> 42</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/CIMClass.h&gt;</font></strong></font>
<a name="1_line43"> 43</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/CIMInstance.h&gt;</font></strong></font>
<a name="1_line44"> 44</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/CIMPropertyList.h&gt;</font></strong></font>
<a name="1_line45"> 45</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/ResponseHandler.h&gt;</font></strong></font>
<a name="1_line46"> 46</a> <font color="0000ff"><strong>#include <font color="#008000">&quot;Linkage.h&quot;</font></strong></font>
<a name="1_line47"> 47</a> 
<a name="1_line48"> 48</a> <font color="#2040a0">PEGASUS_NAMESPACE_BEGIN</font>
<a name="1_line49"> 49</a> 
<a name="1_line50"> 50</a> <strong>class</strong> <font color="#2040a0">ProviderManager</font><font color="4444FF">;</font>
<a name="1_line51"> 51</a> <strong>class</strong> <font color="#2040a0">Provider</font><font color="4444FF">;</font>
<a name="1_line52"> 52</a> 
<a name="1_line53"> 53</a> <strong>class</strong> <font color="#2040a0">cimom_handle_op_semaphore</font><font color="4444FF">;</font>
<a name="1_line54"> 54</a> 
<a name="1_line55"> 55</a> <strong>class</strong> <font color="#2040a0">PEGASUS_PROVIDER_LINKAGE</font> <font color="#2040a0">TimeoutContainer</font> <font color="4444FF">:</font> <strong>public</strong> <font color="#2040a0">OperationContext</font><font color="4444FF">:</font><font color="4444FF">:</font><font color="#2040a0">Container</font>
<a name="1_line56"> 56</a> <font color="4444FF"><strong>{</strong></font>
<a name="1_line57"> 57</a>    <strong>public</strong><font color="4444FF">:</font>
<a name="1_line58"> 58</a>       <strong>static</strong> <strong>const</strong> <font color="#2040a0">String</font> <font color="#2040a0">NAME</font><font color="4444FF">;</font>
<a name="1_line59"> 59</a>       
<a name="1_line60"> 60</a>       <font color="#2040a0">TimeoutContainer</font><font color="4444FF">(</font><strong>const</strong> <font color="#2040a0">OperationContext</font><font color="4444FF">:</font><font color="4444FF">:</font><font color="#2040a0">Container</font> <font color="4444FF">&amp;</font> <font color="#2040a0">container</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line61"> 61</a>       <font color="#2040a0">TimeoutContainer</font><font color="4444FF">(</font><font color="#2040a0">Uint32</font> <font color="#2040a0">timeout</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line62"> 62</a>       <strong>virtual</strong> <font color="#2040a0">String</font> <font color="#2040a0">getName</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font> <strong>const</strong><font color="4444FF">;</font>
<a name="1_line63"> 63</a>       <strong>virtual</strong> <font color="#2040a0">OperationContext</font><font color="4444FF">:</font><font color="4444FF">:</font><font color="#2040a0">Container</font> <font color="4444FF">*</font> <font color="#2040a0">clone</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font> <strong>const</strong><font color="4444FF">;</font>
<a name="1_line64"> 64</a>       <strong>virtual</strong> <strong>void</strong> <font color="#2040a0">destroy</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line65"> 65</a>       
<a name="1_line66"> 66</a>       <font color="#2040a0">Uint32</font> <font color="#2040a0">getTimeOut</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font> <strong>const</strong><font color="4444FF">;</font>
<a name="1_line67"> 67</a>    <strong>protected</strong><font color="4444FF">:</font>
<a name="1_line68"> 68</a>       <font color="#2040a0">Uint32</font> <font color="#2040a0">_value</font><font color="4444FF">;</font>
<a name="1_line69"> 69</a>    <strong>private</strong><font color="4444FF">:</font>
<a name="1_line70"> 70</a>       <font color="#2040a0">TimeoutContainer</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line71"> 71</a> <font color="4444FF"><strong>}</strong></font><font color="4444FF">;</font>
<a name="1_line72"> 72</a> 
<a name="1_line73"> 73</a> 
<a name="1_line74"> 74</a> <strong>class</strong> <font color="#2040a0">PEGASUS_PROVIDER_LINKAGE</font> <font color="#2040a0">CIMOMHandle</font>
<a name="1_line75"> 75</a> <font color="4444FF"><strong>{</strong></font>
<a name="1_line76"> 76</a> 
<a name="1_line77"> 77</a>    <strong>public</strong><font color="4444FF">:</font>
<a name="1_line78"> 78</a> 
<a name="1_line79"> 79</a>       <font color="#444444"><i>/** */</i></font>
<a name="1_line80"> 80</a>       <font color="#2040a0">CIMOMHandle</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line81"> 81</a>       <font color="#2040a0">CIMOMHandle</font><font color="4444FF">(</font><strong>const</strong> <font color="#2040a0">CIMOMHandle</font> <font color="4444FF">&amp;</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line82"> 82</a> 
<a name="1_line83"> 83</a>       <font color="#444444"><i>/** */</i></font>
<a name="1_line84"> 84</a>       <strong>virtual</strong> ~<font color="#2040a0">CIMOMHandle</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line85"> 85</a> 
<a name="1_line86"> 86</a>       <font color="#2040a0">CIMOMHandle</font> <font color="4444FF">&amp;</font> <strong>operator</strong><font color="4444FF">=</font><font color="4444FF">(</font><strong>const</strong> <font color="#2040a0">CIMOMHandle</font> <font color="4444FF">&amp;</font> <font color="#2040a0">handle</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line87"> 87</a>       
<a name="1_line88"> 88</a>       <font color="#2040a0">CIMClass</font> <font color="#2040a0">getClass</font><font color="4444FF">(</font>
<a name="1_line89"> 89</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line90"> 90</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line91"> 91</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">className</font>,
<a name="1_line92"> 92</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">localOnly</font>,
<a name="1_line93"> 93</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeQualifiers</font>,
<a name="1_line94"> 94</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeClassOrigin</font>,
<a name="1_line95"> 95</a> 	 <strong>const</strong> <font color="#2040a0">CIMPropertyList</font><font color="4444FF">&amp;</font> <font color="#2040a0">propertyList</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line96"> 96</a> 
<a name="1_line97"> 97</a>       <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMClass</font><font color="4444FF">&gt;</font> <font color="#2040a0">enumerateClasses</font><font color="4444FF">(</font>
<a name="1_line98"> 98</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line99"> 99</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line100">100</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">className</font>,
<a name="1_line101">101</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">deepInheritance</font>,
<a name="1_line102">102</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">localOnly</font>,
<a name="1_line103">103</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeQualifiers</font>,
<a name="1_line104">104</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeClassOrigin</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line105">105</a> 
<a name="1_line106">106</a>       <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMName</font><font color="4444FF">&gt;</font> <font color="#2040a0">enumerateClassNames</font><font color="4444FF">(</font>
<a name="1_line107">107</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line108">108</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line109">109</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">className</font>,
<a name="1_line110">110</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">deepInheritance</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line111">111</a> 
<a name="1_line112">112</a>       <strong>void</strong> <font color="#2040a0">createClass</font><font color="4444FF">(</font>
<a name="1_line113">113</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line114">114</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line115">115</a> 	 <strong>const</strong> <font color="#2040a0">CIMClass</font><font color="4444FF">&amp;</font> <font color="#2040a0">newClass</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line116">116</a> 
<a name="1_line117">117</a>       <strong>void</strong> <font color="#2040a0">modifyClass</font><font color="4444FF">(</font>
<a name="1_line118">118</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line119">119</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line120">120</a> 	 <strong>const</strong> <font color="#2040a0">CIMClass</font><font color="4444FF">&amp;</font> <font color="#2040a0">modifiedClass</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line121">121</a> 
<a name="1_line122">122</a>       <strong>void</strong> <font color="#2040a0">deleteClass</font><font color="4444FF">(</font>
<a name="1_line123">123</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line124">124</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line125">125</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">className</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line126">126</a> 
<a name="1_line127">127</a>       <font color="#2040a0">CIMInstance</font> <font color="#2040a0">getInstance</font><font color="4444FF">(</font>
<a name="1_line128">128</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line129">129</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line130">130</a> 	 <strong>const</strong> <font color="#2040a0">CIMObjectPath</font><font color="4444FF">&amp;</font> <font color="#2040a0">instanceName</font>,
<a name="1_line131">131</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">localOnly</font>,
<a name="1_line132">132</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeQualifiers</font>,
<a name="1_line133">133</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeClassOrigin</font>,
<a name="1_line134">134</a> 	 <strong>const</strong> <font color="#2040a0">CIMPropertyList</font><font color="4444FF">&amp;</font> <font color="#2040a0">propertyList</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line135">135</a> 
<a name="1_line136">136</a>       <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMInstance</font><font color="4444FF">&gt;</font> <font color="#2040a0">enumerateInstances</font><font color="4444FF">(</font>
<a name="1_line137">137</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line138">138</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line139">139</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">className</font>,
<a name="1_line140">140</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">deepInheritance</font>,
<a name="1_line141">141</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">localOnly</font>,
<a name="1_line142">142</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeQualifiers</font>,
<a name="1_line143">143</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeClassOrigin</font>,
<a name="1_line144">144</a> 	 <strong>const</strong> <font color="#2040a0">CIMPropertyList</font><font color="4444FF">&amp;</font> <font color="#2040a0">propertyList</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line145">145</a> 
<a name="1_line146">146</a>       <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMObjectPath</font><font color="4444FF">&gt;</font> <font color="#2040a0">enumerateInstanceNames</font><font color="4444FF">(</font>
<a name="1_line147">147</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line148">148</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line149">149</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">className</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line150">150</a> 
<a name="1_line151">151</a>       <font color="#2040a0">CIMObjectPath</font> <font color="#2040a0">createInstance</font><font color="4444FF">(</font>
<a name="1_line152">152</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line153">153</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line154">154</a> 	 <strong>const</strong> <font color="#2040a0">CIMInstance</font><font color="4444FF">&amp;</font> <font color="#2040a0">newInstance</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line155">155</a> 
<a name="1_line156">156</a>       <strong>void</strong> <font color="#2040a0">modifyInstance</font><font color="4444FF">(</font>
<a name="1_line157">157</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line158">158</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line159">159</a> 	 <strong>const</strong> <font color="#2040a0">CIMInstance</font><font color="4444FF">&amp;</font> <font color="#2040a0">modifiedInstance</font>,
<a name="1_line160">160</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeQualifiers</font>,
<a name="1_line161">161</a> 	 <strong>const</strong> <font color="#2040a0">CIMPropertyList</font><font color="4444FF">&amp;</font> <font color="#2040a0">propertyList</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line162">162</a> 
<a name="1_line163">163</a>       <strong>void</strong> <font color="#2040a0">deleteInstance</font><font color="4444FF">(</font>
<a name="1_line164">164</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line165">165</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line166">166</a> 	 <strong>const</strong> <font color="#2040a0">CIMObjectPath</font><font color="4444FF">&amp;</font> <font color="#2040a0">instanceName</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line167">167</a> 
<a name="1_line168">168</a>       <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMObject</font><font color="4444FF">&gt;</font> <font color="#2040a0">execQuery</font><font color="4444FF">(</font>
<a name="1_line169">169</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line170">170</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line171">171</a> 	 <strong>const</strong> <font color="#2040a0">String</font><font color="4444FF">&amp;</font> <font color="#2040a0">queryLanguage</font>,
<a name="1_line172">172</a> 	 <strong>const</strong> <font color="#2040a0">String</font><font color="4444FF">&amp;</font> <font color="#2040a0">query</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line173">173</a> 
<a name="1_line174">174</a>       <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMObject</font><font color="4444FF">&gt;</font> <font color="#2040a0">associators</font><font color="4444FF">(</font>
<a name="1_line175">175</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line176">176</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line177">177</a> 	 <strong>const</strong> <font color="#2040a0">CIMObjectPath</font><font color="4444FF">&amp;</font> <font color="#2040a0">objectName</font>,
<a name="1_line178">178</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">assocClass</font>,
<a name="1_line179">179</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">resultClass</font>,
<a name="1_line180">180</a> 	 <strong>const</strong> <font color="#2040a0">String</font><font color="4444FF">&amp;</font> <font color="#2040a0">role</font>,
<a name="1_line181">181</a> 	 <strong>const</strong> <font color="#2040a0">String</font><font color="4444FF">&amp;</font> <font color="#2040a0">resultRole</font>,
<a name="1_line182">182</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeQualifiers</font>,
<a name="1_line183">183</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeClassOrigin</font>,
<a name="1_line184">184</a> 	 <strong>const</strong> <font color="#2040a0">CIMPropertyList</font><font color="4444FF">&amp;</font> <font color="#2040a0">propertyList</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line185">185</a> 
<a name="1_line186">186</a>       <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMObjectPath</font><font color="4444FF">&gt;</font> <font color="#2040a0">associatorNames</font><font color="4444FF">(</font>
<a name="1_line187">187</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line188">188</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line189">189</a> 	 <strong>const</strong> <font color="#2040a0">CIMObjectPath</font><font color="4444FF">&amp;</font> <font color="#2040a0">objectName</font>,
<a name="1_line190">190</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">assocClass</font>,
<a name="1_line191">191</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">resultClass</font>,
<a name="1_line192">192</a> 	 <strong>const</strong> <font color="#2040a0">String</font><font color="4444FF">&amp;</font> <font color="#2040a0">role</font>,
<a name="1_line193">193</a> 	 <strong>const</strong> <font color="#2040a0">String</font><font color="4444FF">&amp;</font> <font color="#2040a0">resultRole</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line194">194</a> 
<a name="1_line195">195</a>       <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMObject</font><font color="4444FF">&gt;</font> <font color="#2040a0">references</font><font color="4444FF">(</font>
<a name="1_line196">196</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line197">197</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line198">198</a> 	 <strong>const</strong> <font color="#2040a0">CIMObjectPath</font><font color="4444FF">&amp;</font> <font color="#2040a0">objectName</font>,
<a name="1_line199">199</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">resultClass</font>,
<a name="1_line200">200</a> 	 <strong>const</strong> <font color="#2040a0">String</font><font color="4444FF">&amp;</font> <font color="#2040a0">role</font>,
<a name="1_line201">201</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeQualifiers</font>,
<a name="1_line202">202</a> 	 <font color="#2040a0">Boolean</font> <font color="#2040a0">includeClassOrigin</font>,
<a name="1_line203">203</a> 	 <strong>const</strong> <font color="#2040a0">CIMPropertyList</font><font color="4444FF">&amp;</font> <font color="#2040a0">propertyList</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line204">204</a> 
<a name="1_line205">205</a>       <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMObjectPath</font><font color="4444FF">&gt;</font> <font color="#2040a0">referenceNames</font><font color="4444FF">(</font>
<a name="1_line206">206</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line207">207</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line208">208</a> 	 <strong>const</strong> <font color="#2040a0">CIMObjectPath</font><font color="4444FF">&amp;</font> <font color="#2040a0">objectName</font>,
<a name="1_line209">209</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">resultClass</font>,
<a name="1_line210">210</a> 	 <strong>const</strong> <font color="#2040a0">String</font><font color="4444FF">&amp;</font> <font color="#2040a0">role</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line211">211</a> 
<a name="1_line212">212</a>       <font color="#444444">// property operations</font>
<a name="1_line213">213</a>       <font color="#2040a0">CIMValue</font> <font color="#2040a0">getProperty</font><font color="4444FF">(</font>
<a name="1_line214">214</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line215">215</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line216">216</a> 	 <strong>const</strong> <font color="#2040a0">CIMObjectPath</font><font color="4444FF">&amp;</font> <font color="#2040a0">instanceName</font>,
<a name="1_line217">217</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">propertyName</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line218">218</a> 
<a name="1_line219">219</a>       <strong>void</strong> <font color="#2040a0">setProperty</font><font color="4444FF">(</font>
<a name="1_line220">220</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line221">221</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line222">222</a> 	 <strong>const</strong> <font color="#2040a0">CIMObjectPath</font><font color="4444FF">&amp;</font> <font color="#2040a0">instanceName</font>,
<a name="1_line223">223</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">propertyName</font>,
<a name="1_line224">224</a> 	 <strong>const</strong> <font color="#2040a0">CIMValue</font><font color="4444FF">&amp;</font> <font color="#2040a0">newValue</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line225">225</a> 
<a name="1_line226">226</a>       <font color="#2040a0">CIMValue</font> <font color="#2040a0">invokeMethod</font><font color="4444FF">(</font>
<a name="1_line227">227</a> 	 <strong>const</strong> <font color="#2040a0">OperationContext</font> <font color="4444FF">&amp;</font> <font color="#2040a0">context</font>,
<a name="1_line228">228</a> 	 <strong>const</strong> <font color="#2040a0">CIMNamespaceName</font><font color="4444FF">&amp;</font> <font color="#2040a0">nameSpace</font>,
<a name="1_line229">229</a> 	 <strong>const</strong> <font color="#2040a0">CIMObjectPath</font><font color="4444FF">&amp;</font> <font color="#2040a0">instanceName</font>,
<a name="1_line230">230</a> 	 <strong>const</strong> <font color="#2040a0">CIMName</font><font color="4444FF">&amp;</font> <font color="#2040a0">methodName</font>,
<a name="1_line231">231</a> 	 <strong>const</strong> <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMParamValue</font><font color="4444FF">&gt;</font><font color="4444FF">&amp;</font> <font color="#2040a0">inParameters</font>,
<a name="1_line232">232</a> 	 <font color="#2040a0">Array</font><font color="4444FF">&lt;</font><font color="#2040a0">CIMParamValue</font><font color="4444FF">&gt;</font><font color="4444FF">&amp;</font> <font color="#2040a0">outParameters</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line233">233</a> 
<a name="1_line234">234</a> 
<a name="1_line235">235</a> 
<a name="1_line236">236</a> <font color="#444444">//   force provider manager to keep in memory</font>
<a name="1_line237">237</a>       <strong>virtual</strong> <strong>void</strong> <font color="#2040a0">protect</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line238">238</a> <font color="#444444">// allow provider manager to unload when idle </font>
<a name="1_line239">239</a>       <strong>virtual</strong> <strong>void</strong> <font color="#2040a0">unprotect</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line240">240</a>       
<a name="1_line241">241</a>       <strong>class</strong> <font color="#2040a0">_cimom_handle_rep</font><font color="4444FF">;</font>
<a name="1_line242">242</a>       <font color="#2040a0">_cimom_handle_rep</font> <font color="4444FF">*</font><font color="#2040a0">_rep</font><font color="4444FF">;</font>
<a name="1_line243">243</a>    <strong>private</strong><font color="4444FF">:</font>
<a name="1_line244">244</a>       <strong>friend</strong> <strong>class</strong> <font color="#2040a0">Provider</font><font color="4444FF">;</font>
<a name="1_line245">245</a>       <strong>friend</strong> <strong>class</strong> <font color="#2040a0">cimom_handle_op_semaphore</font><font color="4444FF">;</font>
<a name="1_line246">246</a>       <strong>virtual</strong> <strong>void</strong> <font color="#2040a0">get_idle_timer</font><font color="4444FF">(</font><strong>struct</strong> <font color="#2040a0">timeval</font> <font color="4444FF">*</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line247">247</a>       <strong>virtual</strong> <strong>void</strong> <font color="#2040a0">update_idle_timer</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line248">248</a>       <strong>virtual</strong> <font color="#2040a0">Boolean</font> <font color="#2040a0">pending_operation</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line249">249</a>       <strong>virtual</strong> <font color="#2040a0">Boolean</font> <font color="#2040a0">unload_ok</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="1_line250">250</a> <font color="4444FF"><strong>}</strong></font><font color="4444FF">;</font>
<a name="1_line251">251</a> 
<a name="1_line252">252</a> 
<a name="1_line253">253</a> 
<a name="1_line254">254</a> 
<a name="1_line255">255</a> 
<a name="1_line256">256</a> <font color="#2040a0">PEGASUS_NAMESPACE_END</font>
<a name="1_line257">257</a> 
<a name="1_line258">258</a> <font color="0000ff"><strong>#endif</strong></font>
</pre><!-- code2html delete stop -->

      <h3>BinaryMessageHandler.h</h3>
      <!-- code2html add -lcc -n src/Pegasus/Server/BinaryMessageHandler.h
      --><!-- code2html delete start --><pre><a name="2_line1">  1</a> <font color="#444444">//%/////////////-*-c++-*-///////////////////////////////////////////////////////</font>
<a name="2_line2">  2</a> <font color="#444444">//</font>
<a name="2_line3">  3</a> <font color="#444444">// Copyright (c) 2000 - 2003 BMC Software, Hewlett-Packard Company, IBM,</font>
<a name="2_line4">  4</a> <font color="#444444">// The Open Group, Tivoli Systems</font>
<a name="2_line5">  5</a> <font color="#444444">//</font>
<a name="2_line6">  6</a> <font color="#444444">// Permission is hereby granted, free of charge, to any person obtaining a copy</font>
<a name="2_line7">  7</a> <font color="#444444">// of this software and associated documentation files (the &quot;Software&quot;), to</font>
<a name="2_line8">  8</a> <font color="#444444">// deal in the Software without restriction, including without limitation the</font>
<a name="2_line9">  9</a> <font color="#444444">// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</font>
<a name="2_line10"> 10</a> <font color="#444444">// sell copies of the Software, and to permit persons to whom the Software is</font>
<a name="2_line11"> 11</a> <font color="#444444">// furnished to do so, subject to the following conditions:</font>
<a name="2_line12"> 12</a> <font color="#444444">// </font>
<a name="2_line13"> 13</a> <font color="#444444">// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN</font>
<a name="2_line14"> 14</a> <font color="#444444">// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED</font>
<a name="2_line15"> 15</a> <font color="#444444">// &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT</font>
<a name="2_line16"> 16</a> <font color="#444444">// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR</font>
<a name="2_line17"> 17</a> <font color="#444444">// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT</font>
<a name="2_line18"> 18</a> <font color="#444444">// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</font>
<a name="2_line19"> 19</a> <font color="#444444">// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION</font>
<a name="2_line20"> 20</a> <font color="#444444">// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font>
<a name="2_line21"> 21</a> <font color="#444444">//</font>
<a name="2_line22"> 22</a> <font color="#444444">//==============================================================================</font>
<a name="2_line23"> 23</a> <font color="#444444">//</font>
<a name="2_line24"> 24</a> <font color="#444444">// Author: Mike Day (mdday@us.ibm.com)</font>
<a name="2_line25"> 25</a> <font color="#444444">//</font>
<a name="2_line26"> 26</a> <font color="#444444">//%/////////////////////////////////////////////////////////////////////////////</font>
<a name="2_line27"> 27</a> <font color="0000ff"><strong>#ifndef Pegasus_BinaryMessageHandler_h</strong></font>
<a name="2_line28"> 28</a> <font color="0000ff"><strong>#define Pegasus_BinaryMessageHandler_h</strong></font>
<a name="2_line29"> 29</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/Config.h&gt;</font></strong></font>
<a name="2_line30"> 30</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/AsyncOpNode.h&gt;</font></strong></font>
<a name="2_line31"> 31</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/DQueue.h&gt;</font></strong></font>
<a name="2_line32"> 32</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/MessageQueueService.h&gt;</font></strong></font>
<a name="2_line33"> 33</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/Message.h&gt;</font></strong></font>
<a name="2_line34"> 34</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/CIMMessage.h&gt;</font></strong></font>
<a name="2_line35"> 35</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/Tracer.h&gt;</font></strong></font>
<a name="2_line36"> 36</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/TraceComponents.h&gt;</font></strong></font>
<a name="2_line37"> 37</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/IPC.h&gt;</font></strong></font>
<a name="2_line38"> 38</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/Thread.h&gt;</font></strong></font>
<a name="2_line39"> 39</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Common/Constants.h&gt;</font></strong></font>
<a name="2_line40"> 40</a> <font color="0000ff"><strong>#include <font color="#008000">&lt;Pegasus/Server/Linkage.h&gt;</font></strong></font>
<a name="2_line41"> 41</a> 
<a name="2_line42"> 42</a> <font color="#2040a0">PEGASUS_NAMESPACE_BEGIN</font>
<a name="2_line43"> 43</a> 
<a name="2_line44"> 44</a> <font color="#444444"><i>/** This class provides an in-process binary client interface, 
<a name="2_line45"> 45</a>     both for requests and responses. 
<a name="2_line46"> 46</a> */</i></font>
<a name="2_line47"> 47</a> 
<a name="2_line48"> 48</a> <strong>class</strong> <font color="#2040a0">PEGASUS_SERVER_LINKAGE</font> <font color="#2040a0">BinaryMessageHandler</font> <font color="4444FF">:</font> <strong>public</strong> <font color="#2040a0">MessageQueueService</font>
<a name="2_line49"> 49</a> <font color="4444FF"><strong>{</strong></font>
<a name="2_line50"> 50</a>    <strong>public</strong><font color="4444FF">:</font> 
<a name="2_line51"> 51</a>       <strong>typedef</strong> <font color="#2040a0">MessageQueueService</font> <font color="#2040a0">Base</font><font color="4444FF">;</font>
<a name="2_line52"> 52</a> 
<a name="2_line53"> 53</a>       <font color="#2040a0">BinaryMessageHandler</font><font color="4444FF">(</font><font color="#2040a0">MessageQueueService</font> <font color="4444FF">*</font><font color="#2040a0">outputQueue</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line54"> 54</a>       ~<font color="#2040a0">BinaryMessageHandler</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line55"> 55</a>       
<a name="2_line56"> 56</a>       <strong>virtual</strong> <font color="#2040a0">Boolean</font> <font color="#2040a0">messageOK</font><font color="4444FF">(</font><strong>const</strong> <font color="#2040a0">Message</font> <font color="4444FF">*</font> <font color="#2040a0">message</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line57"> 57</a>       <strong>virtual</strong> <strong>void</strong> <font color="#2040a0">handleEnqueue</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line58"> 58</a>       <strong>virtual</strong> <strong>void</strong> <font color="#2040a0">handleEnqueue</font><font color="4444FF">(</font><font color="#2040a0">Message</font> <font color="4444FF">*</font> <font color="#2040a0">message</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line59"> 59</a>       <strong>virtual</strong> <strong>void</strong> <font color="#2040a0">_handle_async_request</font><font color="4444FF">(</font><font color="#2040a0">AsyncRequest</font> <font color="4444FF">*</font> <font color="#2040a0">request</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line60"> 60</a>    <strong>protected</strong><font color="4444FF">:</font>
<a name="2_line61"> 61</a>       <strong>static</strong> <font color="#2040a0">PEGASUS_THREAD_RETURN</font> <font color="#2040a0">PEGASUS_THREAD_CDECL</font> <font color="#2040a0">handle_binary_message</font><font color="4444FF">(</font><strong>void</strong> <font color="4444FF">*</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line62"> 62</a> 
<a name="2_line63"> 63</a>       <font color="#444444">// **** Request Messages **** //</font>
<a name="2_line64"> 64</a>       
<a name="2_line65"> 65</a>       <strong>void</strong> <font color="#2040a0">handleCreateClassRequest</font><font color="4444FF">(</font>
<a name="2_line66"> 66</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>, 
<a name="2_line67"> 67</a> 	 <font color="#2040a0">CIMCreateClassRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line68"> 68</a>       
<a name="2_line69"> 69</a>       <strong>void</strong> <font color="#2040a0">handleGetClassRequest</font><font color="4444FF">(</font>
<a name="2_line70"> 70</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line71"> 71</a> 	 <font color="#2040a0">CIMGetClassRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line72"> 72</a>       
<a name="2_line73"> 73</a>       <strong>void</strong> <font color="#2040a0">handleModifyClassRequest</font><font color="4444FF">(</font>
<a name="2_line74"> 74</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>, 
<a name="2_line75"> 75</a> 	 <font color="#2040a0">CIMModifyClassRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line76"> 76</a>       
<a name="2_line77"> 77</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateClassNamesRequest</font><font color="4444FF">(</font>
<a name="2_line78"> 78</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line79"> 79</a> 	 <font color="#2040a0">CIMEnumerateClassNamesRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line80"> 80</a> 
<a name="2_line81"> 81</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateClassesRequest</font><font color="4444FF">(</font>
<a name="2_line82"> 82</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line83"> 83</a> 	 <font color="#2040a0">CIMEnumerateClassesRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line84"> 84</a> 
<a name="2_line85"> 85</a>       <strong>void</strong> <font color="#2040a0">handleDeleteClassRequest</font><font color="4444FF">(</font>
<a name="2_line86"> 86</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line87"> 87</a> 	 <font color="#2040a0">CIMDeleteClassRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line88"> 88</a> 
<a name="2_line89"> 89</a>       <strong>void</strong> <font color="#2040a0">handleCreateInstanceRequest</font><font color="4444FF">(</font>
<a name="2_line90"> 90</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line91"> 91</a> 	 <font color="#2040a0">CIMCreateInstanceRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line92"> 92</a> 
<a name="2_line93"> 93</a>       <strong>void</strong> <font color="#2040a0">handleGetInstanceRequest</font><font color="4444FF">(</font>
<a name="2_line94"> 94</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line95"> 95</a> 	 <font color="#2040a0">CIMGetInstanceRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line96"> 96</a> 
<a name="2_line97"> 97</a>       <strong>void</strong> <font color="#2040a0">handleModifyInstanceRequest</font><font color="4444FF">(</font>
<a name="2_line98"> 98</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line99"> 99</a> 	 <font color="#2040a0">CIMModifyInstanceRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line100">100</a> 
<a name="2_line101">101</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateInstanceNamesRequest</font><font color="4444FF">(</font>
<a name="2_line102">102</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line103">103</a> 	 <font color="#2040a0">CIMEnumerateInstanceNamesRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line104">104</a> 
<a name="2_line105">105</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateInstancesRequest</font><font color="4444FF">(</font>
<a name="2_line106">106</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line107">107</a> 	 <font color="#2040a0">CIMEnumerateInstancesRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line108">108</a> 
<a name="2_line109">109</a>       <strong>void</strong> <font color="#2040a0">handleDeleteInstanceRequest</font><font color="4444FF">(</font>
<a name="2_line110">110</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line111">111</a> 	 <font color="#2040a0">CIMDeleteInstanceRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line112">112</a>       
<a name="2_line113">113</a>       <strong>void</strong> <font color="#2040a0">handleSetQualifierRequest</font><font color="4444FF">(</font>
<a name="2_line114">114</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line115">115</a> 	 <font color="#2040a0">CIMSetQualifierRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line116">116</a>       
<a name="2_line117">117</a>       <strong>void</strong> <font color="#2040a0">handleGetQualifierRequest</font><font color="4444FF">(</font>
<a name="2_line118">118</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line119">119</a> 	 <font color="#2040a0">CIMGetQualifierRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line120">120</a>       
<a name="2_line121">121</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateQualifiersRequest</font><font color="4444FF">(</font>
<a name="2_line122">122</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line123">123</a> 	 <font color="#2040a0">CIMEnumerateQualifiersRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line124">124</a>       
<a name="2_line125">125</a>       <strong>void</strong> <font color="#2040a0">handleDeleteQualifiersRequest</font><font color="4444FF">(</font>
<a name="2_line126">126</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line127">127</a> 	 <font color="#2040a0">CIMDeleteQualifierRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line128">128</a>       
<a name="2_line129">129</a>       <strong>void</strong> <font color="#2040a0">handleReferenceNamesRequest</font><font color="4444FF">(</font>
<a name="2_line130">130</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line131">131</a> 	 <font color="#2040a0">CIMReferenceNamesRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line132">132</a> 
<a name="2_line133">133</a>       <strong>void</strong> <font color="#2040a0">handleReferencesRequest</font><font color="4444FF">(</font>
<a name="2_line134">134</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line135">135</a> 	 <font color="#2040a0">CIMReferencesRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line136">136</a> 
<a name="2_line137">137</a>       <strong>void</strong> <font color="#2040a0">handleAssociatorNamesRequest</font><font color="4444FF">(</font>
<a name="2_line138">138</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line139">139</a> 	 <font color="#2040a0">CIMAssociatorNamesRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line140">140</a> 
<a name="2_line141">141</a>       <strong>void</strong> <font color="#2040a0">handleAssociatorsRequest</font><font color="4444FF">(</font>
<a name="2_line142">142</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line143">143</a> 	 <font color="#2040a0">CIMAssociatorsRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>  
<a name="2_line144">144</a> 
<a name="2_line145">145</a>       <strong>void</strong> <font color="#2040a0">handleGetPropertyRequest</font><font color="4444FF">(</font>
<a name="2_line146">146</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line147">147</a> 	 <font color="#2040a0">CIMGetPropertyRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line148">148</a> 
<a name="2_line149">149</a>       <strong>void</strong> <font color="#2040a0">handleSetPropertyRequest</font><font color="4444FF">(</font>
<a name="2_line150">150</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line151">151</a> 	 <font color="#2040a0">CIMSetPropertyRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>  
<a name="2_line152">152</a> 
<a name="2_line153">153</a>       <strong>void</strong> <font color="#2040a0">handleExecQueryRequest</font><font color="4444FF">(</font>
<a name="2_line154">154</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line155">155</a> 	 <font color="#2040a0">CIMExecQueryRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>  
<a name="2_line156">156</a> 
<a name="2_line157">157</a>       <strong>void</strong> <font color="#2040a0">handleInvokeMethodRequest</font><font color="4444FF">(</font>
<a name="2_line158">158</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line159">159</a> 	 <font color="#2040a0">CIMInvokeMethodRequestMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line160">160</a>       
<a name="2_line161">161</a>       <font color="#444444">// **** Response Messages **** //</font>
<a name="2_line162">162</a>       
<a name="2_line163">163</a>       <strong>void</strong> <font color="#2040a0">handleCreateClassResponse</font><font color="4444FF">(</font>
<a name="2_line164">164</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line165">165</a> 	 <font color="#2040a0">CIMCreateClassResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line166">166</a> 
<a name="2_line167">167</a>       <strong>void</strong> <font color="#2040a0">handleGetClassResponse</font><font color="4444FF">(</font>
<a name="2_line168">168</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line169">169</a> 	 <font color="#2040a0">CIMGetClassResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line170">170</a> 
<a name="2_line171">171</a>       <strong>void</strong> <font color="#2040a0">handleModifyClassResponse</font><font color="4444FF">(</font>
<a name="2_line172">172</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line173">173</a> 	 <font color="#2040a0">CIMModifyClassResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line174">174</a>       
<a name="2_line175">175</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateClassNamesResponse</font><font color="4444FF">(</font>
<a name="2_line176">176</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line177">177</a> 	 <font color="#2040a0">CIMEnumerateClassNamesResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line178">178</a> 
<a name="2_line179">179</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateClassesResponse</font><font color="4444FF">(</font>
<a name="2_line180">180</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line181">181</a> 	 <font color="#2040a0">CIMEnumerateClassesResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line182">182</a> 
<a name="2_line183">183</a>       <strong>void</strong> <font color="#2040a0">handleDeleteClassResponse</font><font color="4444FF">(</font>
<a name="2_line184">184</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line185">185</a> 	 <font color="#2040a0">CIMDeleteClassResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line186">186</a> 
<a name="2_line187">187</a>       <strong>void</strong> <font color="#2040a0">handleCreateInstanceResponse</font><font color="4444FF">(</font>
<a name="2_line188">188</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line189">189</a> 	 <font color="#2040a0">CIMCreateInstanceResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line190">190</a> 
<a name="2_line191">191</a>       <strong>void</strong> <font color="#2040a0">handleGetInstanceResponse</font><font color="4444FF">(</font>
<a name="2_line192">192</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line193">193</a> 	 <font color="#2040a0">CIMGetInstanceResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line194">194</a> 
<a name="2_line195">195</a>       <strong>void</strong> <font color="#2040a0">handleModifyInstanceResponse</font><font color="4444FF">(</font>
<a name="2_line196">196</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line197">197</a> 	 <font color="#2040a0">CIMModifyInstanceResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line198">198</a> 
<a name="2_line199">199</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateInstanceNamesResponse</font><font color="4444FF">(</font>
<a name="2_line200">200</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line201">201</a> 	 <font color="#2040a0">CIMEnumerateInstanceNamesResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line202">202</a> 
<a name="2_line203">203</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateInstancesResponse</font><font color="4444FF">(</font>
<a name="2_line204">204</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line205">205</a> 	 <font color="#2040a0">CIMEnumerateInstancesResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line206">206</a> 
<a name="2_line207">207</a>       <strong>void</strong> <font color="#2040a0">handleDeleteInstanceResponse</font><font color="4444FF">(</font>
<a name="2_line208">208</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line209">209</a> 	 <font color="#2040a0">CIMDeleteInstanceResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line210">210</a> 
<a name="2_line211">211</a>       <strong>void</strong> <font color="#2040a0">handleGetPropertyResponse</font><font color="4444FF">(</font>
<a name="2_line212">212</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line213">213</a> 	 <font color="#2040a0">CIMGetPropertyResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line214">214</a> 
<a name="2_line215">215</a>       <strong>void</strong> <font color="#2040a0">handleSetPropertyResponse</font><font color="4444FF">(</font>
<a name="2_line216">216</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line217">217</a> 	 <font color="#2040a0">CIMSetPropertyResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line218">218</a>       
<a name="2_line219">219</a>       <strong>void</strong> <font color="#2040a0">handleSetQualifierResponse</font><font color="4444FF">(</font>
<a name="2_line220">220</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line221">221</a> 	 <font color="#2040a0">CIMSetQualifierResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line222">222</a> 
<a name="2_line223">223</a>       <strong>void</strong> <font color="#2040a0">handleGetQualifierResponse</font><font color="4444FF">(</font>
<a name="2_line224">224</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line225">225</a> 	 <font color="#2040a0">CIMGetQualifierResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line226">226</a>       
<a name="2_line227">227</a>       <strong>void</strong> <font color="#2040a0">handleEnumerateQualifiersResponse</font><font color="4444FF">(</font>
<a name="2_line228">228</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line229">229</a> 	 <font color="#2040a0">CIMEnumerateQualifiersResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line230">230</a> 
<a name="2_line231">231</a>       <strong>void</strong> <font color="#2040a0">handleDeleteQualifierResponse</font><font color="4444FF">(</font>
<a name="2_line232">232</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line233">233</a> 	 <font color="#2040a0">CIMDeleteQualifierResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line234">234</a> 
<a name="2_line235">235</a>       <strong>void</strong> <font color="#2040a0">handleReferenceNamesResponse</font><font color="4444FF">(</font>
<a name="2_line236">236</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line237">237</a> 	 <font color="#2040a0">CIMReferenceNamesResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line238">238</a> 
<a name="2_line239">239</a>       <strong>void</strong> <font color="#2040a0">handleReferencesResponse</font><font color="4444FF">(</font>
<a name="2_line240">240</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line241">241</a> 	 <font color="#2040a0">CIMReferencesResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> 
<a name="2_line242">242</a> 
<a name="2_line243">243</a>       <strong>void</strong> <font color="#2040a0">handleAssociatorNamesResponse</font><font color="4444FF">(</font>
<a name="2_line244">244</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line245">245</a> 	 <font color="#2040a0">CIMAssociatorNamesResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>  
<a name="2_line246">246</a> 
<a name="2_line247">247</a>       <strong>void</strong> <font color="#2040a0">handleAssociatorsResponse</font><font color="4444FF">(</font>
<a name="2_line248">248</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line249">249</a> 	 <font color="#2040a0">CIMAssociatorsResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line250">250</a> 
<a name="2_line251">251</a>       <strong>void</strong> <font color="#2040a0">handleExecQueryResponse</font><font color="4444FF">(</font>
<a name="2_line252">252</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line253">253</a> 	 <font color="#2040a0">CIMExecQueryResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line254">254</a>       
<a name="2_line255">255</a>       <strong>void</strong> <font color="#2040a0">handleInvokeMethodResponse</font><font color="4444FF">(</font>
<a name="2_line256">256</a> 	 <font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>,
<a name="2_line257">257</a> 	 <font color="#2040a0">CIMInvokeMethodResponseMessage</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line258">258</a>       
<a name="2_line259">259</a>    <strong>private</strong><font color="4444FF">:</font>
<a name="2_line260">260</a>       <font color="#2040a0">BinaryMessageHandler</font><font color="4444FF">(</font><strong>void</strong><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line261">261</a>       <font color="#2040a0">BinaryMessageHandler</font> <font color="4444FF">&amp;</font> <strong>operator</strong> <font color="4444FF">=</font> <font color="4444FF">(</font><strong>const</strong> <font color="#2040a0">BinaryMessageHandler</font> <font color="4444FF">&amp;</font> <font color="4444FF">)</font> <strong>const</strong><font color="4444FF">;</font>
<a name="2_line262">262</a>       <strong>void</strong> <font color="#2040a0">_handleRequest</font><font color="4444FF">(</font><font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>, <font color="#2040a0">Message</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line263">263</a>       <strong>void</strong> <font color="#2040a0">_handleResponse</font><font color="4444FF">(</font><font color="#2040a0">AsyncOpNode</font> <font color="4444FF">*</font>, <font color="#2040a0">Message</font> <font color="4444FF">*</font><font color="4444FF">)</font> <strong>throw</strong><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font>
<a name="2_line264">264</a>       
<a name="2_line265">265</a> 
<a name="2_line266">266</a>       <font color="#2040a0">MessageQueueService</font><font color="4444FF">*</font> <font color="#2040a0">_outputQueue</font><font color="4444FF">;</font>
<a name="2_line267">267</a> 
<a name="2_line268">268</a>       <font color="#444444">// Flag to indicate whether or not the CIMServer is shutting down.</font>
<a name="2_line269">269</a>       <font color="#2040a0">Boolean</font> <font color="#2040a0">_serverTerminating</font><font color="4444FF">;</font>
<a name="2_line270">270</a>       <font color="#2040a0">AsyncDQueue</font><font color="4444FF">&lt;</font><font color="#2040a0">AsyncOpNode</font><font color="4444FF">&gt;</font> <font color="#2040a0">_msg_q</font><font color="4444FF">;</font>
<a name="2_line271">271</a>       
<a name="2_line272">272</a> <font color="4444FF"><strong>}</strong></font><font color="4444FF">;</font>
<a name="2_line273">273</a> 
<a name="2_line274">274</a> 
<a name="2_line275">275</a> <font color="#2040a0">PEGASUS_NAMESPACE_END</font>
<a name="2_line276">276</a> 
<a name="2_line277">277</a> <font color="0000ff"><strong>#endif <font color="#444444">// Pegasus_BinaryMessageHandler_h</font></strong></font>
</pre><!-- code2html delete stop -->

    <hr>
    <address><a href="mailto:mdday@us.ibm.com">Michael Day</a></address>
<!-- Created: Thu Feb 13 11:44:30 EST 2003 -->
<!-- hhmts start -->
Last modified: Fri Mar  7 12:20:49 EST 2003
<!-- hhmts end -->
  </body>
</html>

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2