version 1.37, 2003/10/05 23:25:43
|
version 1.43, 2003/10/22 14:26:03
|
|
|
//%///////////////////////////////////////////////////////////////////////////// |
//%2003//////////////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM, |
// Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Development |
// The Open Group, Tivoli Systems |
// Company, L. P., IBM Corp., The Open Group, Tivoli Systems. |
|
// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.; |
|
// IBM Corp.; EMC Corporation, The Open Group. |
// | // |
// 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 "Tracer.h" | #include "Tracer.h" |
#include <Pegasus/Common/MessageLoader.h> //l10n | #include <Pegasus/Common/MessageLoader.h> //l10n |
| |
|
#ifdef PEGASUS_PLATFORM_OS400_ISERIES_IBM |
|
#include "OS400ConvertChar.h" |
|
#endif |
|
|
PEGASUS_USING_STD; | PEGASUS_USING_STD; |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
|
|
AF_UNIX; | AF_UNIX; |
strcpy(reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path, | strcpy(reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path, |
PEGASUS_LOCAL_DOMAIN_SOCKET_PATH); | PEGASUS_LOCAL_DOMAIN_SOCKET_PATH); |
|
#ifdef PEGASUS_PLATFORM_OS400_ISERIES_IBM |
|
AtoE(reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path); |
|
#endif |
::unlink(reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path); | ::unlink(reinterpret_cast<struct sockaddr_un*>(_rep->address)->sun_path); |
#else | #else |
PEGASUS_ASSERT(false); | PEGASUS_ASSERT(false); |
|
|
struct sockaddr* accept_address; | struct sockaddr* accept_address; |
#if defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) | #if defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) |
size_t address_size; | size_t address_size; |
#elif defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX) || defined(PEGASUS_PLATFORM_LINUX_GENERIC_GNU) || (defined(PEGASUS_PLATFORM_SOLARIS_SPARC_CC) && !defined(SUNOS_5_6)) |
#elif defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX) || defined(PEGASUS_PLATFORM_LINUX_GENERIC_GNU) || (defined(PEGASUS_OS_SOLARIS) && !defined(SUNOS_5_6)) |
socklen_t address_size; | socklen_t address_size; |
#else | #else |
int address_size; | int address_size; |
|
|
| |
AsyncDQueue<pegasus_acceptor> pegasus_acceptor::acceptors(true, 0); | AsyncDQueue<pegasus_acceptor> pegasus_acceptor::acceptors(true, 0); |
| |
|
void pegasus_acceptor::close_all_acceptors(void) |
|
{ |
|
try |
|
{ |
|
pegasus_acceptor* temp = acceptors.remove_first(); |
|
while(temp) |
|
{ |
|
delete temp; |
|
temp = acceptors.remove_first(); |
|
} |
|
} |
|
catch(...) |
|
{ |
|
} |
|
|
|
} |
|
|
|
|
|
|
pegasus_acceptor::pegasus_acceptor(monitor_2* monitor, | pegasus_acceptor::pegasus_acceptor(monitor_2* monitor, |
MessageQueue* outputMessageQueue, | MessageQueue* outputMessageQueue, |
Boolean localConnection, | Boolean localConnection, |
|
|
memset(&addr_un, 0, sizeof(addr_un)); | memset(&addr_un, 0, sizeof(addr_un)); |
addr_un.sun_family = AF_UNIX; | addr_un.sun_family = AF_UNIX; |
strcpy(addr_un.sun_path, PEGASUS_LOCAL_DOMAIN_SOCKET_PATH); | strcpy(addr_un.sun_path, PEGASUS_LOCAL_DOMAIN_SOCKET_PATH); |
|
#ifdef PEGASUS_PLATFORM_OS400_ISERIES_IBM |
|
AtoE(addr_un.sun_path); |
|
#endif |
addr = (struct sockaddr*) &addr_un; | addr = (struct sockaddr*) &addr_un; |
addr_size = sizeof(addr_un); | addr_size = sizeof(addr_un); |
_listener.socket(AF_UNIX, SOCK_STREAM, 0); | _listener.socket(AF_UNIX, SOCK_STREAM, 0); |
|
|
entry->set_dispatch ((void*)connection); | entry->set_dispatch ((void*)connection); |
| |
monitor_2::insert_connection(connection); | monitor_2::insert_connection(connection); |
|
|
} | } |
| |
| |