The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .bookmarks
├── .cache_cs
├── .cache_hx
├── .cache_java
├── .cache_lua
├── .cache_main
├── .cache_page
├── .cache_php
├── .cache_py
├── .gitignore
├── .signatures
├── .travis.yml
├── CONTRIBUTORS
├── Figure_list
├── LICENSE
├── Makefile
├── README.md
├── README.txt
├── articles
    ├── images
    │   ├── multithreading_1.png
    │   ├── multithreading_2.png
    │   ├── multithreading_3.png
    │   ├── multithreading_4.png
    │   ├── multithreading_5.png
    │   └── reliability_1.png
    ├── multithreading.md
    ├── multithreading.txt
    ├── reliability.md
    ├── reliability.txt
    └── src
    │   └── multithreading
    │       ├── hello.c
    │       ├── testit.c
    │       ├── threads.c
    │       ├── zhelpers.h
    │       └── zmsg.c
├── bin
    ├── README.md
    ├── asciitosvg
    │   ├── .hg
    │   │   ├── 00changelog.i
    │   │   ├── branch
    │   │   ├── cache
    │   │   │   ├── branchheads
    │   │   │   └── tags
    │   │   ├── dirstate
    │   │   ├── hgrc
    │   │   ├── requires
    │   │   ├── store
    │   │   │   ├── 00changelog.i
    │   │   │   ├── 00manifest.i
    │   │   │   ├── data
    │   │   │   │   ├── _a_s_c_i_i_to_s_v_g.php.i
    │   │   │   │   ├── _l_i_c_e_n_s_e.i
    │   │   │   │   ├── _makefile.i
    │   │   │   │   ├── _r_e_a_d_m_e.md.i
    │   │   │   │   ├── a2s.i
    │   │   │   │   ├── a2s52.php.i
    │   │   │   │   ├── colors.php.i
    │   │   │   │   ├── jlex.php.i
    │   │   │   │   ├── logo.svg.i
    │   │   │   │   ├── logo.txt.i
    │   │   │   │   ├── mk52.pl.i
    │   │   │   │   ├── objects
    │   │   │   │   │   ├── cloud.path.i
    │   │   │   │   │   ├── computer.path.i
    │   │   │   │   │   ├── diamond.path.i
    │   │   │   │   │   ├── document.path.i
    │   │   │   │   │   └── storage.path.i
    │   │   │   │   ├── svg-path.lex.i
    │   │   │   │   ├── svg-path.lex.php.i
    │   │   │   │   ├── svg-path.php.i
    │   │   │   │   ├── svg-path.y.i
    │   │   │   │   ├── tests
    │   │   │   │   │   └── odd__lines.txt.i
    │   │   │   │   └── ~2ehgignore.i
    │   │   │   ├── fncache
    │   │   │   └── undo
    │   │   ├── undo.bookmarks
    │   │   ├── undo.branch
    │   │   ├── undo.desc
    │   │   └── undo.dirstate
    │   ├── .hgignore
    │   ├── ASCIIToSVG.php
    │   ├── LICENSE
    │   ├── Makefile
    │   ├── README.md
    │   ├── a2s
    │   ├── a2s52.php
    │   ├── colors.php
    │   ├── jlex.php
    │   ├── logo.svg
    │   ├── logo.txt
    │   ├── mk52.pl
    │   ├── objects
    │   │   ├── cloud.path
    │   │   ├── computer.path
    │   │   ├── diamond.path
    │   │   ├── document.path
    │   │   └── storage.path
    │   ├── svg-path.lex
    │   ├── svg-path.lex.php
    │   ├── svg-path.php
    │   ├── svg-path.y
    │   └── tests
    │   │   └── odd_lines.txt
    ├── bb2wd
    ├── buildguide
    ├── buildpdfs
    ├── check-examples
    ├── list-examples
    ├── mkdocbook
    ├── mkfig2pdf
    ├── mkmarkdown
    ├── mkstart
    ├── mktemplate
    ├── mkwikidot
    ├── wdattach
    └── wdput
├── builds
    └── msvc
    │   ├── cpp.hwclient
    │       └── cpp.hwclient.vcxproj
    │   ├── cpp.hwserver
    │       └── cpp.hwserver.vcxproj
    │   └── msvc10.sln
├── chapter1.txt
├── chapter2.txt
├── chapter3.txt
├── chapter4.txt
├── chapter5.txt
├── chapter6.txt
├── chapter7.txt
├── chapter8.txt
├── examples
    ├── Ada
    │   ├── README
    │   ├── zmq-examples-client.adb
    │   ├── zmq-examples-display.adb
    │   ├── zmq-examples-multi_thread_server.adb
    │   ├── zmq-examples-prompt.adb
    │   ├── zmq-examples-server.adb
    │   └── zmq-examples.ads
    ├── Basic
    │   └── README
    ├── C++
    │   ├── .gitignore
    │   ├── README
    │   ├── asyncsrv.cpp
    │   ├── bstar.cpp
    │   ├── bstar.hpp
    │   ├── bstarcli.cpp
    │   ├── bstarsrv.cpp
    │   ├── bstarsrv2.cpp
    │   ├── build
    │   ├── c
    │   ├── clone.cpp
    │   ├── clone.hpp
    │   ├── clonecli1.cpp
    │   ├── clonecli2.cpp
    │   ├── clonecli3.cpp
    │   ├── clonecli4.cpp
    │   ├── clonecli5.cpp
    │   ├── clonecli6.cpp
    │   ├── clonesrv1.cpp
    │   ├── clonesrv2.cpp
    │   ├── clonesrv3.cpp
    │   ├── clonesrv4.cpp
    │   ├── clonesrv5.cpp
    │   ├── clonesrv6.cpp
    │   ├── espresso.cpp
    │   ├── flcliapi.cpp
    │   ├── flcliapi.hpp
    │   ├── flclient1.cpp
    │   ├── flclient2.cpp
    │   ├── flclient3.cpp
    │   ├── flserver1.cpp
    │   ├── flserver2.cpp
    │   ├── flserver3.cpp
    │   ├── hwclient.cpp
    │   ├── hwserver.cpp
    │   ├── identity.cpp
    │   ├── interrupt.cpp
    │   ├── kvmsg.cpp
    │   ├── kvmsg.hpp
    │   ├── kvsimple.cpp
    │   ├── kvsimple.hpp
    │   ├── lbbroker.cpp
    │   ├── lbbroker2.cpp
    │   ├── lpclient.cpp
    │   ├── lpserver.cpp
    │   ├── lvcache.cpp
    │   ├── mdbroker.cpp
    │   ├── mdcliapi.cpp
    │   ├── mdcliapi.hpp
    │   ├── mdcliapi2.cpp
    │   ├── mdcliapi2.hpp
    │   ├── mdclient.cpp
    │   ├── mdclient2.cpp
    │   ├── mdp.h
    │   ├── mdworker.cpp
    │   ├── mdwrkapi.cpp
    │   ├── mdwrkapi.hpp
    │   ├── mmiecho.cpp
    │   ├── msgqueue.cpp
    │   ├── mspoller.cpp
    │   ├── msreader.cpp
    │   ├── mtrelay.cpp
    │   ├── mtserver.cpp
    │   ├── pathopub.cpp
    │   ├── pathosub.cpp
    │   ├── peering1.cpp
    │   ├── peering2.cpp
    │   ├── peering3.cpp
    │   ├── ppqueue.cpp
    │   ├── ppworker.cpp
    │   ├── psenvpub.cpp
    │   ├── psenvsub.cpp
    │   ├── rrbroker.cpp
    │   ├── rrclient.cpp
    │   ├── rrworker.cpp
    │   ├── rtdealer.cpp
    │   ├── rtreq.cpp
    │   ├── spqueue.cpp
    │   ├── spworker.cpp
    │   ├── suisnail.cpp
    │   ├── syncpub.cpp
    │   ├── syncsub.cpp
    │   ├── tasksink.cpp
    │   ├── tasksink2.cpp
    │   ├── taskvent.cpp
    │   ├── taskwork.cpp
    │   ├── taskwork2.cpp
    │   ├── ticlient.cpp
    │   ├── titanic.cpp
    │   ├── tripping.cpp
    │   ├── udpping1.cpp
    │   ├── version.cpp
    │   ├── wuclient.cpp
    │   ├── wuproxy.cpp
    │   ├── wuserver.cpp
    │   ├── zhelpers.hpp
    │   └── zmsg.hpp
    ├── C
    │   ├── .gitignore
    │   ├── README
    │   ├── asyncsrv.c
    │   ├── bstar.c
    │   ├── bstar.h
    │   ├── bstarcli.c
    │   ├── bstarsrv.c
    │   ├── bstarsrv2.c
    │   ├── build
    │   ├── c
    │   ├── clone.c
    │   ├── clone.h
    │   ├── clonecli1.c
    │   ├── clonecli2.c
    │   ├── clonecli3.c
    │   ├── clonecli4.c
    │   ├── clonecli5.c
    │   ├── clonecli6.c
    │   ├── clonesrv1.c
    │   ├── clonesrv2.c
    │   ├── clonesrv3.c
    │   ├── clonesrv4.c
    │   ├── clonesrv5.c
    │   ├── clonesrv6.c
    │   ├── dechat.c
    │   ├── eagain.c
    │   ├── espresso.c
    │   ├── fileio1.c
    │   ├── fileio2.c
    │   ├── fileio3.c
    │   ├── flcliapi.c
    │   ├── flcliapi.h
    │   ├── flclient1.c
    │   ├── flclient2.c
    │   ├── flclient3.c
    │   ├── flserver1.c
    │   ├── flserver2.c
    │   ├── flserver3.c
    │   ├── hwclient.c
    │   ├── hwclient2.c
    │   ├── hwclient3.c
    │   ├── hwclient4.c
    │   ├── hwserver.c
    │   ├── hwserver2.c
    │   ├── hwserver3.c
    │   ├── hwserver4.c
    │   ├── identity.c
    │   ├── interface.c
    │   ├── interrupt.c
    │   ├── kvmsg.c
    │   ├── kvmsg.h
    │   ├── kvsimple.c
    │   ├── kvsimple.h
    │   ├── lbbroker.c
    │   ├── lbbroker2.c
    │   ├── lbbroker3.c
    │   ├── lpclient.c
    │   ├── lpserver.c
    │   ├── lvcache.c
    │   ├── mdbroker.c
    │   ├── mdcliapi.c
    │   ├── mdcliapi.h
    │   ├── mdcliapi2.c
    │   ├── mdcliapi2.h
    │   ├── mdclient.c
    │   ├── mdclient2.c
    │   ├── mdp.h
    │   ├── mdworker.c
    │   ├── mdwrkapi.c
    │   ├── mdwrkapi.h
    │   ├── mktestdata.c
    │   ├── mmiecho.c
    │   ├── msgqueue.c
    │   ├── mspoller.c
    │   ├── msreader.c
    │   ├── mtrelay.c
    │   ├── mtserver.c
    │   ├── pathopub.c
    │   ├── pathosub.c
    │   ├── peering1.c
    │   ├── peering2.c
    │   ├── peering3.c
    │   ├── ppqueue.c
    │   ├── ppworker.c
    │   ├── psenvpub.c
    │   ├── psenvsub.c
    │   ├── rrbroker.c
    │   ├── rrclient.c
    │   ├── rrworker.c
    │   ├── rtdealer.c
    │   ├── rtreq.c
    │   ├── spqueue.c
    │   ├── spworker.c
    │   ├── suisnail.c
    │   ├── syncpub.c
    │   ├── syncsub.c
    │   ├── tasksink.c
    │   ├── tasksink2.c
    │   ├── taskvent.c
    │   ├── taskwork.c
    │   ├── taskwork2.c
    │   ├── ticlient.c
    │   ├── titanic.c
    │   ├── tripping.c
    │   ├── tstkvmsg.c
    │   ├── tstkvsimple.c
    │   ├── udplib.c
    │   ├── udpping1.c
    │   ├── udpping2.c
    │   ├── udpping3.c
    │   ├── valgrind.supp
    │   ├── version.c
    │   ├── vg
    │   ├── wuclient.c
    │   ├── wuproxy.c
    │   ├── wuserver.c
    │   └── zhelpers.h
    ├── CL
    │   ├── .gitignore
    │   ├── README
    │   ├── build
    │   ├── build.lisp
    │   ├── compile
    │   ├── hwclient.asd
    │   ├── hwclient.lisp
    │   ├── hwserver.asd
    │   ├── hwserver.lisp
    │   ├── identity.asd
    │   ├── identity.lisp
    │   ├── lbbroker.asd
    │   ├── lbbroker.lisp
    │   ├── msgqueue.asd
    │   ├── msgqueue.lisp
    │   ├── mspoller.asd
    │   ├── mspoller.lisp
    │   ├── msreader.asd
    │   ├── msreader.lisp
    │   ├── mtrelay.asd
    │   ├── mtrelay.lisp
    │   ├── mtserver.asd
    │   ├── mtserver.lisp
    │   ├── psenvpub.asd
    │   ├── psenvpub.lisp
    │   ├── psenvsub.asd
    │   ├── psenvsub.lisp
    │   ├── rrbroker.asd
    │   ├── rrbroker.lisp
    │   ├── rrclient.asd
    │   ├── rrclient.lisp
    │   ├── rrworker.asd
    │   ├── rrworker.lisp
    │   ├── rtdealer.asd
    │   ├── rtdealer.lisp
    │   ├── rtreq.asd
    │   ├── rtreq.lisp
    │   ├── syncpub.asd
    │   ├── syncpub.lisp
    │   ├── syncsub.asd
    │   ├── syncsub.lisp
    │   ├── tasksink.asd
    │   ├── tasksink.lisp
    │   ├── tasksink2.asd
    │   ├── tasksink2.lisp
    │   ├── taskvent.asd
    │   ├── taskvent.lisp
    │   ├── taskwork.asd
    │   ├── taskwork.lisp
    │   ├── taskwork2.asd
    │   ├── taskwork2.lisp
    │   ├── version.asd
    │   ├── version.lisp
    │   ├── wuclient.asd
    │   ├── wuclient.lisp
    │   ├── wuproxy.asd
    │   ├── wuproxy.lisp
    │   ├── wuserver.asd
    │   ├── wuserver.lisp
    │   ├── zhelpers.lisp
    │   ├── zmsg.asd
    │   ├── zmsg.lisp
    │   ├── zmsg_test.asd
    │   └── zmsg_test.lisp
    ├── CSharp
    │   ├── .gitignore
    │   ├── AssemblyInfo.cs
    │   ├── Program.cs
    │   ├── ProgramRunner.cs
    │   ├── README
    │   ├── README.md
    │   ├── README.txt
    │   ├── Z85Encode.cs
    │   ├── ZGuideExamples.VS.csproj
    │   ├── ZGuideExamples.mono.csproj
    │   ├── asyncsrv.cs
    │   ├── eagain.cs
    │   ├── espresso.cs
    │   ├── flcliapi.cs
    │   ├── flclient1.cs
    │   ├── flclient2.cs
    │   ├── flclient3.cs
    │   ├── flserver1.cs
    │   ├── flserver2.cs
    │   ├── flserver3.cs
    │   ├── hwclient.cs
    │   ├── hwserver.cs
    │   ├── identity.cs
    │   ├── index.md
    │   ├── interrupt.cs
    │   ├── lbbroker.cs
    │   ├── lpclient.cs
    │   ├── lpserver.cs
    │   ├── lvcache.cs
    │   ├── mdbroker.cs
    │   ├── mdcliapi.cs
    │   ├── mdcliapi2.cs
    │   ├── mdclient.cs
    │   ├── mdclient2.cs
    │   ├── mdp.cs
    │   ├── mdworker.cs
    │   ├── mdwrkapi.cs
    │   ├── mmiecho.cs
    │   ├── msgqueue.cs
    │   ├── mspoller.cs
    │   ├── msreader.cs
    │   ├── mtrelay.cs
    │   ├── mtserver.cs
    │   ├── pathopub.cs
    │   ├── pathosub.cs
    │   ├── peering1.cs
    │   ├── peering2.cs
    │   ├── ppqueue.cs
    │   ├── ppworker.cs
    │   ├── psenvpub.cs
    │   ├── psenvsub.cs
    │   ├── rrbroker.cs
    │   ├── rrclient.cs
    │   ├── rrworker.cs
    │   ├── rtdealer.cs
    │   ├── rtreq.cs
    │   ├── spqueue.cs
    │   ├── spworker.cs
    │   ├── suisnail.cs
    │   ├── syncpub.cs
    │   ├── syncsub.cs
    │   ├── tasksink.cs
    │   ├── tasksink2.cs
    │   ├── taskvent.cs
    │   ├── taskwork.cs
    │   ├── taskwork2.cs
    │   ├── ticlient.cs
    │   ├── titanic.cs
    │   ├── tripping.cs
    │   ├── version.cs
    │   ├── wuclient.cs
    │   ├── wuproxy.cs
    │   └── wuserver.cs
    ├── ChangeLog
    ├── Clojure
    │   ├── .gitignore
    │   ├── README
    │   ├── README.md
    │   ├── asyncsrv.clj
    │   ├── hwclient.clj
    │   ├── hwserver.clj
    │   ├── identity.clj
    │   ├── index.md
    │   ├── lbbroker.clj
    │   ├── lpclient.clj
    │   ├── lpserver.clj
    │   ├── msgqueue.clj
    │   ├── mspoller.clj
    │   ├── msreader.clj
    │   ├── mtrelay.clj
    │   ├── mtserver.clj
    │   ├── peering1.clj
    │   ├── project.clj
    │   ├── psenvpub.clj
    │   ├── psenvsub.clj
    │   ├── rrbroker.clj
    │   ├── rrclient.clj
    │   ├── rrworker.clj
    │   ├── rtdealer.clj
    │   ├── rtreq.clj
    │   ├── spqueue.clj
    │   ├── spworker.clj
    │   ├── syncpub.clj
    │   ├── syncsub.clj
    │   ├── tasksink.clj
    │   ├── tasksink2.clj
    │   ├── taskvent.clj
    │   ├── taskwork.clj
    │   ├── taskwork2.clj
    │   ├── version.clj
    │   ├── wuclient.clj
    │   ├── wuproxy.clj
    │   ├── wuserver.clj
    │   ├── zhelpers.clj
    │   └── zmsg.clj
    ├── Delphi
    │   ├── .gitignore
    │   ├── README
    │   ├── asyncsrv.dpr
    │   ├── hwclient.dpr
    │   ├── hwserver.dpr
    │   ├── hwserverapi.dpr
    │   ├── identity.dpr
    │   ├── interrupt.dpr
    │   ├── lbbroker.dpr
    │   ├── lbbroker2.dpr
    │   ├── lpclient.dpr
    │   ├── lpserver.dpr
    │   ├── msgqueue.dpr
    │   ├── mspoller.dpr
    │   ├── msreader.dpr
    │   ├── mtrelay.dpr
    │   ├── mtserver.dpr
    │   ├── peering1.dpr
    │   ├── peering2.dpr
    │   ├── peering3.dpr
    │   ├── psenvpub.dpr
    │   ├── psenvsub.dpr
    │   ├── rrbroker.dpr
    │   ├── rrclient.dpr
    │   ├── rrworker.dpr
    │   ├── rtdealer.dpr
    │   ├── rtreq.dpr
    │   ├── spqueue.dpr
    │   ├── spworker.dpr
    │   ├── syncpub.dpr
    │   ├── syncsub.dpr
    │   ├── tasksink.dpr
    │   ├── tasksink2.dpr
    │   ├── taskvent.dpr
    │   ├── taskwork.dpr
    │   ├── taskwork2.dpr
    │   ├── version.dpr
    │   ├── wuclient.dpr
    │   ├── wuproxy.dpr
    │   ├── wuserver.dpr
    │   └── zhelpers.pas
    ├── Elixir
    │   ├── README
    │   ├── README.md
    │   ├── asyncsrv.exs
    │   ├── hwclient.exs
    │   ├── hwserver.exs
    │   ├── identity.exs
    │   ├── index.md
    │   ├── interrupt.exs
    │   ├── lbbroker.exs
    │   ├── msgqueue.exs
    │   ├── mspoller.exs
    │   ├── msreader.exs
    │   ├── mtrelay.exs
    │   ├── mtserver.exs
    │   ├── psenvpub.exs
    │   ├── psenvsub.exs
    │   ├── rrbroker.exs
    │   ├── rrclient.exs
    │   ├── rrworker.exs
    │   ├── rtdealer.exs
    │   ├── rtreq.exs
    │   ├── syncpub.exs
    │   ├── syncsub.exs
    │   ├── tasksink.exs
    │   ├── tasksink2.exs
    │   ├── taskvent.exs
    │   ├── taskwork.exs
    │   ├── taskwork2.exs
    │   ├── version.exs
    │   ├── wuclient.exs
    │   ├── wuproxy.exs
    │   └── wuserver.exs
    ├── Erlang
    │   ├── .gitignore
    │   ├── README
    │   ├── asyncsrv.es
    │   ├── hwclient.es
    │   ├── hwserver.es
    │   ├── identity.es
    │   ├── interrupt.es
    │   ├── lbbroker.es
    │   ├── msgqueue.es
    │   ├── mspoller.es
    │   ├── msreader.es
    │   ├── mtrelay.es
    │   ├── mtserver.es
    │   ├── psenvpub.es
    │   ├── psenvsub.es
    │   ├── rrbroker.es
    │   ├── rrclient.es
    │   ├── rrworker.es
    │   ├── rtdealer.es
    │   ├── rtreq.es
    │   ├── syncpub.es
    │   ├── syncsub.es
    │   ├── tasksink.es
    │   ├── tasksink2.es
    │   ├── taskvent.es
    │   ├── taskwork.es
    │   ├── taskwork2.es
    │   ├── version.es
    │   ├── wuclient.es
    │   ├── wuproxy.es
    │   └── wuserver.es
    ├── FSharp
    │   ├── .gitignore
    │   ├── README
    │   ├── asyncsrv.fsx
    │   ├── hwclient.fsx
    │   ├── hwserver.fsx
    │   ├── identity.fsx
    │   ├── lbbroker.fsx
    │   ├── msgqueue.fsx
    │   ├── mspoller.fsx
    │   ├── msreader.fsx
    │   ├── mtrelay.fsx
    │   ├── mtserver.fsx
    │   ├── peering1.fsx
    │   ├── peering2.fsx
    │   ├── peering3.fsx
    │   ├── psenvpub.fsx
    │   ├── psenvsub.fsx
    │   ├── rrbroker.fsx
    │   ├── rrclient.fsx
    │   ├── rrworker.fsx
    │   ├── rtdealer.fsx
    │   ├── rtreq.fsx
    │   ├── syncpub.fsx
    │   ├── syncsub.fsx
    │   ├── tasksink.fsx
    │   ├── tasksink2.fsx
    │   ├── taskvent.fsx
    │   ├── taskwork.fsx
    │   ├── taskwork2.fsx
    │   ├── taskworker.fsx
    │   ├── taskworker2.fsx
    │   ├── version.fsx
    │   ├── wuclient.fsx
    │   ├── wuproxy.fsx
    │   ├── wuserver.fsx
    │   ├── zhelpers.fs
    │   └── zmsg.fsx
    ├── Felix
    │   ├── README
    │   ├── hwclient.flx
    │   ├── hwserver.flx
    │   ├── mspoller.flx
    │   ├── msreader.flx
    │   ├── tasksink.flx
    │   ├── taskvent.flx
    │   ├── taskwork.flx
    │   ├── version.flx
    │   ├── wuclient.flx
    │   └── wuserver.flx
    ├── Free Pascal
    │   ├── hwclient.pas
    │   ├── hwserver.pas
    │   ├── identity.pas
    │   ├── interrupt.pas
    │   ├── lbbroker.pas
    │   ├── msgqueue.pas
    │   ├── mspoller.pas
    │   ├── msread.pas
    │   ├── rrbroker.pas
    │   ├── rrclient.pas
    │   ├── rrworker.pas
    │   ├── rtdealer.pas
    │   ├── rtreq.pas
    │   ├── tasksink.pas
    │   ├── tasksink2.pas
    │   ├── taskvent.pas
    │   ├── taskwork.pas
    │   ├── taskwork2.pas
    │   ├── wuclient.pas
    │   ├── wuproxy.pas
    │   ├── wuserver.pas
    │   ├── zmq.helpers.pas
    │   ├── zmq.pas
    │   └── zmq.types.pas
    ├── Go
    │   ├── .gitignore
    │   ├── README
    │   ├── asyncsrv.go
    │   ├── build
    │   ├── hwclient.go
    │   ├── hwserver.go
    │   ├── identity.go
    │   ├── interrupt.go
    │   ├── lbbroker.go
    │   ├── lpclient.go
    │   ├── lpserver.go
    │   ├── mdbroker.go
    │   ├── mdcliapi.go
    │   ├── mdclient.go
    │   ├── mdp.go
    │   ├── mdworker.go
    │   ├── mdwrkapi.go
    │   ├── mmiecho.go
    │   ├── msgqueue.go
    │   ├── mspoller.go
    │   ├── msreader.go
    │   ├── mtrelay.go
    │   ├── mtserver.go
    │   ├── peering1.go
    │   ├── peering2.go
    │   ├── peering3.go
    │   ├── ppqueue.go
    │   ├── ppworker.go
    │   ├── psenvpub.go
    │   ├── psenvsub.go
    │   ├── rrbroker.go
    │   ├── rrclient.go
    │   ├── rrworker.go
    │   ├── rtdealer.go
    │   ├── rtreq.go
    │   ├── spqueue.go
    │   ├── spworker.go
    │   ├── syncpub.go
    │   ├── syncsub.go
    │   ├── tasksink.go
    │   ├── tasksink2.go
    │   ├── taskvent.go
    │   ├── taskwork.go
    │   ├── taskwork2.go
    │   ├── tripping.go
    │   ├── version.go
    │   ├── wuclient.go
    │   ├── wuproxy.go
    │   ├── wuserver.go
    │   └── zhelpers.go
    ├── GoCZMQ
    │   ├── .gitignore
    │   ├── README
    │   ├── bstarcli.go
    │   ├── bstarsrv.go
    │   ├── build
    │   ├── hwclient.go
    │   ├── hwserver.go
    │   ├── tasksink.go
    │   ├── taskvent.go
    │   ├── taskwork.go
    │   ├── wuclient.go
    │   └── wuserver.go
    ├── Haskell
    │   ├── LICENSE
    │   ├── MDClientAPI.hs
    │   ├── MDPDef.hs
    │   ├── MDWorkerAPI.hs
    │   ├── README
    │   ├── Setup.hs
    │   ├── ZHelpers.hs
    │   ├── asyncsrv.hs
    │   ├── hwclient.hs
    │   ├── hwserver.hs
    │   ├── identity.hs
    │   ├── interrupt.hs
    │   ├── lbbroker.hs
    │   ├── lpclient.hs
    │   ├── lpserver.hs
    │   ├── mdbroker.hs
    │   ├── mdclient.hs
    │   ├── mdworker.hs
    │   ├── msgqueue.hs
    │   ├── mspoller.hs
    │   ├── mtrelay.hs
    │   ├── mtserver.hs
    │   ├── peering1.hs
    │   ├── peering2.hs
    │   ├── peering3.hs
    │   ├── ppqueue.hs
    │   ├── ppworker.hs
    │   ├── psenvpub.hs
    │   ├── psenvsub.hs
    │   ├── rrbroker.hs
    │   ├── rrclient.hs
    │   ├── rrworker.hs
    │   ├── rtdealer.hs
    │   ├── rtreq.hs
    │   ├── spqueue.hs
    │   ├── spworker.hs
    │   ├── stack.yaml
    │   ├── syncpub.hs
    │   ├── syncsub.hs
    │   ├── tasksink.hs
    │   ├── tasksink2.hs
    │   ├── taskvent.hs
    │   ├── taskwork.hs
    │   ├── taskwork2.hs
    │   ├── tripping.hs
    │   ├── version.hs
    │   ├── wuclient.hs
    │   ├── wuproxy.hs
    │   ├── wuserver.hs
    │   └── zguide.cabal
    ├── Haxe
    │   ├── README
    │   ├── Run.hx
    │   ├── asyncsrv.hx
    │   ├── bstar.hx
    │   ├── bstarcli.hx
    │   ├── bstarsrv.hx
    │   ├── bstarsrv2.hx
    │   ├── buildLinux.hxml
    │   ├── buildMac64.hxml
    │   ├── buildWindows.hxml
    │   ├── hwclient.hx
    │   ├── hwserver.hx
    │   ├── identity.hx
    │   ├── interrupt.hx
    │   ├── lbbroker.hx
    │   ├── lbbroker2.hx
    │   ├── lbbroker3.hx
    │   ├── lpclient.hx
    │   ├── lpserver.hx
    │   ├── mdbroker.hx
    │   ├── mdcliapi.hx
    │   ├── mdcliapi2.hx
    │   ├── mdclient.hx
    │   ├── mdclient2.hx
    │   ├── mdp.hx
    │   ├── mdworker.hx
    │   ├── mdwrkapi.hx
    │   ├── mmiecho.hx
    │   ├── msgqueue.hx
    │   ├── mtrelay.hx
    │   ├── mtserver.hx
    │   ├── peering1.hx
    │   ├── peering2.hx
    │   ├── peering3.hx
    │   ├── ppqueue.hx
    │   ├── ppworker.hx
    │   ├── psenvpub.hx
    │   ├── psenvsub.hx
    │   ├── rrbroker.hx
    │   ├── rrclient.hx
    │   ├── rrworker.hx
    │   ├── rtdealer.hx
    │   ├── rtreq.hx
    │   ├── spqueue.hx
    │   ├── spworker.hx
    │   ├── syncpub.hx
    │   ├── syncsub.hx
    │   ├── tasksink.hx
    │   ├── tasksink2.hx
    │   ├── taskvent.hx
    │   ├── taskwork.hx
    │   ├── taskwork2.hx
    │   ├── ticlient.hx
    │   ├── titanic.hx
    │   ├── tripping.hx
    │   ├── wuclient.hx
    │   ├── wuproxy.hx
    │   ├── wuserver.hx
    │   └── zhelpers.hx
    ├── Java
    │   ├── .gitignore
    │   ├── MDP.java
    │   ├── README
    │   ├── ZHelper.java
    │   ├── asyncsrv.java
    │   ├── bstar.java
    │   ├── bstarcli.java
    │   ├── bstarsrv.java
    │   ├── bstarsrv2.java
    │   ├── build
    │   ├── clone.java
    │   ├── clonecli1.java
    │   ├── clonecli2.java
    │   ├── clonecli3.java
    │   ├── clonecli4.java
    │   ├── clonecli5.java
    │   ├── clonecli6.java
    │   ├── clonesrv1.java
    │   ├── clonesrv2.java
    │   ├── clonesrv3.java
    │   ├── clonesrv4.java
    │   ├── clonesrv5.java
    │   ├── clonesrv6.java
    │   ├── dechat.java
    │   ├── eagain.java
    │   ├── espresso.java
    │   ├── fileio1.java
    │   ├── fileio2.java
    │   ├── fileio3.java
    │   ├── flcliapi.java
    │   ├── flclient1.java
    │   ├── flclient2.java
    │   ├── flclient3.java
    │   ├── flserver1.java
    │   ├── flserver2.java
    │   ├── flserver3.java
    │   ├── hwclient.java
    │   ├── hwserver.java
    │   ├── identity.java
    │   ├── interface.java
    │   ├── interrupt.java
    │   ├── kvmsg.java
    │   ├── kvsimple.java
    │   ├── lbbroker.java
    │   ├── lbbroker2.java
    │   ├── lbbroker3.java
    │   ├── lpclient.java
    │   ├── lpserver.java
    │   ├── lruqueue3.java
    │   ├── lvcache.java
    │   ├── mdbroker.java
    │   ├── mdcliapi.java
    │   ├── mdcliapi2.java
    │   ├── mdclient.java
    │   ├── mdclient2.java
    │   ├── mdworker.java
    │   ├── mdwrkapi.java
    │   ├── mmiecho.java
    │   ├── msgqueue.java
    │   ├── mspoller.java
    │   ├── msreader.java
    │   ├── mthwserver.java
    │   ├── mtrelay.java
    │   ├── mtserver.java
    │   ├── pathopub.java
    │   ├── pathosub.java
    │   ├── peering1.java
    │   ├── peering2.java
    │   ├── peering3.java
    │   ├── pom.xml
    │   ├── ppqueue.java
    │   ├── ppworker.java
    │   ├── psenvpub.java
    │   ├── psenvsub.java
    │   ├── rrbroker.java
    │   ├── rrclient.java
    │   ├── rrworker.java
    │   ├── rtdealer.java
    │   ├── rtmama.java
    │   ├── rtpapa.java
    │   ├── rtreq.java
    │   ├── run
    │   ├── spqueue.java
    │   ├── spworker.java
    │   ├── src
    │   │   └── main
    │   │   │   └── java
    │   │   │       └── com
    │   │   │           └── imatix
    │   │   │               └── zguide
    │   │   │                   ├── commons
    │   │   │                       ├── ZConstants.java
    │   │   │                       └── ZHelper.java
    │   │   │                   ├── ex1_1
    │   │   │                       └── HwServer.java
    │   │   │                   ├── ex1_10
    │   │   │                       └── TaskSink.java
    │   │   │                   ├── ex1_4
    │   │   │                       └── HwClient.java
    │   │   │                   ├── ex1_5
    │   │   │                       └── Version.java
    │   │   │                   ├── ex1_6
    │   │   │                       └── WuServer.java
    │   │   │                   ├── ex1_7
    │   │   │                       └── WuClient.java
    │   │   │                   ├── ex1_8
    │   │   │                       └── TaskVent.java
    │   │   │                   └── ex1_9
    │   │   │                       └── TaskWork.java
    │   ├── suisnail.java
    │   ├── syncpub.java
    │   ├── syncsub.java
    │   ├── tasksink.java
    │   ├── tasksink2.java
    │   ├── taskvent.java
    │   ├── taskwork.java
    │   ├── taskwork2.java
    │   ├── ticlient.java
    │   ├── titanic.java
    │   ├── tripping.java
    │   ├── udplib.java
    │   ├── udpping1.java
    │   ├── udpping2.java
    │   ├── udpping3.java
    │   ├── version.java
    │   ├── wuclient.java
    │   ├── wuproxy.java
    │   └── wuserver.java
    ├── Julia
    │   ├── hwclient.jl
    │   ├── hwserver.jl
    │   ├── msreader.jl
    │   ├── tasksink.jl
    │   ├── taskvent.jl
    │   ├── taskwork.jl
    │   ├── version.jl
    │   ├── wuclient.jl
    │   └── wuserver.jl
    ├── LICENSE
    ├── Lua
    │   ├── README
    │   ├── asyncsrv.lua
    │   ├── flserver1.lua
    │   ├── flserver2.lua
    │   ├── flserver3.lua
    │   ├── hwclient.lua
    │   ├── hwserver.lua
    │   ├── identity.lua
    │   ├── interrupt.lua
    │   ├── lbbroker.lua
    │   ├── lbbroker2.lua
    │   ├── lpclient.lua
    │   ├── lpserver.lua
    │   ├── mdbroker.lua
    │   ├── mdcliapi.lua
    │   ├── mdcliapi2.lua
    │   ├── mdclient.lua
    │   ├── mdclient2.lua
    │   ├── mdp.lua
    │   ├── mdworker.lua
    │   ├── mdwrkapi.lua
    │   ├── mmiecho.lua
    │   ├── msgqueue.lua
    │   ├── mspoller.lua
    │   ├── msreader.lua
    │   ├── mtrelay.lua
    │   ├── mtserver.lua
    │   ├── peering1.lua
    │   ├── peering2.lua
    │   ├── peering3.lua
    │   ├── ppqueue.lua
    │   ├── ppworker.lua
    │   ├── psenvpub.lua
    │   ├── psenvsub.lua
    │   ├── rrbroker.lua
    │   ├── rrclient.lua
    │   ├── rrworker.lua
    │   ├── rtdealer.lua
    │   ├── rtreq.lua
    │   ├── spqueue.lua
    │   ├── spworker.lua
    │   ├── suisnail.lua
    │   ├── syncpub.lua
    │   ├── syncsub.lua
    │   ├── tasksink.lua
    │   ├── tasksink2.lua
    │   ├── taskvent.lua
    │   ├── taskwork.lua
    │   ├── taskwork2.lua
    │   ├── tripping.lua
    │   ├── version.lua
    │   ├── wuclient.lua
    │   ├── wuproxy.lua
    │   ├── wuserver.lua
    │   ├── zhelpers.lua
    │   ├── zmsg.lua
    │   └── zmsg_test.lua
    ├── Node.js
    │   ├── README
    │   ├── asyncsrv.js
    │   ├── espresso.js
    │   ├── hwclient.js
    │   ├── hwserver.js
    │   ├── identity.js
    │   ├── interrupt.js
    │   ├── lbbroker.js
    │   ├── lvcache.js
    │   ├── msgqueue.js
    │   ├── mspoller.js
    │   ├── peering1.js
    │   ├── psenvpub.js
    │   ├── psenvsub.js
    │   ├── publisher.js
    │   ├── rrbroker.js
    │   ├── rrclient.js
    │   ├── rrworker.js
    │   ├── rtdealer.js
    │   ├── rtreq.js
    │   ├── subscriber.js
    │   ├── syncpub.js
    │   ├── syncsub.js
    │   ├── tasksink.js
    │   ├── tasksink2.js
    │   ├── taskvent.js
    │   ├── taskwork.js
    │   ├── taskwork2.js
    │   ├── version.js
    │   ├── wuclient.js
    │   ├── wuproxy.js
    │   ├── wuserver.js
    │   └── zhelpers.js
    ├── OCaml
    │   ├── .gitignore
    │   ├── Makefile
    │   ├── README
    │   ├── build
    │   ├── helpers.ml
    │   ├── hwclient.ml
    │   ├── hwserver.ml
    │   ├── rrbroker.ml
    │   ├── rrclient.ml
    │   ├── rrworker.ml
    │   ├── tasksink.ml
    │   ├── tasksink2.ml
    │   ├── taskvent.ml
    │   ├── taskwork.ml
    │   ├── taskwork2.ml
    │   ├── version.ml
    │   ├── wuclient.ml
    │   └── wuserver.ml
    ├── Objective-C
    │   ├── BUILDING
    │   ├── ObjCExamples
    │   │   ├── ObjCExamples.xcodeproj
    │   │   │   └── project.pbxproj
    │   │   ├── ObjCExamples_Prefix.pch
    │   │   └── project.xcconfig
    │   ├── README
    │   ├── ZMQHelper.h
    │   ├── ZMQHelper.m
    │   ├── hwclient.m
    │   ├── hwserver.m
    │   ├── mspoller.m
    │   ├── msreader.m
    │   ├── tasksink.m
    │   ├── tasksink2.m
    │   ├── taskvent.m
    │   ├── taskwork.m
    │   ├── taskwork2.m
    │   ├── version.m
    │   ├── wuclient.m
    │   └── wuserver.m
    ├── PHP
    │   ├── README
    │   ├── asyncsrv.php
    │   ├── flclient1.php
    │   ├── flclient2.php
    │   ├── flserver1.php
    │   ├── flserver2.php
    │   ├── hwclient.php
    │   ├── hwserver.php
    │   ├── identity.php
    │   ├── interrupt.php
    │   ├── lbbroker.php
    │   ├── lbbroker2.php
    │   ├── lpclient.php
    │   ├── lpserver.php
    │   ├── mdbroker.php
    │   ├── mdcliapi.php
    │   ├── mdcliapi2.php
    │   ├── mdclient.php
    │   ├── mdclient2.php
    │   ├── mdp.php
    │   ├── mdworker.php
    │   ├── mdwrkapi.php
    │   ├── mmiecho.php
    │   ├── msgqueue.php
    │   ├── mspoller.php
    │   ├── msreader.php
    │   ├── mtrelay.php
    │   ├── mtserver.php
    │   ├── peering1.php
    │   ├── peering2.php
    │   ├── peering3.php
    │   ├── ppqueue.php
    │   ├── ppworker.php
    │   ├── psenvpub.php
    │   ├── psenvsub.php
    │   ├── rrbroker.php
    │   ├── rrclient.php
    │   ├── rrworker.php
    │   ├── rtdealer.php
    │   ├── rtreq.php
    │   ├── spqueue.php
    │   ├── spworker.php
    │   ├── suisnail.php
    │   ├── syncpub.php
    │   ├── syncsub.php
    │   ├── tasksink.php
    │   ├── tasksink2.php
    │   ├── taskvent.php
    │   ├── taskwork.php
    │   ├── taskwork2.php
    │   ├── ticlient.php
    │   ├── titanic.php
    │   ├── tripping.php
    │   ├── version.php
    │   ├── wuclient.php
    │   ├── wuproxy.php
    │   ├── wuserver.php
    │   ├── zhelpers.php
    │   ├── zmsg.php
    │   └── zmsg_test.php
    ├── Perl
    │   ├── README
    │   ├── hwclient.pl
    │   ├── hwserver.pl
    │   ├── identity.pl
    │   ├── interrupt.pl
    │   ├── lbbroker.pl
    │   ├── lpclient.pl
    │   ├── lpserver.pl
    │   ├── msgqueue.pl
    │   ├── mspoller.pl
    │   ├── msreader.pl
    │   ├── mtrelay.pl
    │   ├── mtserver.pl
    │   ├── psenvpub.pl
    │   ├── psenvsub.pl
    │   ├── rrbroker.pl
    │   ├── rrclient.pl
    │   ├── rrworker.pl
    │   ├── rtdealer.pl
    │   ├── rtreq.pl
    │   ├── syncpub.pl
    │   ├── syncsub.pl
    │   ├── tasksink.pl
    │   ├── tasksink2.pl
    │   ├── taskvent.pl
    │   ├── taskwork.pl
    │   ├── taskwork2.pl
    │   ├── version.pl
    │   ├── wuclient.pl
    │   ├── wuproxy.pl
    │   ├── wuserver.pl
    │   └── zhelpers.pm
    ├── Python
    │   ├── MDP.py
    │   ├── README
    │   ├── README.md
    │   ├── asyncio_ioloop
    │   │   ├── README.html
    │   │   ├── README.txt
    │   │   ├── asyncsrv.py
    │   │   ├── fileio1.py
    │   │   ├── fileio2.py
    │   │   ├── fileio3.py
    │   │   ├── hwclient.py
    │   │   ├── hwserver.py
    │   │   ├── lbbroker2.py
    │   │   ├── lpclient.py
    │   │   ├── lpserver.py
    │   │   ├── mtrelay.py
    │   │   ├── mtserver.py
    │   │   ├── pathopub.py
    │   │   ├── pathosub.py
    │   │   ├── ppqueue.py
    │   │   ├── ppworker.py
    │   │   ├── rrbroker.py
    │   │   ├── rrclient.py
    │   │   ├── rrworker.py
    │   │   ├── rrworker_parallel.py
    │   │   ├── rtdealer.py
    │   │   ├── rtreq.py
    │   │   ├── spqueue.py
    │   │   ├── spworker.py
    │   │   ├── tasksink.py
    │   │   ├── tasksink2.py
    │   │   ├── taskvent.py
    │   │   ├── taskwork.py
    │   │   ├── taskwork2.py
    │   │   ├── wuclient.py
    │   │   ├── wuclient_parallel.py
    │   │   ├── wuclient_parallel_await.py
    │   │   ├── wuserver.py
    │   │   └── zhelpers.py
    │   ├── asyncrrhandlers.py
    │   ├── asyncsrv.py
    │   ├── bstar.py
    │   ├── bstarcli.py
    │   ├── bstarsrv.py
    │   ├── bstarsrv2.py
    │   ├── clone.py
    │   ├── clonecli1.py
    │   ├── clonecli2.py
    │   ├── clonecli3.py
    │   ├── clonecli3_py3.py
    │   ├── clonecli4.py
    │   ├── clonecli5.py
    │   ├── clonecli6.py
    │   ├── clonesrv1.py
    │   ├── clonesrv2.py
    │   ├── clonesrv3.py
    │   ├── clonesrv3_py3.py
    │   ├── clonesrv4.py
    │   ├── clonesrv5.py
    │   ├── clonesrv6.py
    │   ├── dechat.py
    │   ├── eagain.py
    │   ├── espresso.py
    │   ├── fileio1.py
    │   ├── fileio2.py
    │   ├── fileio3.py
    │   ├── flcliapi.py
    │   ├── flclient1.py
    │   ├── flclient2.py
    │   ├── flclient3.py
    │   ├── flserver1.py
    │   ├── flserver2.py
    │   ├── flserver3.py
    │   ├── hwclient.py
    │   ├── hwserver.py
    │   ├── identity.py
    │   ├── index.md
    │   ├── interface.py
    │   ├── interrupt.py
    │   ├── kvmsg.py
    │   ├── kvsimple.py
    │   ├── lbbroker.py
    │   ├── lbbroker2.py
    │   ├── lbbroker3.py
    │   ├── lpclient.py
    │   ├── lpserver.py
    │   ├── lvcache.py
    │   ├── mdbroker.py
    │   ├── mdcliapi.py
    │   ├── mdcliapi2.py
    │   ├── mdclient.py
    │   ├── mdclient2.py
    │   ├── mdworker.py
    │   ├── mdwrkapi.py
    │   ├── mmiecho.py
    │   ├── msgqueue.py
    │   ├── mspoller.py
    │   ├── msreader.py
    │   ├── mtrelay.py
    │   ├── mtserver.py
    │   ├── pathopub.py
    │   ├── pathosub.py
    │   ├── peering1.py
    │   ├── peering2.py
    │   ├── peering3.py
    │   ├── ppqueue.py
    │   ├── ppworker.py
    │   ├── psenvpub.py
    │   ├── psenvsub.py
    │   ├── rrbroker.py
    │   ├── rrclient.py
    │   ├── rrworker.py
    │   ├── rtdealer.py
    │   ├── rtreq.py
    │   ├── spqueue.py
    │   ├── spworker.py
    │   ├── suisnail.py
    │   ├── syncpub.py
    │   ├── syncsub.py
    │   ├── tasksink.py
    │   ├── tasksink2.py
    │   ├── taskvent.py
    │   ├── taskwork.py
    │   ├── taskwork2.py
    │   ├── testit.py
    │   ├── ticlient.py
    │   ├── titanic.py
    │   ├── tornado_ioloop
    │   │   ├── README.html
    │   │   ├── README.txt
    │   │   ├── asyncsrv.py
    │   │   ├── fileio1.py
    │   │   ├── fileio2.py
    │   │   ├── fileio3.py
    │   │   ├── hwclient.py
    │   │   ├── hwserver.py
    │   │   ├── hwserver_proxy.py
    │   │   ├── lbbroker2.py
    │   │   ├── lpclient.py
    │   │   ├── lpserver.py
    │   │   ├── mtrelay.py
    │   │   ├── mtserver.py
    │   │   ├── pathopub.py
    │   │   ├── pathosub.py
    │   │   ├── ppqueue.py
    │   │   ├── ppworker.py
    │   │   ├── pyzmp_async_notes.txt
    │   │   ├── rrbroker.py
    │   │   ├── rrclient.py
    │   │   ├── rrworker.py
    │   │   ├── rrworker_parallel.py
    │   │   ├── rtdealer.py
    │   │   ├── rtreq.py
    │   │   ├── spqueue.py
    │   │   ├── spworker.py
    │   │   ├── tasksink.py
    │   │   ├── tasksink2.py
    │   │   ├── taskvent.py
    │   │   ├── taskwork.py
    │   │   ├── taskwork2.py
    │   │   ├── test01.py
    │   │   ├── wuclient.py
    │   │   ├── wuclient_parallel.py
    │   │   ├── wuclient_parallel_await.py
    │   │   ├── wuserver.py
    │   │   └── zhelpers.py
    │   ├── tripping.py
    │   ├── udplib.py
    │   ├── udpping1.py
    │   ├── udpping2.py
    │   ├── udpping3.py
    │   ├── version.py
    │   ├── wuclient.py
    │   ├── wuproxy.py
    │   ├── wuserver.py
    │   └── zhelpers.py
    ├── Q
    │   ├── README
    │   ├── hwclient.q
    │   ├── hwserver.q
    │   ├── identity.q
    │   ├── msgqueue.q
    │   ├── mtrelay.q
    │   ├── mtserver.q
    │   └── version.q
    ├── Racket
    │   ├── README
    │   ├── hwclient.rkt
    │   ├── hwserver.rkt
    │   ├── peering1.rkt
    │   ├── rrclient.rkt
    │   ├── rrworker.rkt
    │   ├── syncpub.rkt
    │   ├── syncsub.rkt
    │   ├── wuclient.rkt
    │   └── wuserver.rkt
    ├── Ruby
    │   ├── README
    │   ├── asyncsrv.rb
    │   ├── bstarcli.rb
    │   ├── bstarsrv.rb
    │   ├── hwclient.rb
    │   ├── hwserver.rb
    │   ├── identity.rb
    │   ├── interrupt.rb
    │   ├── lbbroker.rb
    │   ├── lpclient.rb
    │   ├── lpserver.rb
    │   ├── lvcache.rb
    │   ├── mdbroker.rb
    │   ├── mdcliapi2.rb
    │   ├── mdclient2.rb
    │   ├── mdp.rb
    │   ├── mdworker.rb
    │   ├── mdwrkapi.rb
    │   ├── mmiecho.rb
    │   ├── msgqueue.rb
    │   ├── mspoller.rb
    │   ├── msreader.rb
    │   ├── mtrelay.rb
    │   ├── mtserver.rb
    │   ├── pathopub.rb
    │   ├── pathosub.rb
    │   ├── peering1.rb
    │   ├── peering2.rb
    │   ├── peering3.rb
    │   ├── psenvpub.rb
    │   ├── psenvsub.rb
    │   ├── rrbroker.rb
    │   ├── rrclient.rb
    │   ├── rrworker.rb
    │   ├── rtdealer.rb
    │   ├── rtreq.rb
    │   ├── syncpub.rb
    │   ├── syncsub.rb
    │   ├── tasksink.rb
    │   ├── tasksink2.rb
    │   ├── taskvent.rb
    │   ├── taskwork.rb
    │   ├── taskwork2.rb
    │   ├── ticlient.rb
    │   ├── titanic.rb
    │   ├── version.rb
    │   ├── wuclient.rb
    │   ├── wuproxy.rb
    │   ├── wuserver.rb
    │   └── zhelpers.rb
    ├── Rust
    │   ├── .gitignore
    │   ├── Cargo.lock
    │   ├── Cargo.toml
    │   ├── README
    │   ├── hwclient.rs
    │   ├── hwserver.rs
    │   ├── interrupt.rs
    │   ├── lpclient.rs
    │   ├── lpserver.rs
    │   ├── msgqueue.rs
    │   ├── mspoller.rs
    │   ├── msreader.rs
    │   ├── mtrelay.rs
    │   ├── mtserver.rs
    │   ├── psenvpub.rs
    │   ├── psenvsub.rs
    │   ├── rrbroker.rs
    │   ├── rrclient.rs
    │   ├── rrworker.rs
    │   ├── syncpub.rs
    │   ├── syncsub.rs
    │   ├── syncsub.sh
    │   ├── tasksink.rs
    │   ├── taskvent.rs
    │   ├── taskwork.rs
    │   ├── taskwork2.rs
    │   ├── version.rs
    │   ├── wuclient.rs
    │   ├── wuproxy.rs
    │   └── wuserver.rs
    ├── Scala
    │   ├── Dns.scala
    │   ├── MsgQueue.scala
    │   ├── MultiThreadedRelay.scala
    │   ├── README
    │   ├── ZMsg.scala
    │   ├── asyncsrv.scala
    │   ├── hwclient.scala
    │   ├── hwserver.scala
    │   ├── identity.scala
    │   ├── interrupt.scala
    │   ├── lbbroker.scala
    │   ├── lbbroker2.scala
    │   ├── lpserver.scala
    │   ├── lrubroker.scala
    │   ├── mspoller.scala
    │   ├── msreader.scala
    │   ├── mtrelay.scala
    │   ├── mtserver.scala
    │   ├── peering1.scala
    │   ├── peering2.scala
    │   ├── psenvpub.scala
    │   ├── psenvsub.scala
    │   ├── rrbroker.scala
    │   ├── rrclient.scala
    │   ├── rrworker.scala
    │   ├── rtdealer.scala
    │   ├── rtreq.scala
    │   ├── syncpub.scala
    │   ├── syncsub.scala
    │   ├── tasksink.scala
    │   ├── tasksink2.scala
    │   ├── taskvent.scala
    │   ├── taskwork.scala
    │   ├── taskwork2.scala
    │   ├── utils.scala
    │   ├── version.scala
    │   ├── wuclient.scala
    │   ├── wuproxy.scala
    │   └── wuserver.scala
    ├── Tcl
    │   ├── README
    │   ├── asyncsrv.tcl
    │   ├── bstar.tcl
    │   ├── bstarcli.tcl
    │   ├── bstarsrv.tcl
    │   ├── bstarsrv2.tcl
    │   ├── clonecli1.tcl
    │   ├── clonecli2.tcl
    │   ├── clonecli3.tcl
    │   ├── clonecli4.tcl
    │   ├── clonecli5.tcl
    │   ├── clonesrv1.tcl
    │   ├── clonesrv2.tcl
    │   ├── clonesrv3.tcl
    │   ├── clonesrv4.tcl
    │   ├── clonesrv5.tcl
    │   ├── flcliapi.tcl
    │   ├── flclient1.tcl
    │   ├── flclient2.tcl
    │   ├── flclient3.tcl
    │   ├── flserver1.tcl
    │   ├── flserver2.tcl
    │   ├── flserver3.tcl
    │   ├── hwclient.tcl
    │   ├── hwserver.tcl
    │   ├── identity.tcl
    │   ├── kvmsg.tcl
    │   ├── kvsimple.tcl
    │   ├── lbbroker.tcl
    │   ├── lpclient.tcl
    │   ├── lpserver.tcl
    │   ├── mdbroker.tcl
    │   ├── mdcliapi.tcl
    │   ├── mdcliapi2.tcl
    │   ├── mdclient.tcl
    │   ├── mdclient2.tcl
    │   ├── mdp.tcl
    │   ├── mdworker.tcl
    │   ├── mdwrkapi.tcl
    │   ├── mmiecho.tcl
    │   ├── msgqueue.tcl
    │   ├── mspoller.tcl
    │   ├── msreader.tcl
    │   ├── peering1.tcl
    │   ├── peering2.tcl
    │   ├── peering3.tcl
    │   ├── pkgIndex.tcl
    │   ├── ppqueue.tcl
    │   ├── ppworker.tcl
    │   ├── psenvpub.tcl
    │   ├── psenvsub.tcl
    │   ├── rrbroker.tcl
    │   ├── rrbroker_callback.tcl
    │   ├── rrclient.tcl
    │   ├── rrworker.tcl
    │   ├── rtdealer.tcl
    │   ├── rtreq.tcl
    │   ├── spqueue.tcl
    │   ├── spworker.tcl
    │   ├── suisnail.tcl
    │   ├── syncpub.tcl
    │   ├── syncsub.tcl
    │   ├── syncsub_callback.tcl
    │   ├── tasksink.tcl
    │   ├── tasksink2.tcl
    │   ├── taskvent.tcl
    │   ├── taskvent_callback.tcl
    │   ├── taskwork.tcl
    │   ├── taskwork2.tcl
    │   ├── taskwork2_callback.tcl
    │   ├── ticlient.tcl
    │   ├── titanic.tcl
    │   ├── tripping.tcl
    │   ├── version.tcl
    │   ├── wuclient.tcl
    │   ├── wuproxy.tcl
    │   ├── wuproxyclient.tcl
    │   └── wuserver.tcl
    ├── build
    ├── listings
    │   └── README
    ├── models
    │   ├── .gitignore
    │   ├── codec_c.gsl
    │   ├── mdp_client.c
    │   ├── mdp_client.h
    │   ├── mdp_client.md
    │   ├── mdp_client.xml
    │   ├── mdp_worker.c
    │   ├── mdp_worker.h
    │   ├── mdp_worker.md
    │   ├── mdp_worker.xml
    │   ├── models_test.c
    │   ├── nom_server.c
    │   ├── nom_server.h
    │   ├── nom_server.txt
    │   ├── nom_server.xml
    │   ├── nomd.c
    │   ├── selftest
    │   ├── server_c.gsl
    │   ├── specs.gsl
    │   └── valgrind.supp
    └── ooc
    │   └── README
