(file) Return to Socket.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/Socket.h between version 1.12 and 1.25

version 1.12, 2005/09/28 14:55:01 version 1.25, 2008/02/26 19:15:05
Line 1 
Line 1 
 //%2005////////////////////////////////////////////////////////////////////////  //%2006////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
Line 8 
Line 8 
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 // EMC Corporation; VERITAS Software Corporation; The Open Group. // EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; Symantec 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
Line 27 
Line 29 
 // //
 //============================================================================== //==============================================================================
 // //
 // Author: Mike Brasher (mbrasher@bmc.com)  
 //  
 // Modified By: David Dillard, Symantec Corp.  (david_dillard@symantec.com)  
 //  
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #ifndef Pegasus_Socket_h #ifndef Pegasus_Socket_h
 #define Pegasus_Socket_h #define Pegasus_Socket_h
  
 #include <Pegasus/Common/Config.h>  
 #include <Pegasus/Common/IPC.h>  
 #ifdef PEGASUS_OS_TYPE_WINDOWS  
 #include <windows.h>  
 # ifndef _WINSOCKAPI_  
 #   include <winsock2.h>  
 # endif  
 #else  
 # include <cctype> # include <cctype>
 #ifndef PEGASUS_OS_OS400  #include <Pegasus/Common/Network.h>
 //#   include <unistd.h>  #include <Pegasus/Common/Config.h>
 #else  
 #   include <Pegasus/Common/OS400ConvertChar.h>  
 #   include <unistd.cleinc>  
 #endif  
 #ifdef PEGASUS_OS_ZOS  
 #   include <string.h>  // added by rk for memcpy  
 #endif  
 # include <cstdlib>  
 # include <errno.h>  
 # include <fcntl.h>  
 # include <netdb.h>  
 # include <netinet/in.h>  
 # include <arpa/inet.h>  
 # include <sys/socket.h>  
 #endif  
 #include <Pegasus/Common/Linkage.h> #include <Pegasus/Common/Linkage.h>
   
 #ifdef PEGASUS_OS_ZOS #ifdef PEGASUS_OS_ZOS
 #   include <Pegasus/Common/SocketzOS_inline.h>  #   include <string.h>  // added by rk for memcpy
 #endif #endif
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 #ifndef PEGASUS_SOCKET  class Socket
 #define PEGASUS_SOCKET int  
 #endif  
   
 #ifndef PEGASUS_INVALID_SOCKET  
 #define PEGASUS_INVALID_SOCKET -1  
 #endif  
   
 class PEGASUS_COMMON_LINKAGE Socket  
 { {
    public:    public:
  
       /**
           Connects the specified socket to the specified address.  If the socket
           is non-blocking, the connect attempt will time out after the specified
           interval.
   
           @param socket The socket to connect.
           @param address The address to which to connect the socket
           @param addressLength The length of the sockaddr buffer in which the
               address is specified.
           @param timeoutMilliseconds The number of milliseconds after which the
               connect attempt should time out, if the socket is non-blocking.
           @return True if the connect attempt is successful, false otherwise.
       */
       static Boolean timedConnect(
           SocketHandle socket,
           sockaddr* address,
           int addressLength,
           Uint32 timeoutMilliseconds);
   
       static Sint32 read(SocketHandle socket, void* ptr, Uint32 size);
   
       static Sint32 write(SocketHandle socket, const void* ptr, Uint32 size);
   
       static Sint32 timedWrite(SocketHandle socket,
                                const void* ptr,
                                Uint32 size,
                                Uint32 socketWriteTimeout);
   
       /**
           Closes a specified socket.  If successful, the socket handle is set to
           PEGASUS_INVALID_SOCKET.
           @param socket The SocketHandle to close.
       */
       static void close(SocketHandle& socket);
  
       static Sint32 read(PEGASUS_SOCKET socket, void* ptr, Uint32 size);      static void disableBlocking(SocketHandle socket);
   
       static Sint32 write(PEGASUS_SOCKET socket, const void* ptr, Uint32 size);  
   
       static void close(PEGASUS_SOCKET socket);  
       static int close2(PEGASUS_SOCKET socket);  
   
       static void enableBlocking(PEGASUS_SOCKET socket);  
       static int  enableBlocking2(PEGASUS_SOCKET socket);  
  
       static void disableBlocking(PEGASUS_SOCKET socket);      static void initializeInterface();
       static int disableBlocking2(PEGASUS_SOCKET socket);  
  
       static void initializeInterface(void);      static void uninitializeInterface();
       static void uninitializeInterface(void);  
  
       static SocketHandle createSocket(int domain, int type, int protocol);
  
    private:    private:
       Socket();
       Socket() { }  
 }; };
  
   // Use with AutoPtr to automatically close a socket on error
   struct CloseSocketHandle
   {
       void operator()(SocketHandle* ptr)
       {
           if (ptr)
           {
               Socket::close(*ptr);
           }
       }
   };
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END
  


Legend:
Removed from v.1.12  
changed lines
  Added in v.1.25

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2