├── .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 | 2 | -------------------------------------------------------------------------------- /bin/asciitosvg/objects/diamond.path: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /bin/asciitosvg/objects/document.path: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /bin/asciitosvg/objects/storage.path: -------------------------------------------------------------------------------- 1 | 2 | 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 := ""; 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 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 | 3 | Memcheck:Param 4 | socketcall.sendto(msg) 5 | fun:send 6 | ... 7 | } 8 | -------------------------------------------------------------------------------- /examples/C/version.c: -------------------------------------------------------------------------------- 1 | // Report 0MQ version 2 | 3 | #include 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 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 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 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 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 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 . 5 | -------------------------------------------------------------------------------- /examples/Objective-C/ObjCExamples/ObjCExamples_Prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 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 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 | 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 | 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 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 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 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 | 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 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 | 2 | 3 | -------------------------------------------------------------------------------- /site/layouts/shortcodes/details.html: -------------------------------------------------------------------------------- 1 |
2 | {{ cond .IsNamedParams (.Get "title") (.Get 0) }} 3 |
4 | {{ .Inner | markdownify }} 5 |
6 |
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 |
7 |
8 | Figure {{ $figno }} - {{ $title }} 9 |
10 |
11 | 12 |
13 |
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 | {{}} 13 | ``` 14 | 15 | {{
}} 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 | 2 | {{ .Text | safeHTML }} 3 | # 4 | 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 |

2 | 3 | {{- with .Site.Params.BookLogo -}} 4 | Logo 5 | {{- end -}} 6 | {{ .Site.Title }} 7 | 8 |

9 | -------------------------------------------------------------------------------- /site/themes/book/layouts/partials/docs/comments.html: -------------------------------------------------------------------------------- 1 | 2 | {{ template "_internal/disqus.html" . }} 3 | -------------------------------------------------------------------------------- /site/themes/book/layouts/partials/docs/date.html: -------------------------------------------------------------------------------- 1 | 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 |
2 |

3 | 4 |

5 |
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 |
{{ partial "docs/date" (dict "Date" . "Format" $.Site.Params.BookDateFormat) }}
3 | {{ end }} 4 | 5 | {{ range $taxonomy, $_ := .Site.Taxonomies }} 6 | {{ with $terms := $.GetTerms $taxonomy }} 7 |
8 | {{ range $n, $term := $terms }}{{ if $n }}, {{ end }} 9 | {{ $term.Title }} 10 | {{- end }} 11 |
12 | {{ end }} 13 | {{ end }} 14 | -------------------------------------------------------------------------------- /site/themes/book/layouts/partials/docs/search.html: -------------------------------------------------------------------------------- 1 | {{ if default true .Site.Params.BookSearch }} 2 | 7 | {{ end }} 8 | -------------------------------------------------------------------------------- /site/themes/book/layouts/partials/docs/title.html: -------------------------------------------------------------------------------- 1 | 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 |
3 |

4 | {{ .Title }} 5 |

6 | {{ partial "docs/post-meta" . }} 7 |

8 | {{- .Content -}} 9 |

10 |
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 | 11 | {{ $.Inner }} 12 | 13 | -------------------------------------------------------------------------------- /site/themes/book/layouts/shortcodes/columns.html: -------------------------------------------------------------------------------- 1 |
2 | {{ range split .Inner "<--->" }} 3 |
4 | {{ . | markdownify }} 5 |
6 | {{ end }} 7 |
8 | -------------------------------------------------------------------------------- /site/themes/book/layouts/shortcodes/details.html: -------------------------------------------------------------------------------- 1 |
2 | {{ cond .IsNamedParams (.Get "title") (.Get 0) }} 3 |
4 | {{ .Inner | markdownify }} 5 |
6 |
7 | -------------------------------------------------------------------------------- /site/themes/book/layouts/shortcodes/hint.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Inner | markdownify }} 3 |
4 | -------------------------------------------------------------------------------- /site/themes/book/layouts/shortcodes/mermaid.html: -------------------------------------------------------------------------------- 1 | {{ if not (.Page.Scratch.Get "mermaid") }} 2 | 3 | 4 | 9 | {{ .Page.Scratch.Set "mermaid" true }} 10 | {{ end }} 11 | 12 |

13 | {{- .Inner -}} 14 |

15 | -------------------------------------------------------------------------------- /site/themes/book/layouts/shortcodes/section.html: -------------------------------------------------------------------------------- 1 |
2 | {{ range .Page.Pages }} 3 |
4 | {{ partial "docs/title" . }} 5 |
6 |
7 | {{ default .Summary .Description }} 8 |
9 | {{ end }} 10 |
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 |
3 |

{{ .Title | title }}

4 | {{ $taxonomies := index .Site.Taxonomies .Page.Type }} 5 | {{ range $taxonomies }} 6 | 7 | {{ end }} 8 |
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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /site/themes/book/static/svg/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/book/static/svg/menu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/book/static/svg/toc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/themes/book/static/svg/translate.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------