├── fragments
    ├── C
    │   ├── README
    │   ├── binding.c
    │   ├── brute-force-discovery.c
    │   ├── bstar.c
    │   ├── bstarcli.c
    │   ├── clone-methods.c
    │   ├── cloneapi1.c
    │   ├── cloneapi2.c
    │   ├── cloneapi3.c
    │   ├── clonesrv5.c
    │   ├── connect-command.c
    │   ├── endpoint-hashing.c
    │   ├── errorhandling.c
    │   ├── fileio3.c
    │   ├── filemq-connect.c
    │   ├── filemq-main.c
    │   ├── filemq-outbox.c
    │   ├── fmq-server-api.c
    │   ├── fmq-server-methods.c
    │   ├── forward-deliver.c
    │   ├── fsm-instance.c
    │   ├── gsl-client-fsm.c
    │   ├── heartbeats.c
    │   ├── highreader.c
    │   ├── interface.c
    │   ├── interrupt.c
    │   ├── iothreads.c
    │   ├── killsignal.c
    │   ├── kvmsg.c
    │   ├── kvsetttl.c
    │   ├── lbreader.c
    │   ├── listing_5.c
    │   ├── lowreader.c
    │   ├── lruqueue.c
    │   ├── lruqueue2.c
    │   ├── lrureader.c
    │   ├── maxsockets.c
    │   ├── mdclient-async.c
    │   ├── mdclient.c
    │   ├── mdworker.c
    │   ├── mousetrap.c
    │   ├── mspoller.c
    │   ├── nomserver.c
    │   ├── polling.c
    │   ├── ppworker.c
    │   ├── proxy.c
    │   ├── publish-file.c
    │   ├── reactor.c
    │   ├── recvmore.c
    │   ├── rrbroker.c
    │   ├── send-deliver.c
    │   ├── sendmore.c
    │   ├── syncsub.c
    │   ├── track.c
    │   ├── tripping.c
    │   ├── udpping1.c
    │   ├── upgrade-shim.c
    │   ├── zerocopy.c
    │   ├── zyre-beacon-recv.c
    │   ├── zyre-beacon-send.c
    │   ├── zyre-beacon.c
    │   ├── zyre-listener.c
    │   ├── zyre-peer-disconnect.c
    │   ├── zyre-peer-new-socket.c
    │   ├── zyre-peer-send.c
    │   ├── zyre-require-peer.c
    │   ├── zyre-sender.c
    │   ├── zyre-tester-main.c
    │   └── zyre-udp.c
    ├── Java
    │   ├── README
    │   ├── binding.java
    │   ├── bstar.java
    │   ├── clone-methods.java
    │   ├── connect-command.java
    │   ├── errorhandling.java
    │   ├── heartbeats.java
    │   ├── highreader.java
    │   ├── interrupt.java
    │   ├── iothreads.java
    │   ├── killsignal.java
    │   ├── kvsetttl.java
    │   ├── lbreader.java
    │   ├── lowreader.java
    │   ├── mdclient-async.java
    │   ├── mdclient.java
    │   ├── mdworker.java
    │   ├── polling.java
    │   ├── proxy.java
    │   ├── reactor.java
    │   └── zerocopy.java
    └── README
