Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Rebuilt for latest changes

  • Loading branch information...
commit 76172da40df23b93106710c3c0496f74bfac73df 1 parent 8c8b588
@hintjens hintjens authored
View
44 .bookmarks
@@ -1,42 +1,42 @@
-Architecture-of-the-MQ-Community Architecture of the 0MQ Community
Binary-Star-Implementation Binary Star Implementation
+Architecture-of-the-MQ-Community Architecture of the 0MQ Community
Protocol-Assertions Protocol Assertions
The-ROUTER-to-ROUTER-Combination The ROUTER to ROUTER Combination
Burnout Burnout
Upgrading-from-MQ-to-MQ Upgrading from 0MQ/2.2 to 0MQ/3.2
-Writing-the-Unprotocol Writing the Unprotocol
Republishing-Updates-from-Clients Republishing Updates from Clients
Vadim-Shalts-s-Story Vadim Shalts's Story
-the-community Chapter 6 - The 0MQ Community
+Writing-the-Unprotocol Writing the Unprotocol
Service-Oriented-Reliable-Queuing-Majordomo-Pattern Service-Oriented Reliable Queuing (Majordomo Pattern)
-Preemptive-Discovery-over-Raw-Sockets Preemptive Discovery over Raw Sockets
-Goals Goals
+the-community Chapter 6 - The 0MQ Community
ROUTER-Broker-and-DEALER-Workers ROUTER Broker and DEALER Workers
-Symbolic-Links Symbolic Links
-Crazy-Beautiful-and-Easy Crazy, Beautiful, and Easy
+Goals Goals
+Preemptive-Discovery-over-Raw-Sockets Preemptive Discovery over Raw Sockets
Messaging-Patterns Messaging Patterns
-Step-Draw-a-Rough-Architecture Step 2: Draw a Rough Architecture
+Crazy-Beautiful-and-Easy Crazy, Beautiful, and Easy
+Symbolic-Links Symbolic Links
Divide-and-Conquer Divide and Conquer
+Step-Draw-a-Rough-Architecture Step 2: Draw a Rough Architecture
Group-Messaging Group Messaging
-Getting-an-Out-of-band-Snapshot Getting an Out-of-band Snapshot
A-Minor-Note-on-Strings A Minor Note on Strings
+Getting-an-Out-of-band-Snapshot Getting an Out-of-band Snapshot
The-Flash-Mob The Flash Mob
The-Mystic The Mystic
-advanced-architecture Chapter 7 - Advanced Architecture using 0MQ
ROUTER-Broker-and-REQ-Workers ROUTER Broker and REQ Workers
+advanced-architecture Chapter 7 - Advanced Architecture using 0MQ
Initial-Design-Cut-the-API Initial Design Cut - the API
Making-a-Clean-Exit Making a Clean Exit
-MQ-is-Not-a-Neutral-Carrier 0MQ is Not a Neutral Carrier
Upfront-Coordination Upfront Coordination
Chapter-A-Framework-for-Distributed-Computing Chapter 8 - A Framework for Distributed Computing
-The-Zen-of-Zero The Zen of Zero
Why-We-Needed-MQ Why We Needed 0MQ
+The-Zen-of-Zero The Zen of Zero
Tom-van-Leeuwen-s-Story Tom van Leeuwen's Story
A-Plausible-Minimal-Implementation A Plausible Minimal Implementation
Using-Sockets-to-Carry-Data Using Sockets to Carry Data
Chapter-Reliable-Request-Reply-Patterns Chapter 4 - Reliable Request-Reply Patterns
-Configuration Configuration
Slow-Subscriber-Detection-Suicidal-Snail-Pattern Slow Subscriber Detection (Suicidal Snail Pattern)
+Configuration Configuration
How-the-Guide-Happened How the Guide Happened
Working-with-Messages Working with Messages
Heartbeating Heartbeating
@@ -68,8 +68,8 @@ Ephemeral-Values Ephemeral Values
Pub-Sub-Message-Envelopes Pub-Sub Message Envelopes
Step-Decide-on-the-Contracts Step 3: Decide on the Contracts
Tracing-Activity Tracing Activity
-Simplicity-vs-Complexity Simplicity vs. Complexity
Language Language
+Simplicity-vs-Complexity Simplicity vs. Complexity
Starting-Assumptions Starting Assumptions
reliable-request-reply Chapter 4 - Reliable Request-Reply Patterns
Idempotent-Services Idempotent Services
@@ -127,15 +127,15 @@ File-Stability File Stability
Programming-with-MQ Programming with 0MQ
Step-Internalize-the-Semantics Step 1: Internalize the Semantics
The-Constant-Gardener The Constant Gardener
-Representing-State-as-Key-Value-Pairs Representing State as Key-Value Pairs
-Unprotocols Unprotocols
Robustness-in-Conflict Robustness in Conflict
+Unprotocols Unprotocols
+Representing-State-as-Key-Value-Pairs Representing State as Key-Value Pairs
Exploring-ROUTER-Sockets Exploring ROUTER Sockets
How-MQ-Lost-its-Road-map How 0MQ Lost its Road-map
-Transport-Bridging Transport Bridging
Chapter-Advanced-Publish-Subscribe-Patterns Chapter 5 - Advanced Publish-Subscribe Patterns
-Delivery-Notifications Delivery Notifications
+Transport-Bridging Transport Bridging
The-DEALER-to-REP-Combination The DEALER to REP Combination
+Delivery-Notifications Delivery Notifications
The-Benevolent-Tyrant The Benevolent Tyrant
Cost-of-Failure Cost of Failure
Identities-and-Addresses Identities and Addresses
@@ -261,19 +261,19 @@ Architecture-of-a-Single-Cluster Architecture of a Single Cluster
Audience Audience
Model-Three-Complex-and-Nasty Model Three - Complex and Nasty
Development-Process Development Process
-Infinite-Property Infinite Property
The-Rolling-Stone The Rolling Stone
+Infinite-Property Infinite Property
Example-Zyre-Application Example Zyre Application
Postface Postface
Making-a-Detour Making a Detour
-Complexity-Oriented-Design Complexity-Oriented Design
State-Machines State Machines
-Multiple-Nodes-on-One-Device Multiple Nodes on One Device
+Complexity-Oriented-Design Complexity-Oriented Design
More-about-UDP More about UDP
+Multiple-Nodes-on-One-Device Multiple Nodes on One Device
Intermediaries-and-Proxies Intermediaries and Proxies
Reliable-Publish-Subscribe-Clone-Pattern Reliable Publish-Subscribe (Clone Pattern)
-The-Process The Process
Evolution-of-Public-Contracts Evolution of Public Contracts
+The-Process The Process
Rob-Gagnon-s-Story Rob Gagnon's Story
-Handling-Interrupt-Signals Handling Interrupt Signals
Code-Generation Code Generation
+Handling-Interrupt-Signals Handling Interrupt Signals
View
2  .cache_hx
@@ -3,9 +3,9 @@ c5c3b37b6dbed1f8974d788182f886ff939171cf all.wd
a204a67ca01485ccaee1eeef759a9218cd88eea6 chapter1.wd
c233ba3d79cd799aaa0daa8072ac2aee3b59215b chapter2.wd
5238e889920ab275dd77f95a66080484e7f5cb5f chapter3.wd
-3e95e3b217737ba277e03fa7f7a6a11a847be74f chapter4.wd
0d0ebfe0cb731351970e0c4c43436e25810b17b9 chapter5.wd
df2601d32d02e88a54da95c9992e5642aa28f025 chapter6.wd
591d44c9da84e5362de2feb52948d7703ea3873f chapter7.wd
3944a13d05c4ce5e10bd9e61b37f50828265f3e5 chapter8.wd
52111bb045ac07d1a9b7f4bb2434cce0ade22f62 postface.wd
+0d9f65b652e5e201b14d5ae7dad2b8636533c957 chapter4.wd
View
2  .cache_lua
@@ -3,9 +3,9 @@
a93fe6ded1ea95e4304f57e012d2cc8aaab120e5 chapter1.wd
dd1b302a0c96c2889e9a24ffa12fb200676f1b51 chapter2.wd
7e22a3d970b6b5f16b1707cb01dda790ea710bfa chapter3.wd
-af90ef4e59c45ba176a8ec0ba73d0cf5aca18c82 chapter4.wd
b4031da0d71cdb8891ec924366827f9a6925f0b0 chapter5.wd
df2601d32d02e88a54da95c9992e5642aa28f025 chapter6.wd
8dc624b4d51da3cfecc8ab126974046a7352ccd7 chapter7.wd
4d714555756da1c50d25ecda84f48492e888b472 chapter8.wd
52111bb045ac07d1a9b7f4bb2434cce0ade22f62 postface.wd
+ea0bc837998ef0631ba97163efa9339c5b5e0d4b chapter4.wd
View
2  .cache_main
@@ -1 +1 @@
-f6b7091c2c538b5c73c3b0cc3d6d728e6505411a scoreboard.wd
+3904c5da417b6368eeefbdb0e598fc8ebbf61f91 scoreboard.wd
View
2  .cache_page
@@ -3,9 +3,9 @@
28ea8caa25628b5f876767190dee67b5cc18e824 chapter1.wd
0d664127a6abcb741ea84ab390a453c0247737b2 chapter2.wd
ca4c926dfc5ca9ea18a824f69abdea88eb8c1be4 chapter3.wd
-a5a131a3fcb7a71458a862cedd101e590708165e chapter4.wd
e6c1e0ac2966a5f6d51a01b16a30aa703a1ac405 chapter5.wd
df2601d32d02e88a54da95c9992e5642aa28f025 chapter6.wd
d9c8666956f4059457e6965998982a2c7e1ea0cf chapter7.wd
cecad48596a0f4e502f6ad9950f8b7ff5925c048 chapter8.wd
52111bb045ac07d1a9b7f4bb2434cce0ade22f62 postface.wd
+b4ed384ff4d553d62c2b1c0580efef079f714fec chapter4.wd
View
2  .cache_php
@@ -3,9 +3,9 @@
ded0cbf82a8f183d2fe1cd2be5d612440fe28b44 chapter1.wd
f2a45342099e2fbc14ebe5f643a16e8224b65db2 chapter2.wd
14de7321a9e72b7c86b9a6c05b87f1dba84d2827 chapter3.wd
-ff63b0a158a1cae8be20f4fbf178b3a8ed1494e0 chapter4.wd
c6a97b001c84f973f3a1dc83fbe225f3c85ff828 chapter5.wd
df2601d32d02e88a54da95c9992e5642aa28f025 chapter6.wd
a1dcc7522c20dff5de9835412fa84524d8d15b21 chapter7.wd
57e8174c9a57196f8f0749b7dbe8aac6e43204c7 chapter8.wd
52111bb045ac07d1a9b7f4bb2434cce0ade22f62 postface.wd
+0bc979ddd77fc0834fecdebc44c04d64973c65ea chapter4.wd
View
2  .cache_py
@@ -3,9 +3,9 @@
89b9ef0f30691902a9d49ef968774648e2a9443a chapter1.wd
5bae0cb499185ce20fa843d726b2d819516e5e71 chapter2.wd
314120180cf751fc476a3b2dec7d10ba3c55e8e6 chapter3.wd
-356b9b543d42999bbab506b4cd5490fa4caec271 chapter4.wd
6ec5f41fd4bc64a1f71fa134019f201cee585c7a chapter5.wd
df2601d32d02e88a54da95c9992e5642aa28f025 chapter6.wd
2b2bee9e88dc9703b7bddd37d53f59ed3dc65411 chapter7.wd
7f1a4768f3a56dc81a0e02f1d8f23e18682dff9d chapter8.wd
52111bb045ac07d1a9b7f4bb2434cce0ade22f62 postface.wd
+138cf46a8c36d6e5e5c4b48340dca302b3f3e046 chapter4.wd
View
14 .signatures
@@ -71,8 +71,8 @@ b02005487696f2e75f5fe6ebc2a9d6f34d425425 examples/Erlang/hwclient.es
8d65609f4c5a245f18abdf39ea5f17378ebe7949 examples/Python/clonecli1.py
4a39ab9dcffe45ee068128e8bb2b79071c654c70 images/fig34.txt
19950526a70c9d6d69aa49e26410278a76a2c7b9 examples/Python/mdcliapi2.py
-5e920cc8ab69c567a8e86f514ed330b684ec8803 examples/Java/lpclient.java
533912e22da75f4c27e8f865dca8858b804f0346 examples/C++/mtserver.cpp
+5e920cc8ab69c567a8e86f514ed330b684ec8803 examples/Java/lpclient.java
f5255561e6c274c9214ca1e53e4b40d6fff86d47 examples/Java/tripping.java
b9176d1cf9d04301ee470dbe13e3abb4baee3360 examples/Java/version.java
dfe97e2297014f74a9941bbe0d28d6021de0eb51 examples/F#/syncpub.fsx
@@ -91,6 +91,7 @@ ce11487c92b25457062d16cfa03aaee428dadc96 examples/Tcl/flclient1.tcl
baa5687f33207675ad5a256620598e09f1dd67a6 examples/Haskell/identity.hs
e51a5ba89f2f990a74143e947d5eb138b4437bd0 examples/C/tasksink2.c
6f356d1d98158e5ded441b702cca208aca02f052 examples/Haxe/wuclient.hx
+509ecc744f464f4966a891a01cd29624d82382e5 examples/C#/ppworker.cs
6d7629f3a49bffaef56ad21691dd42178608c8b5 examples/Ruby/ticlient.rb
87bb28c49bb1dc83b09dd58aac624a0ea8c06761 examples/C#/mtserver.cs
01b94a290674970a11b07b24f76872a78cfb238f examples/Racket/syncpub.rkt
@@ -125,8 +126,8 @@ c9aa1cea8ad4b225bfaeaae56d2388db2a4bbe13 listings/Lua/listing_52.lua
33eb7e43b88c56411dbb639471fb164e7331d274 examples/Delphi/taskwork.dpr
5d83e50701bd3d32af15cb0739ed8888e721c32c fragments/C/iothreads.c
e0588e9167edf9fb11154ea7364ed1f45b7b8cba examples/C/mdclient2.c
-b55d6909f384e41673a0ac08c2fc383af38378d3 examples/Haxe/tasksink2.hx
946d8d8e0dac7224685f0b82024a33573bbf6248 images/fig2.html
+b55d6909f384e41673a0ac08c2fc383af38378d3 examples/Haxe/tasksink2.hx
6ac10c128697c5696144b44e6b6f2b22365f8fae examples/C/rrworker.c
c2e5818c670b5999a3a1de96b1080932df2ec612 examples/Felix/wuclient.flx
aa7f062cb4b086f3c00fd02a769fc15c41751829 images/fig55.html
@@ -134,8 +135,8 @@ aa7f062cb4b086f3c00fd02a769fc15c41751829 images/fig55.html
8aa0ee8cdceada1858674ac5f7766ccd1391e0c1 examples/Ruby/psenvsub.rb
89e33e7a0541c59b007ed1cd5a7906c7f29f1e54 images/fig14.html
ddfc2281b409a383f380b8bbd2ef8b63916740e3 examples/Clojure/tasksink2.clj
-757c637e8ce0b9cdedceab28224d7081baef0172 examples/Tcl/rtdealer.tcl
6e6502fd6552b22bc7b2ac4b3a5b1e3bf0fbafc5 examples/Python/syncpub.py
+757c637e8ce0b9cdedceab28224d7081baef0172 examples/Tcl/rtdealer.tcl
d50c97ecd4fdfc0c982323734e4f7a3554366b0b fragments/C/endpoint-hashing.c
a3c78d15e03ff754a35ad2d4d9c5129bd6e0781b examples/Erlang/syncsub.es
d4a51d25b984a549dd99076aa80900d071f9c2d1 examples/Ruby/hwclient.rb
@@ -797,6 +798,7 @@ bccd2903912a0ee9327147df46c2f2ee4af4eb7d examples/PHP/msgqueue.php
5ab6f9eae9b48e19d8d9db8fe00491d7afde1d09 examples/Perl/hwclient.pl
3c6a9991700252ff4bf317ea30374b89f5397369 examples/PHP/ppqueue.php
eac1fdeea054fa75aa75ca66f260c4311e1f20cd fragments/C/fmq-server-methods.c
+ed847f4794451efafbc3fe0147f473d39b0f9d02 examples/C#/ppqueue.cs
050c9a52a5e95e34019579a68f6d69ac4593e074 examples/Haxe/psenvpub.hx
454aaf49cf11eb196137db4b526ade21a29b9678 examples/PHP/rrworker.php
8e636c1772843986c290c680361eb88fb98eeadf examples/Python/clonesrv3.py
@@ -882,7 +884,7 @@ e0262047664aeec36e21064043def139c1fc9155 images/fig70.txt
c5daa5026683f992a38e451a02137c852ac10cf6 examples/Ruby/taskwork.rb
37cae4e61787d0e919eecb92bf8bb120b7af9720 examples/C#/wuclient.cs
b42c1d6d1c4ffafeddf3195ebd8d32454a31d131 examples/PHP/flclient2.php
-475fc02c5d2db1db93a128341110240d89565e76 images/fig3.txt
+f05049e9fe014ac889bf9adf03ef0b1b1786482f images/fig3.txt
49d8e81d1a2a15f28797329da96cf4357c0295b5 listings/Tcl/listing_53.tcl
6d0728c1f389c9146353665ea97e9dccd013c067 examples/Ruby/identity.rb
355f613847209ec070652f0172c7977bb831bbbc fragments/C/clone-methods.c
@@ -1026,8 +1028,8 @@ ac1156ba2f953b3997550affe245164d50925024 examples/PHP/lbbroker2.php
a58db4e6242dcbd31dcfe8248382a69cb5ebf4dc examples/C/rtdealer.c
3505522b83dc283a63a9ce5654cd9d7071612314 images/fig4.txt
98913d674c40172faadc26833ee49e6b298c507c fragments/C/proxy.c
-2f7baf7baed1713272d61725d94f3aa7859e47a1 examples/Go/mspoller.go
b59f86b32ba40e90f104ba6aa9cbb683876b9853 examples/Java/ppworker.java
+2f7baf7baed1713272d61725d94f3aa7859e47a1 examples/Go/mspoller.go
7377682230bfb1631480a93cd27cadacaeb4f1e3 examples/Python/psenvpub.py
-8e4e30e4e224edd0c4a78420a6ddb3c0589e1cfb images/fig26.txt
cf00f05adee687a45fa3c0bd1d1b90a7843f0070 images/fig63.html
+8e4e30e4e224edd0c4a78420a6ddb3c0589e1cfb images/fig26.txt
View
4 chapter1.txt
@@ -111,9 +111,9 @@ socket.send ("Hello")
Then what goes onto the wire is a length (one byte for shorter strings) and the string contents, as individual characters[figure].
[[code type="textdiagram" title="A 0MQ string"]]
-+-----+ +-----+-----+-----+-----+-----+
+#-----# #-----+-----+-----+-----+-----#
| 5 | | H | e | l | l | o |
-+-----+ +-----+-----+-----+-----+-----+
+#-----# #-----+-----+-----+-----+-----#
[[/code]]
And if you read this from a C program, you will get something that looks like a string, and might by accident act like a string (if by luck the five bytes find themselves followed by an innocently lurking null), but isn't a proper string. When your client and server don't agree on the string format, you will get weird results.
View
BIN  images/fig3.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
48 images/fig3.svg
@@ -26,27 +26,39 @@
<path d="M 0 0 L 10 5 L 0 10 z" />
</marker>
</defs><g id="boxes" stroke="black" stroke-width="2" fill="none" >
+<g id="group0">
+ <path id="path0" filter="url(#dsFilter)" fill="#fff" d="M 4.5 8 L 58.5 8 L 58.5 40 L 4.5 40 Z" />
+ <text x="26.1" y="28.8" id="text0" fill="#000" stroke="none" style="font-family:Consolas,Monaco,Anonymous Pro,Anonymous,Bitstream Sans Mono,monospace;font-size:15.2px" >5</text>
+
+</g>
+<g id="group2">
+ <path id="path2" filter="url(#dsFilter)" fill="#fff" d="M 103.5 8 L 373.5 8 L 373.5 40 L 103.5 40 Z" />
+ <text x="125.1" y="28.8" id="text2" fill="#000" stroke="none" style="font-family:Consolas,Monaco,Anonymous Pro,Anonymous,Bitstream Sans Mono,monospace;font-size:15.2px" >H</text>
+
+ <text x="179.1" y="28.8" id="text2" fill="#000" stroke="none" style="font-family:Consolas,Monaco,Anonymous Pro,Anonymous,Bitstream Sans Mono,monospace;font-size:15.2px" >e</text>
+
+ <text x="233.1" y="28.8" id="text2" fill="#000" stroke="none" style="font-family:Consolas,Monaco,Anonymous Pro,Anonymous,Bitstream Sans Mono,monospace;font-size:15.2px" >l</text>
+
+ <text x="287.1" y="28.8" id="text2" fill="#000" stroke="none" style="font-family:Consolas,Monaco,Anonymous Pro,Anonymous,Bitstream Sans Mono,monospace;font-size:15.2px" >l</text>
+
+ <text x="341.1" y="28.8" id="text2" fill="#000" stroke="none" style="font-family:Consolas,Monaco,Anonymous Pro,Anonymous,Bitstream Sans Mono,monospace;font-size:15.2px" >o</text>
+
+</g>
</g>
<g id="lines" stroke="black" stroke-width="2" fill="none" >
+<g id="group84">
+ <path id="path84" d="M 157.5 8 L 157.5 40 " />
+</g>
+<g id="group109">
+ <path id="path109" d="M 211.5 8 L 211.5 40 " />
+</g>
+<g id="group134">
+ <path id="path134" d="M 265.5 8 L 265.5 40 " />
+</g>
+<g id="group159">
+ <path id="path159" d="M 319.5 8 L 319.5 40 " />
+</g>
</g>
<g id="text" fill="black" style="font-family:Consolas,Monaco,Anonymous Pro,Anonymous,Bitstream Sans Mono,monospace;font-size:15.2px" >
-<text x="-0.9" y="12.8" id="text0" fill="#000" >+-----+ </text>
-<text x="98.1" y="12.8" id="text1" fill="#000" >+-----+-----+-----+-----+-----+</text>
-<text x="-0.9" y="28.8" id="text2" fill="#000" >|</text>
-<text x="26.1" y="28.8" id="text3" fill="#000" >5</text>
-<text x="53.1" y="28.8" id="text4" fill="#000" >|</text>
-<text x="98.1" y="28.8" id="text5" fill="#000" >|</text>
-<text x="125.1" y="28.8" id="text6" fill="#000" >H</text>
-<text x="152.1" y="28.8" id="text7" fill="#000" >|</text>
-<text x="179.1" y="28.8" id="text8" fill="#000" >e</text>
-<text x="206.1" y="28.8" id="text9" fill="#000" >|</text>
-<text x="233.1" y="28.8" id="text10" fill="#000" >l</text>
-<text x="260.1" y="28.8" id="text11" fill="#000" >|</text>
-<text x="287.1" y="28.8" id="text12" fill="#000" >l</text>
-<text x="314.1" y="28.8" id="text13" fill="#000" >|</text>
-<text x="341.1" y="28.8" id="text14" fill="#000" >o</text>
-<text x="368.1" y="28.8" id="text15" fill="#000" >|</text>
-<text x="-0.9" y="44.8" id="text16" fill="#000" >+-----+ </text>
-<text x="98.1" y="44.8" id="text17" fill="#000" >+-----+-----+-----+-----+-----+</text>
</g>
</svg>
View
4 images/fig3.txt
@@ -1,3 +1,3 @@
-+-----+ +-----+-----+-----+-----+-----+
+#-----# #-----+-----+-----+-----+-----#
| 5 | | H | e | l | l | o |
-+-----+ +-----+-----+-----+-----+-----+
+#-----# #-----+-----+-----+-----+-----#
Please sign in to comment.
Something went wrong with that request. Please try again.