Quanta v0.3

 

Changes in Quanta since the release of Quanta v0.2 (dated June 2003)

Changes were made to the following source files and header files.

Source files:

QUANTAdb_c.cxx
QUANTAinit.cxx
QUANTAmisc_debug.cxx
QUANTAmisc_fileList_c.cxx
QUANTAnet_iovec_c.cxx
QUANTAnet_parallelTcp_c.cxx
QUANTAnet_perfMonitor_c.cxx
QUANTAnet_rbudpBase_c.cxx
QUANTAnet_rbudpSender_c.cxx
QUANTAnet_rbudpReceiver_c.cxx
QUANTAnet_remoteParallelFileIO64_c.cxx
QUANTAnet_socketbase_c.cxx
QUANTAnet_tcp_c.cxx
QUANTAnet_tcpReflector_c.cxx
QUANTAnet_udp_c.cxx
QUANTAnet_udpReflector_c.cxx
perfmon.cxx


1. Changes made to QUANTAdb_c :
  • Added switch case statement to trigger handleBlockingFetch in QUANTAdb_server_c::newDatahandler process.
  • Includes QUANTAconfig_win32.hxx when compiling on Windows.
  • Changed includes to use brackets rather than quotes. The ANSI standard states that "include.h" behavior is implementation-dependent. Only is part of the standard.
  • Changed QUANTAsleep() calls to QUANTAusleep().

2. Changes made to QUANTAinit :

  • Removed QUANTA.hxx include, instead includes QUANTAinit, QUANTAmisc_debug, and string headers.
  • Added variable QUANTA_VERSION picks up the VERSION defined in quanta_config.
  • Added variables QUANTA_BUILD_DATE and QUANTA_BUILD_TIME which are automatically determined by the preprocessor and added to the version output information. This will verify when QUANTA was compiled.

3. Changes made to QUANTAmisc_debug :

  • Removed QUANTA.hxx include. Instead now includes QUANTAmisc_debug, quanta_config, and QUANTAinit headers.
  • changed #include "quanta_config.hxx" to #include "QUANTAconfig.hxx"

4. Changes made to QUANTAmisc_fileList_c :

  • Compiles only if HAVE_FTW_H (as detected by configure). This avoids the platform-specific checks.
  • A possible alternative may be using fts.h, which provides a similar file-tree walk capability.

5. Changes made to QUANTAnet_iovec_c :

  • Added new class QUANTAnet_iovec_c

6. Changes made to QUANTAnet_parallelTcp_c :

  • Removed QUANTA.hxx include, now includes QUANTAnet_parallelTcp_c and string headers.
  • Changed #include <sys/errno.h> to #include <errno.h>. The errno.h file includes the sys/errno.h header file.

7. Changes made to QUANTAnet_perfMonitor_c :

  • Changed char* arguments to const char* where allowed, thus negating the need for using const_casts when passing constant strings. This change only affects functions which do not make any modifications to their parameters.
  • Replaced all winsock2.h includes with windows.h.
  • Changed include guard __HAVE_WINSOCK_H to __HAVE_WINDOWS_H.

8. Changes made to QUANTAnet_rbudpBase_c :

  • Added port parameter for RBUDP sender and receiver.
  • Modified code to use connected UDP.
  • Exposed port number in rbudp constructor.
  • Made debug info optional.

9. Changes made to QUANTAnet_rbudpSender_c and QUANTAnet_rbudpReceiver_c:

  • Add file I/O feature for RBUDP.
  • Replaced variadic macro definition TRACE_DEBUG with inline void function which uses va_arg() macro as 'CC' compilers on SGI doesn't support variadic macro definition.
  • Added port parameter for RBUDP sender and receiver.
  • Modified code to use connected UDP.
  • Exposed port number in rbudp constructor.
  • Made debug info optional.

10. Changes made to QUANTAnet_remoteParallelIO64_c :

  • Removed #ifdefs which checks for system type (SGI or LInux) to include the code for compilation.