├── images
    ├── fig1.eps
    ├── fig1.png
    ├── fig1.svg
    ├── fig1.txt
    ├── fig10.eps
    ├── fig10.png
    ├── fig10.svg
    ├── fig10.txt
    ├── fig11.eps
    ├── fig11.png
    ├── fig11.svg
    ├── fig11.txt
    ├── fig12.eps
    ├── fig12.png
    ├── fig12.svg
    ├── fig12.txt
    ├── fig13.eps
    ├── fig13.png
    ├── fig13.svg
    ├── fig13.txt
    ├── fig14.eps
    ├── fig14.png
    ├── fig14.svg
    ├── fig14.txt
    ├── fig15.eps
    ├── fig15.png
    ├── fig15.svg
    ├── fig15.txt
    ├── fig16.eps
    ├── fig16.png
    ├── fig16.svg
    ├── fig16.txt
    ├── fig17.eps
    ├── fig17.png
    ├── fig17.svg
    ├── fig17.txt
    ├── fig18.eps
    ├── fig18.png
    ├── fig18.svg
    ├── fig18.txt
    ├── fig19.eps
    ├── fig19.png
    ├── fig19.svg
    ├── fig19.txt
    ├── fig2.eps
    ├── fig2.png
    ├── fig2.svg
    ├── fig2.txt
    ├── fig20.eps
    ├── fig20.png
    ├── fig20.svg
    ├── fig20.txt
    ├── fig21.eps
    ├── fig21.png
    ├── fig21.svg
    ├── fig21.txt
    ├── fig22.eps
    ├── fig22.png
    ├── fig22.svg
    ├── fig22.txt
    ├── fig23.eps
    ├── fig23.png
    ├── fig23.svg
    ├── fig23.txt
    ├── fig24.eps
    ├── fig24.png
    ├── fig24.svg
    ├── fig24.txt
    ├── fig25.eps
    ├── fig25.png
    ├── fig25.svg
    ├── fig25.txt
    ├── fig26.eps
    ├── fig26.png
    ├── fig26.svg
    ├── fig26.txt
    ├── fig27.eps
    ├── fig27.png
    ├── fig27.svg
    ├── fig27.txt
    ├── fig28.eps
    ├── fig28.png
    ├── fig28.svg
    ├── fig28.txt
    ├── fig29.eps
    ├── fig29.png
    ├── fig29.svg
    ├── fig29.txt
    ├── fig3.eps
    ├── fig3.png
    ├── fig3.svg
    ├── fig3.txt
    ├── fig30.eps
    ├── fig30.png
    ├── fig30.svg
    ├── fig30.txt
    ├── fig31.eps
    ├── fig31.png
    ├── fig31.svg
    ├── fig31.txt
    ├── fig32.eps
    ├── fig32.png
    ├── fig32.svg
    ├── fig32.txt
    ├── fig33.eps
    ├── fig33.png
    ├── fig33.svg
    ├── fig33.txt
    ├── fig34.eps
    ├── fig34.png
    ├── fig34.svg
    ├── fig34.txt
    ├── fig35.eps
    ├── fig35.png
    ├── fig35.svg
    ├── fig35.txt
    ├── fig36.eps
    ├── fig36.png
    ├── fig36.svg
    ├── fig36.txt
    ├── fig37.eps
    ├── fig37.png
    ├── fig37.svg
    ├── fig37.txt
    ├── fig38.eps
    ├── fig38.png
    ├── fig38.svg
    ├── fig38.txt
    ├── fig39.eps
    ├── fig39.png
    ├── fig39.svg
    ├── fig39.txt
    ├── fig4.eps
    ├── fig4.png
    ├── fig4.svg
    ├── fig4.txt
    ├── fig40.eps
    ├── fig40.png
    ├── fig40.svg
    ├── fig40.txt
    ├── fig41.eps
    ├── fig41.png
    ├── fig41.svg
    ├── fig41.txt
    ├── fig42.eps
    ├── fig42.png
    ├── fig42.svg
    ├── fig42.txt
    ├── fig43.eps
    ├── fig43.png
    ├── fig43.svg
    ├── fig43.txt
    ├── fig44.eps
    ├── fig44.png
    ├── fig44.svg
    ├── fig44.txt
    ├── fig45.eps
    ├── fig45.png
    ├── fig45.svg
    ├── fig45.txt
    ├── fig46.eps
    ├── fig46.png
    ├── fig46.svg
    ├── fig46.txt
    ├── fig47.eps
    ├── fig47.png
    ├── fig47.svg
    ├── fig47.txt
    ├── fig48.eps
    ├── fig48.png
    ├── fig48.svg
    ├── fig48.txt
    ├── fig49.eps
    ├── fig49.png
    ├── fig49.svg
    ├── fig49.txt
    ├── fig5.eps
    ├── fig5.png
    ├── fig5.svg
    ├── fig5.txt
    ├── fig50.eps
    ├── fig50.png
    ├── fig50.svg
    ├── fig50.txt
    ├── fig51.eps
    ├── fig51.png
    ├── fig51.svg
    ├── fig51.txt
    ├── fig52.eps
    ├── fig52.png
    ├── fig52.svg
    ├── fig52.txt
    ├── fig53.eps
    ├── fig53.png
    ├── fig53.svg
    ├── fig53.txt
    ├── fig54.eps
    ├── fig54.png
    ├── fig54.svg
    ├── fig54.txt
    ├── fig55.eps
    ├── fig55.png
    ├── fig55.svg
    ├── fig55.txt
    ├── fig56.eps
    ├── fig56.png
    ├── fig56.svg
    ├── fig56.txt
    ├── fig57.eps
    ├── fig57.png
    ├── fig57.svg
    ├── fig57.txt
    ├── fig58.eps
    ├── fig58.png
    ├── fig58.svg
    ├── fig58.txt
    ├── fig59.eps
    ├── fig59.png
    ├── fig59.svg
    ├── fig59.txt
    ├── fig6.eps
    ├── fig6.png
    ├── fig6.svg
    ├── fig6.txt
    ├── fig60.eps
    ├── fig60.png
    ├── fig60.svg
    ├── fig60.txt
    ├── fig61.eps
    ├── fig61.png
    ├── fig61.svg
    ├── fig61.txt
    ├── fig62.eps
    ├── fig62.png
    ├── fig62.svg
    ├── fig62.txt
    ├── fig63.eps
    ├── fig63.png
    ├── fig63.svg
    ├── fig63.txt
    ├── fig64.eps
    ├── fig64.png
    ├── fig64.svg
    ├── fig64.txt
    ├── fig65.eps
    ├── fig65.png
    ├── fig65.svg
    ├── fig65.txt
    ├── fig66.eps
    ├── fig66.png
    ├── fig66.svg
    ├── fig66.txt
    ├── fig67.eps
    ├── fig67.png
    ├── fig67.svg
    ├── fig67.txt
    ├── fig68.eps
    ├── fig68.png
    ├── fig68.svg
    ├── fig68.txt
    ├── fig69.eps
    ├── fig69.png
    ├── fig69.svg
    ├── fig69.txt
    ├── fig7.eps
    ├── fig7.png
    ├── fig7.svg
    ├── fig7.txt
    ├── fig70.eps
    ├── fig70.png
    ├── fig70.svg
    ├── fig70.txt
    ├── fig8.eps
    ├── fig8.png
    ├── fig8.svg
    ├── fig8.txt
    ├── fig9.eps
    ├── fig9.png
    ├── fig9.svg
    └── fig9.txt
├── listings
    ├── C
    │   ├── listing_1.c
    │   ├── listing_10.c
    │   ├── listing_3.c
    │   ├── listing_4.c
    │   ├── listing_5.c
    │   ├── listing_6.c
    │   ├── listing_7.c
    │   ├── listing_8.c
    │   └── listing_9.c
    ├── Lua
    │   ├── listing_38.lua
    │   ├── listing_39.lua
    │   ├── listing_43.lua
    │   ├── listing_44.lua
    │   ├── listing_46.lua
    │   ├── listing_47.lua
    │   ├── listing_52.lua
    │   ├── listing_53.lua
    │   └── listing_54.lua
    ├── Python
    │   └── listing_2.py
    └── Tcl
    │   ├── listing_37.tcl
    │   ├── listing_38.tcl
    │   ├── listing_42.tcl
    │   ├── listing_43.tcl
    │   ├── listing_45.tcl
    │   ├── listing_46.tcl
    │   ├── listing_51.tcl
    │   ├── listing_52.tcl
    │   └── listing_53.tcl
├── netlify.toml
├── notes.txt
├── part1.txt
├── part2.txt
├── postface.txt
├── preface_print.txt
├── preface_web.txt
├── site
    ├── .bookmarks
    ├── archetypes
    │   └── default.md
    ├── assets
    │   ├── _custom.scss
    │   └── _variables.scss
    ├── config.toml
    ├── content
    │   ├── _index.md
    │   ├── docs
    │   │   ├── _index.md
    │   │   ├── chapter1.md
    │   │   ├── chapter2.md
    │   │   ├── chapter3.md
    │   │   ├── chapter4.md
    │   │   ├── chapter5.md
    │   │   ├── chapter6.md
    │   │   ├── chapter7.md
    │   │   ├── chapter8.md
    │   │   ├── postface.md
    │   │   └── preface.md
    │   ├── examples
    │   ├── scoreboard.md
    │   └── translate
    │   │   └── index.md
    ├── data
    │   └── languages.yaml
    ├── layouts
    │   ├── partials
    │   │   └── docs
    │   │   │   └── inject
    │   │   │       ├── body.html
    │   │   │       └── head.html
    │   └── shortcodes
    │   │   ├── details.html
    │   │   ├── example.html
    │   │   ├── examples.html
    │   │   ├── fragment.html
    │   │   ├── include.html
    │   │   └── textdiagram.html
    ├── static
    │   ├── images
    │   │   ├── fig1.eps
    │   │   ├── fig1.png
    │   │   ├── fig1.svg
    │   │   ├── fig1.txt
    │   │   ├── fig10.eps
    │   │   ├── fig10.png
    │   │   ├── fig10.svg
    │   │   ├── fig10.txt
    │   │   ├── fig11.eps
    │   │   ├── fig11.png
    │   │   ├── fig11.svg
    │   │   ├── fig11.txt
    │   │   ├── fig12.eps
    │   │   ├── fig12.png
    │   │   ├── fig12.svg
    │   │   ├── fig12.txt
    │   │   ├── fig13.eps
    │   │   ├── fig13.png
    │   │   ├── fig13.svg
    │   │   ├── fig13.txt
    │   │   ├── fig14.eps
    │   │   ├── fig14.png
    │   │   ├── fig14.svg
    │   │   ├── fig14.txt
    │   │   ├── fig15.eps
    │   │   ├── fig15.png
    │   │   ├── fig15.svg
    │   │   ├── fig15.txt
    │   │   ├── fig16.eps
    │   │   ├── fig16.png
    │   │   ├── fig16.svg
    │   │   ├── fig16.txt
    │   │   ├── fig17.eps
    │   │   ├── fig17.png
    │   │   ├── fig17.svg
    │   │   ├── fig17.txt
    │   │   ├── fig18.eps
    │   │   ├── fig18.png
    │   │   ├── fig18.svg
    │   │   ├── fig18.txt
    │   │   ├── fig19.eps
    │   │   ├── fig19.png
    │   │   ├── fig19.svg
    │   │   ├── fig19.txt
    │   │   ├── fig2.eps
    │   │   ├── fig2.png
    │   │   ├── fig2.svg
    │   │   ├── fig2.txt
    │   │   ├── fig20.eps
    │   │   ├── fig20.png
    │   │   ├── fig20.svg
    │   │   ├── fig20.txt
    │   │   ├── fig21.eps
    │   │   ├── fig21.png
    │   │   ├── fig21.svg
    │   │   ├── fig21.txt
    │   │   ├── fig22.eps
    │   │   ├── fig22.png
    │   │   ├── fig22.svg
    │   │   ├── fig22.txt
    │   │   ├── fig23.eps
    │   │   ├── fig23.png
    │   │   ├── fig23.svg
    │   │   ├── fig23.txt
    │   │   ├── fig24.eps
    │   │   ├── fig24.png
    │   │   ├── fig24.svg
    │   │   ├── fig24.txt
    │   │   ├── fig25.eps
    │   │   ├── fig25.png
    │   │   ├── fig25.svg
    │   │   ├── fig25.txt
    │   │   ├── fig26.eps
    │   │   ├── fig26.png
    │   │   ├── fig26.svg
    │   │   ├── fig26.txt
    │   │   ├── fig27.eps
    │   │   ├── fig27.png
    │   │   ├── fig27.svg
    │   │   ├── fig27.txt
    │   │   ├── fig28.eps
    │   │   ├── fig28.png
    │   │   ├── fig28.svg
    │   │   ├── fig28.txt
    │   │   ├── fig29.eps
    │   │   ├── fig29.png
    │   │   ├── fig29.svg
    │   │   ├── fig29.txt
    │   │   ├── fig3.eps
    │   │   ├── fig3.png
    │   │   ├── fig3.svg
    │   │   ├── fig3.txt
    │   │   ├── fig30.eps
    │   │   ├── fig30.png
    │   │   ├── fig30.svg
    │   │   ├── fig30.txt
    │   │   ├── fig31.eps
    │   │   ├── fig31.png
    │   │   ├── fig31.svg
    │   │   ├── fig31.txt
    │   │   ├── fig32.eps
    │   │   ├── fig32.png
    │   │   ├── fig32.svg
    │   │   ├── fig32.txt
    │   │   ├── fig33.eps
    │   │   ├── fig33.png
    │   │   ├── fig33.svg
    │   │   ├── fig33.txt
    │   │   ├── fig34.eps
    │   │   ├── fig34.png
    │   │   ├── fig34.svg
    │   │   ├── fig34.txt
    │   │   ├── fig35.eps
    │   │   ├── fig35.png
    │   │   ├── fig35.svg
    │   │   ├── fig35.txt
    │   │   ├── fig36.eps
    │   │   ├── fig36.png
    │   │   ├── fig36.svg
    │   │   ├── fig36.txt
    │   │   ├── fig37.eps
    │   │   ├── fig37.png
    │   │   ├── fig37.svg
    │   │   ├── fig37.txt
    │   │   ├── fig38.eps
    │   │   ├── fig38.png
    │   │   ├── fig38.svg
    │   │   ├── fig38.txt
    │   │   ├── fig39.eps
    │   │   ├── fig39.png
    │   │   ├── fig39.svg
    │   │   ├── fig39.txt
    │   │   ├── fig4.eps
    │   │   ├── fig4.png
    │   │   ├── fig4.svg
    │   │   ├── fig4.txt
    │   │   ├── fig40.eps
    │   │   ├── fig40.png
    │   │   ├── fig40.svg
    │   │   ├── fig40.txt
    │   │   ├── fig41.eps
    │   │   ├── fig41.png
    │   │   ├── fig41.svg
    │   │   ├── fig41.txt
    │   │   ├── fig42.eps
    │   │   ├── fig42.png
    │   │   ├── fig42.svg
    │   │   ├── fig42.txt
    │   │   ├── fig43.eps
    │   │   ├── fig43.png
    │   │   ├── fig43.svg
    │   │   ├── fig43.txt
    │   │   ├── fig44.eps
    │   │   ├── fig44.png
    │   │   ├── fig44.svg
    │   │   ├── fig44.txt
    │   │   ├── fig45.eps
    │   │   ├── fig45.png
    │   │   ├── fig45.svg
    │   │   ├── fig45.txt
    │   │   ├── fig46.eps
    │   │   ├── fig46.png
    │   │   ├── fig46.svg
    │   │   ├── fig46.txt
    │   │   ├── fig47.eps
    │   │   ├── fig47.png
    │   │   ├── fig47.svg
    │   │   ├── fig47.txt
    │   │   ├── fig48.eps
    │   │   ├── fig48.png
    │   │   ├── fig48.svg
    │   │   ├── fig48.txt
    │   │   ├── fig49.eps
    │   │   ├── fig49.png
    │   │   ├── fig49.svg
    │   │   ├── fig49.txt
    │   │   ├── fig5.eps
    │   │   ├── fig5.png
    │   │   ├── fig5.svg
    │   │   ├── fig5.txt
    │   │   ├── fig50.eps
    │   │   ├── fig50.png
    │   │   ├── fig50.svg
    │   │   ├── fig50.txt
    │   │   ├── fig51.eps
    │   │   ├── fig51.png
    │   │   ├── fig51.svg
    │   │   ├── fig51.txt
    │   │   ├── fig52.eps
    │   │   ├── fig52.png
    │   │   ├── fig52.svg
    │   │   ├── fig52.txt
    │   │   ├── fig53.eps
    │   │   ├── fig53.png
    │   │   ├── fig53.svg
    │   │   ├── fig53.txt
    │   │   ├── fig54.eps
    │   │   ├── fig54.png
    │   │   ├── fig54.svg
    │   │   ├── fig54.txt
    │   │   ├── fig55.eps
    │   │   ├── fig55.png
    │   │   ├── fig55.svg
    │   │   ├── fig55.txt
    │   │   ├── fig56.eps
    │   │   ├── fig56.png
    │   │   ├── fig56.svg
    │   │   ├── fig56.txt
    │   │   ├── fig57.eps
    │   │   ├── fig57.png
    │   │   ├── fig57.svg
    │   │   ├── fig57.txt
    │   │   ├── fig58.eps
    │   │   ├── fig58.png
    │   │   ├── fig58.svg
    │   │   ├── fig58.txt
    │   │   ├── fig59.eps
    │   │   ├── fig59.png
    │   │   ├── fig59.svg
    │   │   ├── fig59.txt
    │   │   ├── fig6.eps
    │   │   ├── fig6.png
    │   │   ├── fig6.svg
    │   │   ├── fig6.txt
    │   │   ├── fig60.eps
    │   │   ├── fig60.png
    │   │   ├── fig60.svg
    │   │   ├── fig60.txt
    │   │   ├── fig61.eps
    │   │   ├── fig61.png
    │   │   ├── fig61.svg
    │   │   ├── fig61.txt
    │   │   ├── fig62.eps
    │   │   ├── fig62.png
    │   │   ├── fig62.svg
    │   │   ├── fig62.txt
    │   │   ├── fig63.eps
    │   │   ├── fig63.png
    │   │   ├── fig63.svg
    │   │   ├── fig63.txt
    │   │   ├── fig64.eps
    │   │   ├── fig64.png
    │   │   ├── fig64.svg
    │   │   ├── fig64.txt
    │   │   ├── fig65.eps
    │   │   ├── fig65.png
    │   │   ├── fig65.svg
    │   │   ├── fig65.txt
    │   │   ├── fig66.eps
    │   │   ├── fig66.png
    │   │   ├── fig66.svg
    │   │   ├── fig66.txt
    │   │   ├── fig67.eps
    │   │   ├── fig67.png
    │   │   ├── fig67.svg
    │   │   ├── fig67.txt
    │   │   ├── fig68.eps
    │   │   ├── fig68.png
    │   │   ├── fig68.svg
    │   │   ├── fig68.txt
    │   │   ├── fig69.eps
    │   │   ├── fig69.png
    │   │   ├── fig69.svg
    │   │   ├── fig69.txt
    │   │   ├── fig7.eps
    │   │   ├── fig7.png
    │   │   ├── fig7.svg
    │   │   ├── fig7.txt
    │   │   ├── fig70.eps
    │   │   ├── fig70.png
    │   │   ├── fig70.svg
    │   │   ├── fig70.txt
    │   │   ├── fig8.eps
    │   │   ├── fig8.png
    │   │   ├── fig8.svg
    │   │   ├── fig8.txt
    │   │   ├── fig9.eps
    │   │   ├── fig9.png
    │   │   ├── fig9.svg
    │   │   ├── fig9.txt
    │   │   └── logo.gif
    │   └── js
    │   │   └── example-toggle.js
    └── themes
    │   └── book
    │       ├── LICENSE
    │       ├── README.md
    │       ├── archetypes
    │           ├── docs.md
    │           └── posts.md
    │       ├── assets
    │           ├── _custom.scss
    │           ├── _defaults.scss
    │           ├── _fonts.scss
    │           ├── _main.scss
    │           ├── _markdown.scss
    │           ├── _print.scss
    │           ├── _shortcodes.scss
    │           ├── _utils.scss
    │           ├── _variables.scss
    │           ├── book.scss
    │           ├── manifest.json
    │           ├── menu-reset.js
    │           ├── normalize.css
    │           ├── plugins
    │           │   ├── _dark.scss
    │           │   ├── _numbered.scss
    │           │   └── _scrollbars.scss
    │           ├── search-data.js
    │           ├── search.js
    │           ├── sw-register.js
    │           └── sw.js
    │       ├── exampleSite
    │           ├── assets
    │           │   ├── _custom.scss
    │           │   └── _variables.scss
    │           ├── config.toml
    │           ├── config.yaml
    │           ├── content.ru
    │           │   └── _index.md
    │           ├── content.zh
    │           │   └── _index.md
    │           ├── content
    │           │   ├── _index.md
    │           │   ├── docs
    │           │   │   ├── example
    │           │   │   │   ├── _index.md
    │           │   │   │   ├── collapsed
    │           │   │   │   │   ├── 3rd-level
    │           │   │   │   │   │   ├── 4th-level.md
    │           │   │   │   │   │   └── _index.md
    │           │   │   │   │   └── _index.md
    │           │   │   │   ├── hidden.md
    │           │   │   │   └── table-of-contents
    │           │   │   │   │   ├── _index.md
    │           │   │   │   │   ├── with-toc.md
    │           │   │   │   │   └── without-toc.md
    │           │   │   └── shortcodes
    │           │   │   │   ├── _index.md
    │           │   │   │   ├── buttons.md
    │           │   │   │   ├── columns.md
    │           │   │   │   ├── details.md
    │           │   │   │   ├── expand.md
    │           │   │   │   ├── hints.md
    │           │   │   │   ├── katex.md
    │           │   │   │   ├── mermaid.md
    │           │   │   │   ├── section
    │           │   │   │       ├── _index.md
    │           │   │   │       ├── page1.md
    │           │   │   │       └── page2.md
    │           │   │   │   └── tabs.md
    │           │   ├── menu
    │           │   │   └── index.md
    │           │   └── posts
    │           │   │   ├── _index.md
    │           │   │   ├── creating-a-new-theme.md
    │           │   │   ├── goisforlovers.md
    │           │   │   ├── hugoisforlovers.md
    │           │   │   └── migrate-from-jekyll.md
    │           └── resources
    │           │   └── _gen
    │           │       └── assets
    │           │           └── scss
    │           │               ├── book.scss_50fc8c04e12a2f59027287995557ceff.content
    │           │               ├── book.scss_50fc8c04e12a2f59027287995557ceff.json
    │           │               └── example
    │           │                   ├── book.scss_50fc8c04e12a2f59027287995557ceff.content
    │           │                   └── book.scss_50fc8c04e12a2f59027287995557ceff.json
    │       ├── i18n
    │           ├── cn.yaml
    │           ├── de.yaml
    │           ├── en.yaml
    │           ├── es.yaml
    │           ├── fr.yaml
    │           ├── jp.yaml
    │           ├── ko.yaml
    │           ├── nb.yaml
    │           ├── pt.yaml
    │           ├── ru.yaml
    │           ├── sv.yaml
    │           ├── uk.yaml
    │           └── zh.yaml
    │       ├── images
    │           ├── screenshot.png
    │           └── tn.png
    │       ├── layouts
    │           ├── 404.html
    │           ├── _default
    │           │   ├── _markup
    │           │   │   ├── render-heading.html
    │           │   │   ├── render-image.html
    │           │   │   └── render-link.html
    │           │   ├── baseof.html
    │           │   ├── list.html
    │           │   └── single.html
    │           ├── partials
    │           │   └── docs
    │           │   │   ├── brand.html
    │           │   │   ├── comments.html
    │           │   │   ├── date.html
    │           │   │   ├── footer.html
    │           │   │   ├── header.html
    │           │   │   ├── html-head.html
    │           │   │   ├── inject
    │           │   │       ├── body.html
    │           │   │       ├── content-after.html
    │           │   │       ├── content-before.html
    │           │   │       ├── footer.html
    │           │   │       ├── head.html
    │           │   │       ├── menu-after.html
    │           │   │       └── menu-before.html
    │           │   │   ├── languages.html
    │           │   │   ├── menu-bundle.html
    │           │   │   ├── menu-filetree.html
    │           │   │   ├── menu-hugo.html
    │           │   │   ├── menu.html
    │           │   │   ├── post-meta.html
    │           │   │   ├── search.html
    │           │   │   ├── taxonomy.html
    │           │   │   ├── title.html
    │           │   │   └── toc.html
    │           ├── posts
    │           │   ├── list.html
    │           │   └── single.html
    │           ├── shortcodes
    │           │   ├── button.html
    │           │   ├── columns.html
    │           │   ├── details.html
    │           │   ├── expand.html
    │           │   ├── hint.html
    │           │   ├── katex.html
    │           │   ├── mermaid.html
    │           │   ├── section.html
    │           │   ├── tab.html
    │           │   └── tabs.html
    │           └── taxonomy
    │           │   ├── list.html
    │           │   └── taxonomy.html
    │       ├── static
    │           ├── favicon.png
    │           ├── favicon.svg
    │           ├── flexsearch.min.js
    │           ├── fonts
    │           │   ├── roboto-mono-v6-latin-regular.woff
    │           │   ├── roboto-mono-v6-latin-regular.woff2
    │           │   ├── roboto-v19-latin-300italic.woff
    │           │   ├── roboto-v19-latin-300italic.woff2
    │           │   ├── roboto-v19-latin-700.woff
    │           │   ├── roboto-v19-latin-700.woff2
    │           │   ├── roboto-v19-latin-regular.woff
    │           │   └── roboto-v19-latin-regular.woff2
    │           ├── katex
    │           │   ├── auto-render.min.js
    │           │   ├── fonts
    │           │   │   ├── KaTeX_AMS-Regular.ttf
    │           │   │   ├── KaTeX_AMS-Regular.woff
    │           │   │   ├── KaTeX_AMS-Regular.woff2
    │           │   │   ├── KaTeX_Caligraphic-Bold.ttf
    │           │   │   ├── KaTeX_Caligraphic-Bold.woff
    │           │   │   ├── KaTeX_Caligraphic-Bold.woff2
    │           │   │   ├── KaTeX_Caligraphic-Regular.ttf
    │           │   │   ├── KaTeX_Caligraphic-Regular.woff
    │           │   │   ├── KaTeX_Caligraphic-Regular.woff2
    │           │   │   ├── KaTeX_Fraktur-Bold.ttf
    │           │   │   ├── KaTeX_Fraktur-Bold.woff
    │           │   │   ├── KaTeX_Fraktur-Bold.woff2
    │           │   │   ├── KaTeX_Fraktur-Regular.ttf
    │           │   │   ├── KaTeX_Fraktur-Regular.woff
    │           │   │   ├── KaTeX_Fraktur-Regular.woff2
    │           │   │   ├── KaTeX_Main-Bold.ttf
    │           │   │   ├── KaTeX_Main-Bold.woff
    │           │   │   ├── KaTeX_Main-Bold.woff2
    │           │   │   ├── KaTeX_Main-BoldItalic.ttf
    │           │   │   ├── KaTeX_Main-BoldItalic.woff
    │           │   │   ├── KaTeX_Main-BoldItalic.woff2
    │           │   │   ├── KaTeX_Main-Italic.ttf
    │           │   │   ├── KaTeX_Main-Italic.woff
    │           │   │   ├── KaTeX_Main-Italic.woff2
    │           │   │   ├── KaTeX_Main-Regular.ttf
    │           │   │   ├── KaTeX_Main-Regular.woff
    │           │   │   ├── KaTeX_Main-Regular.woff2
    │           │   │   ├── KaTeX_Math-BoldItalic.ttf
    │           │   │   ├── KaTeX_Math-BoldItalic.woff
    │           │   │   ├── KaTeX_Math-BoldItalic.woff2
    │           │   │   ├── KaTeX_Math-Italic.ttf
    │           │   │   ├── KaTeX_Math-Italic.woff
    │           │   │   ├── KaTeX_Math-Italic.woff2
    │           │   │   ├── KaTeX_SansSerif-Bold.ttf
    │           │   │   ├── KaTeX_SansSerif-Bold.woff
    │           │   │   ├── KaTeX_SansSerif-Bold.woff2
    │           │   │   ├── KaTeX_SansSerif-Italic.ttf
    │           │   │   ├── KaTeX_SansSerif-Italic.woff
    │           │   │   ├── KaTeX_SansSerif-Italic.woff2
    │           │   │   ├── KaTeX_SansSerif-Regular.ttf
    │           │   │   ├── KaTeX_SansSerif-Regular.woff
    │           │   │   ├── KaTeX_SansSerif-Regular.woff2
    │           │   │   ├── KaTeX_Script-Regular.ttf
    │           │   │   ├── KaTeX_Script-Regular.woff
    │           │   │   ├── KaTeX_Script-Regular.woff2
    │           │   │   ├── KaTeX_Size1-Regular.ttf
    │           │   │   ├── KaTeX_Size1-Regular.woff
    │           │   │   ├── KaTeX_Size1-Regular.woff2
    │           │   │   ├── KaTeX_Size2-Regular.ttf
    │           │   │   ├── KaTeX_Size2-Regular.woff
    │           │   │   ├── KaTeX_Size2-Regular.woff2
    │           │   │   ├── KaTeX_Size3-Regular.ttf
    │           │   │   ├── KaTeX_Size3-Regular.woff
    │           │   │   ├── KaTeX_Size3-Regular.woff2
    │           │   │   ├── KaTeX_Size4-Regular.ttf
    │           │   │   ├── KaTeX_Size4-Regular.woff
    │           │   │   ├── KaTeX_Size4-Regular.woff2
    │           │   │   ├── KaTeX_Typewriter-Regular.ttf
    │           │   │   ├── KaTeX_Typewriter-Regular.woff
    │           │   │   └── KaTeX_Typewriter-Regular.woff2
    │           │   ├── katex.min.css
    │           │   └── katex.min.js
    │           ├── mermaid.min.js
    │           └── svg
    │           │   ├── calendar.svg
    │           │   ├── edit.svg
    │           │   ├── menu.svg
    │           │   ├── toc.svg
    │           │   └── translate.svg
    │       └── theme.toml
├── styles.txt
├── xl8n
    ├── chapter1.txt
    └── kr
    │   └── chapter1.txt
└── zguide.book


/.cache_main:
--------------------------------------------------------------------------------
1 | 042eab97f54eaf590435111cf23b8067e388d3d0  scoreboard.wd
2 | 


--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
 1 | wdtemp.txt
 2 | tmp_*
 3 | *.wd
 4 | node_modules
 5 | *.ipc
 6 | *.pdf
 7 | *.epub
 8 | *.pyc
 9 | *.pyo
