version 1.3, 2003/06/05 12:31:55
|
version 1.4, 2003/06/05 20:43:15
|
|
|
int8* attrs; | int8* attrs; |
int8* type; | int8* type; |
int8* scopes; | int8* scopes; |
unsigned short lifetime; |
Uint32 lifetime; |
unsigned short expire; |
Uint32 expire; |
| |
| |
private: | private: |
|
|
| |
| |
lifetime = _lifetime; | lifetime = _lifetime; |
time_t now = time(NULL); |
Uint32 msec, now; |
expire = now + lifetime; |
System::getCurrentTime(now, msec); |
|
expire = 0; |
} | } |
| |
sa_reg_params::~sa_reg_params(void) | sa_reg_params::~sa_reg_params(void) |
|
|
| |
void slp_service_agent::_init(void) | void slp_service_agent::_init(void) |
{ | { |
|
|
|
_initialized = 0; |
#ifdef PEGASUS_OS_TYPE_WINDOWS | #ifdef PEGASUS_OS_TYPE_WINDOWS |
_lib_fileName.append("slp_client.dll"); | _lib_fileName.append("slp_client.dll"); |
#elif defined(PEGASUS_OS_HPUX) | #elif defined(PEGASUS_OS_HPUX) |
|
|
#elif defined(PEGASUS_OS_OS400) | #elif defined(PEGASUS_OS_OS400) |
_lib_fileName.append("slp_client"); | _lib_fileName.append("slp_client"); |
#else | #else |
_lib_fileName.append("/usr/local/lib/libslp_client.so"); |
_lib_fileName.append("libslp_client.so"); |
#endif | #endif |
_lib_handle = System::loadDynamicLibrary((const char *)_lib_fileName.getCString()); | _lib_handle = System::loadDynamicLibrary((const char *)_lib_fileName.getCString()); |
| |
|
|
System::loadDynamicSymbol(_lib_handle, "test_srv_reg"); | System::loadDynamicSymbol(_lib_handle, "test_srv_reg"); |
| |
_initialized = 1; | _initialized = 1; |
} |
|
else |
if(_create_client == 0 || _destroy_client == 0 || _find_das == 0 || _test_reg == 0) |
{ | { |
_create_client = 0; |
_initialized = 0; |
_test_reg = 0; |
System::unloadDynamicLibrary(_lib_handle); |
|
} |
} | } |
} | } |
| |
|
|
const char* scopes, | const char* scopes, |
unsigned short lifetime) | unsigned short lifetime) |
{ | { |
|
if(_initialized.value() == 0 ) |
|
throw UninitializedObjectException(); |
| |
if(url == 0 || attributes == 0 || type == 0) | if(url == 0 || attributes == 0 || type == 0) |
return false; | return false; |
|
|
| |
void slp_service_agent::unregister(void) | void slp_service_agent::unregister(void) |
{ | { |
|
if(_initialized.value() == 0 ) |
|
throw UninitializedObjectException(); |
|
_should_listen = 0; |
|
_listen_thread.join(); |
|
|
while(slp_reg_table::Iterator i = _internal_regs.start()) | while(slp_reg_table::Iterator i = _internal_regs.start()) |
{ | { |
sa_reg_params *rp = i.value(); | sa_reg_params *rp = i.value(); |
|
|
| |
| |
| |
Uint32 slp_service_agent::test_registration(const char *type, |
Uint32 slp_service_agent::test_registration(const char *url, |
const char *url, |
|
const char *attrs, | const char *attrs, |
|
const char *type, |
const char *scopes) | const char *scopes) |
{ | { |
| |
|
if(_initialized.value() == 0 ) |
|
throw UninitializedObjectException(); |
| |
if(type == 0) | if(type == 0) |
return 1; | return 1; |
|
|
void slp_service_agent::start_listener(void) | void slp_service_agent::start_listener(void) |
{ | { |
// see if we need to use an slp directory agent | // see if we need to use an slp directory agent |
|
if(_initialized.value() == 0 ) |
|
throw UninitializedObjectException(); |
| |
_using_das = _find_das(_rep, NULL, "DEFAULT"); | _using_das = _find_das(_rep, NULL, "DEFAULT"); |
| |
|
|
slp_service_agent *agent = | slp_service_agent *agent = |
(slp_service_agent *)myself->get_parm(); | (slp_service_agent *)myself->get_parm(); |
| |
|
|
|
|
lslpMsg msg_list; | lslpMsg msg_list; |
| |
while(agent->_should_listen.value()) | while(agent->_should_listen.value()) |
{ | { |
time_t now = time(NULL); |
Uint32 now, msec; |
|
System::getCurrentTime(now, msec); |
// now register everything | // now register everything |
| |
for(slp_reg_table::Iterator i = agent->_internal_regs.start(); i ; i++) | for(slp_reg_table::Iterator i = agent->_internal_regs.start(); i ; i++) |
{ | { |
sa_reg_params *rp = i.value(); | sa_reg_params *rp = i.value(); |
if(rp->expire > now - 1) |
|
|
if(rp->expire == 0 || rp->expire < now - 1) |
{ | { |
rp->expire = now + rp->lifetime; | rp->expire = now + rp->lifetime; |
| |
|
|
} | } |
else | else |
{ | { |
agent->_rep->srv_reg_all( |
agent->_rep->srv_reg_local( |
agent->_rep, | agent->_rep, |
rp->url, | rp->url, |
rp->attrs, | rp->attrs, |
|
|
rp->lifetime); | rp->lifetime); |
} | } |
} | } |
|
|
} | } |
|
|
agent->_rep->service_listener(agent->_rep, 0, &msg_list); | agent->_rep->service_listener(agent->_rep, 0, &msg_list); |
_LSLP_SLEEP(1); | _LSLP_SLEEP(1); |
} | } |