version 1.4, 2002/03/13 17:33:36
|
version 1.6, 2008/12/05 20:38:35
|
|
|
hub. Services communicate with each other <i>via</i> the Meta | hub. Services communicate with each other <i>via</i> the Meta |
Dispatcher. | Dispatcher. |
<div class="exampleOuter"><div class="exampleInner"> | <div class="exampleOuter"><div class="exampleInner"> |
<pre> |
<pre> Service A--Message----1----> (block on semaphore) |
Service A--Message----1----> (block on semaphore) |
|
| | | |
| | | |
Meta Dispatcher| | Meta Dispatcher| |
|
|
| |
<ol> | <ol> |
<li><b>Define the Service Class</b></li> | <li><b>Define the Service Class</b></li> |
<pre> |
<pre>// Define our service class |
// Define our service class |
|
| |
class MessageQueueClient : public MessageQueueService | class MessageQueueClient : public MessageQueueService |
{ | { |
|
|
| |
</pre> | </pre> |
<li><b>Construct the Service</b></li> | <li><b>Construct the Service</b></li> |
<pre> |
<pre>// Create our Service |
// Create our Service |
|
MessageQueueClient *q_client = | MessageQueueClient *q_client = |
new MessageQueueClient("test client"); | new MessageQueueClient("test client"); |
| |
</pre> | </pre> |
<li><b>Register the Service</b></li> | <li><b>Register the Service</b></li> |
<pre> |
<pre>// Register our service with the Meta Dispatcher |
// Register our service with the Meta Dispatcher |
|
q_client->register_service("test client", | q_client->register_service("test client", |
q_client->_client_capabilities, | q_client->_client_capabilities, |
q_client->_client_mask); | q_client->_client_mask); |
|
|
program: | program: |
| |
<pre> | <pre> |
|
|
Array<Uint32>; services; | Array<Uint32>; services; |
| |
while( services.size() == 0 ) | while( services.size() == 0 ) |
|
|
<ol> | <ol> |
<li><b>Define the Request and Response Message Pair by Inheriting from AsyncMessage.</b></li> | <li><b>Define the Request and Response Message Pair by Inheriting from AsyncMessage.</b></li> |
<pre> | <pre> |
|
|
class test_request : public AsyncRequest | class test_request : public AsyncRequest |
{ | { |
| |
|
|
process the reply. | process the reply. |
| |
<pre> | <pre> |
|
|
void MessageQueueClient::send_test_request(char *greeting, Uint32 qid) | void MessageQueueClient::send_test_request(char *greeting, Uint32 qid) |
{ | { |
| |
</pre> | </pre> |
<li><b>Construct the Request</b></li> | <li><b>Construct the Request</b></li> |
| |
<pre> |
<pre> test_request *req = |
test_request *req = |
|
new test_request(Base::get_next_xid(), | new test_request(Base::get_next_xid(), |
0, | 0, |
qid, // destination queue ID | qid, // destination queue ID |
|
|
| |
<li><b>Send the message using <code>MessageQueueService::SendWait</code></b></li> | <li><b>Send the message using <code>MessageQueueService::SendWait</code></b></li> |
| |
<pre> |
<pre> AsyncMessage *response = SendWait(req); |
AsyncMessage *response = SendWait(req); |
|
| |
</pre> | </pre> |
| |
<li><b>Process the Response.</b></i> | <li><b>Process the Response.</b></i> |
<pre> |
<pre> if( response != 0 ) |
if( response != 0 ) |
|
{ | { |
msg_count++; | msg_count++; |
delete response; | delete response; |
|
|
before inserting the request on the Service's queue. | before inserting the request on the Service's queue. |
| |
<pre> | <pre> |
|
|
Boolean MessageQueueServer::messageOK(const Message *msg) | Boolean MessageQueueServer::messageOK(const Message *msg) |
{ | { |
if(msg->getMask() & message_mask::ha_async) | if(msg->getMask() & message_mask::ha_async) |
|
|
the message. | the message. |
| |
<pre> | <pre> |
|
|
void MessageQueueServer::_handle_incoming_operation(AsyncOpNode *op) | void MessageQueueServer::_handle_incoming_operation(AsyncOpNode *op) |
{ | { |
if ( operation != 0 ) | if ( operation != 0 ) |
|
|
this method. <b>If the Service does not handle the Request it | this method. <b>If the Service does not handle the Request it |
must pass the Request to the Base class by calling <code>Base::_handle_async_request(req)</code></b> | must pass the Request to the Base class by calling <code>Base::_handle_async_request(req)</code></b> |
| |
<pre> |
<pre>void MessageQueueServer::_handle_async_request(AsyncRequest *req) |
void MessageQueueServer::_handle_async_request(AsyncRequest *req) |
|
{ | { |
if (req->getType() == 0x04100000 ) | if (req->getType() == 0x04100000 ) |
{ | { |
|
|
program. | program. |
| |
<pre> | <pre> |
|
|
if( msg->getType() == 0x04100000 ) | if( msg->getType() == 0x04100000 ) |
{ | { |
| |
|
|
<ol> | <ol> |
<li><b>Construct the Reply</b></li> | <li><b>Construct the Reply</b></li> |
<pre> | <pre> |
|
|
test_response *resp = | test_response *resp = |
new test_response(msg->getKey(), | new test_response(msg->getKey(), |
msg->getRouting(), | msg->getRouting(), |
|
|
<li><b>Complete the Reply</b> by calling the following | <li><b>Complete the Reply</b> by calling the following |
helper routine in the Base class</li> | helper routine in the Base class</li> |
| |
<pre> |
<pre> _completeAsyncResponse(msg, resp, ASYNC_OPSTATE_COMPLETE, 0); |
_completeAsyncResponse(msg, resp, ASYNC_OPSTATE_COMPLETE, 0); |
|
| |
} | } |
</pre> | </pre> |
|
|
</p> | </p> |
| |
<pre> | <pre> |
|
|
cout << " sending LEGACY to test server" << endl; | cout << " sending LEGACY to test server" << endl; |
| |
Message *legacy = new Message(0x11100011, | Message *legacy = new Message(0x11100011, |
|
|
</p> | </p> |
| |
<pre> | <pre> |
|
|
void MessageQueueService::handle_AsyncLegacyOperationStart( | void MessageQueueService::handle_AsyncLegacyOperationStart( |
AsyncLegacyOperationStart *req) | AsyncLegacyOperationStart *req) |
{ | { |
|
|
| |
<li><b>Implement the virtual <code>_handle_async_request</code> method.</b></li> | <li><b>Implement the virtual <code>_handle_async_request</code> method.</b></li> |
<pre> | <pre> |
|
|
void MessageQueueServer::_handle_async_request(AsyncRequest *req) | void MessageQueueServer::_handle_async_request(AsyncRequest *req) |
{ | { |
if (req->getType() == 0x04100000 ) | if (req->getType() == 0x04100000 ) |
|
|
} | } |
</pre> | </pre> |
<li><b>Implement a dispatcher for <code>ASYNC_LEGACY_OP_START</code></b></li> | <li><b>Implement a dispatcher for <code>ASYNC_LEGACY_OP_START</code></b></li> |
<pre> |
<pre> else if ( req->getType() == async_messages::ASYNC_LEGACY_OP_START ) |
else if ( req->getType() == async_messages::ASYNC_LEGACY_OP_START ) |
|
{ | { |
req->op->processing(); | req->op->processing(); |
handle_LegacyOpStart(static_cast<AsyncLegacyOperationStart *>(req)); | handle_LegacyOpStart(static_cast<AsyncLegacyOperationStart *>(req)); |
|
|
</pre> | </pre> |
<li><b>Implement a dispatcher for <code>ASYNC_LEGACY_OP_START</code></b></li> | <li><b>Implement a dispatcher for <code>ASYNC_LEGACY_OP_START</code></b></li> |
<pre> | <pre> |
|
|
void MessageQueueServer::handle_LegacyOpStart(AsyncLegacyOperationStart *req) | void MessageQueueServer::handle_LegacyOpStart(AsyncLegacyOperationStart *req) |
{ | { |
| |
|
|
</p> | </p> |
<br> | <br> |
<div class="exampleOuter"><div class="exampleInner"> | <div class="exampleOuter"><div class="exampleInner"> |
<pre> |
<pre> Service A--Message----1----> |
Service A--Message----1----> |
|
| | | |
. <-----------(return)-+----->-(loop)--->-+ | . <-----------(return)-+----->-(loop)--->-+ |
. | Meta Dispatcher | | . | Meta Dispatcher | |
|
|
| |
<div class="exampleOuter"><div class="exampleInner"> | <div class="exampleOuter"><div class="exampleInner"> |
<pre> | <pre> |
|
|
Boolean <b><font color=#000000>SendAsync</font></b><font color=#990000>(</font>AsyncOpNode <font color=#990000>*</font>op<font color=#990000>,</font> | Boolean <b><font color=#000000>SendAsync</font></b><font color=#990000>(</font>AsyncOpNode <font color=#990000>*</font>op<font color=#990000>,</font> |
Uint32 destination<font color=#990000>,</font> | Uint32 destination<font color=#990000>,</font> |
<font color=#009900>void</font> <font color=#990000>(</font><font color=#990000>*</font>callback<font color=#990000>)</font><font color=#990000>(</font>AsyncOpNode <font color=#990000>*</font><font color=#990000>,</font> MessageQueue <font color=#990000>*</font><font color=#990000>,</font> <font color=#009900>void</font> <font color=#990000>*</font><font color=#990000>)</font><font color=#990000>,</font> | <font color=#009900>void</font> <font color=#990000>(</font><font color=#990000>*</font>callback<font color=#990000>)</font><font color=#990000>(</font>AsyncOpNode <font color=#990000>*</font><font color=#990000>,</font> MessageQueue <font color=#990000>*</font><font color=#990000>,</font> <font color=#009900>void</font> <font color=#990000>*</font><font color=#990000>)</font><font color=#990000>,</font> |
|
|
callback function. | callback function. |
</p> | </p> |
<div class="exampleOuter"><div class="exampleInner"> | <div class="exampleOuter"><div class="exampleInner"> |
<pre> |
<pre><b><font color=#0000FF>virtual</font></b> <font color=#009900>void</font> <b><font color=#000000>_handle_async_request</font></b><font color=#990000>(</font>AsyncRequest <font color=#990000>*</font>req<font color=#990000>)</font><font color=#990000>;</font> |
<b><font color=#0000FF>virtual</font></b> <font color=#009900>void</font> <b><font color=#000000>_handle_async_request</font></b><font color=#990000>(</font>AsyncRequest <font color=#990000>*</font>req<font color=#990000>)</font><font color=#990000>;</font> |
|
</pre> | </pre> |
<div class="note"> | <div class="note"> |
<var>AsyncRequest *req (In)</var> is the incoming | <var>AsyncRequest *req (In)</var> is the incoming |
|
|
<div class="exampleOuter"><div class = "exampleInner"> | <div class="exampleOuter"><div class = "exampleInner"> |
| |
<pre> | <pre> |
|
|
<b><font color=#0000FF>static</font></b> <font color=#009900>void</font> <b><font color=#000000>async_callback_function</font></b><font color=#990000>(</font>AsyncOpNode <font color=#990000>*</font>op<font color=#990000>,</font> MessageQueue <font color=#990000>*</font><font color=#990000>,</font> <font color=#009900>void</font> <font color=#990000>*</font><font color=#990000>)</font><font color=#990000>;</font> | <b><font color=#0000FF>static</font></b> <font color=#009900>void</font> <b><font color=#000000>async_callback_function</font></b><font color=#990000>(</font>AsyncOpNode <font color=#990000>*</font>op<font color=#990000>,</font> MessageQueue <font color=#990000>*</font><font color=#990000>,</font> <font color=#009900>void</font> <font color=#990000>*</font><font color=#990000>)</font><font color=#990000>;</font> |
| |
</pre> | </pre> |
|
|
message to the <var>op</var> and set the | message to the <var>op</var> and set the |
<code>ASYNC_OPSTATE_COMPLETE</code> bit. <br><br> | <code>ASYNC_OPSTATE_COMPLETE</code> bit. <br><br> |
<pre> | <pre> |
|
|
void my_class::async_callback_function(AsyncOpNode *op, | void my_class::async_callback_function(AsyncOpNode *op, |
MessageQueue *q, | MessageQueue *q, |
void *parm) | void *parm) |
|
|
| |
<h3>Strategies for Handling Non-Blocking Responses</h3> | <h3>Strategies for Handling Non-Blocking Responses</h3> |
<p> | <p> |
All of the legacy message handling code in Pegasus is |
All of the legacy message handling code in Pegasus is syncrhonous, meaning that a service can send a request |
syncrhonous, meaning that a service can send a request |
|
and receive the response in two adjacent lines of | and receive the response in two adjacent lines of |
code. Non-blocking messages are different because the | code. Non-blocking messages are different because the |
timing and existence of a response message is | timing and existence of a response message is |
undetermined. |
undetermined. </p> |
</p> |
|
<p> | <p> |
There are couple of possible strategies for handing | There are couple of possible strategies for handing |
non-blocking response messages. |
non-blocking response messages. <ol> |
|
|
<ol> |
|
<li>Seperate the request creation and sending code | <li>Seperate the request creation and sending code |
from the response handling code into distinct methods.</li> | from the response handling code into distinct methods.</li> |
<li>Handle request creation and sending and response | <li>Handle request creation and sending and response |
|
|
<ol> | <ol> |
<li>Write the request generation method. | <li>Write the request generation method. |
<pre> | <pre> |
|
|
void my_class::generate_request(Uint32 destination) | void my_class::generate_request(Uint32 destination) |
{ | { |
AsyncOpNode *op = get_op(); | AsyncOpNode *op = get_op(); |
|
|
</li> | </li> |
<li> Write the request handling method. | <li> Write the request handling method. |
<pre> | <pre> |
|
|
void my_class::handle_response(AsyncOpNode *op) | void my_class::handle_response(AsyncOpNode *op) |
{ | { |
my_response *res = op->get_response(); | my_response *res = op->get_response(); |
|
|
<li> Have your callback method call your response | <li> Have your callback method call your response |
method. | method. |
<pre> | <pre> |
|
|
void my_class:my_callback(AsyncOpNode *op, MessageQueue *queue, void *parm) | void my_class:my_callback(AsyncOpNode *op, MessageQueue *queue, void *parm) |
{ | { |
my_class *myself = static_cast<queue> | my_class *myself = static_cast<queue> |
|
|
<p> | <p> |
This strategy requires two separate code blocks within | This strategy requires two separate code blocks within |
the request/response method, and conditional execution | the request/response method, and conditional execution |
depending on the status of the operation. |
depending on the status of the operation. </p> |
</p> |
|
<p> | <p> |
I think the advantage of this strategy is that it | I think the advantage of this strategy is that it |
matches more closely the current<br> | matches more closely the current<br> |
<code>handleEnqueue(Message *msg)</code> code | <code>handleEnqueue(Message *msg)</code> code |
convention that is in Pegasus. |
convention that is in Pegasus. </p> |
</p> |
|
| |
<div class="exampleOuter"> | <div class="exampleOuter"> |
<div class="exampleInner"> | <div class="exampleInner"> |
<ol> | <ol> |
<li>Write the request generation block. | <li>Write the request generation block. |
<pre> | <pre> |
|
|
void my_class::handle_operation(AsyncOpNode *op) | void my_class::handle_operation(AsyncOpNode *op) |
{ | { |
if(op == NULL) | if(op == NULL) |
|
|
</li> | </li> |
<li> Write the request handling block. | <li> Write the request handling block. |
<pre> | <pre> |
|
|
void my_class::handle_operation(AsyncOpNode *op) | void my_class::handle_operation(AsyncOpNode *op) |
{ | { |
if(op == NULL) | if(op == NULL) |
|
|
<li> Have your callback method call your handler | <li> Have your callback method call your handler |
method. | method. |
<pre> | <pre> |
|
|
void my_class:my_callback(AsyncOpNode *op, MessageQueue *queue, void *parm) | void my_class:my_callback(AsyncOpNode *op, MessageQueue *queue, void *parm) |
{ | { |
my_class *myself = static_cast<queue> | my_class *myself = static_cast<queue> |
|
|
| |
<h3>cimom (Meta Dispatcher)</h3> | <h3>cimom (Meta Dispatcher)</h3> |
| |
<pre> |
<pre><tt> |
<tt> |
<i><font color=#9A1900>//%LICENSE////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//%///-*-c++-*-/////////////////////////////////////////////////////////////////</font></i> |
|
<i><font color=#9A1900>//</font></i> |
|
<i><font color=#9A1900>// Copyright (c) 2000, 2001 BMC Software, Hewlett-Packard Company, IBM,</font></i> |
|
<i><font color=#9A1900>// The Open Group, Tivoli Systems</font></i> |
|
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Permission is hereby granted, free of charge, to any person obtaining a copy</font></i> |
<i><font color=#9A1900>// Licensed to The Open Group (TOG) under one or more contributor license</font></i> |
<i><font color=#9A1900>// of this software and associated documentation files (the "Software"), to </font></i> |
<i><font color=#9A1900>// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with</font></i> |
<i><font color=#9A1900>// deal in the Software without restriction, including without limitation the </font></i> |
<i><font color=#9A1900>// this work for additional information regarding copyright ownership.</font></i> |
<i><font color=#9A1900>// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or </font></i> |
<i><font color=#9A1900>// Each contributor licenses this file to you under the OpenPegasus Open</font></i> |
<i><font color=#9A1900>// sell copies of the Software, and to permit persons to whom the Software is</font></i> |
<i><font color=#9A1900>// Source License; you may not use this file except in compliance with the</font></i> |
<i><font color=#9A1900>// furnished to do so, subject to the following conditions:</font></i> |
<i><font color=#9A1900>// License.</font></i> |
<i><font color=#9A1900>// </font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN </font></i> |
<i><font color=#9A1900>// Permission is hereby granted, free of charge, to any person obtaining a</font></i> |
<i><font color=#9A1900>// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED</font></i> |
<i><font color=#9A1900>// copy of this software and associated documentation files (the "Software"),</font></i> |
<i><font color=#9A1900>// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT</font></i> |
<i><font color=#9A1900>// to deal in the Software without restriction, including without limitation</font></i> |
<i><font color=#9A1900>// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR </font></i> |
<i><font color=#9A1900>// the rights to use, copy, modify, merge, publish, distribute, sublicense,</font></i> |
<i><font color=#9A1900>// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT </font></i> |
<i><font color=#9A1900>// and/or sell copies of the Software, and to permit persons to whom the</font></i> |
<i><font color=#9A1900>// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN </font></i> |
<i><font color=#9A1900>// Software is furnished to do so, subject to the following conditions:</font></i> |
<i><font color=#9A1900>// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION</font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font></i> |
<i><font color=#9A1900>// The above copyright notice and this permission notice shall be included</font></i> |
|
<i><font color=#9A1900>// in all copies or substantial portions of the Software.</font></i> |
|
<i><font color=#9A1900>//</font></i> |
|
<i><font color=#9A1900>// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</font></i> |
|
<i><font color=#9A1900>// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</font></i> |
|
<i><font color=#9A1900>// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</font></i> |
|
<i><font color=#9A1900>// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY</font></i> |
|
<i><font color=#9A1900>// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,</font></i> |
|
<i><font color=#9A1900>// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE</font></i> |
|
<i><font color=#9A1900>// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//==============================================================================</font></i> |
<i><font color=#9A1900>//////////////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Author: Mike Day (mdday@us.ibm.com</font></i> | <i><font color=#9A1900>// Author: Mike Day (mdday@us.ibm.com</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Modified By: </font></i> | <i><font color=#9A1900>// Modified By: </font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//%/////////////////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//////////////////////////////////////////////////////////////////////////</font></i> |
| |
<b><font color=#000080>#ifndef</font></b> CIMOM_include | <b><font color=#000080>#ifndef</font></b> CIMOM_include |
<b><font color=#000080>#define</font></b> CIMOM_include | <b><font color=#000080>#define</font></b> CIMOM_include |
|
|
| |
<h3>MessageQueueService</h3> | <h3>MessageQueueService</h3> |
| |
<pre> |
<pre><tt> |
<tt> |
<i><font color=#9A1900>//%LICENSE////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//%////-*-c++-*-////////////////////////////////////////////////////////////////</font></i> |
|
<i><font color=#9A1900>//</font></i> |
|
<i><font color=#9A1900>// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM</font></i> |
|
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Permission is hereby granted, free of charge, to any person obtaining a copy</font></i> |
<i><font color=#9A1900>// Licensed to The Open Group (TOG) under one or more contributor license</font></i> |
<i><font color=#9A1900>// of this software and associated documentation files (the "Software"), to</font></i> |
<i><font color=#9A1900>// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with</font></i> |
<i><font color=#9A1900>// deal in the Software without restriction, including without limitation the</font></i> |
<i><font color=#9A1900>// this work for additional information regarding copyright ownership.</font></i> |
<i><font color=#9A1900>// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</font></i> |
<i><font color=#9A1900>// Each contributor licenses this file to you under the OpenPegasus Open</font></i> |
<i><font color=#9A1900>// sell copies of the Software, and to permit persons to whom the Software is</font></i> |
<i><font color=#9A1900>// Source License; you may not use this file except in compliance with the</font></i> |
<i><font color=#9A1900>// furnished to do so, subject to the following conditions:</font></i> |
<i><font color=#9A1900>// License.</font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN</font></i> |
<i><font color=#9A1900>// Permission is hereby granted, free of charge, to any person obtaining a</font></i> |
<i><font color=#9A1900>// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED</font></i> |
<i><font color=#9A1900>// copy of this software and associated documentation files (the "Software"),</font></i> |
<i><font color=#9A1900>// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT</font></i> |
<i><font color=#9A1900>// to deal in the Software without restriction, including without limitation</font></i> |
<i><font color=#9A1900>// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR</font></i> |
<i><font color=#9A1900>// the rights to use, copy, modify, merge, publish, distribute, sublicense,</font></i> |
<i><font color=#9A1900>// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT</font></i> |
<i><font color=#9A1900>// and/or sell copies of the Software, and to permit persons to whom the</font></i> |
<i><font color=#9A1900>// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</font></i> |
<i><font color=#9A1900>// Software is furnished to do so, subject to the following conditions:</font></i> |
<i><font color=#9A1900>// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION</font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font></i> |
<i><font color=#9A1900>// The above copyright notice and this permission notice shall be included</font></i> |
|
<i><font color=#9A1900>// in all copies or substantial portions of the Software.</font></i> |
|
<i><font color=#9A1900>//</font></i> |
|
<i><font color=#9A1900>// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</font></i> |
|
<i><font color=#9A1900>// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</font></i> |
|
<i><font color=#9A1900>// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</font></i> |
|
<i><font color=#9A1900>// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY</font></i> |
|
<i><font color=#9A1900>// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,</font></i> |
|
<i><font color=#9A1900>// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE</font></i> |
|
<i><font color=#9A1900>// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//==============================================================================</font></i> |
<i><font color=#9A1900>//////////////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Author: Mike Day (mdday@us.ibm.com)</font></i> |
<i><font color=#9A1900>// Author: Mike Day (mdday@us.ibm.com</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Modified By:</font></i> | <i><font color=#9A1900>// Modified By:</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//%/////////////////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//////////////////////////////////////////////////////////////////////////</font></i> |
| |
<b><font color=#000080>#ifndef</font></b> Pegasus_MessageQueue_Service_h | <b><font color=#000080>#ifndef</font></b> Pegasus_MessageQueue_Service_h |
<b><font color=#000080>#define</font></b> Pegasus_MessageQueue_Service_h | <b><font color=#000080>#define</font></b> Pegasus_MessageQueue_Service_h |
|
|
| |
<h3>Asynchronous Messages</h3> | <h3>Asynchronous Messages</h3> |
| |
<pre> |
<pre><tt> |
<tt> |
<i><font color=#9A1900>//%LICENSE////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//%///-*-c++-*-/////////////////////////////////////////////////////////////////</font></i> |
|
<i><font color=#9A1900>//</font></i> |
|
<i><font color=#9A1900>// Copyright (c) 2000, 2001 BMC Software, Hewlett-Packard Company, IBM,</font></i> |
|
<i><font color=#9A1900>// The Open Group, Tivoli Systems</font></i> |
|
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Permission is hereby granted, free of charge, to any person obtaining a copy</font></i> |
<i><font color=#9A1900>// Licensed to The Open Group (TOG) under one or more contributor license</font></i> |
<i><font color=#9A1900>// of this software and associated documentation files (the "Software"), to</font></i> |
<i><font color=#9A1900>// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with</font></i> |
<i><font color=#9A1900>// deal in the Software without restriction, including without limitation the</font></i> |
<i><font color=#9A1900>// this work for additional information regarding copyright ownership.</font></i> |
<i><font color=#9A1900>// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or</font></i> |
<i><font color=#9A1900>// Each contributor licenses this file to you under the OpenPegasus Open</font></i> |
<i><font color=#9A1900>// sell copies of the Software, and to permit persons to whom the Software is</font></i> |
<i><font color=#9A1900>// Source License; you may not use this file except in compliance with the</font></i> |
<i><font color=#9A1900>// furnished to do so, subject to the following conditions:</font></i> |
<i><font color=#9A1900>// License.</font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN</font></i> |
<i><font color=#9A1900>// Permission is hereby granted, free of charge, to any person obtaining a</font></i> |
<i><font color=#9A1900>// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED</font></i> |
<i><font color=#9A1900>// copy of this software and associated documentation files (the "Software"),</font></i> |
<i><font color=#9A1900>// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT</font></i> |
<i><font color=#9A1900>// to deal in the Software without restriction, including without limitation</font></i> |
<i><font color=#9A1900>// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR</font></i> |
<i><font color=#9A1900>// the rights to use, copy, modify, merge, publish, distribute, sublicense,</font></i> |
<i><font color=#9A1900>// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT</font></i> |
<i><font color=#9A1900>// and/or sell copies of the Software, and to permit persons to whom the</font></i> |
<i><font color=#9A1900>// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</font></i> |
<i><font color=#9A1900>// Software is furnished to do so, subject to the following conditions:</font></i> |
<i><font color=#9A1900>// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION</font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font></i> |
<i><font color=#9A1900>// The above copyright notice and this permission notice shall be included</font></i> |
|
<i><font color=#9A1900>// in all copies or substantial portions of the Software.</font></i> |
|
<i><font color=#9A1900>//</font></i> |
|
<i><font color=#9A1900>// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</font></i> |
|
<i><font color=#9A1900>// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</font></i> |
|
<i><font color=#9A1900>// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</font></i> |
|
<i><font color=#9A1900>// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY</font></i> |
|
<i><font color=#9A1900>// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,</font></i> |
|
<i><font color=#9A1900>// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE</font></i> |
|
<i><font color=#9A1900>// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//==============================================================================</font></i> |
<i><font color=#9A1900>//////////////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Author: Mike Day (mdday@us.ibm.com)</font></i> |
<i><font color=#9A1900>// Author: Mike Day (mdday@us.ibm.com</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Modified By:</font></i> | <i><font color=#9A1900>// Modified By:</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//%/////////////////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//////////////////////////////////////////////////////////////////////////</font></i> |
| |
<b><font color=#000080>#ifndef</font></b> Pegasus_CimomMessage_h | <b><font color=#000080>#ifndef</font></b> Pegasus_CimomMessage_h |
<b><font color=#000080>#define</font></b> Pegasus_CimomMessage_h | <b><font color=#000080>#define</font></b> Pegasus_CimomMessage_h |
|
|
| |
<h3>AsyncOpNode</h3> | <h3>AsyncOpNode</h3> |
| |
<pre> |
<pre><tt> |
<tt> |
<i><font color=#9A1900>//%LICENSE////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//%///////////-*-c++-*-//////////////////////////////////////////////////////</font></i> |
|
<i><font color=#9A1900>//</font></i> |
|
<i><font color=#9A1900>// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM</font></i> |
|
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Permission is hereby granted, free of charge, to any person obtaining a copy</font></i> |
<i><font color=#9A1900>// Licensed to The Open Group (TOG) under one or more contributor license</font></i> |
<i><font color=#9A1900>// of this software and associated documentation files (the "Software"), to </font></i> |
<i><font color=#9A1900>// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with</font></i> |
<i><font color=#9A1900>// deal in the Software without restriction, including without limitation the </font></i> |
<i><font color=#9A1900>// this work for additional information regarding copyright ownership.</font></i> |
<i><font color=#9A1900>// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or </font></i> |
<i><font color=#9A1900>// Each contributor licenses this file to you under the OpenPegasus Open</font></i> |
<i><font color=#9A1900>// sell copies of the Software, and to permit persons to whom the Software is</font></i> |
<i><font color=#9A1900>// Source License; you may not use this file except in compliance with the</font></i> |
<i><font color=#9A1900>// furnished to do so, subject to the following conditions:</font></i> |
<i><font color=#9A1900>// License.</font></i> |
<i><font color=#9A1900>// </font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN </font></i> |
<i><font color=#9A1900>// Permission is hereby granted, free of charge, to any person obtaining a</font></i> |
<i><font color=#9A1900>// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED</font></i> |
<i><font color=#9A1900>// copy of this software and associated documentation files (the "Software"),</font></i> |
<i><font color=#9A1900>// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT</font></i> |
<i><font color=#9A1900>// to deal in the Software without restriction, including without limitation</font></i> |
<i><font color=#9A1900>// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR </font></i> |
<i><font color=#9A1900>// the rights to use, copy, modify, merge, publish, distribute, sublicense,</font></i> |
<i><font color=#9A1900>// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT </font></i> |
<i><font color=#9A1900>// and/or sell copies of the Software, and to permit persons to whom the</font></i> |
<i><font color=#9A1900>// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN </font></i> |
<i><font color=#9A1900>// Software is furnished to do so, subject to the following conditions:</font></i> |
<i><font color=#9A1900>// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION</font></i> |
<i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font></i> |
<i><font color=#9A1900>// The above copyright notice and this permission notice shall be included</font></i> |
|
<i><font color=#9A1900>// in all copies or substantial portions of the Software.</font></i> |
|
<i><font color=#9A1900>//</font></i> |
|
<i><font color=#9A1900>// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</font></i> |
|
<i><font color=#9A1900>// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</font></i> |
|
<i><font color=#9A1900>// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</font></i> |
|
<i><font color=#9A1900>// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY</font></i> |
|
<i><font color=#9A1900>// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,</font></i> |
|
<i><font color=#9A1900>// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE</font></i> |
|
<i><font color=#9A1900>// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//==============================================================================</font></i> |
<i><font color=#9A1900>//////////////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Author: Mike Day (mdday@us.ibm.com)</font></i> |
<i><font color=#9A1900>// Author: Mike Day (mdday@us.ibm.com</font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>// Modified By: </font></i> | <i><font color=#9A1900>// Modified By: </font></i> |
<i><font color=#9A1900>//</font></i> | <i><font color=#9A1900>//</font></i> |
<i><font color=#9A1900>//%/////////////////////////////////////////////////////////////////////////////</font></i> |
<i><font color=#9A1900>//////////////////////////////////////////////////////////////////////////</font></i> |
| |
| |
<b><font color=#000080>#ifndef</font></b> Pegasus_AsyncOpNode_h | <b><font color=#000080>#ifndef</font></b> Pegasus_AsyncOpNode_h |
|
|
<!-- hhmts start --> | <!-- hhmts start --> |
Last modified: Wed Mar 13 12:26:56 EST 2002 | Last modified: Wed Mar 13 12:26:56 EST 2002 |
<!-- hhmts end --> | <!-- hhmts end --> |
</body> |
</body></html> |
</html> |
|
|
|
|
|