NNG Reference Manual

Only issues found with the books are reported here. The NNG manual pages located on the NNG are tracked and updated using the NNG GitHub Issues page.

(Second Edition, November 2018)

  1. Running titles on the print edition wind up extending into the separator pages for sections. This is a formatting bug and has no consequence on the actual content.

  2. The nng_http_client_connect() description of the NNG_EADDRINVAL refers to a problem on the server, when it should have said client.

  3. The nng_listen() and nng_listener_start() functions do not support the NNG_FLAG_NONBLOCK flag at this time. The flags argument to these functions is reserved for future use.

(First Edition, May 2018 and June 2018)

We went to press with this edition before 1.0.0 was officially released, and some last minute changes and discoveries were made.

There are two versions of the first edition. The May 2018 printed edition is printed by Ingram Spark on cream paper, and uses full justification throughout. The June 2018 printed edition is printed by Amazon, and uses left justified text on white paper. The only other changes are some extremely minor changes to the front matter, and repagination to cope with larger margin requirements at Amazon. Consequently, the June 2018 edition is 430 pages instead of 424.

The eBooks likewise have both May and June editions, with the only differences being a switch to left justification of the text and minor adjustments to the front matter.

No interior content (wording) was changed between the May and June 2018 versions. Consequently, the ISBNs were not changed.

  1. The description for nng_recv() fails to mention that NNG_FLAG_NONBLOCK may be used for non-blocking operation. The description of nng_recvmsg() does describe this flag, and the description located there can be used in the meantime. (NNG GitHub Issue)

  2. (Only in the May 2018 paperback printed edition.) The frontmatter indicates that the book is printed in the United States. We have changed the distribution network we use to gain global reach, and it’s likely that if you buy the book somewhere other than United States, that book will have been printed somewhere closer to you. This is both more economical, and more environnmentally friendly, as we don’t need to ship dead trees around the world. (For instance at this time, most copies sold in Europe are actually printed in the UK.)

  3. If you got the May 2018 Kindle download from Amazon, there are numerous formatting errors caused by Ingram’s poor conversion of ePub to MOBI. The June 2018 version corrects those errors. It also has a lower list price of $9.99.

  4. The Kindle editions from Amazon seem to have lost the visual icons for "TIP", "NOTE", and "IMPORTANT" indicators. This is a limitation on some Kindle readers. We will use images instead for the next edition.

  5. Various man pages for supplement HTTP and TLS functions refer to symbols using the prefix nni_ such as nni_tls_config. These names are internal, and should have been documented with nng_ prefixes. In your own code, replace any occurrence of nni_ with nng_.

  6. The ZeroTier transport does not require a development branch of the ZeroTierOne tree. See the file BUILD_ZEROTIER.adoc in the doc subdirectory of the NNG distribution for more current information.

  7. The IPC transport does accept relative URLs.

  8. The nng_dial() and nng_listen() functions also return 1NNG_EINVAL` if an invalid URL is supplied.

  9. The nng_req_open() function creates a REQ socket, not a REP one.

  10. The nng_device() synopsis should read “message forwarding device” instead of “send message”.

  11. The use of nng_dialer() in the description of nng_dial() should refer to nng_dial(); there is no function called nng_dialer().

  12. There are various minor punctuation errors, such as using "its" instead of "it`s".

  13. The synopsis of nng_aio_result() should refer to that function instead of nng_aio_wait().

  14. The table of functions for HTTP incorrectly named functions nng_http_conn_write(), which should have been listed as nng_http_conn_write_req() and nng_http_conn_write_res().

  15. The table of functions listed nng_cv_wake() where nng_cv_wake1() should have been named (for waking one waiter).

  16. The table of functions listed nng_http_server_get_tls() where it should have listed nng_http_server_hold() and nng_http_server_release().

  17. The nng_close() function should have listed a warning about closing a socket before transmission is complete.

  18. The nng_recv() function can also result in an NNG_ETIMEDOUT error, and needs to include documentation of the flag NNG_FLAG_NONBLOCK.