version 1.27, 2002/05/29 19:29:38
|
version 1.34.2.1, 2002/10/25 20:49:43
|
|
|
//%////-*-c++-*-//////////////////////////////////////////////////////////////// |
//%///////////-*-c++-*-///////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM |
// Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM, |
|
// The Open Group, Tivoli Systems |
// | // |
// Permission is hereby granted, free of charge, to any person obtaining a copy | // Permission is hereby granted, free of charge, to any person obtaining a copy |
// of this software and associated documentation files (the "Software"), to | // of this software and associated documentation files (the "Software"), to |
|
|
#include <Pegasus/Common/Config.h> | #include <Pegasus/Common/Config.h> |
#include <Pegasus/Common/Constants.h> | #include <Pegasus/Common/Constants.h> |
#include <Pegasus/Common/Message.h> | #include <Pegasus/Common/Message.h> |
#include <Pegasus/Common/Exception.h> |
#include <Pegasus/Common/InternalException.h> |
#include <Pegasus/Common/IPC.h> | #include <Pegasus/Common/IPC.h> |
#include <Pegasus/Common/Thread.h> | #include <Pegasus/Common/Thread.h> |
#include <Pegasus/Common/AsyncOpNode.h> | #include <Pegasus/Common/AsyncOpNode.h> |
|
|
#include <Pegasus/Common/CimomMessage.h> | #include <Pegasus/Common/CimomMessage.h> |
#include <Pegasus/Common/MessageQueueService.h> | #include <Pegasus/Common/MessageQueueService.h> |
#include <Pegasus/Common/peg_authorization.h> | #include <Pegasus/Common/peg_authorization.h> |
|
#include <Pegasus/Common/Linkage.h> |
|
#include <Pegasus/Common/String.h> |
| |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
|
|
CLIENT_SEND_ASYNC | | CLIENT_SEND_ASYNC | |
CLIENT_SEND_ASYNC_MODULE | | CLIENT_SEND_ASYNC_MODULE | |
CLIENT_BLOCKING_THREAD_EXEC | | CLIENT_BLOCKING_THREAD_EXEC | |
CLIENT_ASYNC_THREAD_EXEC) |
CLIENT_ASYNC_THREAD_EXEC), |
|
reference_count(1) |
{ | { |
} | } |
| |
|
|
{ | { |
} | } |
| |
|
client_handle & operator=(const client_handle & handle) |
|
{ |
|
if(this == &handle) |
|
return *this; |
|
reference_count++; |
|
return *this; |
|
} |
|
|
|
|
virtual Boolean authorized(Uint32, Uint32); | virtual Boolean authorized(Uint32, Uint32); |
virtual Boolean authorized(Uint32 operation); | virtual Boolean authorized(Uint32 operation); |
virtual Boolean authorized(void); | virtual Boolean authorized(void); |
PEGASUS_STD(bitset<32>) allowed_operations; | PEGASUS_STD(bitset<32>) allowed_operations; |
|
AtomicInt reference_count; |
|
|
}; | }; |
| |
class callback_handle | class callback_handle |
|
|
| |
| |
ModuleController(const char *name); | ModuleController(const char *name); |
ModuleController(const char *name, |
/* ModuleController(const char *name, */ |
Sint16 min_threads, |
/* Sint16 min_threads, */ |
Sint16 max_threads, |
/* Sint16 max_threads, */ |
struct timeval & create_thread, |
/* struct timeval & create_thread, */ |
struct timeval & destroy_thread, |
/* struct timeval & destroy_thread, */ |
struct timeval & deadlock); |
/* struct timeval & deadlock); */ |
| |
| |
~ModuleController(void); | ~ModuleController(void); |
|
|
void (*shutdown_notify)(Uint32, void *), | void (*shutdown_notify)(Uint32, void *), |
pegasus_module **instance = NULL) | pegasus_module **instance = NULL) |
| |
throw(AlreadyExists, IncompatibleTypes); |
throw(AlreadyExistsException, IncompatibleTypesException); |
| |
Boolean deregister_module(const String & module_name) | Boolean deregister_module(const String & module_name) |
throw(Permission); | throw(Permission); |
|
|
| |
static ModuleController & get_client_handle(const pegasus_identity & id, | static ModuleController & get_client_handle(const pegasus_identity & id, |
client_handle **handle) | client_handle **handle) |
throw(IncompatibleTypes); |
throw(IncompatibleTypesException); |
| |
static ModuleController & get_client_handle(char *controller, |
static ModuleController & get_client_handle(const char *controller, |
const pegasus_identity & id, | const pegasus_identity & id, |
client_handle **handle) | client_handle **handle) |
throw(IncompatibleTypes); |
throw(IncompatibleTypesException); |
| |
| |
void return_client_handle(client_handle *handle); | void return_client_handle(client_handle *handle); |
|
|
virtual void _handle_async_request(AsyncRequest *rq); | virtual void _handle_async_request(AsyncRequest *rq); |
virtual void _handle_async_callback(AsyncOpNode *op); | virtual void _handle_async_callback(AsyncOpNode *op); |
| |
|
|
|
|
|
|
private: | private: |
static void _async_handleEnqueue(AsyncOpNode *h, MessageQueue *q, void *parm); | static void _async_handleEnqueue(AsyncOpNode *h, MessageQueue *q, void *parm); |
DQueue<pegasus_module> _modules; | DQueue<pegasus_module> _modules; |
ThreadPool _thread_pool; |
|
pegasus_module _internal_module; | pegasus_module _internal_module; |
AsyncReply *_send_wait(Uint32, AsyncRequest *); | AsyncReply *_send_wait(Uint32, AsyncRequest *); |
AsyncReply *_send_wait(Uint32, const String &, AsyncRequest *); | AsyncReply *_send_wait(Uint32, const String &, AsyncRequest *); |