10 | *.o
11 | .DS_Store
12 | *~
13 | ebook.xml
14 | /book
15 | book.ps
16 | book.xml
17 | book.tex
18 | upload.sh
19 | changes.txt
20 | *.swp
21 | testdata*
22 | 
23 | site/resources/*
24 | site/public/*
25 | 
26 | .venv # python venv
27 | 


--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The Guide is copyright (c) 2010-2011 Pieter Hintjens.  It is licensed under 
2 | the Creative Commons Attribution-Non-Commercial-Share Alike 3.0 License.
3 | 


--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
 1 | serve:
 2 | 	cd site && \
 3 | 	hugo server \
 4 | 	--buildDrafts \
 5 | 	--buildFuture \
 6 | 	--disableFastRender \
 7 | 	--ignoreCache \
 8 | 	--theme book
 9 | 
10 | production-build:
11 | 	cd site && \
12 | 	hugo --theme book && \
13 | 	rm -rf public/examples
14 | 
15 | preview-build:
16 | 	cd site && \
17 | 	hugo \
18 | 	--baseURL $(DEPLOY_PRIME_URL) \
19 | 	--buildDrafts \
20 | 	--buildFuture \
21 | 	--theme book
22 | 


--------------------------------------------------------------------------------
/articles/images/multithreading_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/articles/images/multithreading_1.png


--------------------------------------------------------------------------------
/articles/images/multithreading_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/articles/images/multithreading_2.png


--------------------------------------------------------------------------------
/articles/images/multithreading_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/articles/images/multithreading_3.png


--------------------------------------------------------------------------------
/articles/images/multithreading_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/articles/images/multithreading_4.png


--------------------------------------------------------------------------------
/articles/images/multithreading_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/articles/images/multithreading_5.png


--------------------------------------------------------------------------------
/articles/images/reliability_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/articles/images/reliability_1.png


--------------------------------------------------------------------------------
/articles/src/multithreading/hello.c:
--------------------------------------------------------------------------------
1 | #include "zmsg.c"
2 | void main (void) 
3 | {
4 |     s_version ();
5 | }
6 | 


--------------------------------------------------------------------------------
/articles/src/multithreading/testit.c:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Show inter-thread signalling using 0MQ sockets
 3 | //
 4 | #include "zmsg.c"
 5 | 
 6 | int main () {
 7 |     void *context = zmq_init (1);
 8 |     void *socket = zmq_socket (context, ZMQ_PUB);
 9 |     s_version ();
10 | 
11 |     assert (zmq_bind (socket, "ipc://signal") == 0);
12 |     zmsg_t *zmsg = zmsg_new ();
13 |     zmsg_body_set (zmsg, "happy");
14 |     zmsg_send (&zmsg, socket);
15 | 
16 |     sleep (1);
17 |     zmq_term (context);
18 |     return 0;
19 | }
20 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/00changelog.i:
--------------------------------------------------------------------------------
1 | ��� dummy changelog to prevent using the old repo layout


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/branch:
--------------------------------------------------------------------------------
1 | default
2 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/cache/branchheads:
--------------------------------------------------------------------------------
1 | fa0ba52518c59486e4d4c0a148f22b9fe5829250 52
2 | fa0ba52518c59486e4d4c0a148f22b9fe5829250 default
3 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/cache/tags:
--------------------------------------------------------------------------------
1 | 52 fa0ba52518c59486e4d4c0a148f22b9fe5829250
2 | 
3 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/dirstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/dirstate


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/hgrc:
--------------------------------------------------------------------------------
1 | [paths]
2 | default = https://bitbucket.org/dhobsd/asciitosvg
3 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/requires:
--------------------------------------------------------------------------------
1 | revlogv1
2 | fncache
3 | store
4 | dotencode
5 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/00changelog.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/00changelog.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/00manifest.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/00manifest.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/_a_s_c_i_i_to_s_v_g.php.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/_a_s_c_i_i_to_s_v_g.php.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/_l_i_c_e_n_s_e.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/_l_i_c_e_n_s_e.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/_makefile.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/_makefile.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/_r_e_a_d_m_e.md.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/_r_e_a_d_m_e.md.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/a2s.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/a2s.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/a2s52.php.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/a2s52.php.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/colors.php.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/colors.php.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/jlex.php.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/jlex.php.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/logo.svg.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/logo.svg.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/logo.txt.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/logo.txt.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/mk52.pl.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/mk52.pl.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/objects/cloud.path.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/objects/cloud.path.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/objects/computer.path.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/objects/computer.path.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/objects/diamond.path.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/objects/diamond.path.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/objects/document.path.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/objects/document.path.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/objects/storage.path.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/objects/storage.path.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/svg-path.lex.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/svg-path.lex.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/svg-path.lex.php.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/svg-path.lex.php.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/svg-path.php.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/svg-path.php.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/svg-path.y.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/svg-path.y.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/tests/odd__lines.txt.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/tests/odd__lines.txt.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/store/data/~2ehgignore.i:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/store/data/~2ehgignore.i


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/undo.bookmarks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/undo.bookmarks


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/undo.branch:
--------------------------------------------------------------------------------
1 | default


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/undo.desc:
--------------------------------------------------------------------------------
1 | 0
2 | pull
3 | https://bitbucket.org/dhobsd/asciitosvg
4 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/.hg/undo.dirstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/.hg/undo.dirstate


--------------------------------------------------------------------------------
/bin/asciitosvg/.hgignore:
--------------------------------------------------------------------------------
1 | svg-path.h
2 | svg-path.out
3 | .*.swp
4 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/a2s:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/bin/asciitosvg/a2s


--------------------------------------------------------------------------------
/bin/asciitosvg/logo.txt:
--------------------------------------------------------------------------------
 1 | .-------------------------.  
 2 | |[Logo]                   |  
 3 | | .---.-. .-----. .-----. |  
 4 | | | .-. | +-->  | |  <--| |   
 5 | | | '-' | |  <--| +-->  | | 
 6 | | '---'-' '-----' '-----' | 
 7 | |  ascii     2      svg   | 
 8 | |                         | 
 9 | '-------------------------' 
10 |  https://9vx.org/~dho/a2s/  
11 |  
12 | [Logo]: {"fill":"#88d","a2s:delref":true}
13 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/objects/cloud.path:
--------------------------------------------------------------------------------
1 | <path width="100" height="100" d="M 28.78066 10.32924 C 39.97551 -3.9887199999999 50.94711 -1.60258 67.36249 8.9061 C 85.79048 -0.090190000000007 104.95807 20.75976 92.90632 41.28056 C 108.83237 58.28354 93.41511 86.19772 80.66657 81.12594 C 87.32655 91.06902 67.89348 110.16904 48.4707 92.15458 C 22.2647 109.17234 13.76248 94.0907 10.95319 79.34712 C -9.15339 73.29619 4.43736 38.52779 9.63664 33.45378 C -5.98431 17.49043 16.27402 -0.49431000000004 28.78066 10.32924 Z" />
2 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/objects/diamond.path:
--------------------------------------------------------------------------------
1 | <path width="100" height="100" d="M 0 50 L 50 0 L 100 50 L 50 100 Z" />
2 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/objects/document.path:
--------------------------------------------------------------------------------
1 | <path width="100" height="100" d="M 0 100 25 115 75 85 100 100 V 0 H 0 Z" />
2 | 


--------------------------------------------------------------------------------
/bin/asciitosvg/objects/storage.path:
--------------------------------------------------------------------------------
1 | <path width="100" height="100" d="M 0 20 L 0 100 A 50 15 0 0 0 100 100 V 20 A 50 15 0 0 0 0 20 Z" />
2 | <path width="100" height="100" d="M 0 20 A 50 15 0 0 0 100 20" />
3 | 


--------------------------------------------------------------------------------
/examples/Ada/README:
--------------------------------------------------------------------------------
1 | Examples in Ada 
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Ada/zmq-examples.ads:
--------------------------------------------------------------------------------
1 | package ZMQ.Examples is
2 |    END_MESSAGE : constant String := "<END>";
3 | end ZMQ.Examples;
4 | 


--------------------------------------------------------------------------------
/examples/Basic/README:
--------------------------------------------------------------------------------
1 | Examples in Basic
2 | See LICENSE in examples directory
3 | 
4 | 


--------------------------------------------------------------------------------
/examples/C++/README:
--------------------------------------------------------------------------------
1 | Examples in C++
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/C++/bstar.cpp:
--------------------------------------------------------------------------------
1 | bstar.hpp


--------------------------------------------------------------------------------
/examples/C++/clone.cpp:
--------------------------------------------------------------------------------
1 | clone.hpp


--------------------------------------------------------------------------------
/examples/C++/kvmsg.cpp:
--------------------------------------------------------------------------------
1 | kvmsg.hpp


--------------------------------------------------------------------------------
/examples/C++/kvsimple.cpp:
--------------------------------------------------------------------------------
1 | kvsimple.hpp


--------------------------------------------------------------------------------
/examples/C++/mdcliapi.cpp:
--------------------------------------------------------------------------------
1 | mdcliapi.hpp


--------------------------------------------------------------------------------
/examples/C++/mdcliapi2.cpp:
--------------------------------------------------------------------------------
1 | mdcliapi2.hpp


--------------------------------------------------------------------------------
/examples/C++/mdwrkapi.cpp:
--------------------------------------------------------------------------------
1 | mdwrkapi.hpp


--------------------------------------------------------------------------------
/examples/C++/version.cpp:
--------------------------------------------------------------------------------
 1 | //
 2 | //  Report 0MQ version
 3 | //
 4 | #include "zhelpers.hpp"
 5 | 
 6 | int main ()
 7 | {
 8 |     s_version ();
 9 |     return EXIT_SUCCESS;
10 | }
11 | 


--------------------------------------------------------------------------------
/examples/C/README:
--------------------------------------------------------------------------------
1 | Examples in C
2 | 
3 | Use 'build all' to build all examples
4 | Use 'build hwserver' to build just hwserver (or any example)
5 | 
6 | See LICENSE in examples directory
7 | 


--------------------------------------------------------------------------------
/examples/C/mktestdata.c:
--------------------------------------------------------------------------------
 1 | #include "czmq.h"
 2 | 
 3 | int main (void)
 4 | {
 5 |     FILE *handle = fopen ("testdata", "w");
 6 |     byte data [1024 * 1024];   
 7 |     int count;
 8 |     for (count = 0; count < 1024; count++)
 9 |         fwrite (data, 1, 1024 * 1024, handle);
10 |     fclose (handle);
11 |     return 0;
12 | }
13 | 
14 | 


--------------------------------------------------------------------------------
/examples/C/tstkvmsg.c:
--------------------------------------------------------------------------------
 1 | //  Test kvmsg class
 2 | 
 3 | #include "kvmsg.c"
 4 | 
 5 | int main (int argc, char *argv [])
 6 | {
 7 |     int verbose = (argc > 1 && streq (argv [1], "-v"));
 8 |     kvmsg_test (verbose);
 9 |     return 0;
10 | }
11 | 
12 | 


--------------------------------------------------------------------------------
/examples/C/tstkvsimple.c:
--------------------------------------------------------------------------------
 1 | //  Test kvsimple class
 2 | 
 3 | #include "kvsimple.c"
 4 | 
 5 | int main (int argc, char *argv [])
 6 | {
 7 |     int verbose = (argc > 1 && streq (argv [1], "-v"));
 8 |     kvmsg_test (verbose);
 9 |     return 0;
10 | }
11 | 
12 | 


--------------------------------------------------------------------------------
/examples/C/udpping3.c:
--------------------------------------------------------------------------------
 1 | //  UDP ping command
 2 | //  Model 3, uses abstract network interface
 3 | 
 4 | #include <czmq.h>
 5 | #include "interface.c"
 6 | 
 7 | int main (void)
 8 | {
 9 |     interface_t *interface = interface_new ();
10 |     while (true) {
11 |         zmsg_t *msg = interface_recv (interface);
12 |         if (!msg)
13 |             break;              //  Interrupted
14 |         zmsg_dump (msg);
15 |     }
16 |     interface_destroy (&interface);
17 |     return 0;
18 | }
19 | 


--------------------------------------------------------------------------------
/examples/C/valgrind.supp:
--------------------------------------------------------------------------------
1 | {
2 |    <socketcall_sendto>
3 |    Memcheck:Param
4 |    socketcall.sendto(msg)
5 |    fun:send
6 |    ...
7 | }
8 | 


--------------------------------------------------------------------------------
/examples/C/version.c:
--------------------------------------------------------------------------------
 1 | //  Report 0MQ version
 2 | 
 3 | #include <zmq.h>
 4 | 
 5 | int main (void)
 6 | {
 7 |     int major, minor, patch;
 8 |     zmq_version (&major, &minor, &patch);
 9 |     printf ("Current 0MQ version is %d.%d.%d\n", major, minor, patch);
10 |     return 0;
11 | }
12 | 


--------------------------------------------------------------------------------
/examples/C/vg:
--------------------------------------------------------------------------------
1 | ./build $1
2 | valgrind --tool=memcheck --leak-check=full --suppressions=valgrind.supp ./$*
3 | 


--------------------------------------------------------------------------------
/examples/CL/README:
--------------------------------------------------------------------------------
1 | Examples in Common Lisp
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/CL/version.lisp:
--------------------------------------------------------------------------------
 1 | ;;; -*- Mode:Lisp; Syntax:ANSI-Common-Lisp; -*-
 2 | ;;;
 3 | ;;; Report 0MQ version
 4 | ;;;
 5 | ;;; Kamil Shakirov <kamils80@gmail.com>
 6 | ;;;
 7 | 
 8 | (defpackage #:zguide.zversion
 9 |   (:nicknames #:zversion)
10 |   (:use #:cl #:zhelpers)
11 |   (:export #:main))
12 | 
13 | (in-package :zguide.zversion)
14 | 
15 | (defun main ()
16 |   (version))
17 | 


--------------------------------------------------------------------------------
/examples/CL/zmsg_test.lisp:
--------------------------------------------------------------------------------
 1 | ;;; -*- Mode:Lisp; Syntax:ANSI-Common-Lisp; -*-
 2 | ;;;
 3 | ;;;  Test zmsg class in Common Lisp
 4 | ;;;
 5 | ;;; Kamil Shakirov <kamils80@gmail.com>
 6 | ;;;
 7 | 
 8 | (defpackage #:zguide.zmsg_test
 9 |   (:nicknames #:zmsg_test)
10 |   (:use #:cl #:zhelpers)
11 |   (:export #:main))
12 | 
13 | (in-package :zguide.zmsg_test)
14 | 
15 | (defun main ()
16 |   (zmsg:test t)
17 |   (cleanup))
18 | 


--------------------------------------------------------------------------------
/examples/CSharp/.gitignore:
--------------------------------------------------------------------------------
1 | bin/
2 | obj/
3 | Properties/
4 | *.sln
5 | *.suo
6 | *.user
7 | 


--------------------------------------------------------------------------------
/examples/CSharp/README:
--------------------------------------------------------------------------------
1 | Examples in C#
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/CSharp/README.txt:
--------------------------------------------------------------------------------
1 | Examples in C#
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/CSharp/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | headless: true
3 | ---
4 | 


--------------------------------------------------------------------------------
/examples/Clojure/.gitignore:
--------------------------------------------------------------------------------
1 | lib/
2 | classes/
3 | target/


--------------------------------------------------------------------------------
/examples/Clojure/README:
--------------------------------------------------------------------------------
1 | Examples in Clojure
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Clojure/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | headless: true
3 | ---
4 | 


--------------------------------------------------------------------------------
/examples/Clojure/rrclient.clj:
--------------------------------------------------------------------------------
 1 | (ns rrclient
 2 |   (:require [zeromq.zmq :as zmq]))
 3 | 
 4 | (defn -main []
 5 |   (let [context (zmq/zcontext)]
 6 |     (with-open [requester (doto (zmq/socket context :req)
 7 |                             (zmq/connect "tcp://127.0.0.1:5559"))]
 8 |       (dotimes [i 10]
 9 |         (zmq/send-str requester "Hello")
10 |         (let [string (zmq/receive-str requester)]
11 |           (printf "Received reply %d [%s]\n" i string))))))
12 | 


--------------------------------------------------------------------------------
/examples/Clojure/version.clj:
--------------------------------------------------------------------------------
 1 | ; Report 0MQ version
 2 | 
 3 | (ns version (:import [org.zeromq ZMQ]))
 4 | 
 5 | (defn -main []
 6 |   (println
 7 |    (format "Version string: %s, Version int: %d"
 8 |            (ZMQ/getVersionString)
 9 |            (ZMQ/getFullVersion))))
10 | 


--------------------------------------------------------------------------------
/examples/Delphi/.gitignore:
--------------------------------------------------------------------------------
 1 | examples.*
 2 | *.local
 3 | *.bdsproj
 4 | *.cfg
 5 | *.identcache
 6 | *.exe
 7 | *.dcu
 8 | *.dll
 9 | zmq.pas
10 | zmq.inc
11 | zmqapi.pas
12 | 


--------------------------------------------------------------------------------
/examples/Delphi/README:
--------------------------------------------------------------------------------
1 | Examples in Delphi
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Delphi/version.dpr:
--------------------------------------------------------------------------------
 1 | program version;
 2 | //
 3 | //  Report 0MQ version
 4 | //  @author Varga Balazs <bb.varga@gmail.com>
 5 | //
 6 | 
 7 | {$APPTYPE CONSOLE}
 8 | 
 9 | uses
10 |     SysUtils
11 |   , zmqapi
12 |   ;
13 | 
14 | var
15 |   major,
16 |   minor,
17 |   patch: Integer;
18 | begin
19 |   ZMQVersion( major, minor, patch );
20 |   Writeln( Format( 'Current 0MQ version is %d.%d.%d', [major, minor, patch]) );
21 | end.
22 | 


--------------------------------------------------------------------------------
/examples/Elixir/README:
--------------------------------------------------------------------------------
1 | Examples in Elixir
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Elixir/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | headless: true
3 | ---
4 | 


--------------------------------------------------------------------------------
/examples/Elixir/version.exs:
--------------------------------------------------------------------------------
 1 | defmodule Version do
 2 |   @moduledoc """
 3 |   Generated by erl2ex (http://github.com/dazuma/erl2ex)
 4 |   From Erlang source: (Unknown source file)
 5 |   At: 2019-12-20 13:57:38
 6 | 
 7 |   """
 8 | 
 9 |   def main() do
10 |     {maj, var_min, patch} = :erlzmq.version()
11 |     :io.format('Current 0MQ version is ~b.~b.~b~n', [maj, var_min, patch])
12 |   end
13 | 
14 | end
15 | 
16 | Version.main
17 | 


--------------------------------------------------------------------------------
/examples/Erlang/.gitignore:
--------------------------------------------------------------------------------
1 | *.beam
2 | 


--------------------------------------------------------------------------------
/examples/Erlang/version.es:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env escript
2 | %%
3 | %% Report 0MQ version
4 | %%
5 | 
6 | main(_) ->
7 |     {Maj, Min, Patch} = erlzmq:version(),
8 |     io:format("Current 0MQ version is ~b.~b.~b~n", [Maj, Min, Patch]).
9 | 


--------------------------------------------------------------------------------
/examples/FSharp/.gitignore:
--------------------------------------------------------------------------------
1 | bin/
2 | 


--------------------------------------------------------------------------------
/examples/FSharp/README:
--------------------------------------------------------------------------------
1 | Examples in F#
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/FSharp/taskworker.fsx:
--------------------------------------------------------------------------------
1 | 
2 | #r @"bin/fszmq.dll"
3 | open fszmq
4 | 
5 | let main () = 
6 |   ((* put code here *))
7 |    
8 | main ()
9 | 


--------------------------------------------------------------------------------
/examples/FSharp/taskworker2.fsx:
--------------------------------------------------------------------------------
1 | 
2 | #r @"bin/fszmq.dll"
3 | open fszmq
4 | 
5 | let main () = 
6 |   ((* put code here *))
7 |    
8 | main ()
9 | 


--------------------------------------------------------------------------------
/examples/FSharp/version.fsx:
--------------------------------------------------------------------------------
 1 | (*
 2 | Report 0MQ version
 3 | *)
 4 | 
 5 | #r @"bin/fszmq.dll"
 6 | open fszmq
 7 | 
 8 | #load "zhelpers.fs"
 9 | 
10 | let main () = 
11 |   match ZMQ.version with
12 |   | Version(m,n,p)  -> printfn "Current 0MQ version is %d.%d.%d" m n p
13 |   | Unknown         -> printfn "Unable to determine current 0MQ version"
14 |   EXIT_SUCCESS
15 |    
16 | main ()
17 | 


--------------------------------------------------------------------------------
/examples/FSharp/zmsg.fsx:
--------------------------------------------------------------------------------
1 | 
2 | #r @"bin/fszmq.dll"
3 | open fszmq
4 | 
5 | let main () = 
6 |   ((* put code here *))
7 |    
8 | main ()
9 | 


--------------------------------------------------------------------------------
/examples/Felix/README:
--------------------------------------------------------------------------------
1 | Examples in Felix
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Felix/version.flx:
--------------------------------------------------------------------------------
1 | println$ f"Current 0MQ version is %d.%d.%d" #ZeroMQ::zmq_version;
2 | 
3 | 


--------------------------------------------------------------------------------
/examples/Go/.gitignore:
--------------------------------------------------------------------------------
1 | *.6
2 | durapub
3 | durasub
4 | pkg
5 | src
6 | psenvsub
7 | psenvpub
8 | 


--------------------------------------------------------------------------------
/examples/Go/README:
--------------------------------------------------------------------------------
1 | Examples in Go
2 | 
3 | Use 'build all' to build all examples
4 | Use 'build hwserver' to build just hwserver (or any example)
5 | 
6 | See LICENSE in examples directory
7 | 


--------------------------------------------------------------------------------
/examples/Go/version.go:
--------------------------------------------------------------------------------
 1 | //
 2 | // 0MQ version example.
 3 | //
 4 | // Author: Max Riveiro <kavu13@gmail.com>
 5 | // Requires: http://github.com/alecthomas/gozmq
 6 | //
 7 | package main
 8 | 
 9 | import (
10 | 	"fmt"
11 | 	zmq "github.com/alecthomas/gozmq"
12 | )
13 | 
14 | func main() {
15 | 	major, minor, patch := zmq.Version()
16 | 	fmt.Printf("Current 0MQ version is %d.%d.%d\n", major, minor, patch)
17 | }
18 | 


--------------------------------------------------------------------------------
/examples/GoCZMQ/.gitignore:
--------------------------------------------------------------------------------
1 | *.6
2 | durapub
3 | durasub
4 | pkg
5 | src
6 | psenvsub
7 | psenvpub
8 | 


--------------------------------------------------------------------------------
/examples/GoCZMQ/README:
--------------------------------------------------------------------------------
1 | Examples in Go
2 | 
3 | Use 'build all' to build all examples
4 | Use 'build hwserver' to build just hwserver (or any example)
5 | 
6 | See LICENSE in examples directory
7 | 


--------------------------------------------------------------------------------
/examples/Haskell/LICENSE:
--------------------------------------------------------------------------------
1 | The Guide is copyright (c) 2010-2011 Pieter Hintjens.  It is licensed under 
2 | the Creative Commons Attribution-Non-Commercial-Share Alike 3.0 License.
3 | 


--------------------------------------------------------------------------------
/examples/Haskell/README:
--------------------------------------------------------------------------------
1 | Examples in Haskell
2 | See LICENSE in examples directory
3 | See `cabal` file for dependencies
4 | 
5 | 


--------------------------------------------------------------------------------
/examples/Haskell/Setup.hs:
--------------------------------------------------------------------------------
1 | import Distribution.Simple
2 | main = defaultMain
3 | 


--------------------------------------------------------------------------------
/examples/Haskell/msgqueue.hs:
--------------------------------------------------------------------------------
 1 | --  Simple message queuing broker
 2 | --  Same as request-reply broker but using shared queue proxy
 3 | 
 4 | module Main where
 5 | 
 6 | import System.ZMQ4.Monadic
 7 | 
 8 | main :: IO ()
 9 | main = runZMQ $ do
10 |     -- Socket facing clients
11 |     frontend <- socket Router
12 |     bind frontend "tcp://*:5559"
13 | 
14 |     backend <- socket Dealer
15 |     bind backend "tcp://*:5560"
16 | 
17 |     -- Start the proxy
18 |     proxy frontend backend Nothing
19 | 
20 | 


--------------------------------------------------------------------------------
/examples/Haskell/stack.yaml:
--------------------------------------------------------------------------------
1 | resolver: lts-9.1
2 | packages:
3 | - .
4 | extra-deps: []
5 | flags: {}
6 | extra-package-dbs: []
7 | 


--------------------------------------------------------------------------------
/examples/Haskell/version.hs:
--------------------------------------------------------------------------------
 1 | module Main where
 2 | 
 3 | import System.ZMQ4 (version)
 4 | import Text.Printf (printf)
 5 | 
 6 | main :: IO ()
 7 | main = do
 8 |     (major, minor, patch) <- version
 9 |     printf "Current 0MQ version is %d.%d.%d" major minor patch
10 | 


--------------------------------------------------------------------------------
/examples/Haxe/README:
--------------------------------------------------------------------------------
1 | Examples in haXe
2 | For LICENSE in examples directory
3 | 
4 | Run.hx provides an entry class to run any of the haXe examples.
5 | Look at the provided .hxml files for compilation examples, eg:
6 | haxe buildMac64.hxml


--------------------------------------------------------------------------------
/examples/Haxe/buildMac64.hxml:
--------------------------------------------------------------------------------
 1 | # Haxe build file
 2 | # Build CPP guide target
 3 | -cp .
 4 | -cpp out-cpp/Mac64
 5 | -lib hxzmq
 6 | -debug
 7 | -D HXCPP_M64
 8 | -D HXCPP_MULTI_THREADED
 9 | --remap neko:cpp
10 | -main org.zeromq.guide.Run
11 | 
12 | # todo: Neko Mac0SX 64 bit target
13 | 
14 | # Build PHP guide target
15 | --next
16 | -cp .
17 | -php out-php/Mac64
18 | -lib hzxmq
19 | -debug
20 | --remap neko:php
21 | -main org.zeromq.guide.Run
22 | 


--------------------------------------------------------------------------------
/examples/Java/README:
--------------------------------------------------------------------------------
1 | Examples in Java
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Java/udpping3.java:
--------------------------------------------------------------------------------
 1 | import org.zeromq.ZMsg;
 2 | 
 3 | /**
 4 |  * UDP ping command
 5 |  * Model 3, uses abstract network interface
 6 |  */
 7 | public class Udpping3 {
 8 |   public static void main(String[] args) {
 9 |     Interface interfaceT = new Interface();
10 |     while (true) {
11 |       ZMsg msg = interfaceT.recv();
12 |       if (msg == null)
13 |         break;  //  Interrupted
14 |       msg.dump();
15 |     }
16 |     interfaceT.destroy();
17 |   }
18 | }
19 | 


--------------------------------------------------------------------------------
/examples/Java/version.java:
--------------------------------------------------------------------------------
 1 | package guide;
 2 | 
 3 | import org.zeromq.ZMQ;
 4 | 
 5 | //  Report 0MQ version
 6 | public class version
 7 | {
 8 |     public static void main(String[] args)
 9 |     {
10 |         String version = ZMQ.getVersionString();
11 |         int fullVersion = ZMQ.getFullVersion();
12 | 
13 |         System.out.println(
14 |             String.format(
15 |                 "Version string: %s, Version int: %d", version, fullVersion
16 |             )
17 |         );
18 |     }
19 | }
20 | 


--------------------------------------------------------------------------------
/examples/Julia/version.jl:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env julia
2 | 
3 | using ZMQ
4 | 
5 | println("Current ZMQ version is $(ZMQ.version)")


--------------------------------------------------------------------------------
/examples/Lua/README:
--------------------------------------------------------------------------------
1 | Examples in Lua
2 | See LICENSE in examples directory
3 | 
4 | 


--------------------------------------------------------------------------------
/examples/Lua/version.lua:
--------------------------------------------------------------------------------
 1 | --
 2 | --  Report 0MQ version
 3 | --
 4 | --  Author: Robert G. Jakabosky <bobby@sharedrealm.com>
 5 | --
 6 | require"zmq"
 7 | 
 8 | print("Current 0MQ version is " .. table.concat(zmq.version(), '.'))
 9 | 
10 | 


--------------------------------------------------------------------------------
/examples/Node.js/README:
--------------------------------------------------------------------------------
1 | Examples in Node.js
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Node.js/interrupt.js:
--------------------------------------------------------------------------------
 1 | // Show how to handle Ctrl+C in Node.js
 2 | 
 3 | var zmq = require('zeromq')
 4 |   , socket = zmq.createSocket('rep');
 5 | 
 6 | socket.on('message', function(buf) {
 7 |   // echo request back
 8 |   socket.send(buf);
 9 | });
10 | 
11 | process.on('SIGINT', function() {
12 |   socket.close();
13 |   process.exit();
14 | });
15 | 
16 | socket.bindSync('tcp://*:5555');
17 | 


--------------------------------------------------------------------------------
/examples/Node.js/psenvsub.js:
--------------------------------------------------------------------------------
 1 | var zmq = require('zeromq')
 2 | var subscriber = zmq.socket('sub')
 3 | 
 4 | subscriber.on('message', function() {
 5 |   var msg = [];
 6 |     Array.prototype.slice.call(arguments).forEach(function(arg) {
 7 |         msg.push(arg.toString());
 8 |     });
 9 | 
10 |     console.log(msg);
11 | })
12 | 
13 | subscriber.connect('tcp://localhost:5563')
14 | subscriber.subscribe('B')
15 | 
16 | 


--------------------------------------------------------------------------------
/examples/Node.js/rrworker.js:
--------------------------------------------------------------------------------
 1 | // Hello World server in Node.js
 2 | // Connects REP socket to tcp://*:5560
 3 | // Expects "Hello" from client, replies with "World"
 4 | 
 5 | var zmq = require('zeromq')
 6 |   , responder = zmq.socket('rep');
 7 | 
 8 | responder.connect('tcp://localhost:5560');
 9 | responder.on('message', function(msg) {
10 |   console.log('received request:', msg.toString());
11 |   setTimeout(function() {
12 |     responder.send("World");
13 |   }, 1000);
14 | });
15 | 


--------------------------------------------------------------------------------
/examples/Node.js/subscriber.js:
--------------------------------------------------------------------------------
 1 | var zmq = require('zeromq')
 2 | var subscriber = zmq.socket('sub')
 3 | 
 4 | subscriber.on("message", function(reply) {
 5 |   console.log('Received message: ', reply.toString());
 6 | })
 7 | 
 8 | subscriber.connect("tcp://localhost:8688")
 9 | subscriber.subscribe("")
10 | 
11 | process.on('SIGINT', function() {
12 |   subscriber.close()
13 |   console.log('\nClosed')
14 | })
15 | 


--------------------------------------------------------------------------------
/examples/Node.js/syncsub.js:
--------------------------------------------------------------------------------
 1 | var zmq = require('zeromq')
 2 | var subscriber = zmq.socket('sub')
 3 | var client = zmq.socket('req')
 4 | 
 5 | subscriber.on('message', function(reply) {
 6 |   console.log('Received message: ', reply.toString());
 7 | })
 8 | 
 9 | subscriber.connect('tcp://localhost:8688')
10 | subscriber.subscribe('')
11 | 
12 | client.connect('tcp://localhost:8888')
13 | client.send('SYNC')
14 | 
15 | process.on('SIGINT', function() {
16 |   subscriber.close()
17 |   client.close()
18 | })
19 | 


--------------------------------------------------------------------------------
/examples/Node.js/version.js:
--------------------------------------------------------------------------------
1 | // Report 0MQ version in Node.js
2 | 
3 | var zmq = require('zeromq');
4 | 
5 | console.log("Current 0MQ version is " + zmq.version);
6 | 


--------------------------------------------------------------------------------
/examples/Node.js/wuproxy.js:
--------------------------------------------------------------------------------
 1 | // Weather proxy device in Node.js
 2 | 
 3 | var zmq      = require('zeromq')
 4 |   , frontend = zmq.socket('sub')
 5 |   , backend  = zmq.socket('pub');
 6 | 
 7 | backend.bindSync("tcp://10.1.1.0:8100");
 8 | 
 9 | frontend.subscribe('');
10 | frontend.connect("tcp://192.168.55.210:5556");
11 | frontend.on('message', function() {
12 |   // all parts of a message come as function arguments
13 |   var args = Array.apply(null, arguments);
14 |   backend.send(args);
15 | });
16 | 


--------------------------------------------------------------------------------
/examples/OCaml/.gitignore:
--------------------------------------------------------------------------------
1 | _build
2 | *.native
3 | *.byte
4 | 


--------------------------------------------------------------------------------
/examples/OCaml/Makefile:
--------------------------------------------------------------------------------
1 | 
2 | .PHONY: build clean
3 | 
4 | build:
5 | 	./build all
6 | 
7 | clean:
8 | 	./build clean
9 | 


--------------------------------------------------------------------------------
/examples/OCaml/README:
--------------------------------------------------------------------------------
1 | Examples in OCaml
2 | 
3 | Use 'build all' to build all examples
4 | Use 'build hwserver' to build just hwserver (or any example)
5 | 
6 | Requirements: opam install zmq
7 | 
8 | See LICENSE in examples directory
9 | 


--------------------------------------------------------------------------------
/examples/OCaml/hwclient.ml:
--------------------------------------------------------------------------------
 1 | (** Hello World client *)
 2 | 
 3 | open Zmq
 4 | open Helpers
 5 | 
 6 | let () =
 7 |   printfn "Connecting to hello world server...";
 8 |   with_context @@ fun ctx ->
 9 |   with_socket ctx Socket.req @@ fun req ->
10 |   Socket.connect req "tcp://localhost:5555";
11 |   for i = 0 to 9 do
12 |     printfn "Sending Hello %d..." i;
13 |     Socket.send req "Hello";
14 |     let answer = Socket.recv req in
15 |     printfn "Received %d : %S" i answer
16 |   done
17 | 


--------------------------------------------------------------------------------
/examples/OCaml/hwserver.ml:
--------------------------------------------------------------------------------
 1 | (** Hello World server *)
 2 | 
 3 | open Zmq
 4 | open Helpers
 5 | 
 6 | let () =
 7 |   with_context @@ fun ctx ->
 8 |   with_socket ctx Socket.rep @@ fun resp ->
 9 |   Socket.bind resp "tcp://*:5555";
10 |   while not !should_exit do
11 |     let s = Socket.recv resp in
12 |     printfn "Received : %S" s;
13 |     sleep_ms 1000; (* Do some 'work' *)
14 |     Socket.send resp "World";
15 |   done
16 | 


