Skip to content | Change text size

Contributions to SocketCC

Ownership of SocketCC Class Library remains with myself and Monash University, however, given the free usage license you are free to modify and use SocketCC in whatever manner you wish. If you wish your changes to reach a wider audience however, it must be done through myself, you are not authorised to publish any modifications to the SocketCC library.

Any modifications that I make to SocketCC will be based on my particular need for these modifications, however you may have different needs than I do :-). In this case, the procedure would involve submitting the modifications to me for review before they get merged into the SocketCC source tree.

This page describes the procedures for contributing to the SocketCC project, it is broken down into 3 sections:

  • Detailed procedure for contributing to SocketCC
  • List of known bugs and progress in fixing them
  • List of desired modifications to SocketCC and people who have volunteered to work on this modification

Detailed procedure for contributing to SocketCC

There are many different ways in which you can contribute to SocketCC, and these are:

  • Simply submit your modified source code to me along with a description of what you have done. These modifications will be reviewed and if deemed useful, added to the source tree. This approach is not recommended as we could end up with many people submitting essentially the same changes.
  • Send me an eMail with a proposal of a modification to make to SocketCC and whether or not you will be willing to work on it. This proposed extension will be added to the list of desired modifications to the library. Furthermore, forward a copy of the source code once the modifications are complete for review.
  • Choose to work on an item from the list of desired modifications and send me an eMail to let me know so that I can add your name to the list of people working on the project. Just because somebody else is working on a proposed change, it doesn't mean you can't also submit your own ideas. The main purpose of the list is to ensure that not too many people are inventing the same coloured wheel.

In all cases, modifications must be eMailed to me for review - they will then be incorporated into the next release of the SocketCC library.

Known bugs in SocketCC

At present, there are no known bugs in either PThreadCC or SocketCC.

Desired modifications to SocketCC

This section lists the features I would like to see in SocketCC along with the names of any volunteers who plan to be working on them:

Obtaining the Local IP Address

There is no in-built functionality within the SocketCC library to obtain the IP Address of the local machine. This is obviously a desirable feature, however I am unable to come up with a nice interface to present to the programmer for this. Also this requires a fair bit of effort to ensure cross-platform compatibility. If anybody has any ideas as to a nice way to integrate this feature into SocketCC, please let me know about it.

Support for Multicast Sockets

Not even sure if this is actually required or not. Having no need for multicast support I haven't investigated this yet. However it would be nice to be able to support multicasting within SocketCC - if anybody wishes to tackle this project, let me know.

Conditional Compilation for Platforms not Supporting IPv6

At the moment SocketCC has only been compiled on limited platforms, and most of these platforms support IPv6. The only exception to this is one Apple iMac running MacOS X Original Release. This compiled and ran OK, but the library may require changes to function on IPv4 only systems. I would imagine this can be done by:

  • Creating a new exception type indicating that IPv6 support is not enabled.
  • Conditional statements for compilation, when IPv6 is turned off, all code that processes IPv6 Sockets is changed to return the new exception.

As we work on exclusively IPv4/IPv6 enabled platforms, this is not a major concern for us - if anybody wishes to tackle this project, let me know.

Microsoft Windows Support

SocketCC currently has no support for any Windows platforms, this could be more difficult due to different header files/function prototypes for the Sockets API under Windows. If anybody want to go to the effort, let me know.

Better Support of select() and poll() programming

The existing implementation of SocketCC has good support for multi-threaded network applications and through the use of blocking and non-blocking sockets. Now it also supports programming through the use of the select() function. However, there is currently no support for use of the newer poll() function. If you would like to improve the support of poll() by the SocketCC library, let me know.

Documentation of the Project

Finally, I am aware of how little documentation (other than that provided in the source code) there is. I am not a good documentation writer. If anybody wishes to put together a good and detailed set of documents in using the SocketCC library, let me know.

Using IPv4 on an IPv6 enabled website