version 1.3, 2001/12/14 21:04:02
|
version 1.4, 2001/12/16 02:43:33
|
|
|
#define ASYNC_OPSTATE_PAUSED 0x00000200 | #define ASYNC_OPSTATE_PAUSED 0x00000200 |
#define ASYNC_OPSTATE_SUSPENDED 0x00000400 | #define ASYNC_OPSTATE_SUSPENDED 0x00000400 |
#define ASYNC_OPSTATE_RESUMED 0x00000800 | #define ASYNC_OPSTATE_RESUMED 0x00000800 |
|
#define ASYNC_OPSTATE_ORPHANED 0X00001000 |
// we need a nak response message, with an error code and exception |
|
// so that the dispatcher can receive a nak from the provider manager |
|
|
|
| |
| |
| |
|
|
| |
OperationContext & get_context(void) ; | OperationContext & get_context(void) ; |
| |
void put_request(Message *request) ; |
void put_request(const Message *request) ; |
Message *get_request(void) ; |
const Message *get_request(void) ; |
| |
void put_response(Message *response) ; |
void put_response(const Message *response) ; |
Message *get_response(void) ; |
const Message *get_response(void) ; |
| |
Uint32 read_state(void) ; | Uint32 read_state(void) ; |
void write_state(Uint32) ; | void write_state(Uint32) ; |
|
|
return false; | return false; |
} | } |
| |
// note: lock the op node before using the context |
// context is now a locked list |
inline OperationContext & AsyncOpNode::get_context(void) | inline OperationContext & AsyncOpNode::get_context(void) |
{ | { |
return _operation_list; | return _operation_list; |
} | } |
| |
| |
inline void AsyncOpNode::put_request(Message *request) |
inline void AsyncOpNode::put_request(const Message *request) |
{ | { |
_mut.lock(pegasus_thread_self()); | _mut.lock(pegasus_thread_self()); |
_request = request; |
_request = const_cast<Message *>(request); |
_mut.unlock(); | _mut.unlock(); |
| |
} | } |
| |
inline Message * AsyncOpNode::get_request(void) |
inline const Message * AsyncOpNode::get_request(void) |
{ | { |
Message *req = 0; | Message *req = 0; |
_mut.lock(pegasus_thread_self()); | _mut.lock(pegasus_thread_self()); |
|
|
return req; | return req; |
} | } |
| |
inline void AsyncOpNode::put_response(Message *response) |
inline void AsyncOpNode::put_response(const Message *response) |
{ | { |
_mut.lock(pegasus_thread_self()); | _mut.lock(pegasus_thread_self()); |
_response = response; |
_response = const_cast<Message *>(response); |
_mut.unlock(); | _mut.unlock(); |
| |
} | } |
| |
inline Message * AsyncOpNode::get_response(void) |
inline const Message * AsyncOpNode::get_response(void) |
{ | { |
Message *resp; | Message *resp; |
_mut.lock(pegasus_thread_self()); | _mut.lock(pegasus_thread_self()); |
|
|
_children.remove(child); | _children.remove(child); |
} | } |
| |
// need to have a handle to the manager; i.e., provider manager, |
|
// service manager, repository manager. |
|
// handle must support the cancellation of aysnchronous operations. |
|
// manager->cancel_operation(); |
|
// manager->suspend_operation(); |
|
// manager->resume_operation(); |
|
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |
| |