--------------------------------------------------------------------------------
/examples/OCaml/rrbroker.ml:
--------------------------------------------------------------------------------
 1 | (* Simple request-reply broker *)
 2 | 
 3 | open Zmq
 4 | open Helpers
 5 | 
 6 | let () =
 7 |     (* Prepare our context and sockets *)
 8 |     with_context @@ fun ctx ->
 9 | 
10 |     with_socket ctx Socket.router @@ fun frontend ->
11 |     with_socket ctx Socket.dealer @@ fun backend ->
12 |     Socket.bind frontend "tcp://*:5559";
13 |     Socket.bind backend "tcp://*:5560";
14 | 
15 |     (* Create a router-dealer proxy *)
16 |     Proxy.create frontend backend;
17 | 


--------------------------------------------------------------------------------
/examples/OCaml/version.ml:
--------------------------------------------------------------------------------
1 | (* Report 0MQ version *)
2 | 
3 | open Helpers
4 | 
5 | let () =
6 |   let (major, minor, patch) = Zmq.version () in
7 |   printfn "Current 0MQ version is %d.%d.%d" major minor patch
8 | 


--------------------------------------------------------------------------------
/examples/Objective-C/BUILDING:
--------------------------------------------------------------------------------
1 | You can build all examples using ObjCExamples.xcodeproj.
2 | The build relies on directly including the files from
3 | the Objective-C port of ZeroMQ, objc-zmq.
4 | See <URL:http://www.zeromq.org/bindings:objc>.
5 | 


--------------------------------------------------------------------------------
/examples/Objective-C/ObjCExamples/ObjCExamples_Prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 |     #import <Foundation/Foundation.h>
3 | #endif
4 | 


--------------------------------------------------------------------------------
/examples/Objective-C/ObjCExamples/project.xcconfig:
--------------------------------------------------------------------------------
1 | //! @author Jeremy W. Sherman
2 | //! @date 2011-01-26
3 | HEADER_SEARCH_PATHS = /usr/local/include
4 | LIBRARY_SEARCH_PATHS = /usr/local/lib
5 | OTHER_LDFLAGS = -framework Foundation -lzmq
6 | OTHER_CFLAGS = -Werror -Wnewline-eof -Wall -Wextra -Wformat=2
7 | 


--------------------------------------------------------------------------------
/examples/Objective-C/README:
--------------------------------------------------------------------------------
1 | Examples in Objective-C
2 | See LICENSE in examples directory
3 | 
4 | 


--------------------------------------------------------------------------------
/examples/Objective-C/ZMQHelper.h:
--------------------------------------------------------------------------------
 1 | /* ZMQHelper.h: Helper methods. */
 2 | #import <Foundation/Foundation.h>
 3 | 
 4 | // Returns a random integer within the range [0, i).
 5 | static inline int within(int i);
 6 | 
 7 | @interface ZMQHelper : NSObject
 8 | @end
 9 | 
10 | static inline int
11 | within(int i) {
12 | 	float frac = ((float)RAND_MAX - random()) / RAND_MAX;
13 | 	return i * frac;
14 | }
15 | 


--------------------------------------------------------------------------------
/examples/Objective-C/ZMQHelper.m:
--------------------------------------------------------------------------------
1 | /* ZMQHelper.m: Helper method implementations. */
2 | #import "ZMQHelper.h"
3 | 
4 | @implementation ZMQHelper
5 | 
6 | @end
7 | 


--------------------------------------------------------------------------------
/examples/Objective-C/version.m:
--------------------------------------------------------------------------------
 1 | /* Reports the 0MQ version. */
 2 | #import "ZMQObjC.h"
 3 | 
 4 | int
 5 | main(void)
 6 | {
 7 | 	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 8 | 	int major = 0;
 9 | 	int minor = 0;
10 | 	int patch = 0;
11 | 	[ZMQContext getZMQVersionMajor:&major minor:&minor patch:&patch];
12 | 	NSLog(@"Current 0MQ version is %d.%d.%d.", major, minor, patch);
13 | 	[pool drain];
14 | 	return EXIT_SUCCESS;
15 | }
16 | 


--------------------------------------------------------------------------------
/examples/PHP/README:
--------------------------------------------------------------------------------
1 | Examples in PHP
2 | See LICENSE in examples directory
3 | 
4 | 


--------------------------------------------------------------------------------
/examples/PHP/mdp.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | //  This is the version of MDP/Client we implement
 4 | define("MDPC_CLIENT", "MDPC01");
 5 | 
 6 | //  This is the version of MDP/Worker we implement
 7 | define("MDPW_WORKER", "MDPW01");
 8 | 
 9 | //  MDP/Server commands, as strings
10 | define("MDPW_READY", "\001");
11 | define("MDPW_REQUEST", "\002");
12 | define("MDPW_REPLY", "\003");
13 | define("MDPW_HEARTBEAT", "\004");
14 | define("MDPW_DISCONNECT", "\005");
15 | 


--------------------------------------------------------------------------------
/examples/PHP/version.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | /* Report 0MQ version
 3 |  *
 4 |  * @author Ian Barber <ian(dot)barber(at)gmail(dot)com>
 5 |  */
 6 | 
 7 | if (class_exists("ZMQ") && defined("ZMQ::LIBZMQ_VER")) {
 8 |     echo ZMQ::LIBZMQ_VER, PHP_EOL;
 9 | }
10 | 


--------------------------------------------------------------------------------
/examples/PHP/zmsg_test.php:
--------------------------------------------------------------------------------
1 | <?php
2 | /*
3 |  *  Test zmsg class
4 |  */
5 | include 'zmsg.php';
6 | 
7 | Zmsg::test();
8 | 


--------------------------------------------------------------------------------
/examples/Perl/README:
--------------------------------------------------------------------------------
1 | Examples in Perl
2 | See LICENSE in examples directory
3 | 
4 | 


--------------------------------------------------------------------------------
/examples/Perl/hwserver.pl:
--------------------------------------------------------------------------------
 1 | # Hello World server in Perl
 2 | 
 3 | use strict;
 4 | use warnings;
 5 | use v5.10;
 6 | 
 7 | use ZMQ::FFI;
 8 | use ZMQ::FFI::Constants qw(ZMQ_REP);
 9 | 
10 | # Socket to talk to clients
11 | my $context = ZMQ::FFI->new();
12 | my $responder = $context->socket(ZMQ_REP);
13 | $responder->bind("tcp://*:5555");
14 | 
15 | while (1) {
16 |     $responder->recv();
17 |     say "Received Hello";
18 |     sleep 1;
19 |     $responder->send("World");
20 | }
21 | 


--------------------------------------------------------------------------------
/examples/Perl/version.pl:
--------------------------------------------------------------------------------
 1 | # Report 0MQ version in Perl
 2 | 
 3 | use strict;
 4 | use warnings;
 5 | use v5.10;
 6 | 
 7 | use ZMQ::FFI;
 8 | 
 9 | my ($major, $minor, $patch) = ZMQ::FFI->new->version;
10 | say "Current 0MQ version is $major.$minor.$patch";
11 | 


--------------------------------------------------------------------------------
/examples/Python/README:
--------------------------------------------------------------------------------
1 | Examples in Python
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Python/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | headless: true
3 | ---
4 | 


--------------------------------------------------------------------------------
/examples/Python/interrupt.py:
--------------------------------------------------------------------------------
 1 | #
 2 | #   Shows how to handle Ctrl-C
 3 | #
 4 | import signal
 5 | import time
 6 | import zmq
 7 | 
 8 | context = zmq.Context()
 9 | socket = context.socket(zmq.REP)
10 | socket.bind("tcp://*:5558")
11 | 
12 | # SIGINT will normally raise a KeyboardInterrupt, just like any other Python call
13 | try:
14 |     socket.recv()
15 | except KeyboardInterrupt:
16 |     print("W: interrupt received, stopping...")
17 | finally:
18 |     # clean up
19 |     socket.close()
20 |     context.term()
21 | 


--------------------------------------------------------------------------------
/examples/Python/rrworker.py:
--------------------------------------------------------------------------------
 1 | #
 2 | #   Request-reply service in Python
 3 | #   Connects REP socket to tcp://localhost:5560
 4 | #   Expects "Hello" from client, replies with "World"
 5 | #
 6 | import zmq
 7 | 
 8 | context = zmq.Context()
 9 | socket = context.socket(zmq.REP)
10 | socket.connect("tcp://localhost:5560")
11 | 
12 | while True:
13 |     message = socket.recv()
14 |     print(f"Received request: {message}")
15 |     socket.send(b"World")
16 | 


--------------------------------------------------------------------------------
/examples/Python/testit.py:
--------------------------------------------------------------------------------
 1 | import os
 2 | 
 3 | CHUNK_SIZE = 250000
 4 | 
 5 | def main():
 6 |     file = open("testdata", "rb")
 7 | 
 8 |     offset = 0
 9 | 
10 |     while True:
11 |         file.seek(offset, os.SEEK_SET)
12 |         data = file.read(CHUNK_SIZE)
13 |         if not data:
14 |             break
15 |         offset += len(data)
16 | 
17 |     file.close()
18 | 
19 | if __name__ == '__main__':
20 |     main()
21 | 


--------------------------------------------------------------------------------
/examples/Python/tornado_ioloop/README.txt:
--------------------------------------------------------------------------------
 1 | Python ZeroMQ examples using ioloop and coroutines
 2 | ====================================================
 3 | 
 4 | These example files:
 5 | 
 6 | - Have been converted to run under Python 3.
 7 | 
 8 | - Use the Tornado ioloop.
 9 | 
10 | - Have been modified to satisfy the ``flake8`` syntax and style checker .
11 | 
12 | - In some cases, use Tornado futures to support parallelism rather
13 |   than using multiple threads.
14 | 
15 | 
16 | .. vim:ft=rst:
17 | 


--------------------------------------------------------------------------------
/examples/Python/udpping3.py:
--------------------------------------------------------------------------------
 1 | """UDP ping command
 2 | Model 3, uses abstract network interface
 3 | """
 4 | 
 5 | from interface import Interface
 6 | 
 7 | def main():
 8 |     interface = Interface()
 9 |     while True:
10 |         try:
11 |             print(interface.recv())
12 |         except KeyboardInterrupt:
13 |             print("interrupted")
14 |             break
15 |     interface.stop()
16 | 
17 | if __name__ == '__main__':
18 |     main()
19 | 


--------------------------------------------------------------------------------
/examples/Python/version.py:
--------------------------------------------------------------------------------
1 | # Report 0MQ version
2 | #
3 | # Author: Lev Givon <lev(at)columbia(dot)edu>
4 | 
5 | import zmq
6 | 
7 | print(f"Current libzmq version is {zmq.zmq_version()}")
8 | print(f"Current  pyzmq version is {zmq.__version__}")
9 | 


--------------------------------------------------------------------------------
/examples/Q/README:
--------------------------------------------------------------------------------
 1 | Examples in Q. Uses qzmq or https://github.com/jaeheum/qzmq.
 2 | qzmq follows czmq rather than libzmq and examples here are translations from libzmq to czmq/qzmq.
 3 | 
 4 | q version.q -q
 5 | q identity.q -q
 6 | 
 7 | q hwserver.q -q / in one terminal
 8 | q hwclient.q -q / in another terminal
 9 | q mtserver.q -q / is a multithreaded hwserver.q
10 | 
11 | See LICENSE in examples directory.
12 | 
13 | 


--------------------------------------------------------------------------------
/examples/Q/version.q:
--------------------------------------------------------------------------------
1 | //  Report 0MQ version
2 | \l qzmq.q
3 | mnp:libzmq.version[]
4 | zclock.log "Current 0MQ version is ","." sv (string mnp)
5 | \\
6 | 


--------------------------------------------------------------------------------
/examples/Racket/README:
--------------------------------------------------------------------------------
1 | Examples in Racket
2 | See LICENSE in examples directory
3 | 
4 | These examples require the installation of the 'zeromq' package from
5 | Planet 2. It is installed with:
6 | 
7 |    raco pkg install zeromq
8 | 


--------------------------------------------------------------------------------
/examples/Ruby/README:
--------------------------------------------------------------------------------
1 | Examples in Ruby
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Ruby/interrupt.rb:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env ruby
 2 | 
 3 | # Shows how to handle Ctrl-C
 4 | require 'ffi-rzmq'
 5 | 
 6 | context = ZMQ::Context.new(1)
 7 | socket = context.socket(ZMQ::REP)
 8 | socket.bind("tcp://*:5558")
 9 | 
10 | trap("INT") { puts "Shutting down."; socket.close; context.terminate; exit}
11 | 
12 | puts "Starting up"
13 | 
14 | while true do
15 |   message = socket.recv_string
16 |   puts "Message: #{message.inspect}"
17 |   socket.send_string("Message received")
18 | end
19 | 


--------------------------------------------------------------------------------
/examples/Ruby/mdp.rb:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env ruby
 2 | 
 3 | # Majordomo Protocol Definitions
 4 | 
 5 | module MDP
 6 |   #  This is the version of MDP/Client we implement
 7 |   C_CLIENT = "MDPC01"
 8 | 
 9 |   #  This is the version of MDP/Worker we implement
10 |   W_WORKER = "MDPW01"
11 | 
12 |   #  MDP/Server commands, as strings
13 |   W_READY         =   "\001"
14 |   W_REQUEST       =   "\002"
15 |   W_REPLY         =   "\003"
16 |   W_HEARTBEAT     =   "\004"
17 |   W_DISCONNECT    =   "\005"
18 | end
19 | 


--------------------------------------------------------------------------------
/examples/Ruby/mdworker.rb:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env ruby
 2 | 
 3 | # Majordomo Protocol worker example.
 4 | #
 5 | # Author: Tom van Leeuwen <tom@vleeuwen.eu>
 6 | 
 7 | require './mdwrkapi.rb'
 8 | 
 9 | worker = MajorDomoWorker.new('tcp://localhost:5555', 'echo')
10 | reply = nil
11 | 
12 | loop do
13 |   request = worker.recv reply
14 |   reply = request # Echo is complex... :-)
15 | end
16 | 
17 | 
18 | 


--------------------------------------------------------------------------------
/examples/Ruby/mmiecho.rb:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env ruby
 2 | 
 3 | # MMI echo query example. Uses the mdcliapi2 API to hide all MDP aspects
 4 | #
 5 | # Author : Tom van Leeuwen <tom@vleeuwen.eu>
 6 | 
 7 | require './mdcliapi2.rb'
 8 | 
 9 | client = MajorDomoClient.new('tcp://localhost:5555')
10 | client.send('mmi.service', 'echo')
11 | reply = client.recv
12 | puts "Lookup echo service: #{reply}"
13 | 


--------------------------------------------------------------------------------
/examples/Ruby/psenvpub.rb:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env ruby
 2 | 
 3 | require 'ffi-rzmq'
 4 | 
 5 | context = ZMQ::Context.new
 6 | publisher = context.socket ZMQ::PUB
 7 | publisher.bind "tcp://*:5563"
 8 | 
 9 | loop do
10 |   publisher.send_string 'A', ZMQ::SNDMORE
11 |   publisher.send_string "We don't want to see this."
12 | 
13 |   publisher.send_string 'B', ZMQ::SNDMORE
14 |   publisher.send_string "We would like to see this."
15 | 
16 |   sleep 1
17 | end
18 | 
19 | publisher.close
20 | 


--------------------------------------------------------------------------------
/examples/Ruby/psenvsub.rb:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env ruby
 2 | 
 3 | require 'ffi-rzmq'
 4 | 
 5 | context = ZMQ::Context.new
 6 | subscriber = context.socket ZMQ::SUB
 7 | subscriber.connect "tcp://localhost:5563"
 8 | subscriber.setsockopt ZMQ::SUBSCRIBE, 'B'
 9 | 
10 | loop do
11 |   # Two recv s because of the multi-part message.
12 |   address = ''
13 |   subscriber.recv_string address
14 | 
15 |   content = ''
16 |   subscriber.recv_string content
17 | 
18 |   puts "[#{address}] #{content}"
19 | end
20 | 


--------------------------------------------------------------------------------
/examples/Ruby/rrworker.rb:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env ruby
 2 | 
 3 | # author: Oleg Sidorov <4pcbr> i4pcbr@gmail.com
 4 | # this code is licenced under the MIT/X11 licence.
 5 | 
 6 | require 'rubygems'
 7 | require 'ffi-rzmq'
 8 | 
 9 | context = ZMQ::Context.new
10 | socket = context.socket(ZMQ::REP)
11 | socket.connect('tcp://localhost:5560')
12 | 
13 | loop do
14 |   socket.recv_string(message = '')
15 |   puts "Received request: #{message}"
16 |   socket.send_string('World')
17 | end
18 | 


--------------------------------------------------------------------------------
/examples/Ruby/version.rb:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env ruby
 2 | 
 3 | #
 4 | #  Report 0MQ version
 5 | #
 6 | 
 7 | require 'rubygems'
 8 | require 'ffi-rzmq'
 9 | 
10 | version = LibZMQ.version
11 | puts "Current 0MQ version is %d.%d.%d\n" \
12 |     % [version[:major], version[:minor], version[:patch]]
13 | 


--------------------------------------------------------------------------------
/examples/Rust/.gitignore:
--------------------------------------------------------------------------------
1 | target


--------------------------------------------------------------------------------
/examples/Rust/hwserver.rs:
--------------------------------------------------------------------------------
 1 | use std::{thread, time};
 2 | 
 3 | fn main() {
 4 |     let context = zmq::Context::new();
 5 |     let responder = context.socket(zmq::REP).unwrap();
 6 |     assert!(responder.bind("tcp://*:5555").is_ok());
 7 | 
 8 |     loop {
 9 |         let buffer = &mut [0; 10];
10 |         responder.recv_into(buffer, 0).unwrap();
11 |         println!("Received Hello");
12 |         thread::sleep(time::Duration::from_secs(1));
13 |         responder.send("World", 0).unwrap();
14 |     }
15 | }
16 | 


--------------------------------------------------------------------------------
/examples/Rust/msgqueue.rs:
--------------------------------------------------------------------------------
 1 | fn main() {
 2 |     let context = zmq::Context::new();
 3 | 
 4 |     let frontend = context.socket(zmq::ROUTER).unwrap();
 5 |     assert!(frontend.bind("tcp://*:5559").is_ok());
 6 | 
 7 |     let backend = context.socket(zmq::DEALER).unwrap();
 8 |     assert!(backend.bind("tcp://*:5560").is_ok());
 9 | 
10 |     zmq::proxy(&frontend, &backend).unwrap();
11 | }
12 | 


--------------------------------------------------------------------------------
/examples/Rust/psenvsub.rs:
--------------------------------------------------------------------------------
 1 | fn main() {
 2 |     let context = zmq::Context::new();
 3 |     let subscriber = context.socket(zmq::SUB).unwrap();
 4 |     assert!(subscriber.connect("tcp://localhost:5563").is_ok());
 5 |     subscriber.set_subscribe(b"B").unwrap();
 6 | 
 7 |     loop {
 8 |         let address = subscriber.recv_string(0).unwrap().unwrap();
 9 |         let contents = subscriber.recv_string(0).unwrap().unwrap();
10 |         println!("[{}] {}", address, contents);
11 |     }
12 | }
13 | 


--------------------------------------------------------------------------------
/examples/Rust/rrclient.rs:
--------------------------------------------------------------------------------
 1 | fn main() {
 2 |     let context = zmq::Context::new();
 3 | 
 4 |     let requester = context.socket(zmq::REQ).unwrap();
 5 |     assert!(requester.connect("tcp://localhost:5559").is_ok());
 6 | 
 7 |     for request_nbr in 0..10 {
 8 |         requester.send("Hello", 0).unwrap();
 9 |         let string = requester.recv_string(0).unwrap().unwrap();
10 |         println!("Received reply {} {}", request_nbr, string);
11 |     }
12 | }
13 | 


--------------------------------------------------------------------------------
/examples/Rust/syncsub.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | echo "Starting publisher..."
3 | ./target/release/syncpub &
4 | echo "Starting subscribers..."
5 | for ((a=0; a<10; a++)); do
6 |     ./target/release/syncsub &
7 | done
8 | wait
9 | 


--------------------------------------------------------------------------------
/examples/Rust/version.rs:
--------------------------------------------------------------------------------
1 | fn main() {
2 |     let (major, minor, patch) = zmq::version();
3 |     println!("Current 0MQ version is {}.{}.{}", major, minor, patch);
4 | }
5 | 


--------------------------------------------------------------------------------
/examples/Rust/wuproxy.rs:
--------------------------------------------------------------------------------
 1 | fn main() {
 2 |     let context = zmq::Context::new();
 3 | 
 4 |     let frontend = context.socket(zmq::XSUB).unwrap();
 5 |     assert!(frontend.connect("tcp://192.168.55.210:5556").is_ok());
 6 | 
 7 |     let backend = context.socket(zmq::XPUB).unwrap();
 8 |     assert!(backend.bind("tcp://10.1.1.0:8100").is_ok());
 9 | 
10 |     zmq::proxy(&frontend, &backend).unwrap();
11 | }
12 | 


--------------------------------------------------------------------------------
/examples/Scala/README:
--------------------------------------------------------------------------------
1 | Examples in Scala
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/Scala/version.scala:
--------------------------------------------------------------------------------
 1 | /*
 2 |  *
 3 |  * Version in Scala
 4 |  *
 5 |  * @author Vadim Shalts
 6 |  * @email vshalts@gmail.com
 7 | */
 8 | 
 9 | import org.zeromq.ZMQ
10 | 
11 | object version {
12 | 
13 |   def main(args: Array[String]) {
14 |     printf("Version string: %s, Version int: %d\n", ZMQ.getVersionString, ZMQ.getFullVersion)
15 |   }
16 | }
17 | 


--------------------------------------------------------------------------------
/examples/Tcl/README:
--------------------------------------------------------------------------------
1 | Examples in Tcl
2 | See LICENSE in examples directory
3 | 
4 | 


--------------------------------------------------------------------------------
/examples/Tcl/clonecli1.tcl:
--------------------------------------------------------------------------------
 1 | #
 2 | # Clone client Model One
 3 | #
 4 | 
 5 | lappend auto_path .
 6 | package require KVSimple
 7 | 
 8 | zmq context context
 9 | set upd [zmq socket updates context SUB]
10 | $upd setsockopt SUBSCRIBE ""
11 | $upd connect "tcp://localhost:5556"
12 | after 200
13 | 
14 | while {1} {
15 |     set kvmsg [KVSimple new]
16 |     $kvmsg recv $upd
17 |     $kvmsg store kvmap
18 |     puts [$kvmsg dump]
19 | }
20 | 
21 | $upd close
22 | context term
23 | 


--------------------------------------------------------------------------------
/examples/Tcl/hwclient.tcl:
--------------------------------------------------------------------------------
 1 | package require zmq
 2 | 
 3 | zmq context context
 4 | zmq socket client context REQ
 5 | client connect "tcp://localhost:5555"
 6 | 
 7 | for {set i 0} {$i < 10} {incr i} {
 8 |     zmq message msg -data "Hello @ [clock format [clock seconds]]"
 9 |     client send_msg msg
10 |     msg close
11 | 
12 |     zmq message msg
13 |     client recv_msg msg
14 |     puts  "Received [msg data]/[msg size]"
15 |     msg close
16 | }
17 | 
18 | client close
19 | context term
20 | 
21 | 


--------------------------------------------------------------------------------
/examples/Tcl/hwserver.tcl:
--------------------------------------------------------------------------------
 1 | package require zmq
 2 | 
 3 | zmq context context
 4 | zmq socket responder context REP
 5 | responder bind "tcp://*:5555"
 6 | 
 7 | while {1} {
 8 |     zmq message request
 9 |     responder recv_msg request
10 |     puts "Received [request data]"
11 |     request close
12 | 
13 |     zmq message reply -data "World @ [clock format [clock seconds]]"
14 |     responder send_msg reply
15 |     reply close
16 | }
17 | responder close
18 | context term
19 | 
20 | 


--------------------------------------------------------------------------------
/examples/Tcl/version.tcl:
--------------------------------------------------------------------------------
1 | #
2 | #  Report 0MQ version
3 | #
4 | 
5 | package require zmq
6 | 
7 | puts [zmq version]
8 | 


--------------------------------------------------------------------------------
/examples/listings/README:
--------------------------------------------------------------------------------
1 | Examples in listings
2 | See LICENSE in examples directory
3 | 


--------------------------------------------------------------------------------
/examples/models/.gitignore:
--------------------------------------------------------------------------------
1 | *.o
2 | ch6_selftest
3 | core
4 | vgcore.*
5 | nomd
6 | 
7 | 


--------------------------------------------------------------------------------
/examples/models/nomd.c:
--------------------------------------------------------------------------------
 1 | //  NOM Daemon
 2 | 
 3 | #include "czmq.h"
 4 | #include "nom_server.h"
 5 | 
 6 | int main (int argc, char *argv [])
 7 | {
 8 |     printf ("Starting NOM protocol server on port 6000...\n");
 9 |     nom_server_t *server = nom_server_new ();
10 |     nom_server_bind (server, "tcp://*:6000");
11 |     nom_server_wait (server);
12 |     nom_server_destroy (&server);
13 |     return 0;
14 | }
15 | 


--------------------------------------------------------------------------------
/examples/models/selftest:
--------------------------------------------------------------------------------
 1 | #  Run selftests and check memory
 2 | echo "Generating sources..."
 3 | gsl -q mdp_client.xml
 4 | gsl -q mdp_worker.xml
 5 | gsl -q -trace:1 nom_server.xml
 6 | gcc -g -o models_test models_test.c mdp_client.c mdp_worker.c nom_server.c ${CFLAGS} ${LDFLAGS} -lczmq -lzmq
 7 | if [ $? -eq 0 ]; then
 8 |     echo "Starting Valgrind memcheck..."
 9 |     valgrind --quiet --tool=memcheck --leak-check=full --suppressions=valgrind.supp ./models_test
10 | fi
11 | 


--------------------------------------------------------------------------------
/examples/models/valgrind.supp:
--------------------------------------------------------------------------------
1 | {
2 |    <socketcall_sendto>
3 |    Memcheck:Param
4 |    socketcall.sendto(msg)
5 |    fun:send
6 |    ...
7 | }
8 | 


--------------------------------------------------------------------------------
/examples/ooc/README:
--------------------------------------------------------------------------------
1 | Examples in ooc
2 | See LICENSE in examples directory
3 | 
4 | 


--------------------------------------------------------------------------------
/fragments/C/README:
--------------------------------------------------------------------------------
1 | These C fragments are extracted mechanically from the source text.
2 | All translations are done by hand off the C originals.
3 | 


--------------------------------------------------------------------------------
/fragments/C/binding.c:
--------------------------------------------------------------------------------
1 | zmq_bind (socket, "tcp://*:5555");
2 | zmq_bind (socket, "tcp://*:9999");
3 | zmq_bind (socket, "inproc://somename");
4 | 


--------------------------------------------------------------------------------
/fragments/C/brute-force-discovery.c:
--------------------------------------------------------------------------------
1 | int address;
2 | for (address = 1; address < 255; address++)
3 |     zsocket_connect (listener, "tcp://192.168.55.%d:9000", address);
4 | 


--------------------------------------------------------------------------------
/fragments/C/cloneapi1.c:
--------------------------------------------------------------------------------
 1 | //  Specify endpoints for each socket we need
 2 | clone_subscribe (clone, "tcp://localhost:5556");
 3 | clone_snapshot  (clone, "tcp://localhost:5557");
 4 | clone_updates   (clone, "tcp://localhost:5558");
 5 | 
 6 | //  Times two, since we have two servers
 7 | clone_subscribe (clone, "tcp://localhost:5566");
 8 | clone_snapshot  (clone, "tcp://localhost:5567");
 9 | clone_updates   (clone, "tcp://localhost:5568");
10 | 


--------------------------------------------------------------------------------
/fragments/C/cloneapi2.c:
--------------------------------------------------------------------------------
1 | //  Specify primary and backup servers
2 | clone_connect (clone, "tcp://localhost:5551");
3 | clone_connect (clone, "tcp://localhost:5561");
4 | 


--------------------------------------------------------------------------------
/fragments/C/cloneapi3.c:
--------------------------------------------------------------------------------
1 | clone_t *clone_new (void);
2 | void clone_destroy (clone_t **self_p);
3 | void clone_connect (clone_t *self, char *address, char *service);
4 | void clone_set (clone_t *self, char *key, char *value);
5 | char *clone_get (clone_t *self, char *key);
6 | 


--------------------------------------------------------------------------------
/fragments/C/clonesrv5.c:
--------------------------------------------------------------------------------
 1 | //  Specify endpoints for each socket we need
 2 | clone_subscribe (clone, "tcp://localhost:5556");
 3 | clone_snapshot  (clone, "tcp://localhost:5557");
 4 | clone_updates   (clone, "tcp://localhost:5558");
 5 | 
 6 | //  Times two, since we have two servers
 7 | clone_subscribe (clone, "tcp://localhost:5566");
 8 | clone_snapshot  (clone, "tcp://localhost:5567");
 9 | clone_updates   (clone, "tcp://localhost:5568");
10 | 


--------------------------------------------------------------------------------
/fragments/C/connect-command.c:
--------------------------------------------------------------------------------
 1 | void
 2 | clone_connect (clone_t *self, char *address, char *service)
 3 | {
 4 |     assert (self);
 5 |     zmsg_t *msg = zmsg_new ();
 6 |     zmsg_addstr (msg, "CONNECT");
 7 |     zmsg_addstr (msg, address);
 8 |     zmsg_addstr (msg, service);
 9 |     zmsg_send (&msg, self->pipe);
10 | }
11 | 


--------------------------------------------------------------------------------
/fragments/C/endpoint-hashing.c:
--------------------------------------------------------------------------------
1 | uint16_t hash = 0;
2 | while (*endpoint)
3 |     hash = 33 * hash ^ *endpoint++;
4 | 


--------------------------------------------------------------------------------
/fragments/C/errorhandling.c:
--------------------------------------------------------------------------------
 1 | void *context = zmq_ctx_new ();
 2 | assert (context);
 3 | void *socket = zmq_socket (context, ZMQ_REP);
 4 | assert (socket);
 5 | int rc = zmq_bind (socket, "tcp://*:5555");
 6 | if (rc == -1) {
 7 |     printf ("E: bind failed: %s\n", strerror (errno));
 8 |     return -1;
 9 | }
10 | 


--------------------------------------------------------------------------------
/fragments/C/fileio3.c:
--------------------------------------------------------------------------------
 1 | #include "czmq.h"
 2 | #include "nom_server.h"
 3 | 
 4 | int main (int argc, char *argv [])
 5 | {
 6 |     printf ("Starting NOM protocol server on port 6000...\n");
 7 |     nom_server_t *server = nom_server_new ();
 8 |     nom_server_bind (server, "tcp://*:6000");
 9 |     nom_server_wait (server);
10 |     nom_server_destroy (&server);
11 |     return 0;
12 | }
13 | 


--------------------------------------------------------------------------------
/fragments/C/filemq-connect.c:
--------------------------------------------------------------------------------
1 | //  If peer is a FileMQ publisher, connect to it
2 | char *publisher = zre_msg_headers_string (msg, "X-FILEMQ", NULL);
3 | if (publisher)
4 |     fmq_client_connect (self->fmq_client, publisher);
5 | 


