|
| 1 | +C++ Network Library |
| 2 | +=================== |
| 3 | + |
| 4 | +Introduction |
| 5 | +------------ |
| 6 | + |
| 7 | +cpp-netlib is a collection of network related routines/implementations |
| 8 | +geared towards providing a robust cross-platform networking library. |
| 9 | +cpp-netlib offers the following implementations: |
| 10 | + |
| 11 | + * Common Message Type -- A generic message type which can be used |
| 12 | + to encapsulate and store message related information, used by all |
| 13 | + network implementations as the primary means of data exchange. |
| 14 | + * Network protocol message parsers -- A collection of parsers which |
| 15 | + generate message objects from strings. |
| 16 | + * Adapters and Wrappers -- A collection of Adapters and wrappers aimed |
| 17 | + towards making the message type STL friendly. |
| 18 | + * Network protocol client and server implementations -- A collection |
| 19 | + of network protocol implementations that include embeddable client |
| 20 | + and server types. |
| 21 | + |
| 22 | +This library is released under the Boost Software License (please see |
| 23 | +http://boost.org/LICENSE_1_0.txt or the accompanying LICENSE_1_0.txt file |
| 24 | +for the full text. |
| 25 | + |
| 26 | +Downloading cpp-netlib |
| 27 | +---------------------- |
| 28 | + |
| 29 | +You can find official release packages of the library at:: |
| 30 | + |
| 31 | + http://github.com/cpp-netlib/cpp-netlib/downloads |
| 32 | + |
| 33 | +Building and Installing |
| 34 | +----------------------- |
| 35 | + |
| 36 | +Since cpp-netlib is a header-only library, there is nothing to build. To install |
| 37 | +cpp-netlib, you can choose to copy the contents of the ``boost`` directory into |
| 38 | +an existing Boost [#]_ distribution or to a different location. All that is |
| 39 | +required is for projects that use cpp-netlib when building, have the directory |
| 40 | +where cpp-netlib is installed as part of the include paths. |
| 41 | + |
| 42 | +.. [#]http://www.boost.org/ |
| 43 | +
|
| 44 | +The recommended installation procedure would be to follow the steps below: |
| 45 | + |
| 46 | +:: |
| 47 | + # On Linux/Mac, consider the `$` character as the shell prompt |
| 48 | + $ sudo mkdir -p /usr/local/include/cpp-netlib |
| 49 | + $ sudo cp -r cpp-netlib/boost /usr/local/include/cpp-netlib |
| 50 | + |
| 51 | +Now don't forget to add ``/usr/local/include/cpp-netlib`` in your project's |
| 52 | +compiler include directories to start using cpp-netlib in your projects. |
| 53 | + |
| 54 | +Running Tests |
| 55 | +------------- |
| 56 | + |
| 57 | +If you want to run the tests that come with cpp-netlib, there are a few things |
| 58 | +you will need. These are: |
| 59 | + |
| 60 | + * A compiler (GCC 4.x or Clang 2.8) |
| 61 | + * A build tool (CMake [#]_ recommended, Boost.Build also an option) |
| 62 | + * OpenSSL headers (optional with CMake, mandatory for Boost.Build) |
| 63 | + * Python 2.6 |
| 64 | + |
| 65 | +..note::This assumes that you have the cpp-netlib distribution package |
| 66 | + unpacked somwhere in your home directory. This specifically assumes that you |
| 67 | + have cpp-netlib at the toplevel of your home directory. |
| 68 | +.. [#]http://www.cmake.org/ |
| 69 | +
|
| 70 | +Building with CMake |
| 71 | +~~~~~~~~~~~~~~~~~~~ |
| 72 | + |
| 73 | +To build and run the tests with CMake, you will need to have CMake version 2.8 |
| 74 | +or higher installed appropriately in your system. |
| 75 | + |
| 76 | +:: |
| 77 | + |
| 78 | + $ cmake --version |
| 79 | + cmake version 2.8.1 |
| 80 | + |
| 81 | +Inside the cpp-netlib directory, you can issue the following statements to |
| 82 | +configure and generate the Makefiles, and build the tests:: |
| 83 | + |
| 84 | + $ cd ~/cpp-netlib # we're assuming it's where cpp-netlib is |
| 85 | + $ cmake -DCMAKE_BUILD_TYPE=Debug \ |
| 86 | + > -CMAKE_C_COMPILER=clang \ |
| 87 | + > -CMAKE_CXX_COMPILER=clang++ \ |
| 88 | + > . |
| 89 | + |
| 90 | +..note::This uses the source directory as the build directory as well. At the |
| 91 | + time of this writing, cpp-netlib is meant to be tested in the same directory |
| 92 | + where the source files are, because of the way the tests depend on Python |
| 93 | + being installed and having access to Python scripts during the build. |
| 94 | + |
| 95 | +Once CMake is done with generating the Makefiles and configuring the project, |
| 96 | +you can now build the tests and run them:: |
| 97 | + |
| 98 | + $ cd ~/cpp-netlib |
| 99 | + $ make |
| 100 | + $ make test |
| 101 | + |
| 102 | +If for some reason some of the tests fail, you can send the files in |
| 103 | +``Testing/Temporary/`` as attachments to the cpp-netlib developers mailing list |
| 104 | +[#]_. |
| 105 | + |
| 106 | +.. [#]https://lists.sourceforge.net/lists/listinfo/cpp-netlib-devel |
| 107 | +
|
| 108 | +Building with Boost.Build |
| 109 | +~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 110 | + |
| 111 | +If you don't already have Boost.Build set up on your system, follow the steps |
| 112 | +indicated in the Boost Getting Started Guide [#]_ -- you will particularly want |
| 113 | +to copy the ``bjam`` executable to a directory that is already in your ``PATH`` |
| 114 | +so that you don't have to go hunting for it all the time. A good place to put it |
| 115 | +is in ``/usr/local/bin``. |
| 116 | + |
| 117 | +.. [#]http://www.boost.org/doc/libs/1_44_0/more/getting_started/index.html |
| 118 | +
|
| 119 | +Building and running the tests can be as simple as doing the following:: |
| 120 | + |
| 121 | + $ cd ~/cpp-netlib |
| 122 | + $ bjam |
| 123 | + |
| 124 | +Doing this will already build all the tests and run them as they are built. In |
| 125 | +case you encounter any problems and would like to report it to the developers, |
| 126 | +please do the following:: |
| 127 | + |
| 128 | + $ cd ~/cpp-netlib |
| 129 | + $ bjam 2>&1 >build-test.log |
| 130 | + |
| 131 | +And then attach the ``build-test.log`` file to the email you will send to the |
| 132 | +cpp-netlib developers mailing list [#]_. |
| 133 | + |
| 134 | +.. [#]https://lists.sourceforge.net/lists/listinfo/cpp-netlib-devel |
| 135 | +
|
| 136 | +Hacking on cpp-netlib |
| 137 | +--------------------- |
| 138 | + |
| 139 | +cpp-netlib is being developed with the git [#]_ distributed SCM system. |
| 140 | +cpp-netlib is hosted on GitHub [#]_ following the GitHub recommended practice of |
| 141 | +forking the repository and submitting pull requests to the source repository. |
| 142 | +You can read more about `the forking process<http://help.github.com/forking/>` |
| 143 | +and `submitting pull requests<http://help.github.com/pull-requests/>` if |
| 144 | +you're not familiar with either process yet. |
| 145 | + |
| 146 | +Because cpp-netlib is released under the Boost Software License [#]_ it is |
| 147 | +recommended that any file you make changes to bear your copyright notice |
| 148 | +alongside the original authors' copyright notices on the file. Typically the |
| 149 | +copyright notices are at the top of each file in the project. |
| 150 | + |
| 151 | +At the time of writing, there are no coding conventions being followed but if |
| 152 | +you write in the general style that is already existing in the project that |
| 153 | +would be greatly appreciated. Copious amounts of comments will be called out, |
| 154 | +but code that is not self-explanatory typically at least requires a rationale |
| 155 | +documentation in comments explaining "why" the code is written that way. |
| 156 | + |
| 157 | +The main "upstream" repository is the one hosted by the original maintainer of |
| 158 | +the project (Dean Michael Berris) at http://github.com/mikhailberis/cpp-netlib. |
| 159 | +The "official" release repository is maintained at |
| 160 | +http://github.com/cpp-netlib/cpp-netlib -- which is a fork of the upstream |
| 161 | +repository. It is recommended that forks be made against the upstream repostory |
| 162 | +and pull requests be submitted against the upstream repository so that patches |
| 163 | +and other implementations can be curated by the original maintainer. |
| 164 | + |
| 165 | +Contact and Commercial Support |
| 166 | +------------------------------ |
| 167 | + |
| 168 | +In case you have any questions or would like to make feature requests, you can |
| 169 | +contact the development team through the `developers mailing list<https://lists.sourceforge.net/lists/listinfo/cpp-netlib-devel>` |
| 170 | +or by filing issues at http://github.com/mikhailberis/cpp-netlib/issues. |
| 171 | + |
| 172 | +You can reach the maintainers of the project through:: |
| 173 | + |
| 174 | + Dean Michael Berris |
| 175 | + mikhailberis@gmail.com |
| 176 | + |
| 177 | + Glyn Matthews |
| 178 | + |
| 179 | + Mike Dickey |
| 180 | + |
| 181 | +At this time, paid commercial support is available for cpp-netlib being offered |
| 182 | +by the maintainers. In case you have any questions, please feel free to contact |
| 183 | +any one of the maintainers above or anybody on the developers mailing list. |
| 184 | + |