11. Changes made to QUANTAnet_socketbase_c :

  • Changed char* arguments to const char* where allowed, thus negating the need for using const_casts when passing constant strings. This change only affects functions which do not make any modifications to their parameters.

12. Changes made to QUANTAnet_tcp_c.cxx :

  • Implemented readv and writev functions using QUANTAnet_iovec_c
  • Fixed possible conflict with the length argument of both accept() and getsockname(). The code was doing platform-specific checks rather than checking to see if HAVE_SOCKLEN_T was available. Systems will still need to define functions properly. If socklen_t is defined by the system, then that type should be used as the size argument in socket functions; otherwise an integer will be passed.
  • Removed extraneous const qualifiers on *::sendStats() arguments.
  • Changed char* arguments to const char* where allowed, thus negating the need for using const_casts when passing constant strings. This change only affects functions which do not make any modifications to their parameters.
  • (QUANTAnet_tcpServer_c::checkForNewConnections) Removed method that
    contained no argument. Added default argument of 0 to the other method.
  • Added QUANTAnet_tcpServer_c::waitForNewConnection. This function will
    block while waiting for a new client connection.
  • Added QUANTAne_tcpServer_c::setSockOptions(). This function wil allow the user to set the READ/WRITE buffer size. If not used, it is set to default values.

13. Changes made to QUANTAnet_tcpReflector_c :

  • (QUANTAnet_tcpReflectorClient_c::read) Fixed memory leak caused by use of incorrect delete operator. Needed to use delete[].
  • Removed extraneous const qualifiers on *::sendStats() arguments.
  • Changed char* arguments to const char* where allowed, thus negating
    the need for using const_casts when passing constant strings. This
    change only affects functions which do not make any modifications to
    their parameters.

14. Changes made to QUANTAnet_udp_c :

  • Fixed possible conflict with the length argument of both accept() and getsockname(). The code was doing platform-specific checks rather than checking to see if HAVE_SOCKLEN_T was available. Systems will still need to define functions properly. If socklen_t is defined by the system, then that type should be used as the size argument in socket functions; otherwise an integer will be passed.
  • Implemented readv and writev function calls using QUANTAnet_iovec_c
  • Changed char* arguments to const char* where allowed, thus negating
    the need for using const_casts when passing constant strings. This
    change only affects functions which do not make any modifications to
    their parameters.

15. Changes made to QUANTAnet_udpReflector_c :

  • Replaced all winsock2.h includes with windows.h.
  • Changed include guard __HAVE_WINSOCK_H to __HAVE_WINDOWS_H.

15. Changes made to perfmon.cxx :

  • Changed destructor to properly delete the list of connected clients. A double-free warning was generated when deleting a reflector instance. The list of clients is initialized in (QUANTAnet_udpReflector_c::initClientList) using the array new operator. Therefore, proper destruction requires corresponding use of the array delete operator.

Header files:

QUANTAnet_tcp_c.hxx
QUANTAnet_udp_c.hxx
QUANTAconfig_win32.hxx
QUANTAglobals.hxx
QUANTAinit.hxx
QUANTAmisc_hashDict.hxx
QUANTAnet_iovec_c.hxx
QUANTAnet_socketbase_c.hxx
QUANTAnet_tcpReflector_c.hxx
QUANTAnet_udpReflector_c.hxx
gettimeofday.hxx

1. Changes made to QUANTAnet_tcp_c.hxx :

  • Added declarations for readv and writev function calls.

2. Changes made to QUANTAnet_udp_c.hxx :

  • Added declarations for readv and writev function calls.

3. Changes made to files: QUANTAconfig_win32.hxx, QUANTAglobals.hxx, QUANTAinit.hxx, QUANTAmisc_hashDict.hxx, QUANTAnet_iovec_c.hxx, QUANTAnet_socketbase_c.hxx, QUANTAnet_tcpReflector_c.hxx, QUANTAnet_udpReflector_c.hxx, gettimeofday.hxx, QUANTAnet_udp_c.hxx :

  • Replaced all winsock2.h includes with windows.h.
  • Changed include guard __HAVE_WINSOCK_H to __HAVE_WINDOWS_H.