--------------------------------------------------------------------------------
/fragments/C/fmq-server-api.c:
--------------------------------------------------------------------------------
1 | server = fmq_server_new ();
2 | fmq_server_configure (server, "server_test.cfg");
3 | fmq_server_publish (server, "./fmqroot/send", "/");
4 | fmq_server_publish (server, "./fmqroot/logs", "/logs");
5 | fmq_server_bind (server, "tcp://*:5670");
6 | 


--------------------------------------------------------------------------------
/fragments/C/fmq-server-methods.c:
--------------------------------------------------------------------------------
 1 | void
 2 | fmq_server_publish (fmq_server_t *self, char *location, char *alias)
 3 | {
 4 |     assert (self);
 5 |     assert (location);
 6 |     assert (alias);
 7 |     zstr_sendm (self->pipe, "PUBLISH");
 8 |     zstr_sendfm (self->pipe, "%s", location);
 9 |     zstr_sendf (self->pipe, "%s", alias);
10 | }
11 | 


--------------------------------------------------------------------------------
/fragments/C/forward-deliver.c:
--------------------------------------------------------------------------------
1 | zmsg_t *msg = fmq_client_recv (fmq_client_handle (self->fmq_client));
2 | zmsg_send (&msg, self->pipe);
3 | 


--------------------------------------------------------------------------------
/fragments/C/fsm-instance.c:
--------------------------------------------------------------------------------
1 | event_t next_event;         //  Next event
2 | state_t state;              //  Current state
3 | event_t event;              //  Current event
4 | 


--------------------------------------------------------------------------------
/fragments/C/highreader.c:
--------------------------------------------------------------------------------
1 | while (true) {
2 |     zmsg_t *msg = zmsg_recv (worker);
3 |     zframe_reset (zmsg_last (msg), "OK", 2);
4 |     zmsg_send (&msg, worker);
5 | }
6 | 


--------------------------------------------------------------------------------
/fragments/C/interface.c:
--------------------------------------------------------------------------------
 1 | #define BEACON_PROTOCOL     "ZRE"
 2 | #define BEACON_VERSION      0x01
 3 | 
 4 | typedef struct {
 5 |     byte protocol [3];
 6 |     byte version;
 7 |     uuid_t uuid;
 8 |     uint16_t port;
 9 | } beacon_t;
10 | 


--------------------------------------------------------------------------------
/fragments/C/interrupt.c:
--------------------------------------------------------------------------------
 1 | while (true) {
 2 |     zstr_send (client, "Hello");
 3 |     char *reply = zstr_recv (client);
 4 |     if (!reply)
 5 |         break;              //  Interrupted
 6 |     printf ("Client: %s\n", reply);
 7 |     free (reply);
 8 |     sleep (1);
 9 | }
10 | 


--------------------------------------------------------------------------------
/fragments/C/iothreads.c:
--------------------------------------------------------------------------------
1 | int io_threads = 4;
2 | void *context = zmq_ctx_new ();
3 | zmq_ctx_set (context, ZMQ_IO_THREADS, io_threads);
4 | assert (zmq_ctx_get (context, ZMQ_IO_THREADS) == io_threads);
5 | 


--------------------------------------------------------------------------------
/fragments/C/killsignal.c:
--------------------------------------------------------------------------------
1 | void *controller = zmq_socket (context, ZMQ_PUB);
2 | zmq_bind (controller, "tcp://*:5559");
3 | ...
4 | //  Send kill signal to workers
5 | s_send (controller, "KILL");
6 | 


--------------------------------------------------------------------------------
/fragments/C/kvmsg.c:
--------------------------------------------------------------------------------
1 | kvmsg_set_prop (kvmsg, "ttl", "%d", randof (30));
2 | 


--------------------------------------------------------------------------------
/fragments/C/kvsetttl.c:
--------------------------------------------------------------------------------
1 | kvmsg_set_prop (kvmsg, "ttl", "%d", randof (30));
2 | 


--------------------------------------------------------------------------------
/fragments/C/lruqueue2.c:
--------------------------------------------------------------------------------
 1 | while (true) {
 2 |     zstr_send (client, "HELLO");
 3 |     char *reply = zstr_recv (client);
 4 |     if (!reply)
 5 |         break;              //  Interrupted
 6 |     printf ("Client: %s\n", reply);
 7 |     free (reply);
 8 |     sleep (1);
 9 | }
10 | 


--------------------------------------------------------------------------------
/fragments/C/maxsockets.c:
--------------------------------------------------------------------------------
1 | int max_sockets = 1024;
2 | void *context = zmq_ctx_new ();
3 | zmq_ctx_get (context, ZMQ_MAX_SOCKETS, max_sockets);
4 | assert (zmq_ctx_get (context, ZMQ_MAX_SOCKETS) == max_sockets);
5 | 


--------------------------------------------------------------------------------
/fragments/C/mdclient-async.c:
--------------------------------------------------------------------------------
1 | mdcli_t *mdcli_new     (char *broker);
2 | void     mdcli_destroy (mdcli_t **self_p);
3 | int      mdcli_send    (mdcli_t *self, char *service, zmsg_t **request_p);
4 | zmsg_t  *mdcli_recv    (mdcli_t *self);
5 | 


--------------------------------------------------------------------------------
/fragments/C/mdclient.c:
--------------------------------------------------------------------------------
1 | mdcli_t *mdcli_new     (char *broker);
2 | void     mdcli_destroy (mdcli_t **self_p);
3 | zmsg_t  *mdcli_send    (mdcli_t *self, char *service, zmsg_t **request_p);
4 | 


--------------------------------------------------------------------------------
/fragments/C/mdworker.c:
--------------------------------------------------------------------------------
1 | mdwrk_t *mdwrk_new     (char *broker,char *service);
2 | void     mdwrk_destroy (mdwrk_t **self_p);
3 | zmsg_t  *mdwrk_recv    (mdwrk_t *self, zmsg_t *reply);
4 | 


--------------------------------------------------------------------------------
/fragments/C/mspoller.c:
--------------------------------------------------------------------------------
 1 | void *context = zmq_ctx_new ();
 2 | assert (context);
 3 | void *socket = zmq_socket (context, ZMQ_REP);
 4 | assert (socket);
 5 | int rc = zmq_bind (socket, "tcp://*:5555");
 6 | if (rc != 0) {
 7 |     printf ("E: bind failed: %s\n", strerror (errno));
 8 |     return -1;
 9 | }
10 | 


--------------------------------------------------------------------------------
/fragments/C/nomserver.c:
--------------------------------------------------------------------------------
 1 | #include "czmq.h"
 2 | #include "nom_server.h"
 3 | 
 4 | int main (int argc, char *argv [])
 5 | {
 6 |     printf ("Starting NOM protocol server on port 5670...\n");
 7 |     nom_server_t *server = nom_server_new ();
 8 |     nom_server_bind (server, "tcp://*:5670");
 9 |     nom_server_wait (server);
10 |     nom_server_destroy (&server);
11 |     return 0;
12 | }
13 | 


--------------------------------------------------------------------------------
/fragments/C/polling.c:
--------------------------------------------------------------------------------
1 | if (zmq_poll (items, 2, 1000 * 1000) == -1)
2 |     break;              //  Interrupted
3 | 


--------------------------------------------------------------------------------
/fragments/C/proxy.c:
--------------------------------------------------------------------------------
1 | zmq_proxy (frontend, backend, capture);
2 | 


--------------------------------------------------------------------------------
/fragments/C/publish-file.c:
--------------------------------------------------------------------------------
 1 | //  Publish file into virtual space
 2 | void
 3 | zre_interface_publish (zre_interface_t *self,
 4 |                        char *filename, char *external)
 5 | {
 6 |     zstr_sendm (self->pipe, "PUBLISH");
 7 |     zstr_sendm (self->pipe, filename);  //  Real file name
 8 |     zstr_send  (self->pipe, external);  //  Location in virtual space
 9 | }
10 | 


--------------------------------------------------------------------------------
/fragments/C/reactor.c:
--------------------------------------------------------------------------------
1 | zloop_t *reactor = zloop_new ();
2 | zloop_reader (reactor, self->backend, s_handle_backend, self);
3 | zloop_start (reactor);
4 | zloop_destroy (&reactor);
5 | 


--------------------------------------------------------------------------------
/fragments/C/recvmore.c:
--------------------------------------------------------------------------------
 1 | while (1) {
 2 |     zmq_msg_t message;
 3 |     zmq_msg_init (&message);
 4 |     zmq_msg_recv (&message, socket, 0);
 5 |     //  Process the message frame
 6 |     ...
 7 |     zmq_msg_close (&message);
 8 |     if (!zmq_msg_more (&message))
 9 |         break;      //  Last message frame
10 | }
11 | 


--------------------------------------------------------------------------------
/fragments/C/rrbroker.c:
--------------------------------------------------------------------------------
1 | zmq_proxy (frontend, backend, capture);
2 | 


--------------------------------------------------------------------------------
/fragments/C/send-deliver.c:
--------------------------------------------------------------------------------
1 | zstr_sendm (self->pipe, "DELIVER");
2 | zstr_sendm (self->pipe, filename);
3 | zstr_sendf (self->pipe, "%s/%s", inbox, filename);
4 | 


--------------------------------------------------------------------------------
/fragments/C/sendmore.c:
--------------------------------------------------------------------------------
1 | zmq_msg_send (&message, socket, ZMQ_SNDMORE);
2 | ...
3 | zmq_msg_send (&message, socket, ZMQ_SNDMORE);
4 | ...
5 | zmq_msg_send (&message, socket, 0);
6 | 


--------------------------------------------------------------------------------
/fragments/C/syncsub.c:
--------------------------------------------------------------------------------
1 | void my_free (void *data, void *hint) {
2 |     free (data);
3 | }
4 | //  Send message from buffer, which we allocate and 0MQ will free for us
5 | zmq_msg_t message;
6 | zmq_msg_init_data (&message, buffer, 1000, my_free, NULL);
7 | zmq_msg_send (socket, &message, 0);
8 | 


--------------------------------------------------------------------------------
/fragments/C/tripping.c:
--------------------------------------------------------------------------------
1 | mdcli_t *mdcli_new     (char *broker);
2 | void     mdcli_destroy (mdcli_t **self_p);
3 | int      mdcli_send    (mdcli_t *self, char *service, zmsg_t **request_p);
4 | zmsg_t  *mdcli_recv    (mdcli_t *self);
5 | 


--------------------------------------------------------------------------------
/fragments/C/udpping1.c:
--------------------------------------------------------------------------------
 1 | //  Constructor
 2 | static udp_t *
 3 |     udp_new (int port_nbr);
 4 | 
 5 | //  Destructor
 6 | static void
 7 |     udp_destroy (udp_t **self_p);
 8 | 
 9 | //  Returns UDP socket handle
10 | static int
11 |     udp_handle (udp_t *self);
12 | 
13 | //  Send message using UDP broadcast
14 | static void
15 |     udp_send (udp_t *self, byte *buffer, size_t length);
16 | 
17 | //  Receive message from UDP broadcast
18 | static ssize_t
19 |     udp_recv (udp_t *self, byte *buffer, size_t length);
20 | 


--------------------------------------------------------------------------------
/fragments/C/zerocopy.c:
--------------------------------------------------------------------------------
1 | void my_free (void *data, void *hint) {
2 |     free (data);
3 | }
4 | //  Send message from buffer, which we allocate and ZeroMQ will free for us
5 | zmq_msg_t message;
6 | zmq_msg_init_data (&message, buffer, 1000, my_free, NULL);
7 | zmq_msg_send (&message, socket, 0);
8 | 


--------------------------------------------------------------------------------
/fragments/C/zyre-beacon-send.c:
--------------------------------------------------------------------------------
 1 | //  Beacon object
 2 | beacon_t beacon;
 3 | 
 4 | //  Format beacon fields
 5 | beacon.protocol [0] = 'Z';
 6 | beacon.protocol [1] = 'R';
 7 | beacon.protocol [2] = 'E';
 8 | beacon.version = BEACON_VERSION;
 9 | memcpy (beacon.uuid, self->uuid, sizeof (uuid_t));
10 | beacon.port = htons (self->port);
11 | 
12 | //  Broadcast the beacon to anyone who is listening
13 | zre_udp_send (self->udp, (byte *) &beacon, sizeof (beacon_t));
14 | 


--------------------------------------------------------------------------------
/fragments/C/zyre-beacon.c:
--------------------------------------------------------------------------------
 1 | #define BEACON_PROTOCOL     "ZRE"
 2 | #define BEACON_VERSION      0x01
 3 | 
 4 | typedef struct {
 5 |     byte protocol [3];
 6 |     byte version;
 7 |     uuid_t uuid;
 8 |     uint16_t port;
 9 | } beacon_t;
10 | 


--------------------------------------------------------------------------------
/fragments/C/zyre-listener.c:
--------------------------------------------------------------------------------
 1 | #include <zre.h>
 2 | 
 3 | int main (int argc, char *argv [])
 4 | {
 5 |     zre_interface_t *interface = zre_interface_new ();
 6 |     while (true) {
 7 |         zmsg_t *incoming = zre_interface_recv (interface);
 8 |         if (!incoming)
 9 |             break;
10 |         zmsg_dump (incoming);
11 |         zmsg_destroy (&incoming);
12 |     }
13 |     zre_interface_destroy (&interface);
14 |     return 0;
15 | }
16 | 


--------------------------------------------------------------------------------
/fragments/C/zyre-peer-disconnect.c:
--------------------------------------------------------------------------------
 1 | void
 2 | zre_peer_disconnect (zre_peer_t *self)
 3 | {
 4 |     //  If connected, destroy socket and drop all pending messages
 5 |     assert (self);
 6 |     if (self->connected) {
 7 |         zsocket_destroy (self->ctx, self->mailbox);
 8 |         free (self->endpoint);
 9 |         self->endpoint = NULL;
10 |         self->connected = false;
11 |     }
12 | }
13 | 


--------------------------------------------------------------------------------
/fragments/C/zyre-peer-send.c:
--------------------------------------------------------------------------------
 1 | int
 2 | zre_peer_send (zre_peer_t *self, zre_msg_t **msg_p)
 3 | {
 4 |     assert (self);
 5 |     if (self->connected) {
 6 |         if (zre_msg_send (msg_p, self->mailbox) && errno == EAGAIN) {
 7 |             zre_peer_disconnect (self);
 8 |             return -1;
 9 |         }
10 |     }
11 |     return 0;
12 | }
13 | 


--------------------------------------------------------------------------------
/fragments/C/zyre-udp.c:
--------------------------------------------------------------------------------
 1 | //  Constructor
 2 | static udp_t *
 3 |     udp_new (int port_nbr);
 4 | 
 5 | //  Destructor
 6 | static void
 7 |     udp_destroy (udp_t **self_p);
 8 | 
 9 | //  Returns UDP socket handle
10 | static int
11 |     udp_handle (udp_t *self);
12 | 
13 | //  Send message using UDP broadcast
14 | static void
15 |     udp_send (udp_t *self, byte *buffer, size_t length);
16 | 
17 | //  Receive message from UDP broadcast
18 | static ssize_t
19 |     udp_recv (udp_t *self, byte *buffer, size_t length);
20 | 


--------------------------------------------------------------------------------
/fragments/Java/README:
--------------------------------------------------------------------------------
1 | These Java fragments are extracted mechanically from the source text.
2 | All translations are done by hand off the Java originals.
3 | 


--------------------------------------------------------------------------------
/fragments/Java/binding.java:
--------------------------------------------------------------------------------
1 | socket.bind ("tcp://*:5555");
2 | socket.bind ("tcp://*:9999");
3 | socket.bind ("inproc://somename");
4 | 


--------------------------------------------------------------------------------
/fragments/Java/connect-command.java:
--------------------------------------------------------------------------------
 1 | void
 2 | connect (String address, String service)
 3 | {
 4 |     ZMsg msg = new ZMsg();
 5 |     msg.add("CONNECT");
 6 |     msg.add(address);
 7 |     msg.add(service);
 8 |     msg.send(this.pipe);
 9 | }
10 | 


--------------------------------------------------------------------------------
/fragments/Java/errorhandling.java:
--------------------------------------------------------------------------------
 1 | Context context = ZMQ.context (1);
 2 | assert (context != null);
 3 | Socket socket = context.socket (ZMQ.REP);
 4 | assert (socket != null);
 5 | try {
 6 |     socket.bind ("tcp://*:5555");
 7 | } catch (ZMQException e) {
 8 |     System.out.printf ("E: bind failed: %s\n", e.toString ());
 9 |     throw e;
10 | }
11 | 


--------------------------------------------------------------------------------
/fragments/Java/highreader.java:
--------------------------------------------------------------------------------
1 | while (true) {
2 |     ZMsg msg = ZMsg.recvMsg (worker);
3 |     msg.getLast ().reset ("OK");
4 |     msg.send (worker);
5 | }
6 | 


--------------------------------------------------------------------------------
/fragments/Java/interrupt.java:
--------------------------------------------------------------------------------
1 | while (true) {
2 |     client.send ("Hello");
3 |     String reply = client.recvStr ();
4 |     if (reply == null)
5 |         break;              //  Interrupted
6 |     System.out.printf ("Client: %s\n", reply);
7 |     Thread.sleep (1000);
8 | }
9 | 


--------------------------------------------------------------------------------
/fragments/Java/iothreads.java:
--------------------------------------------------------------------------------
1 | int io_threads = 4;
2 | ZMQ.Context context = ZMQ.context (io_threads);
3 | 


--------------------------------------------------------------------------------
/fragments/Java/killsignal.java:
--------------------------------------------------------------------------------
1 | Socket control = context.socket (ZMQ.PUB);
2 | control.bind ("tcp://*:5559");
3 | ...
4 | //  Send kill signal to workers
5 | controller.send ("KILL");
6 | 


--------------------------------------------------------------------------------
/fragments/Java/kvsetttl.java:
--------------------------------------------------------------------------------
1 | Random rand = new Random(System.nanoTime());
2 | kvmsg.setProp("ttl", "%d", rand.nextInt(30));
3 | 


--------------------------------------------------------------------------------
/fragments/Java/lbreader.java:
--------------------------------------------------------------------------------
 1 | while (true) {
 2 |     //  Get one address frame and empty delimiter
 3 |     String address = worker.recvStr ();
 4 |     String empty = worker.recvStr ();
 5 |     assert (empty.length() == 0);
 6 | 
 7 |     //  Get request, send reply
 8 |     String request = worker.recvStr ();
 9 |     System.out.printf ("Worker: %s\n", request);
10 | 
11 |     worker.sendMore (address);
12 |     worker.sendMore ("");
13 |     worker.send ("OK");
14 | }
15 | 


--------------------------------------------------------------------------------
/fragments/Java/mdclient-async.java:
--------------------------------------------------------------------------------
1 | mdcliapi2 client = new mdcliapi2 (String broker);
2 | void      client.destroy();
3 | boolean   client.send(String service, ZMsg request);
4 | ZMsg      client.recv();
5 | 


--------------------------------------------------------------------------------
/fragments/Java/mdclient.java:
--------------------------------------------------------------------------------
1 | mdcliapi client = new mdcliapi(String broker);
2 | void     client.destroy();
3 | ZMsg     client.send(String service, ZMsg request);
4 | 


--------------------------------------------------------------------------------
/fragments/Java/mdworker.java:
--------------------------------------------------------------------------------
1 | mdwrkapi worker = new mdwrkapi(String broker, String service);
2 | void     worker.destroy();
3 | ZMsg     worker.recv(ZMsg reply);
4 | 


--------------------------------------------------------------------------------
/fragments/Java/polling.java:
--------------------------------------------------------------------------------
1 | if (items.poll (1000) == -1)
2 |     break;              //  Interrupted
3 | 


--------------------------------------------------------------------------------
/fragments/Java/proxy.java:
--------------------------------------------------------------------------------
1 | ZMQ.proxy (frontend, backend, capture);
2 | 


--------------------------------------------------------------------------------
/fragments/Java/reactor.java:
--------------------------------------------------------------------------------
1 | ZLoop reactor = new ZLoop ();
2 | reactor.poller (this.backend, handler, this);
3 | reactor.start ();
4 | reactor.destroy ();
5 | 


--------------------------------------------------------------------------------
/fragments/Java/zerocopy.java:
--------------------------------------------------------------------------------
1 | //  0MQ ZeroCopy is not supported in Java
2 | 


--------------------------------------------------------------------------------
/fragments/README:
--------------------------------------------------------------------------------
1 | This directory holds translated fragments which we use when building full 
2 | translations of the Guide online or in PDF format.
3 | 


--------------------------------------------------------------------------------
/images/fig1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig1.png


--------------------------------------------------------------------------------
/images/fig1.txt:
--------------------------------------------------------------------------------
 1 | .------------.        .------------.
 2 | |            |        |            |
 3 | | TCP socket +------->|   ZeroMQ   | ZAP!
 4 | |            | BOOM!  |            |
 5 | '------------'        |   Socket   |  POW!!
 6 |   ^    ^    ^         |            |
 7 |   |    |    |         '------------'
 8 |   |    |    |
 9 |   |    |    |
10 |   |    |    '--------- Spandex
11 |   |    |
12 |   |    '-------------- Cosmic rays
13 | 
14 |  Illegal radioisotopes from
15 |  secret Soviet atomic city
16 | 


--------------------------------------------------------------------------------
/images/fig10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig10.png


--------------------------------------------------------------------------------
/images/fig10.txt:
--------------------------------------------------------------------------------
1 | #----------------+----+----+----+----#
2 | | GET /index.html| 13 | 10 | 13 | 10 |
3 | #----------------+----+----+----+----#
4 | 


--------------------------------------------------------------------------------
/images/fig11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig11.png


--------------------------------------------------------------------------------
/images/fig11.txt:
--------------------------------------------------------------------------------
1 | #---+---+---+---+---+---#
2 | | 5 | H | E | L | L | O |
3 | #---+---+---+---+---+---#
4 | 


--------------------------------------------------------------------------------
/images/fig12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig12.png


--------------------------------------------------------------------------------
/images/fig13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig13.png


--------------------------------------------------------------------------------
/images/fig14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig14.png


--------------------------------------------------------------------------------
/images/fig15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig15.png


--------------------------------------------------------------------------------
/images/fig16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig16.png


--------------------------------------------------------------------------------
/images/fig17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig17.png


--------------------------------------------------------------------------------
/images/fig18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig18.png


--------------------------------------------------------------------------------
/images/fig19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig19.png


--------------------------------------------------------------------------------
/images/fig2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig2.png


--------------------------------------------------------------------------------
/images/fig2.txt:
--------------------------------------------------------------------------------
 1 |   #------------#
 2 |   |   Client   |
 3 |   +------------+
 4 |   |    REQ     |
 5 |   '---+--------'
 6 |       |    ^
 7 |       |    |
 8 | Hello |    | World
 9 |       |    |
10 |       v    |
11 |   .--------+---.
12 |   |    REP     |
13 |   +------------+
14 |   |   Server   |
15 |   #------------#
16 | 


--------------------------------------------------------------------------------
/images/fig20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig20.png


--------------------------------------------------------------------------------
/images/fig21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig21.png


--------------------------------------------------------------------------------
/images/fig21.txt:
--------------------------------------------------------------------------------
 1 | #------------#
 2 | |   Step 1   |
 3 | +------------+
 4 | |    PAIR    |
 5 | '-----+------'
 6 |       |
 7 |       | Ready!
 8 |       |
 9 |       v
10 | .------------.
11 | |    PAIR    |
12 | +------------+
13 | |   Step 2   |
14 | +------------+
15 | |    PAIR    |
16 | '-----+------'
17 |       |
18 |       | Ready!
19 |       |
20 |       v
21 | .------------.
22 | |    PAIR    |
23 | +------------+
24 | |   Step 3   |
25 | #------------#
26 | 


--------------------------------------------------------------------------------
/images/fig22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig22.png


--------------------------------------------------------------------------------
/images/fig22.txt:
--------------------------------------------------------------------------------
 1 | #------------#
 2 | | Publisher  |
 3 | +-----+------+
 4 | | PUB | REP  |
 5 | '--+--+----+-'
 6 |    |    ^  |
 7 | (3)| (1)|  |(2)
 8 |    |    |  |
 9 |    v    |  v
10 | .-----+-+----.
11 | | SUB | REQ  |
12 | +-----+------+
13 | | Subscriber |
14 | #------------#
15 | 


--------------------------------------------------------------------------------
/images/fig23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig23.png


--------------------------------------------------------------------------------
/images/fig23.txt:
--------------------------------------------------------------------------------
1 |           #--------#
2 | Frame 1   | Key    |   Message envelope
3 |           +--------+
4 | Frame 2   | Data   |   Actual message body
5 |           #--------#
6 | 


--------------------------------------------------------------------------------
/images/fig24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig24.png


--------------------------------------------------------------------------------
/images/fig24.txt:
--------------------------------------------------------------------------------
1 |           #---------#
2 | Frame 1   | Key     |   Subscription key
3 |           +---------+
4 | Frame 2   | Address |   Address of publisher
5 |           +---------+
6 | Frame 3   | Data    |   Actual message body
7 |           #---------#
8 | 


--------------------------------------------------------------------------------
/images/fig25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig25.png


--------------------------------------------------------------------------------
/images/fig26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig26.png


--------------------------------------------------------------------------------
/images/fig26.txt:
--------------------------------------------------------------------------------
1 |           #---#
2 | Frame 1   | 0 |            Empty delimiter frame
3 |           #---#-------#
4 | Frame 2   | 5 | Hello |    Data frame
5 |           #---+-------#
6 | 


--------------------------------------------------------------------------------
/images/fig27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig27.png


--------------------------------------------------------------------------------
/images/fig27.txt:
--------------------------------------------------------------------------------
 1 | #-------#     #-------#
 2 | |  REQ  |<--->|  REP  |
 3 | #-------#     #-------#
 4 | 
 5 | 
 6 | #-------#     #--------+--------#     #-------#
 7 | |  REQ  |<--->| ROUTER | DEALER |<--->|  REP  |
 8 | #-------#     #--------+--------#     #-------#
 9 | 
10 | 
11 | #-------#     #--------+--------#     #--------+--------#     #-------#
12 | |  REQ  |<--->| ROUTER | DEALER |<--->| ROUTER | DEALER |<--->|  REP  |
13 | #-------#     #--------+--------#     #--------+--------#     #-------#
14 | 


--------------------------------------------------------------------------------
/images/fig28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig28.png


--------------------------------------------------------------------------------
/images/fig28.txt:
--------------------------------------------------------------------------------
1 |           #---+-----#
2 | Frame 1   | 3 | ABC |      Identity of connection
3 |           #---#-----#
4 | Frame 2   | 0 |            Empty delimiter frame
5 |           #---#-------#
6 | Frame 3   | 5 | Hello |    Data frame
7 |           #---+-------#
8 | 


--------------------------------------------------------------------------------
/images/fig29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig29.png


--------------------------------------------------------------------------------
/images/fig29.txt:
--------------------------------------------------------------------------------
1 |           #---+-----#
2 | Frame 1   | 3 | ABC |      Identity of connection
3 |           #---#-----#
4 | Frame 2   | 0 |            Empty delimiter frame
5 |           #---#-------#
6 | Frame 3   | 5 | World |    Data frame
7 |           #---+-------#
8 | 


--------------------------------------------------------------------------------
/images/fig3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig3.png


--------------------------------------------------------------------------------
/images/fig3.txt:
--------------------------------------------------------------------------------
1 | #-----#  #-----+-----+-----+-----+-----#
2 | |  5  |  |  H  |  e  |  l  |  l  |  o  |
3 | #-----#  #-----+-----+-----+-----+-----#
4 | 


--------------------------------------------------------------------------------
/images/fig30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig30.png


--------------------------------------------------------------------------------
/images/fig30.txt:
--------------------------------------------------------------------------------
1 |           #---#
2 | Frame 1   | 0 |            Empty delimiter frame
3 |           #---#-------#
4 | Frame 2   | 5 | World |    Data frame
5 |           #---+-------#
6 | 


--------------------------------------------------------------------------------
/images/fig31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig31.png


--------------------------------------------------------------------------------
/images/fig31.txt:
--------------------------------------------------------------------------------
1 |           #---+-------#
2 | Frame 1   | n | ...   |     Identity of connection
3 |           #---#-------#
4 | Frame 2   | 0 |             Empty delimiter frame
5 |           #---#--------#
6 | Frame 3   | n | ...    |    Data frame
7 |           #---+--------#
8 | 


--------------------------------------------------------------------------------
/images/fig32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig32.png


--------------------------------------------------------------------------------
/images/fig33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig33.png


--------------------------------------------------------------------------------
/images/fig33.txt:
--------------------------------------------------------------------------------
1 |           #---+-------#
2 | Frame 1   | 5 | Hello |   Data frame
3 |           #---+-------#
4 | 


--------------------------------------------------------------------------------
/images/fig34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig34.png


--------------------------------------------------------------------------------
/images/fig34.txt:
--------------------------------------------------------------------------------
1 |           #---+--------#
2 | Frame 1   | 6 | CLIENT |   Client address
3 |           #---#--------#
4 | Frame 2   | 0 |            Empty delimiter frame
5 |           #---#-------#
6 | Frame 3   | 5 | Hello |    Data frame
7 |           #---+-------#
8 | 


--------------------------------------------------------------------------------
/images/fig35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig35.png


--------------------------------------------------------------------------------
/images/fig35.txt:
--------------------------------------------------------------------------------
 1 |           #---+--------#
 2 | Frame 1   | 6 | WORKER |   Address of worker
 3 |           #---#--------#
 4 | Frame 2   | 0 |            Empty delimiter frame
 5 |           #---#--------#
 6 | Frame 3   | 6 | CLIENT |   Identity of client
 7 |           #---#--------#
 8 | Frame 4   | 0 |            Empty delimiter frame
 9 |           #---#-------#
10 | Frame 5   | 5 | Hello |    Data frame
11 |           #---+-------#
12 | 


--------------------------------------------------------------------------------
/images/fig36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig36.png


--------------------------------------------------------------------------------
/images/fig36.txt:
--------------------------------------------------------------------------------
1 |           #---+--------#
2 | Frame 1   | 6 | CLIENT |   Identity of client
3 |           #---#--------#
4 | Frame 2   | 0 |            Empty delimiter frame
5 |           #---#-------#
6 | Frame 3   | 5 | Hello |    Data frame
7 |           #---+-------#
8 | 


--------------------------------------------------------------------------------
/images/fig37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig37.png


--------------------------------------------------------------------------------
/images/fig37.txt:
--------------------------------------------------------------------------------
 1 | #----------#   #----------#
 2 | |  Client  |   |  Client  |
 3 | +----------+   +----------+
 4 | |  DEALER  |   |  DEALER  |
 5 | '----------'   '----------'
 6 |       ^              ^
 7 |       |              |
 8 |       '------+-------'
 9 |              |
10 |              v
11 |       .-------------.
12 |       |   ROUTER    |
13 |       +-------------+
14 |       |   Server    |
15 |       #-------------#
16 | 


--------------------------------------------------------------------------------
/images/fig38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig38.png


--------------------------------------------------------------------------------
/images/fig39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig39.png


--------------------------------------------------------------------------------
/images/fig4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig4.png


--------------------------------------------------------------------------------
/images/fig40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig40.png


--------------------------------------------------------------------------------
/images/fig41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig41.png


--------------------------------------------------------------------------------
/images/fig42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig42.png


--------------------------------------------------------------------------------
/images/fig43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig43.png


--------------------------------------------------------------------------------
/images/fig44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig44.png


--------------------------------------------------------------------------------
/images/fig45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig45.png


--------------------------------------------------------------------------------
/images/fig46.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig46.png


--------------------------------------------------------------------------------
/images/fig47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig47.png


--------------------------------------------------------------------------------
/images/fig48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig48.png


--------------------------------------------------------------------------------
/images/fig49.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig49.png


--------------------------------------------------------------------------------
/images/fig5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig5.png


--------------------------------------------------------------------------------
/images/fig50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig50.png


--------------------------------------------------------------------------------
/images/fig51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig51.png


--------------------------------------------------------------------------------
/images/fig52.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig52.png


--------------------------------------------------------------------------------
/images/fig52.txt:
--------------------------------------------------------------------------------
 1 | #------------#           #------------#
 2 | |            |           |            |
 3 | |  Primary   |<--------->|   Backup   |
 4 | |  "active"  |           |  "passive" |
 5 | |            |           |            |
 6 | #------------#           #------------#
 7 |       ^
 8 |       |
 9 |       |
10 |       |
11 | #-----+------#
12 | |            |
13 | |   Client   |
14 | |            |
15 | #------------#
16 | 


--------------------------------------------------------------------------------
/images/fig53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig53.png


--------------------------------------------------------------------------------
/images/fig53.txt:
--------------------------------------------------------------------------------
 1 | #------------#           #------------#
 2 | |            |           |            |
 3 | |  Primary   |<--------->|   Backup   |
 4 | | "passive"  |           |  "active"  |
 5 | |            |           |            |
 6 | #------------#           #------------#
 7 |                                 ^
 8 |                                 |
 9 |       .-------------------------'
10 |       |
11 | #-----+------#
12 | |            |
13 | |   Client   |
14 | |            |
15 | #------------#
16 | 


--------------------------------------------------------------------------------
/images/fig54.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig54.png


--------------------------------------------------------------------------------
/images/fig55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig55.png


--------------------------------------------------------------------------------
/images/fig56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig56.png


--------------------------------------------------------------------------------
/images/fig57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig57.png


--------------------------------------------------------------------------------
/images/fig58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig58.png


--------------------------------------------------------------------------------
/images/fig59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig59.png


--------------------------------------------------------------------------------
/images/fig6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig6.png


--------------------------------------------------------------------------------
/images/fig60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig60.png


--------------------------------------------------------------------------------
/images/fig61.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig61.png


--------------------------------------------------------------------------------
/images/fig62.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig62.png


--------------------------------------------------------------------------------
/images/fig63.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig63.png


--------------------------------------------------------------------------------
/images/fig64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig64.png


--------------------------------------------------------------------------------
/images/fig64.txt:
--------------------------------------------------------------------------------
1 | .-------------------.
2 | | Start             |
3 | '-+-----------------'
4 |   |
5 |   #-------------#                    .-------------------.
6 |   | OHAI        +------------------->| Authenticated     |
7 |   #-------------#                    '-------------------'
8 |                    Check Credentials
9 | 


--------------------------------------------------------------------------------
/images/fig65.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig65.png


--------------------------------------------------------------------------------
/images/fig66.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig66.png


--------------------------------------------------------------------------------
/images/fig67.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig67.png


--------------------------------------------------------------------------------
/images/fig67.txt:
--------------------------------------------------------------------------------
1 | #---+---+---+------#  #------+------#
2 | | Z | R | E | %x01 |  | UUID | port |
3 | #---+---+---+------#  #------+------#
4 | 
5 |        Header               Body
6 | 


--------------------------------------------------------------------------------
/images/fig68.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig68.png


--------------------------------------------------------------------------------
/images/fig69.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig69.png


--------------------------------------------------------------------------------
/images/fig7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig7.png


--------------------------------------------------------------------------------
/images/fig7.txt:
--------------------------------------------------------------------------------
 1 | .------------.
 2 | |            |
 3 | |  Piece A   |
 4 | |            |
 5 | '------------'
 6 |       ^
 7 |       |
 8 |       | TCP
 9 |       |
10 |       v
11 | .------------.
12 | |            |
13 | |  Piece B   |
14 | |            |
15 | '------------'
16 | 


--------------------------------------------------------------------------------
/images/fig70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig70.png


--------------------------------------------------------------------------------
/images/fig70.txt:
--------------------------------------------------------------------------------
1 | #---+---+---+---+---+---+---+---#  #---+---+---+---+---------------#
2 | | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |  | 1 | 0 | 1 | 0 |   Signature   |
3 | #---+---+---+---+---+---+---+---#  #---+---+---+---+---------------#
4 | 
5 |              Byte 0                             Byte 1
6 | 


--------------------------------------------------------------------------------
/images/fig8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig8.png


--------------------------------------------------------------------------------
/images/fig9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/images/fig9.png


--------------------------------------------------------------------------------
/images/fig9.txt:
--------------------------------------------------------------------------------
 1 | #------------#
 2 | |    Node    |
 3 | +------------+
 4 | |   Socket   |
 5 | '------------'
 6 |       ^
 7 |       |
 8 |       | 1 to 1
 9 |       |
10 |       v
11 | .------------.
12 | |   Socket   |
13 | +------------+
14 | |    Node    |
15 | #------------#
16 | 


--------------------------------------------------------------------------------
/listings/C/listing_1.c:
--------------------------------------------------------------------------------
1 | zmq_send (requester, "Hello", 6, 0);
2 | 


--------------------------------------------------------------------------------
/listings/C/listing_3.c:
--------------------------------------------------------------------------------
 1 | //  Receive ZeroMQ string from socket and convert into C string
 2 | //  Chops string at 255 chars, if it's longer
 3 | static char *
 4 | s_recv (void *socket) {
 5 |     char buffer [256];
 6 |     int size = zmq_recv (socket, buffer, 255, 0);
 7 |     if (size == -1)
 8 |         return NULL;
 9 |     if (size > 255)
10 |         size = 255;
11 |     buffer [size] = \0;
12 |     /* use strndup(buffer, sizeof(buffer)-1) in *nix */
13 |     return strdup (buffer);
14 | }
15 | 


--------------------------------------------------------------------------------
/listings/C/listing_7.c:
--------------------------------------------------------------------------------
1 | typedef struct {
2 |     void *socket;       //  ZeroMQ socket to poll on
3 |     int fd;             //  OR, native file handle to poll on
4 |     short events;       //  Events to poll on
5 |     short revents;      //  Events returned after poll
6 | } zmq_pollitem_t;
7 | 


--------------------------------------------------------------------------------
/listings/C/listing_8.c:
--------------------------------------------------------------------------------
1 | typedef struct {
2 |     void *socket;       //  0MQ socket to poll on
3 |     int fd;             //  OR, native file handle to poll on
4 |     short events;       //  Events to poll on
5 |     short revents;      //  Events returned after poll
6 | } zmq_pollitem_t;
7 | 


--------------------------------------------------------------------------------
/listings/C/listing_9.c:
--------------------------------------------------------------------------------
1 | typedef struct {
2 |     void *socket;       //  0MQ socket to poll on
3 |     int fd;             //  OR, native file handle to poll on
4 |     short events;       //  Events to poll on
5 |     short revents;      //  Events returned after poll
6 | } zmq_pollitem_t;
7 | 


--------------------------------------------------------------------------------
/listings/Lua/listing_38.lua:
--------------------------------------------------------------------------------
 1 | while true do
 2 |     --  Process all parts of the message
 3 |     local msg = frontend:recv()
 4 |     if (frontend:getopt(zmq.RCVMORE) == 1) then
 5 |         backend:send(msg, zmq.SNDMORE)
 6 |     else
 7 |         backend:send(msg, 0)
 8 |         break;      --  Last message part
 9 |     end
10 | end
11 | 


--------------------------------------------------------------------------------
/listings/Lua/listing_39.lua:
--------------------------------------------------------------------------------
 1 | while true do
 2 |     --  Process all parts of the message
 3 |     local msg = frontend:recv()
 4 |     if (frontend:getopt(zmq.RCVMORE) == 1) then
 5 |         backend:send(msg, zmq.SNDMORE)
 6 |     else
 7 |         backend:send(msg, 0)
 8 |         break;      --  Last message part
 9 |     end
10 | end
11 | 


--------------------------------------------------------------------------------
/listings/Lua/listing_43.lua:
--------------------------------------------------------------------------------
 1 | while true do
 2 |     --  Process all parts of the message
 3 |     local msg = frontend:recv()
 4 |     if (frontend:getopt(zmq.RCVMORE) == 1) then
 5 |         backend:send(msg, zmq.SNDMORE)
 6 |     else
 7 |         backend:send(msg, 0)
 8 |         break;      --  Last message part
 9 |     end
10 | end
11 | 


--------------------------------------------------------------------------------
/listings/Lua/listing_44.lua:
--------------------------------------------------------------------------------
 1 | while true do
 2 |     --  Process all parts of the message
 3 |     local msg = frontend:recv()
 4 |     if (frontend:getopt(zmq.RCVMORE) == 1) then
 5 |         backend:send(msg, zmq.SNDMORE)
 6 |     else
 7 |         backend:send(msg, 0)
 8 |         break;      --  Last message part
 9 |     end
10 | end
11 | 


--------------------------------------------------------------------------------
/listings/Lua/listing_46.lua:
--------------------------------------------------------------------------------
 1 | while true do
 2 |     --  Process all parts of the message
 3 |     local msg = frontend:recv()
 4 |     if (frontend:getopt(zmq.RCVMORE) == 1) then
 5 |         backend:send(msg, zmq.SNDMORE)
 6 |     else
 7 |         backend:send(msg, 0)
 8 |         break;      --  Last message part
 9 |     end
10 | end
11 | 


--------------------------------------------------------------------------------
/listings/Lua/listing_47.lua:
--------------------------------------------------------------------------------
 1 | while true do
 2 |     --  Process all parts of the message
 3 |     local msg = frontend:recv()
 4 |     if (frontend:getopt(zmq.RCVMORE) == 1) then
 5 |         backend:send(msg, zmq.SNDMORE)
 6 |     else
 7 |         backend:send(msg, 0)
 8 |         break;      --  Last message part
 9 |     end
10 | end
11 | 


--------------------------------------------------------------------------------
/listings/Lua/listing_52.lua:
--------------------------------------------------------------------------------
 1 | while true do
 2 |     --  Process all parts of the message
 3 |     local msg = frontend:recv()
 4 |     if (frontend:getopt(zmq.RCVMORE) == 1) then
 5 |         backend:send(msg, zmq.SNDMORE)
 6 |     else
 7 |         backend:send(msg, 0)
 8 |         break;      --  Last message part
 9 |     end
10 | end
11 | 


--------------------------------------------------------------------------------
/listings/Lua/listing_53.lua:
--------------------------------------------------------------------------------
 1 | while true do
 2 |     --  Process all parts of the message
 3 |     local msg = frontend:recv()
 4 |     if (frontend:getopt(zmq.RCVMORE) == 1) then
 5 |         backend:send(msg, zmq.SNDMORE)
 6 |     else
 7 |         backend:send(msg, 0)
 8 |         break;      --  Last message part
 9 |     end
10 | end
11 | 


--------------------------------------------------------------------------------
/listings/Lua/listing_54.lua:
--------------------------------------------------------------------------------
 1 | while true do
 2 |     --  Process all parts of the message
 3 |     local msg = frontend:recv()
 4 |     if (frontend:getopt(zmq.RCVMORE) == 1) then
 5 |         backend:send(msg, zmq.SNDMORE)
 6 |     else
 7 |         backend:send(msg, 0)
 8 |         break;      --  Last message part
 9 |     end
10 | end
11 | 


--------------------------------------------------------------------------------
/listings/Python/listing_2.py:
--------------------------------------------------------------------------------
1 | socket.send ("Hello")
2 | 


--------------------------------------------------------------------------------
/listings/Tcl/listing_37.tcl:
--------------------------------------------------------------------------------
 1 | while {1} {
 2 |     # Process all parts of the message
 3 |     zmq message message
 4 |     frontend recv_msg message
 5 |     set more [frontend getsockopt RCVMORE]
 6 |     backend send_msg message [expr {$more?"SNDMORE":""}]
 7 |     message close
 8 |     if {!$more} {
 9 |         break ; # Last message part
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/listings/Tcl/listing_38.tcl:
--------------------------------------------------------------------------------
 1 | while {1} {
 2 |     # Process all parts of the message
 3 |     zmq message message
 4 |     frontend recv_msg message
 5 |     set more [frontend getsockopt RCVMORE]
 6 |     backend send_msg message [expr {$more?"SNDMORE":""}]
 7 |     message close
 8 |     if {!$more} {
 9 |         break ; # Last message part
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/listings/Tcl/listing_42.tcl:
--------------------------------------------------------------------------------
 1 | while {1} {
 2 |     # Process all parts of the message
 3 |     zmq message message
 4 |     frontend recv_msg message
 5 |     set more [frontend getsockopt RCVMORE]
 6 |     backend send_msg message [expr {$more?"SNDMORE":""}]
 7 |     message close
 8 |     if {!$more} {
 9 |         break ; # Last message part
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/listings/Tcl/listing_43.tcl:
--------------------------------------------------------------------------------
 1 | while {1} {
 2 |     # Process all parts of the message
 3 |     zmq message message
 4 |     frontend recv_msg message
 5 |     set more [frontend getsockopt RCVMORE]
 6 |     backend send_msg message [expr {$more?"SNDMORE":""}]
 7 |     message close
 8 |     if {!$more} {
 9 |         break ; # Last message part
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/listings/Tcl/listing_45.tcl:
--------------------------------------------------------------------------------
 1 | while {1} {
 2 |     # Process all parts of the message
 3 |     zmq message message
 4 |     frontend recv_msg message
 5 |     set more [frontend getsockopt RCVMORE]
 6 |     backend send_msg message [expr {$more?"SNDMORE":""}]
 7 |     message close
 8 |     if {!$more} {
 9 |         break ; # Last message part
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/listings/Tcl/listing_46.tcl:
--------------------------------------------------------------------------------
 1 | while {1} {
 2 |     # Process all parts of the message
 3 |     zmq message message
 4 |     frontend recv_msg message
 5 |     set more [frontend getsockopt RCVMORE]
 6 |     backend send_msg message [expr {$more?"SNDMORE":""}]
 7 |     message close
 8 |     if {!$more} {
 9 |         break ; # Last message part
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/listings/Tcl/listing_51.tcl:
--------------------------------------------------------------------------------
 1 | while {1} {
 2 |     # Process all parts of the message
 3 |     zmq message message
 4 |     frontend recv_msg message
 5 |     set more [frontend getsockopt RCVMORE]
 6 |     backend send_msg message [expr {$more?"SNDMORE":""}]
 7 |     message close
 8 |     if {!$more} {
 9 |         break ; # Last message part
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/listings/Tcl/listing_52.tcl:
--------------------------------------------------------------------------------
 1 | while {1} {
 2 |     # Process all parts of the message
 3 |     zmq message message
 4 |     frontend recv_msg message
 5 |     set more [frontend getsockopt RCVMORE]
 6 |     backend send_msg message [expr {$more?"SNDMORE":""}]
 7 |     message close
 8 |     if {!$more} {
 9 |         break ; # Last message part
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/listings/Tcl/listing_53.tcl:
--------------------------------------------------------------------------------
 1 | while {1} {
 2 |     # Process all parts of the message
 3 |     zmq message message
 4 |     frontend recv_msg message
 5 |     set more [frontend getsockopt RCVMORE]
 6 |     backend send_msg message [expr {$more?"SNDMORE":""}]
 7 |     message close
 8 |     if {!$more} {
 9 |         break ; # Last message part
10 |     }
11 | }
12 | 


--------------------------------------------------------------------------------
/part1.txt:
--------------------------------------------------------------------------------
1 | + Part 1 - Learning 0MQ
2 | 
3 | In the first part of this book, you'll learn how to use 0MQ. We'll cover the basics, the API, the different socket types and how they work, reliability, and a host of patterns you can use in your applications. You'll get the best results by working through the examples and text from start to end.
4 | 


--------------------------------------------------------------------------------
/part2.txt:
--------------------------------------------------------------------------------
1 | + Part 2 - Advanced 0MQ
2 | 
3 | The second part of this book is about software engineering using 0MQ. I'll introduce a set of techniques of software development, and demonstrate them with worked examples, starting with 0MQ itself and ending with a general purpose framework for distributed applications. These techniques are independent of license, though open source amplifies them.
4 | 


--------------------------------------------------------------------------------
/site/archetypes/default.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "{{ replace .Name "-" " " | title }}"
3 | date: {{ .Date }}
4 | draft: true
5 | ---
6 | 
7 | 


--------------------------------------------------------------------------------
/site/assets/_custom.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/assets/_custom.scss


--------------------------------------------------------------------------------
/site/assets/_variables.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/assets/_variables.scss


--------------------------------------------------------------------------------
/site/content/docs/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | ---
3 | 


--------------------------------------------------------------------------------
/site/content/examples:
--------------------------------------------------------------------------------
1 | ../../examples/


--------------------------------------------------------------------------------
/site/content/translate/index.md:
--------------------------------------------------------------------------------
1 | # Contribute Translations
2 | 
3 | 1. Navigate to the [zguide repository](https://github.com/booksbyus/zguide)
4 | 2. Fork the repository
5 | 3. Place the translated example into the correct language folder under `/example`
6 | 4. Commit and push the new example to your fork
7 | 5. Create a Pull Request from your fork to the upstream zguide repository
8 | 


--------------------------------------------------------------------------------
/site/layouts/partials/docs/inject/body.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/layouts/partials/docs/inject/body.html


--------------------------------------------------------------------------------
/site/layouts/partials/docs/inject/head.html:
--------------------------------------------------------------------------------
1 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
2 | <script src="/js/example-toggle.js"></script>
3 | 


--------------------------------------------------------------------------------
/site/layouts/shortcodes/details.html:
--------------------------------------------------------------------------------
1 | <details {{ if or (.Get "open") (in .Params "open") }}open{{ end }}>
2 |   <summary>{{ cond .IsNamedParams (.Get "title") (.Get 0) }}</summary>
3 |   <div class="markdown-inner">
4 |     {{ .Inner | markdownify }}
5 |   </div>
6 | </details>
7 | 


--------------------------------------------------------------------------------
/site/layouts/shortcodes/fragment.html:
--------------------------------------------------------------------------------
1 | {{ highlight .Inner "C" "" }}
2 | 


--------------------------------------------------------------------------------
/site/layouts/shortcodes/include.html:
--------------------------------------------------------------------------------
1 | {{ $file := .Get 0 }}
2 | {{ $file | readFile | markdownify }}
3 | 


--------------------------------------------------------------------------------
/site/layouts/shortcodes/textdiagram.html:
--------------------------------------------------------------------------------
 1 | {{ $p := .Page }}
 2 | {{ $dummy := .Inner }}
 3 | {{ $name := .Get "name" }}
 4 | {{ $figno := .Get "figno" }}
 5 | {{ $title := .Get "title" }}
 6 | <figure style="margin: 0rem 0;">
 7 |     <figcaption style="margin: 1em 0">
 8 |         <strong>Figure {{ $figno }} - {{ $title }}</strong>
 9 |     </figcaption>
10 |     <div style="padding: 1em; text-align: center;">
11 |         <img  src="/images/{{ $name }}">
12 |     </div>
13 | </figure>
14 | 


--------------------------------------------------------------------------------
/site/static/images/fig1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig1.png


--------------------------------------------------------------------------------
/site/static/images/fig1.txt:
--------------------------------------------------------------------------------
 1 | .------------.        .------------.
 2 | |            |        |            |
 3 | | TCP socket +------->|   ZeroMQ   | ZAP!
 4 | |            | BOOM!  |            |
 5 | '------------'        |   Socket   |  POW!!
 6 |   ^    ^    ^         |            |
 7 |   |    |    |         '------------'
 8 |   |    |    |
 9 |   |    |    |
10 |   |    |    '--------- Spandex
11 |   |    |
12 |   |    '-------------- Cosmic rays
13 | 
14 |  Illegal radioisotopes from
15 |  secret Soviet atomic city
16 | 


--------------------------------------------------------------------------------
/site/static/images/fig10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig10.png


--------------------------------------------------------------------------------
/site/static/images/fig10.txt:
--------------------------------------------------------------------------------
1 | #----------------+----+----+----+----#
2 | | GET /index.html| 13 | 10 | 13 | 10 |
3 | #----------------+----+----+----+----#
4 | 


--------------------------------------------------------------------------------
/site/static/images/fig11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig11.png


--------------------------------------------------------------------------------
/site/static/images/fig11.txt:
--------------------------------------------------------------------------------
1 | #---+---+---+---+---+---#
2 | | 5 | H | E | L | L | O |
3 | #---+---+---+---+---+---#
4 | 


--------------------------------------------------------------------------------
/site/static/images/fig12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig12.png


--------------------------------------------------------------------------------
/site/static/images/fig13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig13.png


--------------------------------------------------------------------------------
/site/static/images/fig14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig14.png


--------------------------------------------------------------------------------
/site/static/images/fig15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig15.png


--------------------------------------------------------------------------------
/site/static/images/fig16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig16.png


--------------------------------------------------------------------------------
/site/static/images/fig17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig17.png


--------------------------------------------------------------------------------
/site/static/images/fig18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig18.png


--------------------------------------------------------------------------------
/site/static/images/fig19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig19.png


--------------------------------------------------------------------------------
/site/static/images/fig2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig2.png


--------------------------------------------------------------------------------
/site/static/images/fig2.txt:
--------------------------------------------------------------------------------
 1 |   #------------#
 2 |   |   Client   |
 3 |   +------------+
 4 |   |    REQ     |
 5 |   '---+--------'
 6 |       |    ^
 7 |       |    |
 8 | Hello |    | World
 9 |       |    |
10 |       v    |
11 |   .--------+---.
12 |   |    REP     |
13 |   +------------+
14 |   |   Server   |
15 |   #------------#
16 | 


--------------------------------------------------------------------------------
/site/static/images/fig20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig20.png


--------------------------------------------------------------------------------
/site/static/images/fig21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig21.png


--------------------------------------------------------------------------------
/site/static/images/fig21.txt:
--------------------------------------------------------------------------------
 1 | #------------#
 2 | |   Step 1   |
 3 | +------------+
 4 | |    PAIR    |
 5 | '-----+------'
 6 |       |
 7 |       | Ready!
 8 |       |
 9 |       v
10 | .------------.
11 | |    PAIR    |
12 | +------------+
13 | |   Step 2   |
14 | +------------+
15 | |    PAIR    |
16 | '-----+------'
17 |       |
18 |       | Ready!
19 |       |
20 |       v
21 | .------------.
22 | |    PAIR    |
23 | +------------+
24 | |   Step 3   |
25 | #------------#
26 | 


--------------------------------------------------------------------------------
/site/static/images/fig22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig22.png


--------------------------------------------------------------------------------
/site/static/images/fig22.txt:
--------------------------------------------------------------------------------
 1 | #------------#
 2 | | Publisher  |
 3 | +-----+------+
 4 | | PUB | REP  |
 5 | '--+--+----+-'
 6 |    |    ^  |
 7 | (3)| (1)|  |(2)
 8 |    |    |  |
 9 |    v    |  v
10 | .-----+-+----.
11 | | SUB | REQ  |
12 | +-----+------+
13 | | Subscriber |
14 | #------------#
15 | 


--------------------------------------------------------------------------------
/site/static/images/fig23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig23.png


--------------------------------------------------------------------------------
/site/static/images/fig23.txt:
--------------------------------------------------------------------------------
1 |           #--------#
2 | Frame 1   | Key    |   Message envelope
3 |           +--------+
4 | Frame 2   | Data   |   Actual message body
5 |           #--------#
6 | 


--------------------------------------------------------------------------------
/site/static/images/fig24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig24.png


--------------------------------------------------------------------------------
/site/static/images/fig24.txt:
--------------------------------------------------------------------------------
1 |           #---------#
2 | Frame 1   | Key     |   Subscription key
3 |           +---------+
4 | Frame 2   | Address |   Address of publisher
5 |           +---------+
6 | Frame 3   | Data    |   Actual message body
7 |           #---------#
8 | 


--------------------------------------------------------------------------------
/site/static/images/fig25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig25.png


--------------------------------------------------------------------------------
/site/static/images/fig26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig26.png


--------------------------------------------------------------------------------
/site/static/images/fig26.txt:
--------------------------------------------------------------------------------
1 |           #---#
2 | Frame 1   | 0 |            Empty delimiter frame
3 |           #---#-------#
4 | Frame 2   | 5 | Hello |    Data frame
5 |           #---+-------#
6 | 


--------------------------------------------------------------------------------
/site/static/images/fig27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig27.png


--------------------------------------------------------------------------------
/site/static/images/fig27.txt:
--------------------------------------------------------------------------------
 1 | #-------#     #-------#
 2 | |  REQ  |<--->|  REP  |
 3 | #-------#     #-------#
 4 | 
 5 | 
 6 | #-------#     #--------+--------#     #-------#
 7 | |  REQ  |<--->| ROUTER | DEALER |<--->|  REP  |
 8 | #-------#     #--------+--------#     #-------#
 9 | 
10 | 
11 | #-------#     #--------+--------#     #--------+--------#     #-------#
12 | |  REQ  |<--->| ROUTER | DEALER |<--->| ROUTER | DEALER |<--->|  REP  |
13 | #-------#     #--------+--------#     #--------+--------#     #-------#
14 | 


--------------------------------------------------------------------------------
/site/static/images/fig28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig28.png


--------------------------------------------------------------------------------
/site/static/images/fig28.txt:
--------------------------------------------------------------------------------
1 |           #---+-----#
2 | Frame 1   | 3 | ABC |      Identity of connection
3 |           #---#-----#
4 | Frame 2   | 0 |            Empty delimiter frame
5 |           #---#-------#
6 | Frame 3   | 5 | Hello |    Data frame
7 |           #---+-------#
8 | 


--------------------------------------------------------------------------------
/site/static/images/fig29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig29.png


--------------------------------------------------------------------------------
/site/static/images/fig29.txt:
--------------------------------------------------------------------------------
1 |           #---+-----#
2 | Frame 1   | 3 | ABC |      Identity of connection
3 |           #---#-----#
4 | Frame 2   | 0 |            Empty delimiter frame
5 |           #---#-------#
6 | Frame 3   | 5 | World |    Data frame
7 |           #---+-------#
8 | 


--------------------------------------------------------------------------------
/site/static/images/fig3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig3.png


--------------------------------------------------------------------------------
/site/static/images/fig3.txt:
--------------------------------------------------------------------------------
1 | #-----#  #-----+-----+-----+-----+-----#
2 | |  5  |  |  H  |  e  |  l  |  l  |  o  |
3 | #-----#  #-----+-----+-----+-----+-----#
4 | 


--------------------------------------------------------------------------------
/site/static/images/fig30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig30.png


--------------------------------------------------------------------------------
/site/static/images/fig30.txt:
--------------------------------------------------------------------------------
1 |           #---#
2 | Frame 1   | 0 |            Empty delimiter frame
3 |           #---#-------#
4 | Frame 2   | 5 | World |    Data frame
5 |           #---+-------#
6 | 


--------------------------------------------------------------------------------
/site/static/images/fig31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig31.png


--------------------------------------------------------------------------------
/site/static/images/fig31.txt:
--------------------------------------------------------------------------------
1 |           #---+-------#
2 | Frame 1   | n | ...   |     Identity of connection
3 |           #---#-------#
4 | Frame 2   | 0 |             Empty delimiter frame
5 |           #---#--------#
6 | Frame 3   | n | ...    |    Data frame
7 |           #---+--------#
8 | 


--------------------------------------------------------------------------------
/site/static/images/fig32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig32.png


--------------------------------------------------------------------------------
/site/static/images/fig33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig33.png


--------------------------------------------------------------------------------
/site/static/images/fig33.txt:
--------------------------------------------------------------------------------
1 |           #---+-------#
2 | Frame 1   | 5 | Hello |   Data frame
3 |           #---+-------#
4 | 


--------------------------------------------------------------------------------
/site/static/images/fig34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig34.png


--------------------------------------------------------------------------------
/site/static/images/fig34.txt:
--------------------------------------------------------------------------------
1 |           #---+--------#
2 | Frame 1   | 6 | CLIENT |   Client address
3 |           #---#--------#
4 | Frame 2   | 0 |            Empty delimiter frame
5 |           #---#-------#
6 | Frame 3   | 5 | Hello |    Data frame
7 |           #---+-------#
8 | 


--------------------------------------------------------------------------------
/site/static/images/fig35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig35.png


--------------------------------------------------------------------------------
/site/static/images/fig35.txt:
--------------------------------------------------------------------------------
 1 |           #---+--------#
 2 | Frame 1   | 6 | WORKER |   Address of worker
 3 |           #---#--------#
 4 | Frame 2   | 0 |            Empty delimiter frame
 5 |           #---#--------#
 6 | Frame 3   | 6 | CLIENT |   Identity of client
 7 |           #---#--------#
 8 | Frame 4   | 0 |            Empty delimiter frame
 9 |           #---#-------#
10 | Frame 5   | 5 | Hello |    Data frame
11 |           #---+-------#
12 | 


--------------------------------------------------------------------------------
/site/static/images/fig36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig36.png


--------------------------------------------------------------------------------
/site/static/images/fig36.txt:
--------------------------------------------------------------------------------
1 |           #---+--------#
2 | Frame 1   | 6 | CLIENT |   Identity of client
3 |           #---#--------#
4 | Frame 2   | 0 |            Empty delimiter frame
5 |           #---#-------#
6 | Frame 3   | 5 | Hello |    Data frame
7 |           #---+-------#
8 | 


--------------------------------------------------------------------------------
/site/static/images/fig37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig37.png


--------------------------------------------------------------------------------
/site/static/images/fig37.txt:
--------------------------------------------------------------------------------
 1 | #----------#   #----------#
 2 | |  Client  |   |  Client  |
 3 | +----------+   +----------+
 4 | |  DEALER  |   |  DEALER  |
 5 | '----------'   '----------'
 6 |       ^              ^
 7 |       |              |
 8 |       '------+-------'
 9 |              |
10 |              v
11 |       .-------------.
12 |       |   ROUTER    |
13 |       +-------------+
14 |       |   Server    |
15 |       #-------------#
16 | 


--------------------------------------------------------------------------------
/site/static/images/fig38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig38.png


--------------------------------------------------------------------------------
/site/static/images/fig39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig39.png


--------------------------------------------------------------------------------
/site/static/images/fig4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig4.png


--------------------------------------------------------------------------------
/site/static/images/fig40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig40.png


--------------------------------------------------------------------------------
/site/static/images/fig41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig41.png


--------------------------------------------------------------------------------
/site/static/images/fig42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig42.png


--------------------------------------------------------------------------------
/site/static/images/fig43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig43.png


--------------------------------------------------------------------------------
/site/static/images/fig44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig44.png


--------------------------------------------------------------------------------
/site/static/images/fig45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig45.png


--------------------------------------------------------------------------------
/site/static/images/fig46.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig46.png


--------------------------------------------------------------------------------
/site/static/images/fig47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig47.png


--------------------------------------------------------------------------------
/site/static/images/fig48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig48.png


--------------------------------------------------------------------------------
/site/static/images/fig49.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig49.png


--------------------------------------------------------------------------------
/site/static/images/fig5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig5.png


--------------------------------------------------------------------------------
/site/static/images/fig50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig50.png


--------------------------------------------------------------------------------
/site/static/images/fig51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig51.png


--------------------------------------------------------------------------------
/site/static/images/fig52.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig52.png


--------------------------------------------------------------------------------
/site/static/images/fig52.txt:
--------------------------------------------------------------------------------
 1 | #------------#           #------------#
 2 | |            |           |            |
 3 | |  Primary   |<--------->|   Backup   |
 4 | |  "active"  |           |  "passive" |
 5 | |            |           |            |
 6 | #------------#           #------------#
 7 |       ^
 8 |       |
 9 |       |
10 |       |
11 | #-----+------#
12 | |            |
13 | |   Client   |
14 | |            |
15 | #------------#
16 | 


--------------------------------------------------------------------------------
/site/static/images/fig53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig53.png


--------------------------------------------------------------------------------
/site/static/images/fig53.txt:
--------------------------------------------------------------------------------
 1 | #------------#           #------------#
 2 | |            |           |            |
 3 | |  Primary   |<--------->|   Backup   |
 4 | | "passive"  |           |  "active"  |
 5 | |            |           |            |
 6 | #------------#           #------------#
 7 |                                 ^
 8 |                                 |
 9 |       .-------------------------'
10 |       |
11 | #-----+------#
12 | |            |
13 | |   Client   |
14 | |            |
15 | #------------#
16 | 


--------------------------------------------------------------------------------
/site/static/images/fig54.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig54.png


--------------------------------------------------------------------------------
/site/static/images/fig55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig55.png


--------------------------------------------------------------------------------
/site/static/images/fig56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig56.png


--------------------------------------------------------------------------------
/site/static/images/fig57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig57.png


--------------------------------------------------------------------------------
/site/static/images/fig58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig58.png


--------------------------------------------------------------------------------
/site/static/images/fig59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig59.png


--------------------------------------------------------------------------------
/site/static/images/fig6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig6.png


--------------------------------------------------------------------------------
/site/static/images/fig60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig60.png


--------------------------------------------------------------------------------
/site/static/images/fig61.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig61.png


--------------------------------------------------------------------------------
/site/static/images/fig62.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig62.png


--------------------------------------------------------------------------------
/site/static/images/fig63.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig63.png


--------------------------------------------------------------------------------
/site/static/images/fig64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig64.png


--------------------------------------------------------------------------------
/site/static/images/fig64.txt:
--------------------------------------------------------------------------------
1 | .-------------------.
2 | | Start             |
3 | '-+-----------------'
4 |   |
5 |   #-------------#                    .-------------------.
6 |   | OHAI        +------------------->| Authenticated     |
7 |   #-------------#                    '-------------------'
8 |                    Check Credentials
9 | 


--------------------------------------------------------------------------------
/site/static/images/fig65.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig65.png


--------------------------------------------------------------------------------
/site/static/images/fig66.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig66.png


--------------------------------------------------------------------------------
/site/static/images/fig67.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig67.png


--------------------------------------------------------------------------------
/site/static/images/fig67.txt:
--------------------------------------------------------------------------------
1 | #---+---+---+------#  #------+------#
2 | | Z | R | E | %x01 |  | UUID | port |
3 | #---+---+---+------#  #------+------#
4 | 
5 |        Header               Body
6 | 


--------------------------------------------------------------------------------
/site/static/images/fig68.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig68.png


--------------------------------------------------------------------------------
/site/static/images/fig69.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig69.png


--------------------------------------------------------------------------------
/site/static/images/fig7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig7.png


--------------------------------------------------------------------------------
/site/static/images/fig7.txt:
--------------------------------------------------------------------------------
 1 | .------------.
 2 | |            |
 3 | |  Piece A   |
 4 | |            |
 5 | '------------'
 6 |       ^
 7 |       |
 8 |       | TCP
 9 |       |
10 |       v
11 | .------------.
12 | |            |
13 | |  Piece B   |
14 | |            |
15 | '------------'
16 | 


--------------------------------------------------------------------------------
/site/static/images/fig70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig70.png


--------------------------------------------------------------------------------
/site/static/images/fig70.txt:
--------------------------------------------------------------------------------
1 | #---+---+---+---+---+---+---+---#  #---+---+---+---+---------------#
2 | | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |  | 1 | 0 | 1 | 0 |   Signature   |
3 | #---+---+---+---+---+---+---+---#  #---+---+---+---+---------------#
4 | 
5 |              Byte 0                             Byte 1
6 | 


--------------------------------------------------------------------------------
/site/static/images/fig8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig8.png


--------------------------------------------------------------------------------
/site/static/images/fig9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/fig9.png


--------------------------------------------------------------------------------
/site/static/images/fig9.txt:
--------------------------------------------------------------------------------
 1 | #------------#
 2 | |    Node    |
 3 | +------------+
 4 | |   Socket   |
 5 | '------------'
 6 |       ^
 7 |       |
 8 |       | 1 to 1
 9 |       |
10 |       v
11 | .------------.
12 | |   Socket   |
13 | +------------+
14 | |    Node    |
15 | #------------#
16 | 


--------------------------------------------------------------------------------
/site/static/images/logo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/static/images/logo.gif


--------------------------------------------------------------------------------
/site/static/js/example-toggle.js:
--------------------------------------------------------------------------------
 1 | $(function() {
 2 | 	$(".lang-toggle").click(function() {
 3 | 		var language = $(this).data("language");
 4 | 		$("details.example").hide();
 5 | 		$("details.example[data-language='"+language+"']").show();
 6 | 	});
 7 | 
 8 |     var defaultLanguage = "C";
 9 |     $("details.example[data-language='"+defaultLanguage+"']").show();
10 | });
11 | 
12 | 


--------------------------------------------------------------------------------
/site/themes/book/archetypes/docs.md:
--------------------------------------------------------------------------------
 1 | ---
 2 | title: "{{ .Name | humanize | title }}"
 3 | weight: 1
 4 | # bookFlatSection: false
 5 | # bookToc: true
 6 | # bookHidden: false
 7 | # bookCollapseSection: false
 8 | # bookComments: true
 9 | ---
10 | 


--------------------------------------------------------------------------------
/site/themes/book/archetypes/posts.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "{{ replace .Name "-" " " | title }}"
3 | date: {{ .Date }}
4 | ---
5 | 


--------------------------------------------------------------------------------
/site/themes/book/assets/_custom.scss:
--------------------------------------------------------------------------------
1 | /* You can add custom styles here. */
2 | 
3 | // @import "plugins/numbered";
4 | 


--------------------------------------------------------------------------------
/site/themes/book/assets/_print.scss:
--------------------------------------------------------------------------------
 1 | @media print {
 2 |   .book-menu,
 3 |   .book-footer,
 4 |   .book-toc {
 5 |     display: none;
 6 |   }
 7 | 
 8 |   .book-header,
 9 |   .book-header aside {
10 |     display: block;
11 |   }
12 | 
13 |   main {
14 |     // Fix for https://bugzilla.mozilla.org/show_bug.cgi?id=939897
15 |     display: block !important;
16 |   }
17 | }
18 | 


--------------------------------------------------------------------------------
/site/themes/book/assets/_variables.scss:
--------------------------------------------------------------------------------
1 | /* You can override SASS variables here. */
2 | 
3 | // @import "plugins/dark";
4 | 


--------------------------------------------------------------------------------
/site/themes/book/assets/book.scss:
--------------------------------------------------------------------------------
 1 | @import "defaults";
 2 | @import "variables";
 3 | 
 4 | @import "normalize";
 5 | @import "utils";
 6 | @import "main";
 7 | @import "fonts";
 8 | @import "print";
 9 | 
10 | @import "markdown";
11 | @import "shortcodes";
12 | 
13 | // Custom defined styles
14 | @import "custom";
15 | 


--------------------------------------------------------------------------------
/site/themes/book/assets/manifest.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "name": "{{ .Site.Title }}",
 3 |   "short_name": "{{ .Site.Title }}",
 4 |   "start_url": "{{ "/" | relURL }}",
 5 |   "scope": "{{ "/" | relURL }}",
 6 |   "display": "standalone",
 7 |   "background_color": "#000000",
 8 |   "theme_color": "#000000",
 9 |   "icons": [
10 |     {
11 |       "src": "{{ "/favicon.svg" | relURL }}",
12 |       "sizes": "512x512"
13 |     }
14 |   ]
15 | }
16 | 


--------------------------------------------------------------------------------
/site/themes/book/assets/menu-reset.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |   var menu = document.querySelector("aside.book-menu nav");
3 |   addEventListener("beforeunload", function(event) {
4 |       localStorage.setItem("menu.scrollTop", menu.scrollTop);
5 |   });
6 |   menu.scrollTop = localStorage.getItem("menu.scrollTop");
7 | })();
8 | 


--------------------------------------------------------------------------------
/site/themes/book/assets/plugins/_dark.scss:
--------------------------------------------------------------------------------
 1 | $gray-100: rgba(255, 255, 255, 0.1);
 2 | $gray-200: rgba(255, 255, 255, 0.2);
 3 | 
 4 | $body-background: #343a40;
 5 | $body-font-color: #e9ecef;
 6 | 
 7 | $color-link: #84b2ff;
 8 | $color-visited-link: #b88dff;
 9 | 
10 | $icon-filter: brightness(0) invert(1);
11 | 


--------------------------------------------------------------------------------
/site/themes/book/assets/sw-register.js:
--------------------------------------------------------------------------------
1 | {{- $swJS := resources.Get "sw.js" | resources.ExecuteAsTemplate "sw.js" . -}}
2 | if (navigator.serviceWorker) {
3 |   navigator.serviceWorker.register(
4 |     "{{ $swJS.RelPermalink }}", 
5 |     { scope: "{{ "/" | relURL }}" }
6 |   );
7 | }
8 | 


--------------------------------------------------------------------------------
/site/themes/book/exampleSite/assets/_custom.scss:
--------------------------------------------------------------------------------
1 | /* You can add custom styles here. */
2 | 
3 | // @import "plugins/numbered";
4 | // @import "plugins/scrollbars";
5 | 


--------------------------------------------------------------------------------
/site/themes/book/exampleSite/assets/_variables.scss:
--------------------------------------------------------------------------------
1 | /* You can override SASS variables here. */
2 | 
3 | // @import "plugins/dark";
4 | 


--------------------------------------------------------------------------------
/site/themes/book/exampleSite/content/docs/shortcodes/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | bookFlatSection: true
3 | ---
4 | 


--------------------------------------------------------------------------------
/site/themes/book/exampleSite/content/docs/shortcodes/section/_index.md:
--------------------------------------------------------------------------------
 1 | ---
 2 | bookCollapseSection: true
 3 | ---
 4 | 
 5 | # Section
 6 | 
 7 | Section renders pages in section as definition list, using title and description.
 8 | 
 9 | ## Example
10 | 
11 | ```tpl
12 | {{</* section */>}}
13 | ```
14 | 
15 | {{<section>}}
16 | 


--------------------------------------------------------------------------------
/site/themes/book/exampleSite/content/docs/shortcodes/section/page1.md:
--------------------------------------------------------------------------------
1 | # Page 1
2 | 


--------------------------------------------------------------------------------
/site/themes/book/exampleSite/content/docs/shortcodes/section/page2.md:
--------------------------------------------------------------------------------
1 | # Page 2
2 | 


--------------------------------------------------------------------------------
/site/themes/book/exampleSite/content/posts/_index.md:
--------------------------------------------------------------------------------
1 | ---
2 | menu:
3 |   after:
4 |     name: blog
5 |     weight: 5
6 | title: Blog
7 | ---
8 | 


--------------------------------------------------------------------------------
/site/themes/book/exampleSite/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.json:
--------------------------------------------------------------------------------
1 | {"Target":"book.min.1205ebacf147e31d6bd6f74be1ef8d96f4bb2c4943c68e5a39b4e988a774a2b0.css","MediaType":"text/css","Data":{"Integrity":"sha256-EgXrrPFH4x1r1vdL4e+NlvS7LElDxo5aObTpiKd0orA="}}


--------------------------------------------------------------------------------
/site/themes/book/exampleSite/resources/_gen/assets/scss/example/book.scss_50fc8c04e12a2f59027287995557ceff.json:
--------------------------------------------------------------------------------
1 | {"Target":"book.min.284c8fc21ced13c579d9027a9d14893c56b243c6045001180391cebb4cc36ab8.css","MediaType":"text/css","Data":{"Integrity":"sha256-KEyPwhztE8V52QJ6nRSJPFayQ8YEUAEYA5HOu0zDarg="}}


--------------------------------------------------------------------------------
/site/themes/book/i18n/cn.yaml:
--------------------------------------------------------------------------------
 1 | # This should be removed in future, 'cn' is moved to `zh'
 2 | - id: Search
 3 |   translation: 搜索
 4 | 
 5 | - id: Edit this page
 6 |   translation: 编辑本页
 7 | 
 8 | - id: Last modified by
 9 |   translation: 最后修改者
10 | 
11 | - id: Expand
12 |   translation: 展开
13 | 
14 | - id: bookSearchConfig
15 |   translation: |
16 |     {
17 |       encode: false,
18 |       tokenize: function(str) {
19 |         return str.replace(/[\x00-\x7F]/g, '').split('');
20 |       }
21 |     }
22 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/de.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Suche
 3 | 
 4 | - id: Edit this page
 5 |   translation: Seite bearbeiten
 6 | 
 7 | - id: Last modified by
 8 |   translation: Zuletzt geändert am
 9 | 
10 | - id: Expand
11 |   translation: Erweitern
12 | 
13 | - id: bookSearchConfig
14 |   translation: '{ cache: true }'
15 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/en.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Search
 3 | 
 4 | - id: Edit this page
 5 |   translation: Edit this page
 6 | 
 7 | - id: Last modified by
 8 |   translation: Last modified by
 9 | 
10 | - id: Expand
11 |   translation: Expand
12 | 
13 | - id: bookSearchConfig
14 |   translation: '{ cache: true }'
15 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/es.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Buscar
 3 | 
 4 | - id: Edit this page
 5 |   translation: Editar esta página
 6 | 
 7 | - id: Last modified by
 8 |   translation: Última modificación por
 9 | 
10 | - id: Expand
11 |   translation: Expand
12 | 
13 | - id: bookSearchConfig
14 |   translation: '{ cache: true }'
15 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/fr.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Rechercher
 3 | 
 4 | - id: Edit this page
 5 |   translation: Modifier cette page
 6 | 
 7 | - id: Last modified by
 8 |   translation: Dernière modification par
 9 | 
10 | - id: Expand
11 |   translation: Développer
12 | 
13 | - id: bookSearchConfig
14 |   translation: '{ cache: true }'
15 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/jp.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: 検索
 3 | 
 4 | - id: Edit this page
 5 |   translation: このページを編集する
 6 | 
 7 | - id: Last modified by
 8 |   translation: 最終更新者
 9 | 
10 | - id: Expand
11 |   translation: 展開
12 | 
13 | - id: bookSearchConfig
14 |   translation: |
15 |     {
16 |       encode: false,
17 |       tokenize: function(str) {
18 |         return str.replace(/[\x00-\x7F]/g, '').split('');
19 |       }
20 |     }
21 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/ko.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Search
 3 | 
 4 | - id: Edit this page
 5 |   translation: Edit this page
 6 | 
 7 | - id: Last modified by
 8 |   translation: Last modified by
 9 | 
10 | - id: Expand
11 |   translation: Expand
12 | 
13 | - id: bookSearchConfig
14 |   translation: |
15 |     {
16 |       encode: false,
17 |       tokenize: function(str) {
18 |         return str.replace(/[\x00-\x7F]/g, '').split('');
19 |       }
20 |     }
21 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/nb.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Søk
 3 | 
 4 | - id: Edit this page
 5 |   translation: Rediger denne siden
 6 | 
 7 | - id: Last modified by
 8 |   translation: Sist endret av
 9 | 
10 | - id: Expand
11 |   translation: Utvid
12 | 
13 | - id: bookSearchConfig
14 |   translation: '{ cache: true }'
15 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/pt.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Buscar
 3 | 
 4 | - id: Edit this page
 5 |   translation: Editar página
 6 | 
 7 | - id: Last modified by
 8 |   translation: Última modificação por
 9 | 
10 | - id: Expand
11 |   translation: Expandir
12 | 
13 | - id: bookSearchConfig
14 |   translation: '{ cache: true }'
15 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/ru.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Поиск
 3 | 
 4 | - id: Edit this page
 5 |   translation: Редактировать эту страницу
 6 | 
 7 | - id: Last modified by
 8 |   translation: Последнее изменение от
 9 | 
10 | - id: Expand
11 |   translation: Развернуть
12 | 
13 | - id: bookSearchConfig
14 |   translation: '{ split: /[^a-zа-яё0-9\w]/gi }'
15 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/sv.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Sök
 3 | 
 4 | - id: Edit this page
 5 |   translation: Redigera denna sida
 6 | 
 7 | - id: Last modified by
 8 |   translation: Senast modifierad av
 9 | 
10 | - id: Expand
11 |   translation: Expandera
12 | 
13 | - id: bookSearchConfig
14 |   translation: '{ cache: true }'
15 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/uk.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: Пошук
 3 | 
 4 | - id: Edit this page
 5 |   translation: Редагувати цю сторінку
 6 | 
 7 | - id: Last modified by
 8 |   translation: Остання зміна від
 9 | 
10 | - id: Expand
11 |   translation: Розгорнути
12 | 
13 | - id: bookSearchConfig
14 |   translation: '{ split: /[^a-zа-яё0-9\w]/gi }'
15 | 


--------------------------------------------------------------------------------
/site/themes/book/i18n/zh.yaml:
--------------------------------------------------------------------------------
 1 | - id: Search
 2 |   translation: 搜索
 3 | 
 4 | - id: Edit this page
 5 |   translation: 编辑本页
 6 | 
 7 | - id: Last modified by
 8 |   translation: 最后修改者
 9 | 
10 | - id: Expand
11 |   translation: 展开
12 | 
13 | - id: bookSearchConfig
14 |   translation: |
15 |     {
16 |       encode: false,
17 |       tokenize: function(str) {
18 |         return str.replace(/[\x00-\x7F]/g, '').split('');
19 |       }
20 |     }
21 | 


--------------------------------------------------------------------------------
/site/themes/book/images/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/images/screenshot.png


--------------------------------------------------------------------------------
/site/themes/book/images/tn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/images/tn.png


--------------------------------------------------------------------------------
/site/themes/book/layouts/_default/_markup/render-heading.html:
--------------------------------------------------------------------------------
1 | <h{{ .Level }} id="{{ .Anchor | safeURL }}">
2 |   {{ .Text | safeHTML }}
3 |   <a class="anchor" href="#{{ .Anchor | safeURL }}">#</a>
4 | </h{{ .Level }}>
5 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/_default/list.html:
--------------------------------------------------------------------------------
1 | {{ define "dummy" }}{{ end }}
2 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/_default/single.html:
--------------------------------------------------------------------------------
1 | {{ define "dummy" }}{{ end }}
2 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/brand.html:
--------------------------------------------------------------------------------
1 | <h2 class="book-brand">
2 |   <a href="{{ .Site.BaseURL | relLangURL }}">
3 |     {{- with .Site.Params.BookLogo -}}
4 |     <img src="{{ . | relURL }}" alt="Logo" />
5 |     {{- end -}}
6 |     <span>{{ .Site.Title }}</span>
7 |   </a>
8 | </h2>
9 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/comments.html:
--------------------------------------------------------------------------------
1 | <!-- This partial can be replaced to support other commenting engines -->
2 | {{ template "_internal/disqus.html" . }}
3 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/date.html:
--------------------------------------------------------------------------------
1 | <!--
2 |   Returns formatted date.
3 |   Usage: partial "docs/date" (dict "Date" .Date "Format" .Site.Params.BookDateFormat)
4 | -->
5 | {{- $format := default "January 2, 2006" .Format -}}
6 | {{- return (.Date.Format $format) -}}
7 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/inject/body.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/layouts/partials/docs/inject/body.html


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/inject/content-after.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/layouts/partials/docs/inject/content-after.html


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/inject/content-before.html:
--------------------------------------------------------------------------------
1 | <div id = "content-header">
2 | 	<h1>
3 |         <a href="/"><img src="/images/logo.gif"></a>
4 |     </h1>
5 | </div>
6 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/inject/footer.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/layouts/partials/docs/inject/footer.html


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/inject/head.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/layouts/partials/docs/inject/head.html


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/inject/menu-after.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/layouts/partials/docs/inject/menu-after.html


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/inject/menu-before.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/layouts/partials/docs/inject/menu-before.html


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/menu-bundle.html:
--------------------------------------------------------------------------------
1 | {{ with .Site.GetPage .Site.Params.BookMenuBundle }}
2 |   {{- $href := printf "href=\"%s\"" $.RelPermalink -}}
3 |   {{- replace .Content $href (print $href "class=active") | safeHTML -}}
4 | {{ end }}
5 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/post-meta.html:
--------------------------------------------------------------------------------
 1 | {{ with .Date}}
 2 |   <h5>{{ partial "docs/date" (dict "Date" . "Format" $.Site.Params.BookDateFormat) }}</h5>
 3 | {{ end }}
 4 | 
 5 | {{ range $taxonomy, $_ := .Site.Taxonomies }}
 6 |   {{ with $terms := $.GetTerms $taxonomy }}
 7 |   <div>
 8 |     {{ range $n, $term := $terms }}{{ if $n }}, {{ end }}
 9 |       <a href="{{ $term.RelPermalink }}">{{ $term.Title }}</a>
10 |     {{- end }}
11 |   </div>
12 |   {{ end }}
13 | {{ end }}
14 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/search.html:
--------------------------------------------------------------------------------
1 | {{ if default true .Site.Params.BookSearch }}
2 | <div class="book-search">
3 |   <input type="text" id="book-search-input" placeholder="{{ i18n "Search" }}" aria-label="{{ i18n "Search" }}" maxlength="64" data-hotkeys="s/" />
4 |   <div class="book-search-spinner hidden"></div>
5 |   <ul id="book-search-results"></ul>
6 | </div>
7 | {{ end }}
8 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/title.html:
--------------------------------------------------------------------------------
 1 | <!--
 2 |   Partial to generate page name from Title or File name.
 3 |   Accepts Page as context
 4 | -->
 5 | {{ $title := "" }}
 6 | 
 7 | {{ if .Title }}
 8 |   {{ $title = .Title }}
 9 | {{ else if and .IsSection .File }}
10 |   {{ $title = path.Base .File.Dir | humanize | title }}
11 | {{ else if and .IsPage .File }}
12 |   {{ $title = (default .Page.Params.title .File.BaseFileName) | humanize | title }}
13 | {{ end }}
14 | 
15 | {{ return $title }}
16 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/partials/docs/toc.html:
--------------------------------------------------------------------------------
1 | {{ .TableOfContents }}
2 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/posts/single.html:
--------------------------------------------------------------------------------
 1 | {{ define "main" }}
 2 | <article class="markdown">
 3 |   <h1>
 4 |     <a href="{{ .RelPermalink }}">{{ .Title }}</a>
 5 |   </h1>
 6 |   {{ partial "docs/post-meta" . }}
 7 |   <p>
 8 |     {{- .Content -}}
 9 |   </p>
10 | </article>
11 | {{ end }}
12 | 
13 | {{ define "toc" }}
14 |   {{ partial "docs/toc" . }}
15 | {{ end }}
16 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/shortcodes/button.html:
--------------------------------------------------------------------------------
 1 | {{ $ref := "" }}
 2 | {{ $target := "" }}
 3 | {{ with .Get "href" }}
 4 |   {{ $ref = . }}
 5 |   {{ $target = "_blank" }}
 6 | {{ end }}
 7 | {{ with .Get "relref" }}
 8 |   {{ $ref = relref $ . }}
 9 | {{ end }}
10 | <a {{ with $ref }} href="{{.}}" {{ end }} {{ with $target }} target="{{.}}" {{ end }} class="book-btn{{ with .Get "class" }} {{ . }}{{ end }}">
11 |   {{ $.Inner }}
12 | </a>
13 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/shortcodes/columns.html:
--------------------------------------------------------------------------------
1 | <div class="book-columns flex flex-wrap">
2 |   {{ range split .Inner "<--->" }}
3 |   <div class="flex-even markdown-inner">
4 |     {{ . | markdownify }}
5 |   </div>
6 |   {{ end }}
7 | </div>
8 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/shortcodes/details.html:
--------------------------------------------------------------------------------
1 | <details {{ if or (.Get "open") (in .Params "open") }}open{{ end }}>
2 |   <summary>{{ cond .IsNamedParams (.Get "title") (.Get 0) }}</summary>
3 |   <div class="markdown-inner">
4 |     {{ .Inner | markdownify }}
5 |   </div>
6 | </details>
7 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/shortcodes/hint.html:
--------------------------------------------------------------------------------
1 | <blockquote class="book-hint {{ .Get 0 }}">
2 |   {{ .Inner | markdownify }}
3 | </blockquote>
4 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/shortcodes/mermaid.html:
--------------------------------------------------------------------------------
 1 | {{ if not (.Page.Scratch.Get "mermaid") }}
 2 | <!-- Include mermaid only first time -->
 3 | <script src="{{ "mermaid.min.js" | relURL }}"></script>
 4 | <script>
 5 | mermaid.initialize({
 6 |   flowchart: { useMaxWidth:true }
 7 | });
 8 | </script>
 9 | {{ .Page.Scratch.Set "mermaid" true }}
10 | {{ end }}
11 | 
12 | <p class="mermaid{{ with .Get "class" }} {{ . }}{{ end }}">
13 |   {{- .Inner -}}
14 | </p>
15 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/shortcodes/section.html:
--------------------------------------------------------------------------------
 1 | <dl>
 2 | {{ range .Page.Pages }}
 3 |   <dt>
 4 |     <a href="{{ .RelPermalink }}">{{ partial "docs/title" . }}</a>
 5 |   </dt>
 6 |   <dd>
 7 |     {{ default .Summary .Description }}
 8 |   </dd>
 9 | {{ end }}
10 | </dl>
11 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/shortcodes/tab.html:
--------------------------------------------------------------------------------
 1 | {{ if .Parent }}
 2 |   {{ $name := .Get 0 }}
 3 |   {{ $group := printf "tabs-%s" (.Parent.Get 0) }}
 4 | 
 5 |   {{ if not (.Parent.Scratch.Get $group) }}
 6 |     {{ .Parent.Scratch.Set $group slice }}
 7 |   {{ end }}
 8 | 
 9 |   {{ .Parent.Scratch.Add $group (dict "Name" $name "Content" .Inner) }}
10 | {{ else }}
11 |   {{ errorf "%q: 'tab' shortcode must be inside 'tabs' shortcode" .Page.Path }}
12 | {{ end}}
13 | 


--------------------------------------------------------------------------------
/site/themes/book/layouts/taxonomy/list.html:
--------------------------------------------------------------------------------
 1 | {{ define "main" }}
 2 | <article class="markdown">
 3 |   <h1>{{ .Title | title }}</h1>
 4 |   {{ $taxonomies := index .Site.Taxonomies .Page.Type }}
 5 |   {{ range $taxonomies }}
 6 |     <div><a href="{{ .Page.Permalink }}">{{ .Page.Title }} <sup>{{ .Count }}</sup></a></div>
 7 |   {{ end }}
 8 | </article>
 9 | {{ end }}
10 | 
11 | {{ define "toc" }}
12 |   {{ partial "docs/taxonomy" . }}
13 | {{ end }}
14 | 


--------------------------------------------------------------------------------
/site/themes/book/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/favicon.png


--------------------------------------------------------------------------------
/site/themes/book/static/favicon.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M3 18h12v-2H3v2zM3 6v2h18V6H3zm0 7h18v-2H3v2z"/></svg>


--------------------------------------------------------------------------------
/site/themes/book/static/fonts/roboto-mono-v6-latin-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/fonts/roboto-mono-v6-latin-regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/fonts/roboto-mono-v6-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/fonts/roboto-mono-v6-latin-regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/fonts/roboto-v19-latin-300italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/fonts/roboto-v19-latin-300italic.woff


--------------------------------------------------------------------------------
/site/themes/book/static/fonts/roboto-v19-latin-300italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/fonts/roboto-v19-latin-300italic.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/fonts/roboto-v19-latin-700.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/fonts/roboto-v19-latin-700.woff


--------------------------------------------------------------------------------
/site/themes/book/static/fonts/roboto-v19-latin-700.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/fonts/roboto-v19-latin-700.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/fonts/roboto-v19-latin-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/fonts/roboto-v19-latin-regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/fonts/roboto-v19-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/fonts/roboto-v19-latin-regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_AMS-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_AMS-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_AMS-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_AMS-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_AMS-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_AMS-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-Bold.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-Bold.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-Bold.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-Italic.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-Italic.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-Italic.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Main-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Main-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Math-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Math-Italic.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Math-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Math-Italic.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Math-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Math-Italic.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Script-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Script-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Script-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Script-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Script-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Script-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size1-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size1-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size1-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size1-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size1-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size1-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size2-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size2-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size2-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size2-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size2-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size2-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size3-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size3-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size3-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size3-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size3-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size3-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size4-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size4-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size4-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size4-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Size4-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Size4-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.ttf


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.woff


--------------------------------------------------------------------------------
/site/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/booksbyus/zguide/6752d24b215997aa161e6896941bfd6010d4d3f5/site/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.woff2


--------------------------------------------------------------------------------
/site/themes/book/static/svg/calendar.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z"/><path fill="none" d="M0 0h24v24H0z"/></svg>


--------------------------------------------------------------------------------
/site/themes/book/static/svg/edit.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"/><path d="M0 0h24v24H0z" fill="none"/></svg>


--------------------------------------------------------------------------------
/site/themes/book/static/svg/menu.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>


--------------------------------------------------------------------------------
/site/themes/book/static/svg/toc.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M3 9h14V7H3v2zm0 4h14v-2H3v2zm0 4h14v-2H3v2zm16 0h2v-2h-2v2zm0-10v2h2V7h-2zm0 6h2v-2h-2v2z"/><path d="M0 0h24v24H0z" fill="none"/></svg>


--------------------------------------------------------------------------------
/site/themes/book/static/svg/translate.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>


--------------------------------------------------------------------------------
/zguide.book:
--------------------------------------------------------------------------------
 1 | FILENAME=zguide
 2 | AUTHOR=Pieter Hintjens
 3 | TITLE=ZeroMQ Guide
 4 | SUBTITLE=
 5 | TITLENOTE=
 6 | 
 7 | #   Content
 8 | ./preface_web.txt
 9 | ./chapter1.txt
10 | ./chapter2.txt
11 | ./chapter3.txt
12 | ./chapter4.txt
13 | ./chapter5.txt
14 | ./chapter6.txt
15 | ./chapter7.txt
16 | ./chapter8.txt
17 | ./postface.txt
18 | 


--------------------------------------------------------------------------------