Browse files

Updated Guide to latest text

  • Loading branch information...
1 parent 19ddc68 commit 0b32a211ae19408b7b389699842767df99190248 @hintjens hintjens committed Mar 23, 2013
Showing with 37,966 additions and 55,011 deletions.
  1. +81 −41 .bookmarks
  2. +10 −10 .cache_hx
  3. +10 −10 .cache_lua
  4. +1 −1 .cache_main
  5. +10 −10 .cache_page
  6. +10 −10 .cache_php
  7. +10 −10 .cache_py
  8. +299 −240 .signatures
  9. +4 −0 bin/mkwikidot
  10. +3 −3 chapter7.txt
  11. +1 −1 chapter8.txt
  12. +2 −10 examples/Java/hwserver.java
  13. +3 −3 fragments/C/bstar.c
  14. +0 −5 fragments/C/clone-methods.c
  15. +1 −1 fragments/C/errorhandling.c
  16. +1 −1 fragments/C/fmq-server-methods.c
  17. +1 −3 fragments/C/killsignal.c
  18. +1 −2 fragments/C/lbreader.c
  19. +21 −27 fragments/C/lowreader.c
  20. +4 −3 fragments/C/publish-file.c
  21. +2 −4 fragments/C/recvmore.c
  22. +0 −2 fragments/C/upgrade-shim.c
  23. +2 −1 fragments/C/zyre-beacon-recv.c
  24. +1 −1 fragments/C/zyre-peer-new-socket.c
  25. +4 −2 fragments/C/zyre-tester-main.c
  26. +937 −2,070 images/fig17.eps
  27. BIN images/fig17.png
  28. +52 −85 images/fig17.svg
  29. +2 −14 images/fig17.txt
  30. +969 −1,885 images/fig18.eps
  31. BIN images/fig18.png
  32. +55 −73 images/fig18.svg
  33. +30 −34 images/fig18.txt
  34. +884 −1,674 images/fig19.eps
  35. BIN images/fig19.png
  36. +73 −95 images/fig19.svg
  37. +0 −3 images/fig19.txt
  38. +8,377 −13,339 images/fig25.eps
  39. BIN images/fig25.png
  40. +195 −206 images/fig25.svg
  41. +58 −62 images/fig25.txt
  42. +1,410 −519 images/fig3.eps
  43. BIN images/fig3.png
  44. +17 −18 images/fig3.svg
  45. +3 −3 images/fig3.txt
  46. +850 −1,792 images/fig32.eps
  47. BIN images/fig32.png
  48. +17 −18 images/fig32.svg
  49. +1 −1 images/fig32.txt
  50. +998 −1,936 images/fig38.eps
  51. BIN images/fig38.png
  52. +58 −59 images/fig38.svg
  53. +31 −31 images/fig38.txt
  54. +899 −1,858 images/fig39.eps
  55. BIN images/fig39.png
  56. +51 −58 images/fig39.svg
  57. +8 −12 images/fig39.txt
  58. +347 −709 images/fig40.eps
  59. BIN images/fig40.png
  60. +42 −43 images/fig40.svg
  61. +0 −1 images/fig40.txt
  62. +511 −1,073 images/fig41.eps
  63. BIN images/fig41.png
  64. +18 −19 images/fig41.svg
  65. +8 −8 images/fig41.txt
  66. +369 −731 images/fig42.eps
  67. BIN images/fig42.png
  68. +61 −62 images/fig42.svg
  69. +15 −17 images/fig42.txt
  70. +248 −550 images/fig43.eps
  71. BIN images/fig43.png
  72. +28 −29 images/fig43.svg
  73. +14 −14 images/fig43.txt
  74. +3,181 −5,031 images/fig44.eps
  75. BIN images/fig44.png
  76. +92 −93 images/fig44.svg
  77. +9 −13 images/fig44.txt
  78. +2,196 −2,130 images/fig45.eps
  79. BIN images/fig45.png
  80. +42 −49 images/fig45.svg
  81. +33 −37 images/fig45.txt
  82. +3,417 −3,912 images/fig46.eps
  83. BIN images/fig46.png
  84. +65 −66 images/fig46.svg
  85. +17 −21 images/fig46.txt
  86. +2,041 −2,033 images/fig48.eps
  87. BIN images/fig48.png
  88. +59 −60 images/fig48.svg
  89. +2 −4 images/fig48.txt
  90. +2,193 −2,294 images/fig49.eps
  91. BIN images/fig49.png
  92. +70 −71 images/fig49.svg
  93. +2 −4 images/fig49.txt
  94. +761 −1,552 images/fig5.eps
  95. BIN images/fig5.png
  96. +50 −75 images/fig5.svg
  97. +29 −33 images/fig5.txt
  98. +747 −1,775 images/fig50.eps
  99. BIN images/fig50.png
  100. +38 −39 images/fig50.svg
  101. +2 −8 images/fig50.txt
  102. +1,213 −381 images/fig52.eps
  103. BIN images/fig52.png
  104. +9 −10 images/fig52.svg
  105. +6 −6 images/fig52.txt
  106. +1,217 −385 images/fig53.eps
  107. BIN images/fig53.png
  108. +10 −11 images/fig53.svg
  109. +9 −9 images/fig53.txt
  110. +215 −591 images/fig54.eps
  111. BIN images/fig54.png
  112. +31 −32 images/fig54.svg
  113. +0 −1 images/fig54.txt
  114. +485 −1,137 images/fig56.eps
  115. BIN images/fig56.png
  116. +39 −43 images/fig56.svg
  117. +26 −26 images/fig56.txt
  118. +498 −1,152 images/fig57.eps
  119. BIN images/fig57.png
  120. +53 −57 images/fig57.svg
  121. +26 −26 images/fig57.txt
  122. +106 −341 images/fig64.eps
  123. BIN images/fig64.png
  124. +4 −5 images/fig64.svg
  125. +157 −427 images/fig65.eps
  126. BIN images/fig65.png
  127. +6 −7 images/fig65.svg
  128. +186 −506 images/fig66.eps
  129. BIN images/fig66.png
  130. +8 −9 images/fig66.svg
  131. +264 −551 images/fig67.eps
  132. BIN images/fig67.png
  133. +7 −8 images/fig67.svg
  134. +205 −445 images/fig8.eps
  135. BIN images/fig8.png
  136. +2 −3 images/fig8.svg
  137. +6 −6 images/fig8.txt
  138. +1 −1 listings/C/listing_1.c
  139. +7 −8 listings/C/listing_3.c
  140. +6 −25 listings/C/listing_7.c
View
122 .bookmarks
@@ -1,42 +1,46 @@
-Architecture-of-the-MQ-Community Architecture of the 0MQ Community
+Cooperative-Discovery-Using-UDP-Broadcasts Cooperative Discovery Using UDP Broadcasts
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
+Republishing-Updates-from-Clients Republishing Updates from Clients
Vadim-Shalts-s-Story Vadim Shalts's Story
Writing-the-Unprotocol Writing the Unprotocol
-Republishing-Updates-from-Clients Republishing Updates from Clients
-the-community The ØMQ Community
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 Advanced Architecture using ØMQ
+Point-to-Point-Messaging Point-to-Point Messaging
ROUTER-Broker-and-REQ-Workers ROUTER Broker and REQ Workers
-Initial-Design-Cut-the-API Initial Design Cut - the API
+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
+Large-Scale-File-Publishing-FileMQ Large-Scale File Publishing: FileMQ
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
+Protocols-Without-The-Goats Protocols Without The Goats
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,23 +72,28 @@ 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 Reliable Request-Reply Patterns
+reliable-request-reply Chapter 4 - Reliable Request-Reply Patterns
Idempotent-Services Idempotent Services
Audience-for-This-Book Audience for This Book
Binary-Logging-Protocol Binary Logging Protocol
Shared-Queue-DEALER-and-ROUTER-sockets Shared Queue (DEALER and ROUTER sockets)
+The-Load-Balancing-Pattern The Load Balancing Pattern
+Project-Administration Project Administration
Surprise-and-Expectations Surprise and Expectations
+Test-Use-Case-The-Track-Tool Test Use Case: The Track Tool
The-Social-Engineer The Social Engineer
+Multipart-Messages Multipart Messages
How-This-Book-Happened How This Book Happened
I-O-Threads I/O Threads
+Pub-Sub-Tracing-Espresso-Pattern Pub-Sub Tracing (Espresso Pattern)
Economics-of-Participation Economics of Participation
Ask-and-Ye-Shall-Receive Ask and Ye Shall Receive
Transferring-Files Transferring Files
Pros-and-Cons-of-Publish-Subscribe Pros and Cons of Publish-Subscribe
-Zero-Copy Zero Copy
+Zero-Copy Zero-Copy
Disconnected-Reliability-Titanic-Pattern Disconnected Reliability (Titanic Pattern)
Test-Results Test Results
Node-Coordination Node Coordination
@@ -95,27 +104,31 @@ Scaling-to-Multiple-Clusters Scaling to Multiple Clusters
The-Load-balancing-Pattern The Load-balancing Pattern
Step-Write-a-Minimal-End-to-End-Solution Step 4: Write a Minimal End-to-End Solution
The-Lazy-Perfectionist The Lazy Perfectionist
+On-Up-Front-Testing On Up-Front Testing
Licensing-and-Ownership Licensing and Ownership
Getting-an-Official-Port-Number Getting an Official Port Number
-High-Water-Marks High Water Marks
+High-Water-Marks High-Water Marks
How-to-Make-Really-Large-Architectures How to Make Really Large Architectures
Tales-from-Out-There Tales from Out There
Conclusion Conclusion
Licensing Licensing
Recovery-and-Late-Joiners Recovery and Late Joiners
Serializing-your-Data Serializing your Data
Prototyping-the-State-Flow Prototyping the State Flow
+Authentication-Using-SASL Authentication Using SASL
Signaling-between-Threads-PAIR-sockets Signaling between Threads (PAIR sockets)
The-REQ-to-REP-Combination The REQ to REP Combination
Federation-vs-Peering Federation vs. Peering
Why-use-the-GPLv-for-Public-Specifications Why use the GPLv3 for Public Specifications?
The-Mindful-General The Mindful General
The-Pirate-Gang The Pirate Gang
+A-Self-Healing-P-P-Network-in-Seconds A Self-Healing P2P Network in 30 Seconds
Shrugging-It-Off Shrugging It Off
Part-Software-Engineering-using-MQ Part 2 - Software Engineering using 0MQ
High-availability-Pair-Binary-Star-Pattern High-availability Pair (Binary Star Pattern)
The-Request-Reply-Mechanisms The Request-Reply Mechanisms
Spinning-off-a-Library-Project Spinning off a Library Project
+Pros-and-Cons-of-Pub-Sub Pros and Cons of Pub-Sub
Multithreading-with-MQ Multithreading with 0MQ
Plugging-Sockets-Into-the-Topology Plugging Sockets Into the Topology
On-Up-front-Testing On Up-front Testing
@@ -125,37 +138,43 @@ Client-side-Reliability-Lazy-Pirate-Pattern Client-side Reliability (Lazy Pirate
Incompatible-Changes Incompatible Changes
Hand-written-Binary-Serialization Hand-written Binary Serialization
File-Stability File Stability
+Federation-Versus-Peering Federation Versus Peering
Programming-with-MQ Programming with 0MQ
Step-Internalize-the-Semantics Step 1: Internalize the Semantics
+Contracts-Are-Hard Contracts Are Hard
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
+Up-front-Coordination Up-front Coordination
Exploring-ROUTER-Sockets Exploring ROUTER Sockets
+Reliable-Pub-Sub-Clone-Pattern Reliable Pub-Sub (Clone Pattern)
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
Suggested-Shim-Macros Suggested Shim Macros
Service-Discovery Service Discovery
postface Postface
On-Assertions On Assertions
-basics Basics
+basics Chapter 1 - Basics
A-High-Level-API-for-MQ A High-Level API for 0MQ
+Sending-and-Receiving-Messages Sending and Receiving Messages
Why-make-FileMQ Why make FileMQ?
-Model-Two-Brutal-Shotgun-Massacre Model Two - Brutal Shotgun Massacre
+Model-Two-Brutal-Shotgun-Massacre Model Two: Brutal Shotgun Massacre
Working-with-Subtrees Working with Subtrees
-A-Load-Balancing-Message-Broker A Load-Balancing Message Broker
+A-Load-Balancing-Message-Broker A Load Balancing Message Broker
+Chapter-Advanced-Pub-Sub-Patterns Chapter 5 - Advanced Pub-Sub Patterns
Using-ABNF Using ABNF
-advanced-request-reply Advanced Request-Reply Patterns
+advanced-request-reply Chapter 3 - Advanced Request-Reply Patterns
Contracts-are-Hard Contracts are Hard
High-speed-Subscribers-Black-Box-Pattern High-speed Subscribers (Black Box Pattern)
The-DEALER-to-ROUTER-Combination The DEALER to ROUTER Combination
-moving-pieces A Framework for Distributed Computing
+moving-pieces Chapter 8 - A Framework for Distributed Computing
The-Canary-Watcher The Canary Watcher
Chapter-Sockets-and-Patterns Chapter 2 - Sockets and Patterns
Content-Distribution Content Distribution
@@ -164,9 +183,12 @@ Putting-it-All-Together Putting it All Together
Design-Notes Design Notes
Chapter-Advanced-Request-Reply-Patterns Chapter 3 - Advanced Request-Reply Patterns
What-s-the-Current-Status What's the Current Status?
+Technical-Requirements Technical Requirements
Contracts-and-Protocols Contracts and Protocols
+Client-Side-Reliability-Lazy-Pirate-Pattern Client-Side Reliability (Lazy Pirate Pattern)
Brokerless-Reliability-Freelance-Pattern Brokerless Reliability (Freelance Pattern)
-The-Asynchronous-Client-Server-Pattern The Asynchronous Client-Server Pattern
+High-Availability-Pair-Binary-Star-Pattern High-Availability Pair (Binary Star Pattern)
+The-Asynchronous-Client-Server-Pattern The Asynchronous Client/Server Pattern
The-Socket-API The Socket API
Chapter-Advanced-Architecture-using-MQ Chapter 7 - Advanced Architecture using 0MQ
Step-Solve-One-Problem-and-Repeat Step 5: Solve One Problem and Repeat
@@ -179,32 +201,41 @@ Stranger-meet-Stranger Stranger, meet Stranger
Fixing-the-World Fixing the World
The-Naming-Ceremony The Naming Ceremony
Adding-the-Binary-Star-Pattern-for-Reliability Adding the Binary Star Pattern for Reliability
+Plugging-Sockets-into-the-Topology Plugging Sockets into the Topology
Part-Learning-to-Work-with-MQ Part 1 - Learning to Work with 0MQ
Preventing-Split-Brain-Syndrome Preventing Split-Brain Syndrome
The-Open-Door The Open Door
-Model-One-Simple-Retry-and-Failover Model One - Simple Retry and Failover
+Upgrading-from-MQ-v-to-MQ-v Upgrading from 0MQ v2.2 to 0MQ v3.2
+Model-One-Simple-Retry-and-Failover Model One: Simple Retry and Failover
The-Earth-and-Sky The Earth and Sky
+The-Use-Case The Use Case
Care-and-Feeding Care and Feeding
Simplicity-Oriented-Design Simplicity-Oriented Design
Getting-the-Context-Right Getting the Context Right
Handling-Multiple-Sockets Handling Multiple Sockets
-MQ-in-a-Hundred-Words 0MQ in a Hundred Words
Detailed-Requirements Detailed Requirements
Version-Reporting Version Reporting
-advanced-pub-sub Advanced Publish-Subscribe Patterns
+advanced-pub-sub Chapter 5 - Advanced Pub-Sub Patterns
Pub-sub-Tracing-Espresso-Pattern Pub-sub Tracing (Espresso Pattern)
Test-Use-Case-The-track-tool Test Use-Case - The 'track' tool
Visibility Visibility
Serialization-Languages Serialization Languages
Learning-Curve Learning Curve
UDP-Beacon-Framing UDP Beacon Framing
+How-MQ-Lost-Its-Road-Map How 0MQ Lost Its Road Map
+Stranger-Meet-Stranger Stranger, Meet Stranger
+High-Speed-Subscribers-Black-Box-Pattern High-Speed Subscribers (Black Box Pattern)
The-DEALER-to-DEALER-Combination The DEALER to DEALER Combination
Why-Unprotocols Why Unprotocols?
The-Cheap-or-Nasty-Pattern The Cheap or Nasty Pattern
+Network-Discovery Network Discovery
Serialization-Libraries Serialization Libraries
Internal-Architecture Internal Architecture
-The-MQ-Process-C The 0MQ Process - C4
+The-MQ-Process-C The 0MQ Process: C4
+-MQ-s-Built-In-Proxy-Function 0MQ's Built-In Proxy Function
Distributed-Logging-and-Monitoring Distributed Logging and Monitoring
+Serializing-Your-Data Serializing Your Data
Patterns-for-Success Patterns for Success
The-Contract The Contract
Multi-part-Messages Multi-part Messages
@@ -215,7 +246,8 @@ Designing-Reliability Designing Reliability
Designing-the-API Designing the API
Why-Mesh-isn-t-Here-Yet Why Mesh isn't Here Yet
Ping-Pong-Heartbeats Ping-Pong Heartbeats
-Warning-Unstable-Paradigms Warning - Unstable Paradigms!
+Spinning-Off-a-Library-Project Spinning Off a Library Project
+Warning-Unstable-Paradigms Warning: Unstable Paradigms!
Preliminaries Preliminaries
Centralized-vs-Decentralized Centralized vs. Decentralized
Change-Latency Change Latency
@@ -228,55 +260,63 @@ Robust-Reliable-Queuing-Paranoid-Pirate-Pattern Robust Reliable Queuing (Paranoi
The-REQ-to-ROUTER-Combination The REQ to ROUTER Combination
How-It-Began How It Began
The-Extended-Reply-Envelope The Extended Reply Envelope
-sockets-and-patterns Sockets and Patterns
+sockets-and-patterns Chapter 2 - Sockets and Patterns
Handling-Errors-and-ETERM Handling Errors and ETERM
+Signaling-Between-Threads-PAIR-Sockets Signaling Between Threads (PAIR Sockets)
Unicast-Transports Unicast Transports
True-Peer-Connectivity-Harmony-Pattern True Peer Connectivity (Harmony Pattern)
Establishing-the-Details Establishing the Details
ROUTER-Error-Handling ROUTER Error Handling
Psychology-of-Software-Architecture Psychology of Software Architecture
Scalability Scalability
-Initial-Design-Cut-the-Protocol Initial Design Cut - the Protocol
+Initial-Design-Cut-the-Protocol Initial Design Cut: the Protocol
+Getting-an-Out-of-Band-Snapshot Getting an Out-of-Band Snapshot
Worked-Example-Inter-Broker-Routing Worked Example: Inter-Broker Routing
Removing-Friction Removing Friction
-MQ-s-Built-in-Proxy-Function 0MQ's Built-in Proxy Function
Patch-Requirements Patch Requirements
+More-About-UDP More About UDP
Large-scale-File-Publishing-FileMQ Large-scale File Publishing - FileMQ
Detecting-Memory-Leaks Detecting Memory Leaks
The-Dynamic-Discovery-Problem The Dynamic Discovery Problem
The-Zyre-Tester The Zyre Tester
How-to-Write-Unprotocols How to Write Unprotocols
+Centralized-Versus-Decentralized Centralized Versus Decentralized
Chapter-Basics Chapter 1 - Basics
Getting-the-Examples Getting the Examples
Some-Physics Some Physics
Building-a-Multithreaded-Stack-and-API Building a Multithreaded Stack and API
+Simplicity-Versus-Complexity Simplicity Versus Complexity
Recap-of-Request-Reply-Sockets Recap of Request-Reply Sockets
-Message-Oriented-Pattern-for-Elastic-Design Message Oriented Pattern for Elastic Design
+Message-Oriented-Pattern-for-Elastic-Design Message-Oriented Pattern for Elastic Design
Dealing-with-Blocked-Peers Dealing with Blocked Peers
Guarantees-of-Isolation Guarantees of Isolation
+High-Level-Messaging-Patterns High-Level Messaging Patterns
Public-API Public API
Designing-for-Innovation Designing for Innovation
+Why-Mesh-Isn-t-Here-Yet Why Mesh Isn't Here Yet
Using-a-Reactor Using a Reactor
Request-Reply-Combinations Request-Reply Combinations
Acknowledgements Acknowledgements
Architecture-of-a-Single-Cluster Architecture of a Single Cluster
Audience Audience
-Model-Three-Complex-and-Nasty Model Three - Complex and Nasty
+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
+Handwritten-Binary-Serialization Handwritten Binary Serialization
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
-Compatible-Changes Compatible Changes
+The-Process The Process
Rob-Gagnon-s-Story Rob Gagnon's Story
-Handling-Interrupt-Signals Handling Interrupt Signals
+Compatible-Changes Compatible Changes
Code-Generation Code Generation
+Handling-Interrupt-Signals Handling Interrupt Signals
View
20 .cache_hx
@@ -1,11 +1,11 @@
c5c3b37b6dbed1f8974d788182f886ff939171cf all.wd
-72af5200ab30578fddd73915013ddaca8330b98b preface.wd
-e7bb6b39c8a91ac2f421b108c4944714ae2a8f42 chapter1.wd
-0cdb57c27e7b73e5a5370748611e690b51188626 chapter2.wd
-fb13c47b0d5a3c533a62a2f4fc3313f6f8855333 chapter3.wd
-580d99070416d3afc17e5e879317a55f066e7ba0 chapter4.wd
-3cac643c401b6649f9f8cc3a64776936aceec60c chapter5.wd
-b8b7a5ca96282e84b25e56c6a2461ff2ad4180b3 chapter6.wd
-2aab5ad28e9164e576fe4f266b0b472a44b1dc5d chapter7.wd
-cb55c2d42e94bc0d6038ee2bf0b8558efeb19e3f chapter8.wd
-e8cc34ec3f7279f2acf032b3c0c4afe11e28d911 postface.wd
+2f90fb81a25990ac41f8fedfc5e05d76efec5055 preface.wd
+eb655e0e32baaa61ebf0fa2251e0e964aff29d74 chapter1.wd
+e90aa12d00f786e9a858a96895919ede7eb3cafd chapter2.wd
+e159ba4796daca946b1241ebeaed61bb466e6aa3 chapter3.wd
+73fbc396b8ba9d69db827325b142fc71a965e18f chapter4.wd
+fcea572acad5f31a47dd3b16d133bca2ed8f851f chapter5.wd
+4791d51e974157ae5679465797c492080a3336e6 chapter6.wd
+1d31f27720cf825570c5a90e195b09c04b2e5e49 chapter7.wd
+2e89a08dc8287ae8d45ed8144b671262169a19c6 chapter8.wd
+74d9c9e20bb0ab536f0c19d84be628bbe097343d postface.wd
View
20 .cache_lua
@@ -1,11 +1,11 @@
60456bf61f72f010982487fc0e2f6da6d8fcbdfd all.wd
-72af5200ab30578fddd73915013ddaca8330b98b preface.wd
-24a1529761752c0b17bbe7b59347010e91a66c10 chapter1.wd
-82c2fe044dc135b842439868ef7fa352cd562060 chapter2.wd
-856e7dd5432c4e5c4db9407b5ee057f510d55df3 chapter3.wd
-d54d7848903fe66b074ea1b4e8b5a2f52a5521be chapter4.wd
-16b98affa39276c6b7f046d60bdeaf98d6c7d4d5 chapter5.wd
-b8b7a5ca96282e84b25e56c6a2461ff2ad4180b3 chapter6.wd
-3652d9381d182eb26c58104cf8f72295989aac6d chapter7.wd
-751e467b2dec2218979ef209d884a60fc113222c chapter8.wd
-e8cc34ec3f7279f2acf032b3c0c4afe11e28d911 postface.wd
+2f90fb81a25990ac41f8fedfc5e05d76efec5055 preface.wd
+73020afb437498932d5fc891b6891cc40cc020b8 chapter1.wd
+e77cd1eb786de80ff0754b7682fa991ff56a2cdf chapter2.wd
+23e07a6c63ecba765cd2ff551dcc2b6be1872946 chapter3.wd
+8d6069ae4107e6ad6f2525259359f291448e375f chapter4.wd
+19d7d5a08a875660625d58ea1d0b2a52e1147760 chapter5.wd
+4791d51e974157ae5679465797c492080a3336e6 chapter6.wd
+880eb055a4e9bf9cbe242f26ed1780b4341f77da chapter7.wd
+1cfc7f079b8cb028d8d8479b9f0ee645ecc9c453 chapter8.wd
+74d9c9e20bb0ab536f0c19d84be628bbe097343d postface.wd
View
2 .cache_main
@@ -1 +1 @@
-3904c5da417b6368eeefbdb0e598fc8ebbf61f91 scoreboard.wd
+948abb8056973048f8fe57b67fe82201cc5d30d9 scoreboard.wd
View
20 .cache_page
@@ -1,11 +1,11 @@
43c0dfa50dd8c2ac4c6bd2b10fbb2924aa0adfb6 all.wd
-72af5200ab30578fddd73915013ddaca8330b98b preface.wd
-cbc6c48da7e888340014231da8b376e5798da08e chapter1.wd
-6eb35f616656724164455766b7f5dd68728fd7ab chapter2.wd
-fd9495dd2b9172c8be07840cdf61dc75f157d98f chapter3.wd
-c863fa48ddf26d571242d1625f2c2d925e84ebda chapter4.wd
-fed3934cd018c7a0094a51e17a288985333e9e95 chapter5.wd
-b8b7a5ca96282e84b25e56c6a2461ff2ad4180b3 chapter6.wd
-934a8e89211b4de51d1437188130737a75086583 chapter7.wd
-8e4b533e4229a5dce30015cf5588d78505263ddd chapter8.wd
-e8cc34ec3f7279f2acf032b3c0c4afe11e28d911 postface.wd
+2f90fb81a25990ac41f8fedfc5e05d76efec5055 preface.wd
+05c74bb7677d5734360e94d34e5e9dbd6634df92 chapter1.wd
+8bba4ab4e717ad8b6745bb7760733eaa30c95b7b chapter2.wd
+af119b00302c653f0875ee589f5832c7eab5e6dc chapter3.wd
+fb13459d45967617ed7af1d86e2bd8f2a3f79a12 chapter4.wd
+4cd472dcfb4ef34c767560e7ebdb1260e6d5fbc1 chapter5.wd
+4791d51e974157ae5679465797c492080a3336e6 chapter6.wd
+32f87885d0c2995dc811c2222ef167cdaff351f0 chapter7.wd
+e02e8010f96f303771af88f4847cd1d4266e4ddd chapter8.wd
+74d9c9e20bb0ab536f0c19d84be628bbe097343d postface.wd
View
20 .cache_php
@@ -1,11 +1,11 @@
84556de2857c949e1f80be42c499e6a4482a4c2d all.wd
-72af5200ab30578fddd73915013ddaca8330b98b preface.wd
-2d7ca8814afb226b3302ea3876b3768411d43dc6 chapter1.wd
-3fba48f7b09170eda4184bd79d0c9509a540014b chapter2.wd
-873bbabbe37bdca1f21135aa2efb6695b18c0932 chapter3.wd
-3dd3f81b440c970e8b6a117c636ea310bd49a48c chapter4.wd
-373992b2246a066d96f9557e7cbe755b82a4361c chapter5.wd
-b8b7a5ca96282e84b25e56c6a2461ff2ad4180b3 chapter6.wd
-c65acd78ecbce50e7498c878c1797258100672d6 chapter7.wd
-3bdf7fed4df0d292da09ce1076e3c9471311f7dd chapter8.wd
-e8cc34ec3f7279f2acf032b3c0c4afe11e28d911 postface.wd
+2f90fb81a25990ac41f8fedfc5e05d76efec5055 preface.wd
+f96b978c7fda097fced5f1ae70bb51e8ac55f989 chapter1.wd
+71c2e4225a739d64cac53deee10c60d05041e7d4 chapter2.wd
+8a81e162991b0d0c159918e06aa7473635cb7415 chapter3.wd
+ed65c3990f14dee8f1c0df58f3a92618e13c43a6 chapter4.wd
+c2e6a0dc606696869a289301da9387cad46ab986 chapter5.wd
+4791d51e974157ae5679465797c492080a3336e6 chapter6.wd
+772a82ca0e096be3163df1442c2d1c0950ed1040 chapter7.wd
+24c88f962cf026abf353ef242e452787ba87a4c9 chapter8.wd
+74d9c9e20bb0ab536f0c19d84be628bbe097343d postface.wd
View
20 .cache_py
@@ -1,11 +1,11 @@
1ed1f82517a1901947eb9e824ff2e9f2e9eb09a3 all.wd
-72af5200ab30578fddd73915013ddaca8330b98b preface.wd
-1176d52bfc615340891042cafab8ded604a104b8 chapter1.wd
-f30f277ec534e84c30ec7e8f5b47d87e0bed4463 chapter2.wd
-e46dc04401f05f5d08219af060701192d9cfa082 chapter3.wd
-6d76d727a135568954c1464c991e5d317e7b6a04 chapter4.wd
-1abd71ae27f99c4996de803d542d99fef60bd6dd chapter5.wd
-b8b7a5ca96282e84b25e56c6a2461ff2ad4180b3 chapter6.wd
-b2e8a7a1229e70e8bcd582a79747d9f9a5aa527b chapter7.wd
-be3e6b34d99dc2dbf95edb4ab4daa25e208a3c13 chapter8.wd
-e8cc34ec3f7279f2acf032b3c0c4afe11e28d911 postface.wd
+2f90fb81a25990ac41f8fedfc5e05d76efec5055 preface.wd
+2f317542aa5be8c716360c78fcff542252c0c3e6 chapter1.wd
+f7fa3c3cae35493c9121786a38c5d269f8b26a73 chapter2.wd
+b48ff174c21f0ce09fceb7eb408cad06f3085a4b chapter3.wd
+dd53bef5df9d9ef417b099e2989a27fcb7d1a01f chapter4.wd
+b7e3acdd687107c82cbe99cc8e1121d7934edcd2 chapter5.wd
+4791d51e974157ae5679465797c492080a3336e6 chapter6.wd
+7ae01ec19ed374fb9cbaed9a5a1e4ed565d47a58 chapter7.wd
+ad4ca6d94de5ce3eb5788314aa756a4547204f5d chapter8.wd
+74d9c9e20bb0ab536f0c19d84be628bbe097343d postface.wd
View
539 .signatures
@@ -6,49 +6,53 @@ b0b1027f750aeac97cfc8300b16d06c0393d1742 examples/Haskell/interrupt.hs
174d1391cc48e181a848dc26e0e81780c8c1be1f examples/Tcl/mdworker.tcl
15807412876d207a7b744b378ec0d830c05e8c92 examples/Tcl/msgqueue.tcl
6687b6dc9ec82d5e1690e61bb0d11961f95b430e images/fig64.html
+2ec7ad1706d951b37be574b5c20b96eb0d8f2322 examples/Java/peering1.java
99d44fce0b25ffb47ef64ad79ed6a29883d4dfab images/fig17.html
-5430f838457e3f207eb6c08115f7ef94751b3bf5 examples/Delphi/msgqueue.dpr
+25c4de74dc705375b1a34c6cb37ce9c115b00942 examples/Delphi/msgqueue.dpr
a7f61dfff848578ea04d053380e24c979ead378a images/fig23.txt
-d0b6485cfa2d67f2cc07204c234eae3a733f0ecd examples/Java/wuserver.java
+cbc5db175f91f9d4963fc0b91bd4c8b56734c5c9 examples/Java/wuserver.java
1dd7a2c209674a83ee9059b31aaec201b173451d examples/Lua/suisnail.lua
88831f7447da7e28f764beacc0f5b4275e43639d examples/Lua/lpclient.lua
59530e89de1f8081d3a99467fd550f5004f60158 examples/C++/spworker.cpp
-14124f160019f19e4c3a3fea35c8b1f04ee8252d examples/C/syncpub.c
+58abbefa7555152415bc24b88ca35f6e71028ce2 examples/C/syncpub.c
ab91077fdb654742d9ca8664dd03dd882cde3379 examples/Haskell/syncpub.hs
b3e55b02995eed2dfae430fdc0d54fe9ce3d9820 examples/PHP/flserver1.php
170a3cf6fb74377221665dbf3624432351e4073d examples/Node.js/interrupt.js
f4ebef67f78def23c465213177901fa35ea12823 examples/PHP/mtserver.php
511707f5b0130a4d53950e73fa8ad5bf4f68d3cf examples/Tcl/bstar.tcl
-389482ef2d0e04a070b6009d157bcbeb9567fe6e images/fig5.txt
+10b4f7a422275148149d5643aa761508adada327 images/fig5.txt
2c281d5da3a127ea46d88f14e07e1a070956dae2 examples/PHP/mdclient2.php
-e798f8a76d9a483c3da0071a144b851afead3e46 examples/C/taskwork.c
+6e4b1eae30ca26e1429c75a47272978d28a9f7c5 examples/C/taskwork.c
+691eb9f9b555afa9116dbb24c940202444dbbf45 examples/Delphi/peering3.dpr
051a5771f9fece84837c2948aa50fdf9e97452c6 examples/Q/mtrelay.q
-62add6ffb1d592ad232916227b09cbb49e3837d7 examples/C/clonesrv5.c
+8cef920daac06224f240fb5657bbeb534252f263 examples/C/clonesrv5.c
e7fd2103dcbb97306ca04f84ba1a8693404538df images/fig47.txt
-35d891c2ddfc6e7231541b38054b89edcecc3cb0 examples/Delphi/hwclient.dpr
+07f4c3eefd711ea39ff00f7f143dbcf70ce55194 examples/Delphi/hwclient.dpr
562774f03686167301a66852981bbf22b1e934b0 examples/Go/taskwork2.go
912dcd6d50b2de75fc73a2b9558c24264cb3e0f4 examples/Felix/msreader.flx
f6097aefad82e399cfb61cbd6c5e4b751cf7fd0d examples/Lua/peering2.lua
37474876eb55638e7eb7360f0b6fcd1af524228c examples/Perl/mtserver.pl
-8e64c67801aa1a99c3d539fef8690941ec22457f examples/C/ppqueue.c
+eed640751cd1313204d354e61d471c46eb52f0e5 examples/C/ppqueue.c
9821486c239a427fbbb618d95ee540efd7f41499 examples/Java/lpserver.java
501eb2114abc8d3c680b65e47868cd12804e1951 examples/Haxe/syncsub.hx
ba9217ee9d727f4cd34649c6dd6358db6688c607 images/fig55.txt
d737104b56d7f8ebf71728e4f3d1f9715ec7def0 examples/Java/mmiecho.java
-8b0fe2b9db67502cf04efbcc0ffbc184381cee90 listings/C/listing_7.c
+86f6b496dc7a3a9a438bab11eb48c528bfd7c3ea listings/C/listing_7.c
c32b5074719f1c1b4deb37156dd26aecf685e04e examples/Ruby/wuclient.rb
-e749db0db9a50e09ec9bfdd5621bf1d8c7d89130 examples/C/mdbroker.c
+e9ebbb45c8fa1afda697b20fa9b0784ccec16cdd examples/C/mdbroker.c
c51de555ca1c9ed1edd64ae16c6bc215f94b7d7c images/fig39.html
6c25d7e2cb6cfa8efb6c9dd7c9005b19091e46ce images/fig52.html
-cddbf90759ae1b9fc7bf93a1a710ef7b74358e8f examples/C#/mspoller.cs
+fab8aaf90d4de5ca9173ce346a3ebd0f76ffe3fa examples/C#/mspoller.cs
e6981411339bc4434b1351eaa9ca909b3dbd3738 fragments/C/track.c
-28ff5591f385cb68e9d872a1d5eee4c20e1c85ec examples/C/flclient1.c
+fb48e0bae67b1862306797745204a0452bbc6c35 examples/C/flclient1.c
d8413dd2158176ae00dfe8a58e7389dfb72c2361 examples/Java/spworker.java
66c18b7c9301454706948a48eecb1110de6b8c4f examples/Objective-C/tasksink.m
89a88496ac9821d3c4385b6595fac78f2dd88350 examples/Java/mdwrkapi.java
7f37deb454641f41ec66955238771d287fbf7081 images/fig8.html
9ed22075388d5b17b79613e1593de00e5c1b5f81 examples/Clojure/rtdealer.clj
+bcbb7d41fedf0ed03d862872672517f1801480d3 examples/Java/clonecli1.java
f365e00a8e88c5f8044858b0b0edcf6dccae3719 examples/Node.js/rrbroker.js
+b4d7f520e9636365f2e343e84a884cba7739a80f examples/Delphi/identity.dpr
d51cc6873f74e66eb89900107a7d924df2e27ea9 examples/PHP/syncsub.php
664e3b3bf37343cf25fc9493c08ea0ecbea96238 examples/CL/rrworker.lisp
a0752a9cd1cecea192f96b3731e3871a2bce40b0 examples/Lua/mtserver.lua
@@ -60,21 +64,22 @@ a0752a9cd1cecea192f96b3731e3871a2bce40b0 examples/Lua/mtserver.lua
cf6fc64851754d7eab3a990f5f11d1c3533e7ece examples/PHP/tasksink2.php
269d95e8cf985bf0e278fe0472b6dde66e16d4a3 examples/C++/tasksink2.cpp
7b18169a34b846dd2c4f7b15f616eae947358234 images/fig33.txt
-e1d6f2b798710110e432bc74e45cd4e1979b4e28 examples/Python/rrclient.py
+a41d5ae667b4904b0e3bb73ad6c56df013b8e0bb examples/Python/rrclient.py
d35e584a8d149636b431cdfc37aceb2a58216d7a examples/PHP/lpclient.php
bccbdf4e1045c7334a4d2c971a8858869290d464 examples/Haxe/tripping.hx
ad548452afddc01daee4bdb98975c4a59c9f707d examples/Clojure/mtserver.clj
-b8fa86cf32eb61e36af78209935059101d9caf8b images/fig52.txt
+507669400f73bb174a7413edbd8da59f1a531d09 images/fig52.txt
6d8cfa13a8038b19871b24ab7ea880579d7f981a examples/Objective-C/taskwork2.m
b02005487696f2e75f5fe6ebc2a9d6f34d425425 examples/Erlang/hwclient.es
93067a630fc4940a82466c789a105be765359c36 fragments/C/nomserver.c
8d65609f4c5a245f18abdf39ea5f17378ebe7949 examples/Python/clonecli1.py
4a39ab9dcffe45ee068128e8bb2b79071c654c70 images/fig34.txt
19950526a70c9d6d69aa49e26410278a76a2c7b9 examples/Python/mdcliapi2.py
+cf8e44bdf40922b87e624ec63cf75f26daeb5013 examples/C++/mtserver.cpp
5e920cc8ab69c567a8e86f514ed330b684ec8803 examples/Java/lpclient.java
-533912e22da75f4c27e8f865dca8858b804f0346 examples/C++/mtserver.cpp
f5255561e6c274c9214ca1e53e4b40d6fff86d47 examples/Java/tripping.java
-b9176d1cf9d04301ee470dbe13e3abb4baee3360 examples/Java/version.java
+1880621497ad0dad51f5e7aad9d4c81058d18239 examples/Java/version.java
+103a6a5f0667e21caafcdd7e54b1fa81ae28ab55 examples/Go/spqueue.go
dfe97e2297014f74a9941bbe0d28d6021de0eb51 examples/F#/syncpub.fsx
a09c94918961aca7865d81091f1c13d68128feba images/fig14.txt
66e6aab542749c7a272418709fe165701dd4829e images/fig47.html
@@ -89,72 +94,76 @@ ce11487c92b25457062d16cfa03aaee428dadc96 examples/Tcl/flclient1.tcl
5df24f1dde4fab995982f07ffac0bb73d3fcfc4d examples/CL/tasksink2.lisp
206154a961e75476262ea0e692a02a117d1bcbcd listings/Python/listing_2.py
baa5687f33207675ad5a256620598e09f1dd67a6 examples/Haskell/identity.hs
+5679c7231ddd229b3d7be26cfeecd0ff85eca182 examples/Go/mdclient.go
49d8e81d1a2a15f28797329da96cf4357c0295b5 listings/Tcl/listing_52.tcl
-e51a5ba89f2f990a74143e947d5eb138b4437bd0 examples/C/tasksink2.c
+6b1f3190b97019ba35c9cd7d4e84c8ff07ac17a9 examples/C/tasksink2.c
6f356d1d98158e5ded441b702cca208aca02f052 examples/Haxe/wuclient.hx
-509ecc744f464f4966a891a01cd29624d82382e5 examples/C#/ppworker.cs
+a508a325829116a637e284def56f60a87980868b examples/C#/ppworker.cs
6d7629f3a49bffaef56ad21691dd42178608c8b5 examples/Ruby/ticlient.rb
-87bb28c49bb1dc83b09dd58aac624a0ea8c06761 examples/C#/mtserver.cs
+a022ab1ad8703597a2d1997cb5ec36233e293ef2 examples/C#/mtserver.cs
01b94a290674970a11b07b24f76872a78cfb238f examples/Racket/syncpub.rkt
dc8c502cb2abc70fe161658cd4020d1b4cd064ee images/fig7.html
e13928b30e6cef03f75a71f9b1004e0717040acb examples/Python/msgqueue.py
-7f8f21fea9e7af074546deacc0890f0371a7c19c examples/C/bstar.c
+e8354cd93a90921b161d5b5c0a477cdbd8318cb1 examples/C/bstar.c
785455fe8f5ad5646fcdfddc31f9aa42d48923e2 images/fig29.txt
-56c15b31c21785c0369e87822aed5487f57a1cdf examples/C/mdwrkapi.c
-02a04e030422622a26fac6a7140b56990c28ce13 examples/Python/msreader.py
+1398808aa65adea8af702c6f717fc9faef98dba7 examples/C/mdwrkapi.c
+8b1d214c2d180f09204bb36b8022f0f4e6e347f5 examples/Python/msreader.py
21045a8035a54064030364d694e249b9fcc5c209 examples/Tcl/clonecli2.tcl
-88c7fba3886d07dc5aabc476ff1035db4cf7497d examples/C/bstarsrv2.c
+9b3939bda8d0528b898341cfa3b48db4ef16abd9 examples/C/bstarsrv2.c
f0dc629d585678c65bcba97eb71058486994bc96 examples/Node.js/taskvent.js
1ba13ef5d50279d39bac2d12559b4bf6457f41a2 examples/C++/mdworker.cpp
+37fc9d8f2938be653e487a829fc1884d62a94e7c examples/Go/lpserver.go
013a936720eec67c64d2c6cd813a9285445e6ed7 examples/Java/mdbroker.java
d7e46210eb9df18f7192ba045b12f39218cc6922 examples/Q/msgqueue.q
36e5cfa4e087534ee2b5210a84da17590e34546e examples/Haxe/taskwork2.hx
19d199668252c2efd204b5a1b8a5f78e4d281b17 examples/Scala/tasksink2.scala
-7d05dce6e5000ed612e2f00b2e9c28fc0a27849e examples/C#/rrclient.cs
+c9071174533c4ce02c2dbcad1ac58cdfcbdf8360 examples/C#/rrclient.cs
699d7abe14efacc40072d93e22a7aa08f25001d6 examples/Tcl/taskwork.tcl
07107376f82162ea1e2254a132edaf842519d72c examples/Python/clonecli2.py
-d66effc075289ae4b0c391fb317c8904124ad852 examples/C#/taskwork.cs
+9ad4e8a19d99f3d3453d69bf53304974b1a37695 examples/C#/taskwork.cs
9e8c49a1800d479043106d162e5b18aba213dd78 examples/PHP/syncpub.php
af11e39c163f8e53a4c76f4c7cbc85272e4ece67 examples/Scala/peering1.scala
-68733bb0c4b8786f3b0535252a8bc49228bec3e1 examples/C/wuserver.c
-371d545ab9cb0c20fd1c7079a880b27897673cd3 images/fig8.txt
+1dbdaf2f49267f879b0a48f86b52ca7f1747866f examples/C/wuserver.c
+a4bbb1f64cc196c0d28bb8de02adb6e98d5b9e46 images/fig8.txt
8636d39599e9e1c9c03e29b72e874314115d1a48 examples/Lua/ppworker.lua
-fd8d8ce86fbd3202f9f0d75888559192e5b79cda examples/C/clonecli2.c
-daa0a3e4e9f8cc6e4355ecdb1f3962e8d9c80b7c examples/C/ppworker.c
+c62a45fe48908408f80f9b103ead1d4f8d6cb10e examples/C/clonecli2.c
+37e4319192f965b42c08f890c3714ae1aa2f8ac5 examples/C/ppworker.c
921aeb5a7186f3732988cc06349cea5687e141c5 examples/Felix/version.flx
06c93955952c996ebc4fffead2310203eee0ba5a images/fig13.txt
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
+14756b3539b7c752444935fb8c5dda2b94108286 examples/Delphi/taskwork.dpr
+87171fa82828d9cc6d211235ede21b0ee6f22aea fragments/C/iothreads.c
+3260382f919c5b9bb57e6c9c9033cb5a5aa280cf examples/C/mdclient2.c
946d8d8e0dac7224685f0b82024a33573bbf6248 images/fig2.html
-6ac10c128697c5696144b44e6b6f2b22365f8fae examples/C/rrworker.c
+b55d6909f384e41673a0ac08c2fc383af38378d3 examples/Haxe/tasksink2.hx
+fcaa2075ec4c14f4600ada8b5a2437968456c4fd examples/C/rrworker.c
c2e5818c670b5999a3a1de96b1080932df2ec612 examples/Felix/wuclient.flx
aa7f062cb4b086f3c00fd02a769fc15c41751829 images/fig55.html
944b1f6aec4e513e135d2ea4ef4e4aded05f08f3 examples/Go/wuserver.go
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
+26287c2b15a784510f8abba0e565a185bc50dcad examples/Java/peering3.java
d50c97ecd4fdfc0c982323734e4f7a3554366b0b fragments/C/endpoint-hashing.c
a3c78d15e03ff754a35ad2d4d9c5129bd6e0781b examples/Erlang/syncsub.es
d4a51d25b984a549dd99076aa80900d071f9c2d1 examples/Ruby/hwclient.rb
+0d7951bd6d5f990834c187f37516893c02e2d4cc examples/Perl/identity.pl
71bc80bde20f46269857081ab2d1358eac8fec9c examples/Erlang/wuproxy.es
96e0642210a536e841a2b8caf350354f5c2557e1 examples/Tcl/rrbroker.tcl
-33a6cdc39fdc1d419d819c60adabc48e5920e7fb examples/C/clonesrv6.c
+dc46a4c66f124b9ad14462848e6429b787cd03fa examples/C/clonesrv6.c
394b5b4dfb4b67e90b40756206835864f8e6efa4 images/fig60.html
46fa0c2b0dbd5435f4b613d25051ff663f4028bc examples/Erlang/rrworker.es
-bde5d89b307b0a49feb532464324727700c91abb images/fig54.txt
+8c5425c0001b3f418704ff2ef20b555c03944fa8 images/fig54.txt
5736c07c7133424dc855b7b07c6c8866d4fd7821 examples/Clojure/wuserver.clj
d5249a7b3730505d6dfb11ea9eb2836410eccebe examples/Objective-C/taskvent.m
960a06c1a690ee301a1ffedee734d22916b3c799 examples/Python/tasksink2.py
-1220af8a8c027f98469c7acb163ee5e8d21278ef examples/Delphi/taskwork2.dpr
+8a28e761453140817a1768597751276445ef1e4e examples/Delphi/taskwork2.dpr
331984fa6930299e1fd0e828b0a1191bb8146295 examples/Go/hwclient.go
11ce5703085fce2f0ca1698fac7cbedbc4e40586 examples/Haxe/ppqueue.hx
cc2696aa9845e31fef32a2b920909ee8d4828f97 examples/F#/rrworker.fsx
-8381bbfb2b782daddecb20c385c0476793c10c8b examples/Python/interrupt.py
+97df7829abdd03f5d3a8528d3883586b01ab927d examples/Python/interrupt.py
3c8b2e92c6d3e8c908b3dc09909ccadccf26b017 examples/Go/tasksink.go
a98102b1ffc758891bb9ecba7738283b49e6fe3d examples/F#/rrbroker.fsx
b4721bcee53fd72bbca0bbe21643dbbb6a96050a examples/Q/mtserver.q
@@ -164,7 +173,8 @@ c2516f8980a23104743cfb0914f193aff2d8b2e8 images/fig19.html
9d21e1539a657dede6d708a76d6a1ac376fc5f06 images/fig1.html
fb30556df0e3f5fe6807dd24d1ea2dc2da810718 images/fig40.html
a0f206b68544e1567e09962c50664e82e065be43 examples/Tcl/titanic.tcl
-aa6e5e76444e3f3803d07132e426c26e0bfda931 images/fig19.txt
+b2fa9f4b530ed5e87eaa8fa3523f038f89569805 images/fig19.txt
+943d2d47e1ab1998916b3db57e33de071a5abdb2 examples/Ruby/lbbroker.rb
4d7b04ce948e31167e96bafedb62ef8efcb527e1 examples/Perl/syncpub.pl
2e02b93739686e4d09b20ffb383799513c66209d examples/Node.js/version.js
e87190cc269079528b7bfb14d8cbef18383a83dc examples/Scala/wuclient.scala
@@ -182,45 +192,48 @@ b04812e4484f019cdb81789928a16d454c2e87aa examples/Racket/rrclient.rkt
da01c70fbf921e6f223babec037f91cc9df3f409 images/fig70.html
d6d70ca5c3eb2c4f9d8522b601f7bf55c6caa209 examples/F#/peering1.fsx
424861280c947882ae939b630721d44bdefb5037 images/fig53.html
+96345e287880281f1b84ce15fab9ad4882afac4a examples/Java/lbbroker2.java
1ce0da618bedbd0559a9a743be1b4e0927bb0215 examples/Perl/msgqueue.pl
e94034dc4d735babf2b373ad1c82c7df05f0eeea examples/Racket/hwclient.rkt
a8472aa17701e600ed2069846a9b1e79eb7e0d93 examples/PHP/wuproxy.php
e30bb9c17138a5525355a9cf108e8497e4fd6c26 examples/Tcl/mdcliapi.tcl
4368c8c6e0dd99b60576aa1afd074c7e08374a3c examples/Clojure/msgqueue.clj
-cc73f0b62b283ecfe1df92b2a82ed65e0ec34091 images/fig39.txt
-f69deb87fd94b3cfde6b7c86b5cf2b61a494a287 examples/C/clone.c
+2962fe940bac9cafea678af9b3be22d1e13d9062 images/fig39.txt
+6bc256ec2125e7f6b161b869fce0cb01a74ef8ed examples/C/clone.c
2ec6143a61202c4319c2f150ba5adbb5e61acafa examples/Tcl/peering1.tcl
dce9a71bc9f7d07d19b9b93ce8918bab563567cc examples/Haxe/mdworker.hx
a126dbcb2fe0b75726170ae4fc1f2e7891740e11 examples/Tcl/flserver1.tcl
2097b0e90675c7368978b07f7bbcf913abc034eb examples/Lua/mdcliapi2.lua
c6ca0baaef26571e2d8d474ef2286806c37489d7 examples/Python/version.py
-6d31d1348a43210898e7c0afe736a38ef365af53 fragments/C/lowreader.c
+0659280d9846b774826b24c30cc475bec8a0b7b2 fragments/C/lowreader.c
589fdcb8cfb8bf3dc92385693d14e9d2a705bc06 examples/Clojure/syncsub.clj
03b78965320cf28f85170cc26669bf8f611ce5e9 examples/Clojure/syncpub.clj
-3770f4ec02f115e662e9d62a5b5dacdc4cd3b622 examples/C/lpclient.c
+edcf0327e2fd8faee45cbe5fe27fc64ac343ba59 examples/C/lpclient.c
4cf23003f992710f47da7679c101ff2e923cf89c images/fig10.txt
5b9eec6d9932e3210bd9ad1e3fd96dd18412eefd images/fig65.txt
c1639957dc773562a1be773d2e99cae9f3c2958f examples/Go/wuclient.go
3f37a4ee524ff08b2bc609cd748d4336dc29e3e2 examples/Tcl/clonesrv3.tcl
32c1da80334b7082e5bd6637fff90c3ce3a49f2f examples/Lua/flserver2.lua
946313d5ee2fd52bdb68c9d680037b1e6c0f82e3 examples/Go/taskwork.go
e903bdb70c52318aa47df262ee8853d41888dcfa examples/Clojure/rrclient.clj
-d14cb8182ddfd1141314aa35ce0e2a123c05a9a9 fragments/C/zyre-tester-main.c
+673360bedd9d26fef40b37ff5f181037c8fb74a1 fragments/C/zyre-tester-main.c
184649a1557b9586718d7ef315368c87ce124d1f examples/Haxe/hwclient.hx
f6fe8b4948a1417d2478e054df0756fce787de9d images/fig61.txt
24dc35e9d56cb8307bf6a13349296883a4b20e24 examples/CL/syncpub.lisp
8b7bdd78f4020234073531a92538e27ee6aa49b9 examples/Erlang/version.es
+8c805ba39ac919a4ff4617953f3b29822652858a examples/Java/clonesrv3.java
18bd61de83270d56380966dbdc02095551bab537 fragments/C/mdclient.c
2db2e7bab5a0822e2281ee71f0e23ceb854129b4 examples/Clojure/peering1.clj
053955c7a5da4b42a85be15633670cf3942e530c examples/Python/clonesrv2.py
-29d5f504b41dcbbd1a6f83a7da7ee373afa9294e examples/C#/rrworker.cs
-4ec52c3d1c0427ee3f65b48f7504d286fe326ff3 examples/C/suisnail.c
+57288eccc03e9420297a7d4730647b445d4c32a3 examples/C#/rrworker.cs
+97695ebc8fae0114a71db9ba1ef43b26c0335792 examples/C/suisnail.c
71f104b3b6f9da917858444c75f87c186ad6fd58 examples/F#/taskwork2.fsx
-6c202eb6e9f3ce924bbeb2a265b62fd69cbaffd4 examples/C/flcliapi.c
+eb2cb9e9b9d6b4198dbe21c879a7aa34e049c243 examples/C/flcliapi.c
f0483625a32ff6ece37d3550f317a9929f2d0f59 examples/Tcl/syncsub.tcl
-68890b958cd0c43bea2d16710e9ef5f76ed27ca7 examples/C/clonesrv3.c
+51309ebde31f09aba93cba7ae88919419a20da7a examples/Delphi/lbbroker2.dpr
+aec90032762b5344d433893e9229001b112bc8fe examples/C/clonesrv3.c
d5d9a238539e552ca4e16769b18580f5b09abc65 examples/Haxe/lbbroker3.hx
-9fb208c34889bab485c698bc2955156045f2a044 examples/C/msgqueue.c
+aeb03371452059acec5dbcd43c341cbcbe0f04cd examples/C/msgqueue.c
5e89e227f484ea3bdda936a070079829f90169e8 examples/Haskell/tasksink.hs
654e15a0eebdef8b079095a4fe05985c4dfdf9f1 images/fig45.html
f0790d96b9384255d440ad5a303f8e7c50ad180b examples/Ruby/lpclient.rb
@@ -235,13 +248,14 @@ fd49d36267654e53689c6846b90ab06488966214 examples/PHP/mmiecho.php
d12093fccdea7822cb2297918ae7b0b53b4be160 examples/Lua/syncpub.lua
7acd052749b75afbf8dc1bcc6307598c842d5762 fragments/C/zyre-peer-disconnect.c
3ecb99e5aa310f5e23f7c69100f23e8f8803d1ca examples/Clojure/asyncsrv.clj
-c474bf85dd0cc104e52b8ba527b4b84620ba858a images/fig48.txt
+60cfd0d7983fbe3612342a82a84abada8db6c797 images/fig48.txt
9d2a87bf53a4d8cef8b553f6d3860a0ac492634c examples/Objective-C/version.m
f0a36dcfb514055163abeb5c186348d489ab80e0 examples/C++/version.cpp
-8027bedf534c840d1559ebbc112caf7db21bcecf examples/Java/syncsub.java
+ea8670ec0308944820d64c2a51c642559eb5ec85 examples/Java/syncsub.java
3c64ab9d280c89a871487684b7d13e2913e3d07e examples/Haskell/mtrelay.hs
bb3a303ce1085831b4244c4a61e4b1c8f6abbbd6 images/fig50.html
-d61b3ffe564f7ff397494626a7be026230de4f60 examples/C/bstarsrv.c
+42ac64685f2c35f412c90bfabef623c379a0d723 examples/C/bstarsrv.c
+fef6d1bb09452f1c7e58caf12d45966f5a4c6b62 examples/Delphi/psenvsub.dpr
1e9fb680d88712a80fb7e4abe5176b7a8889ad45 examples/PHP/hwserver.php
1b5778ddbed6e238f15b375d6e4188d7dfe6cb82 examples/Haxe/rrworker.hx
f276da91df65ba794fcd8889b5b63755df6a8c63 images/fig27.txt
@@ -250,17 +264,18 @@ ea967c3c1529f777a87c5d594ef7c67ca6007d07 examples/Tcl/version.tcl
6f7572b1cd057c59bd24d358345d41fed5685675 examples/C++/ppworker.cpp
2ad28109ca060ad17f62a38432f0639823960ac9 examples/CL/msreader.lisp
c589caafe8d257fc4958d8a85fd646c90fd0814d examples/Haxe/asyncsrv.hx
-f91e9609224e660bb80c78f42ad17038dc3193a7 fragments/C/upgrade-shim.c
+6f54996a67ca9c36ff242d444dd6308421734228 fragments/C/upgrade-shim.c
db9643aac93bae57d7a76d2b8a3e381d7f07544c examples/Ruby/syncsub.rb
55f68d5fe3f08646069acf6eb0d253d5507371d0 examples/C++/lpserver.cpp
-11864c5a62aa05d8219e546a9601b79496e2235c examples/C/mdworker.c
af40fa855dd2897c3640c00d180db17918389a2a examples/Python/lpclient.py
+cfb4edae479730927c81eeb5abfcc4f2194dcf79 examples/C/mdworker.c
e63eff17ab9bb5345c3261b3c3b5cbdc4ab4af69 examples/Tcl/lbbroker.tcl
3dce90835a28094cb8a6f60ebb24f41542ea6449 examples/PHP/spqueue.php
-52665bd9b5274d3cde82c0cbc6d6b9c6583b8a32 examples/C#/rrbroker.cs
-4e70df8e3931e893d7971da27c8414ad127c3e41 examples/C/spworker.c
+26e1d74a871d5668576b71673cd878e8ecc48d5f examples/C#/rrbroker.cs
+84825a7e73e138f2e73fd7bda343c03b2083a140 examples/C/spworker.c
fcc8e9992d0a5b310f6b72c8d75fc81173bff8e9 images/fig4.html
8e4bf942e304097bce573d2ff93de05a54554ea7 examples/PHP/taskwork.php
+7a285537b97dc87e22327e78a36cbca3a45f0446 examples/Ruby/peering3.rb
70315103d72c47fabda26f824fdfa9f0e03507c4 examples/F#/version.fsx
5cb4d2b26d1c489a0964e6f343e6548f7fffa04b examples/Python/mdbroker.py
0507a537f464bd77ce04e4eed6d102ce2a752492 examples/Clojure/mtrelay.clj
@@ -275,62 +290,67 @@ ab7ad62eaef66e2ebd50af4a2134bfe2c4f5bd9a images/fig48.html
b0b44e140da9109eba6721be274cfa9dbe6398ef examples/Tcl/flserver2.tcl
deb47cc2e574265cba543d62ad959d9a647fe67a examples/Ruby/rtdealer.rb
084f0e2ea219204570af9fa48b5a2aac521fa404 examples/Python/lbbroker2.py
+8d8c189c9e5886c02fada3317483995c3cb10b10 examples/Delphi/psenvpub.dpr
0587fa324f179b315ded5f765d07e247c32db501 images/fig46.html
-b0fa0ff2cfba09825719b1cc21a069c5bd313bf6 fragments/C/killsignal.c
+3db336d90bdec8b14c4c7ff6b2b70b4e0e854fa3 fragments/C/killsignal.c
5c700dee38dbaace61adb7b81ad24cfc67b93ebb examples/Python/udpping2.py
-0ed778041a8a6a0722fd597793fff99035e3db16 examples/C/psenvsub.c
-4421ab2174f0977f25727892fe7d52853e5dc478 examples/C#/hwclient.cs
+ed2b28f8cee287285490912a4f9a05c0b8090a3d examples/C/psenvsub.c
+4c7995df1176e2a85a3ffed776753979927aaa3a examples/C#/hwclient.cs
53735e3764293bf48c438f830e461d55c22be831 examples/Tcl/asyncsrv.tcl
bc000aa2fefba4658aedc3f45daddc58b54f8acc examples/PHP/hwclient.php
e9a8a2b8a59e6e44da261cede967de22c47c922b images/fig5.html
ba5ad4f5cafcaf6e248ccf4432256e7d0a5cf766 examples/C++/mspoller.cpp
-e633a2410644b30a0375aff18d68701b443ee0da examples/C/flclient2.c
+540caca4f597470e28ee3cb6f7d77437f3a8366b examples/C/flclient2.c
a86404ba6d6e80e5b99b1d6b5754c68e6e9e0c0a examples/Python/mdwrkapi.py
-4af79174f673d6e5f956b8b72954be30c1428448 examples/C#/asyncsrv.cs
-01d06328f1d8e74083ece6214f3cee0941385b1b examples/Delphi/rrbroker.dpr
+4b34de89933ba90cea374f1063400a235b8bf9dc examples/C#/asyncsrv.cs
+553ca4089c9dbb5405ab0fb86b9e384ce33b0f27 examples/Delphi/rrbroker.dpr
a3c860136b65765a0aadc03daf39c0bf35dc328f examples/Haskell/mspoller.hs
5f49442d90c86cf49fc5f8cae81c240c88836dbf images/fig2.txt
1ded6fcd6e43b28475370ef4580226434a1e8b0f examples/C++/tripping.cpp
e97bb5575be4c9ee1320cb7e792b50088fa54be0 examples/PHP/mdcliapi.php
-e246ec8a39a5b6c373570f4e889e2cd619a8a0c3 examples/C/wuclient.c
-40ab577425793110cdbc03d8dfd8e4fa39c5f9ff examples/C/peering3.c
-1978612464f7799626a93a0b8951ce44edba55f8 examples/C/peering2.c
+1a243f9d1362b90e2490f4930f05410a5dc27798 examples/C/wuclient.c
+f08b2e66279f230ecf609503356134becb803ea2 examples/C/peering3.c
+fbccf933cda9416dee2fe7fd5dd83ddcdb06a504 examples/C/peering2.c
1d49dfdb5206937506dd6abda421251ec9e03eaf examples/Python/lvcache.py
-2b8eefb1e9f2e7d36496d00dd96d009021712aae examples/C#/peering2.cs
-075e873f16b053789c556456a0e575dace6da6ca examples/Java/mtrelay.java
-44cef01d89e8ea97c720bb48d1df0f80ba18220a examples/Go/rtreq.go
+4394fd70077b6eb1a8e1ee98564d88da7ec044a9 examples/C#/peering2.cs
+f63e5af0275afe0a294b14ae64fdb146da5d8b83 examples/Java/mtrelay.java
+a774ce2161d69b0dd34fc9d7fb82ffee9f414544 examples/Go/ppworker.go
+125214eb44abfb975eec86500da94804e68500ad examples/Go/rtreq.go
3c6f12c8c302ac1c7f7281d76693277e2e51c7ab examples/Erlang/identity.es
d2b84013543f0c5cecd8c40e1c96df54866145da examples/Tcl/clonecli4.tcl
4aa903582072d691c70f133736f2c5e09f5f6b63 examples/Erlang/msreader.es
426fea1ea4600ddc83f3d6b3ac44159d1f281b13 examples/Haxe/mdbroker.hx
8ad4fe4702ae57e5f5a02abd6160e9ed303f3543 examples/Haskell/taskvent.hs
+23cd9ee730269ade13e1e336ccb136440cdcab6d examples/Delphi/interrupt.dpr
b18bfe2c3a7590d8e8b36dbf7e0f2ecec13713e7 examples/Go/psenvpub.go
851e61b85b1c6902fad4963a136be580bc72bc5d examples/Perl/rrbroker.pl
2b2df695fcc86d71a8c0ea56bbe7a43d71ca7b65 examples/PHP/flserver2.php
+b49e10699623f1a748f91019434c902395abdf84 examples/Perl/interrupt.pl
54e9bb3554be2a9679b3151229c7b81941a9de55 examples/Python/bstarsrv.py
7ccc9548a8553b5722d2450dc4679254ed78669e examples/Python/mdclient2.py
3fbc436d569605fcbbe13f5aec8970780e08e39f examples/Clojure/taskwork.clj
c385a3bf2f31f53365f74e0392310bfd7cd79fb9 images/fig37.html
f7a61fb22460c6d10019f590e929758f29bc4825 examples/Lua/identity.lua
5e6cdb16402ca8b761d291544b0641006f754d03 examples/Lua/tripping.lua
014260833dc5623f1c7c5ba7fe614c8ed5ede071 examples/PHP/msreader.php
-ca93af4d2bb7d42aca2eaf228fe14735d291a409 examples/C/bstarcli.c
+c321b613828d0e2f40461a9d1a2229e23566c4e3 examples/C/bstarcli.c
1c49196eff8ba52f0368fe765693375d2c864074 examples/Node.js/wuproxy.js
-9f559bd8bc94596cf8c37af3c290b6f4ae095357 examples/C/lvcache.c
+ba9c665cfac863e7a1d2cd530960b0f149d72a12 examples/C/lvcache.c
ad40093a4276cdcb238dad6fd6b3d3444586163a examples/Haxe/peering3.hx
34169d317fb92457e6213af3517d011b9099f813 examples/Lua/rrworker.lua
4b0ef7fccf47c3c6603522f231c2c3d04dfbb6f8 examples/Haxe/rtreq.hx
c6099200b7db2b0e7edf766f066831036afb1fb3 examples/Tcl/kvsimple.tcl
f9dc879afb428151379e0d73e9b2f24e81015dda examples/Lua/mspoller.lua
-930fc04135f05514e054ea6024ba135b0c9a7c1a fragments/C/lbreader.c
+e9b63dda4251764f1802b5eabe771fa2f7f5f482 fragments/C/lbreader.c
5921a1d177e65c8b9189da1732df5ebb46750eb2 fragments/C/send-deliver.c
72f0ab41ac23d1f977d5d2b3f9aa6f0bcd5678b0 examples/Tcl/wuserver.tcl
f9c5e50cc644a890d5ecaaeecb2dce21d1cd9723 examples/Python/mdclient.py
f90d106cfa680fff5936f757bfee8a36df3ba2ff examples/PHP/ppworker.php
9f6c4d9c8745ed04569f3fe0e28a2f3d8f8a67c4 examples/PHP/identity.php
-35824584d03aa0ec1d18ff08f356194e15f138ef examples/C/lbbroker.c
+54799655360e5c25bd1898087c13dbbbcaffc407 examples/C/lbbroker.c
8384a74e827093a5ed011a076f373b28602a711c images/fig60.txt
07e14a2b83478e4490275d8616c878ca51b935f0 examples/Tcl/hwclient.tcl
+a1146c0fa8f07eb3825a24795f167668ee5b07e9 examples/Ruby/peering1.rb
87f4904a607a3714adc96805bc84b8d8bfd688b1 examples/Tcl/kvmsg.tcl
89084b3f9396ed35e9f2ed97fd74177fdba99ada examples/C++/mtrelay.cpp
7ee1ac5b3382b0a11b74518f49046170e134bfff fragments/C/zerocopy.c
@@ -341,7 +361,7 @@ cd3585acc62799fb788654070428edd3848458f8 examples/Tcl/flcliapi.tcl
dcf237c025b0dc79d6da7850fbb01bc91380c8c7 examples/Python/flclient3.py
5b1deb0c265639e66c0460b33cfdde651529bdda examples/Scala/asyncsrv.scala
8216f6f8047f8dfb1b32fdf6e3b9e8782f4e1268 examples/Lua/mmiecho.lua
-fa371f2ea097a72bf05388026e0ac1a296460c68 examples/C/msreader.c
+6c4e9dc79171984aa8bf05e856ef36af460d63ba examples/C/msreader.c
507963dde601072a14f59da5ff76ef8c82d44426 examples/Node.js/rrworker.js
8b89095e2d125cdbd75153799b27662006e5fa23 examples/Ruby/syncpub.rb
d4c19277f6e8d43d79c7408396bd6aa56823189c examples/Lua/mtrelay.lua
@@ -350,6 +370,8 @@ b8d37248d8b6f3d5b75236d1bb9912d9d18322de examples/F#/wuproxy.fsx
bd737c0e81f3c78792359c055f56d20d89126da1 examples/Python/flserver2.py
1ed9e08b4f617e4c61dcbc7fc2d3e69e7ed78ea6 examples/Haxe/mdwrkapi.hx
77aa442443b920909d689239f4bf18f9c3bf550f examples/Ruby/rrworker.rb
+3200ef5d74170b54b66d2d23b0d11e358a097e26 examples/Delphi/peering1.dpr
+c37f4679b91408a4d02270fc79b832fba74f43ee examples/C/dechat.c
289c597af13d115ac8559b81cf56f7d0de482206 images/fig42.html
f9e357527d4523f3372e8225fb582c4df0a1f859 fragments/C/zyre-sender.c
966fd89e463f52e05b95643c706b2721aa17a7e5 examples/Scala/lbbroker2.scala
@@ -366,26 +388,29 @@ f914109feb515bf851c5801b26fee45da3db63ad examples/Ruby/wuproxy.rb
89395a612461d0e436e1c7ada7890d3c9ae6e1de examples/Python/fileio3.py
95c94536721e46967930374828620a8f950e2af6 examples/Tcl/peering3.tcl
ebbd0aa8348321e3c7f213b53108f1270eae93fd examples/Haskell/wuproxy.hs
-727a1085c2913a13e7ba638e955f349ffd427d86 examples/Java/interrupt.java
+8557d62e4e6a046758e0bd32c19dee003c168c19 examples/Java/interrupt.java
37f7554a516a5318d6deb00d0186cf0674235ecc examples/CL/version.lisp
0c57d32059f95798b4e79c5843c71ab0633ac697 examples/Erlang/msgqueue.es
0e48c8600556573a5cd00c7446b2556a3c9eeb9d examples/Scala/rtreq.scala
+ff987d5886f6180ba605183447404d8a43a7ddc4 fragments/C/brute-force-discovery.c
+745e8ea902df049cc617577b6fd2fecdc08f002e examples/Go/spworker.go
232f379bb6841aac1942c256afbe3ffb0a1ab663 images/fig67.html
a7f96e9d559da83ed83028531b6d330aa1b1d943 examples/PHP/spworker.php
3fd5b7f1338501cfb276eba81e29dd0e5625237d examples/PHP/mdworker.php
f95ce7ff5d5d9c8c7ba2d46e4188e16756ad4fec examples/Ruby/msreader.rb
-38372c9432dc9f39d167c3c6dcc36ea9235c25a8 examples/Java/wuproxy.java
-9674c84dfd655ecd66ead6148ca75e2ffbee866b examples/C/flserver1.c
+281f42804224811b85d2cd4d34661c78c1b6a56c examples/Delphi/peering2.dpr
+f7dd48428d5fbf5d4a8633cbb66ad616f1cb7d52 examples/Java/wuproxy.java
+5dc8321c91f84c3936abd97e5b13a1c93252ce9d examples/C/flserver1.c
e7f2aa4a07c5c83055dc8c08dc6754f0495df686 images/fig3.html
3027e6a691112166746d2fea64ccee1f8a77647b examples/Ruby/tasksink2.rb
-b23097b0ddfca33f789e9fde7614019de44931c1 examples/Java/msreader.java
+4eda752c71c3b9f7b3d08f3f8f558f0d4acba77a examples/Java/msreader.java
3097b00c92d8dfbc11574c6bf5e49e514c7c8185 examples/Haskell/hwclient.hs
896001032bd57929c10f206c447b5c0211e146a4 examples/Ruby/version.rb
b431b5dfdb526d0233b143a76b5593a0e9ab3781 examples/C++/hwclient.cpp
39af2c909c73d80af9cb29dbb836a2d6f55747ba images/fig1.txt
6fa2706b7452079b5064f3b10ecf13b046e04315 examples/Erlang/wuserver.es
030637f70515212ce10ce3ad52ba57874ee6dfef examples/CL/taskwork.lisp
-d55a6b87be73e0ac90a7dcc4f11da35fd6c72399 images/fig17.txt
+433b0a90987dbf4f2ca560f1afbc98855899355e images/fig17.txt
7a6b8c0466610a88d369310331a89c0f53051126 fragments/C/polling.c
30d223be12b36ff1928a9a386f9d3c9137be7fc7 examples/Haskell/version.hs
c05e5d88d8734db1eee629b985c66a31491cfe34 images/fig68.html
@@ -398,46 +423,49 @@ a865beb305aa1135aec78f557be8ce9dac99fc29 fragments/C/zyre-peer-send.c
f9d3db71208dc03564589c1e010886f33577b64f examples/PHP/tripping.php
f434d7d404be5dd39ac87e07b22bd0e5e9b2aac2 examples/F#/taskwork.fsx
be36eeeab63ecc6a3ac894f7ce853c8dd61cd815 examples/Scala/psenvpub.scala
+cf2888f7d3364b93e7322aa8fa4335359fd793b8 examples/Go/lbbroker.go
b423eb37986f160fe30abaf4ae5aa02a9d543b19 examples/Ruby/mdwrkapi.rb
ef9136628f5af5723a2e29a702db5730c2602462 examples/Scala/version.scala
-3944e03407bc441ba04e1af44bd36a6f9eeacde8 examples/C/udpping2.c
+de6b3e92d19b0e971bfd5eb3191e167d5329eea6 examples/C/udpping2.c
70b335b807ca7bf9ffd8cff13effa7af5e2ec636 examples/CL/taskwork2.lisp
587ddc20486b8a8bbecbf9f827990413a0202276 examples/Scala/psenvsub.scala
9a14d89ee3133939587623501482a371bc01b44f examples/Objective-C/tasksink2.m
-9280ee8f8c4a6fa46f45b34524142a8e4d52164e images/fig32.txt
+7b5dac82a4ac491a5bd39b7da26b5e1940b6adee images/fig32.txt
4a4f4e2f4f754147cbf7a0ab70473641baa0eb33 examples/Tcl/peering2.tcl
364c89e77f1f71046813b3a8eea91071d67eb65b examples/Ruby/msgqueue.rb
-31b87369781a7587aa76ac0cf3f4a53c9a9f774d examples/Go/identity.go
-e8599842cec9cdcd9745b9631e20aa1f10663895 examples/C#/msreader.cs
+807b76ca8928d593137914b291f36ab819fbdebd examples/Go/identity.go
+62d40779a851de8fa2e764cced12bc4f87ac1858 examples/C#/msreader.cs
fe82660cb9ec7f88119cfe65c5f224ad3ca8b9ee examples/Tcl/ppqueue.tcl
-60ad3fb8a0edf0b045ae43b2d1f8d3d62e535786 examples/Go/syncpub.go
+65408d8836a7f75b3dcf516a6b957e6bf5f5da78 examples/Go/syncpub.go
d1e07af7a0491c272999d8365c73910d298a5344 examples/Java/mdcliapi.java
8b0fe2b9db67502cf04efbcc0ffbc184381cee90 listings/C/listing_6.c
e09770716d02317767d31be123858109e2423d97 examples/Scala/mtrelay.scala
-216670940acca958c34d23ede21089d411b0b9cd images/fig18.txt
+8c3088899a4bdf69db9803cda27d30a23a68590a images/fig18.txt
45e4e35f7358e23b4ce94e79ee47c703f92137fd examples/Perl/tasksink.pl
+873ff8078fb0f0ceb365514122315c37b192d2f1 examples/Perl/rtreq.pl
ab38e99a82aecfb9590ea4d3306e9afb6a62cd2f images/fig10.html
7a2457de72416fa3d44371b5fdd9c6bf38f2e0ba examples/Haxe/psenvsub.hx
db2ac0d4710d8efe65110a2ff66b0ed7e7ba0590 examples/Haxe/mmiecho.hx
b11ab5cc2c891a767aaa44af0e2e84b20e495863 examples/Ruby/rtreq.rb
b647647a23ad6f52291058437ba544d8ea9cba15 examples/Haxe/wuproxy.hx
-0afa5ac679243638bc3c7755595b675204a9139c examples/C/taskwork2.c
+e2c74f2d25aeebe27d6087db3d43a552abdb7394 examples/C/taskwork2.c
c29f21ff0d1fb6a9ee98814df7be5788f3d8592e fragments/C/zyre-beacon-send.c
abb8ce37b7d3a289074f71f803b65ae28f9829f8 examples/Tcl/clonesrv4.tcl
2520d1cabf0172062f0c4b6a87145e6b5b399e44 examples/Lua/flserver1.lua
89e13f078c635c5e0065956a079fa9771a24cf07 examples/Tcl/mdbroker.tcl
a15582497ae1c12cdffa1c872caa487601e82c8c examples/Python/wuserver.py
cf0ae0c61431641b75f967fa773614ff66cc4b8b examples/CL/rrbroker.lisp
-30694694e93b0f1b2b2cfba410d12b0e0c41aa0c examples/C/ticlient.c
+42b9e6234bb6905654685c2f9d399daa5d502ba2 examples/C/ticlient.c
29ebe8f3b290a947f8eaba3b35128c2e7126cc1e examples/Ruby/taskvent.rb
+61862cb4b75bb52a6f953a658cbc80aca297a0e2 examples/Ruby/peering2.rb
b60ba58468fdf27b8607ecf4eacdcbbdf66e0fd2 examples/Python/kvmsg.py
3d2b26444d7bd68c29391ed42f6d2c02f5747f04 examples/Ruby/mdclient2.rb
-a76d70336e1fb5096de4f74b0105139211814953 examples/Java/tasksink2.java
+d0ef704671a09dfe6ae70f6cff8411785038ffba examples/Java/tasksink2.java
17e459c9891d231d8cf52d9ca1bfa777dfe67e5d examples/Lua/syncsub.lua
1cc5cd39f0b2232712aadfa9434f000eabd3eb7a examples/Ruby/mmiecho.rb
2355909dfef8de50aa143397bd00591557753cfb examples/Python/clone.py
014919f68d6ec5a501157ef55a2dc4b2fe1c4110 examples/Tcl/bstarcli.tcl
-fb8d2740f5e5687f1cdf1807bb16360953f8fcf6 images/fig42.txt
+6297f5a2429dab80f2a7e6612314a2b43217ae31 images/fig42.txt
08e331390a51964ee1232291b99fe34ff3d41aeb examples/C++/mdclient2.cpp
f800d0fba27d579046470d7f59351d2a545c1ca7 examples/F#/wuserver.fsx
1a24e823e7936c1d5b88dd27c9415f1b5a2ead15 images/fig66.txt
@@ -447,73 +475,78 @@ c9aa1cea8ad4b225bfaeaae56d2388db2a4bbe13 listings/Lua/listing_53.lua
c1460f884568380ade196d868c6148411ef37352 examples/CL/hwclient.lisp
717c8a25e9c645b0bab80ba01589371690be3948 examples/CL/syncsub.lisp
4d05483bce237792ab5a688bccb46def4034b624 examples/Haskell/wuserver.hs
-3d7d70e52f8814aec8fe3088f07b3ed6f94f3f64 fragments/C/errorhandling.c
+beaa4fd92bef17228d5616ff7962ac66c091d443 fragments/C/errorhandling.c
40e868bd02dd79415e71546829eb1e135ebe0682 images/fig35.html
517fbf4531bbc0f0a8e4cfbae7a66143087c6d82 examples/F#/rtdealer.fsx
3e9c994103f803bd46ea4ec951c3214ffa292ae5 examples/PHP/mspoller.php
f784a820d2323927533a5a9bdf68fce03f0d7c87 images/fig22.txt
52fd1ee7017e5e2e5e462ce72d7cb17b9f7728c0 examples/Python/mtserver.py
-c1dff700e39a7ba1ee468e0a265ff4a692da44db examples/C/rrclient.c
+e13bd7a009d1317ba51281f3f0bb2e70431be099 examples/C/rrclient.c
a64321fd57eb6457d6b022f4cd500224ddd39cfe examples/Q/hwclient.q
4b649f9decf2eafdae94d4ecbcd179f6672f9c77 examples/Python/tasksink.py
-1ead2466fd2cd8194a019ac6252e212312a8a438 examples/Delphi/wuserver.dpr
-2aa879f0d5975dffd214c8ad4da28c51fe25daea examples/Java/msgqueue.java
-a58593e768f43e0f072010de14c9479ecedc7390 examples/C/clonecli3.c
+1678be51b94a0743dfd7d0718b13106f8ad73c38 examples/Delphi/wuserver.dpr
+1716689f30998ccb496c34022e5910d7fd8f8d70 examples/Java/msgqueue.java
+235972eaa0204e297700f09544e61878927e4321 examples/C/clonecli3.c
ea6ef00910056a10b6dcacd8eb7b066b588fe5fc examples/Clojure/rtreq.clj
04ec3cbdc742b244508905d2230d7024beefadc8 examples/C++/syncsub.cpp
28474bb198d026945549367392cb382d93ea5f43 examples/Tcl/tasksink.tcl
dd154b1823b1d0c1973878e75eb555a1b39b22a1 examples/Erlang/wuclient.es
-55ca07b17a51acc9b9845562bb32956884a08228 examples/C/udpping1.c
+7b3644a1b751e63fb88deba44e81f8d492effb9c examples/C/udpping1.c
132d7e305c5e8c8b97ce8ef09887d04e877a0358 examples/Python/lpserver.py
52f6c50f023069cc74ab39f8a7f3688ee05bfc51 images/fig63.txt
+de8764d796d7aa7257ec02aa16d9cdce3eb4179b examples/Java/clonesrv2.java
9a71a2dc4b91375f9eacd1147f4d67103f4d3ece images/fig44.html
2fd66fb7929ad455d7cf315f51525a9bcc959ae6 images/fig62.html
-5d2034ef8adc1ce16be15888decb5212f5bad376 examples/C/flserver3.c
+b42abea6a313d78ccdf7d3789123a30de8c43c25 examples/C/flserver3.c
7f1351d80c6c8474c1a36aab1491b2af803bb316 examples/Python/hwclient.py
f5d703809e7a577231e35f969b3354042a035537 examples/Haxe/rtdealer.hx
026df16d4e0a52c63cb4e1c4392df6f359775b4c examples/Scala/taskwork2.scala
1e5211b4baec288c727840289e4fdaa7fa8eb1a5 examples/Perl/psenvsub.pl
-26064e8811a647a288bc96e8c04e09c8c055fb7b examples/C#/peering1.cs
+d8b373537cb37f71737266424ae7c662769c4e00 examples/C#/peering1.cs
dd52ad88f301b0728681f965b6bb76a0780e1655 examples/Scala/rrbroker.scala
34083411e5fe36ea54dc817ed3f6d211a4976102 examples/Clojure/wuproxy.clj
5c55cb36534b803cae0d0474fcfbce6bfbb6d6bd examples/Python/bstar.py
e230764924bd8db8231b80059797efe170d28c81 examples/Erlang/syncpub.es
fcf5a2d241dea26c637d57e2cc5073e49c442760 images/fig9.txt
-8fdfc5138858e25534c96e7397c42da4465fccb4 examples/C/udpping3.c
+2c625b99bc938a87f755318fe285e7f2bb3c0811 examples/C/udpping3.c
8ed5e8f28ea8a6753e808ec10eb66cd1cf91cf9e examples/CL/taskvent.lisp
48b0ad03ee2653e642844955c6eebcbaf7fcac75 images/fig54.html
-4d25b1c46c16a3cbbe9c22e825719b35e4b22337 examples/C#/syncsub.cs
+4e83bfd85c22e6d983cd19828edbc3f286d8cf7f examples/C#/syncsub.cs
9e5c5f5a52b0d1dcb0258530e21bf125c4058329 fragments/C/zyre-udp.c
594489762e5f929ecd4428e5de205c8b2131cc40 examples/Haxe/bstarsrv2.hx
-0e02a3fffb8895a0d5ed7f5487996b6187f1e5ca examples/C/asyncsrv.c
+b18d23b7f2e62352e8d409858013ca7ab9fcb9c6 examples/C/asyncsrv.c
1c73d2833ca6209e4b88c3416b40b4ef3aea73e4 fragments/C/mdworker.c
2ec354d2c8f68b67833b41c334c7d5fdfbbaac20 examples/F#/identity.fsx
750c4b192983d7255cb344f1dbdef4e1c206ff77 fragments/C/connect-command.c
af68626db911198ba8ac4bb12316974b2c8e99ab images/fig22.html
-3c5dc4717591388d5acca861d1a2c72f49734608 fragments/C/zyre-beacon-recv.c
-f60dbf7d5bdce09ecc35f912c90219711a99a063 examples/Delphi/rrclient.dpr
-ee25f638ba3392c24c2226e9a6380b4aa9b2abfd examples/C/mtrelay.c
+8cf6bf54ba15eb2c852d29bb5dcba2f44ffbe9b3 examples/Java/clonecli2.java
+3fcbc9778cafa6ab50b0b85ec68e69b7d92e859f fragments/C/zyre-beacon-recv.c
+3ae72c545320f77726dd09d387a140b571108b00 examples/Delphi/rrclient.dpr
+65b4d978bf4886a572528070033613e93d8ac8c6 examples/C/mtrelay.c
03e21f2d6542a348e8b87a7b036d4189cc0e6125 examples/Lua/rtdealer.lua
-3e71716e39f94773183a0ac509253eb11e69cd25 examples/C/lbbroker2.c
-0cf5bfdea92aec874931f5040065cc665b52ccb4 examples/C#/clonesrv1.cs
+912cd7876dae4743cfd8701749744aee26f3a908 examples/C/lbbroker2.c
+0383ad69980c2aafefb7d753ce7aab824258156c examples/C#/clonesrv1.cs
018e2676e32e9fbd9b8c7b6751b06d72b844fca4 examples/Scala/mspoller.scala
293fdb7ec6feeadcf0d31dedbc3d857f872df4a3 examples/C++/mdbroker.cpp
295e1f12ed1c66b7772b05f0af9b1cf85002e7fa fragments/C/heartbeats.c
f38a17f3d6d7d26a9c62ef5866549841e1d8f90d examples/Scala/wuproxy.scala
-296db9e4a2c63d7d381eebe879cae2c57756259e examples/C/interrupt.c
+a6c597789024c5c78816bff8c16253d624b4751c examples/C/interrupt.c
7fb44ebca6f4cf6d5e04ef72f522be3e2ac0dc92 images/fig24.txt
92387031ffc133b6a7f2caaa55af6a7ca2d2cc82 examples/Racket/syncsub.rkt
-f8d140b04350536aba6cf27507894edb14749d7f examples/C#/psenvpub.cs
-44d3e7f1698735b359e9a05f2cc5876796f814be examples/C/mtserver.c
+4324eff8fbc3df978479f8dd4861b3c0d0987055 examples/C#/psenvpub.cs
+4b8647d47b9450b2f8c173bdd8304eb4e5d8d025 examples/C/mtserver.c
+a3890225abee76879055136d267810745cb7e356 examples/Delphi/spworker.dpr
13b93afc9fdce597b792f1f7471fa7fc7c56c418 examples/Tcl/mdwrkapi.tcl
+f40b295a6004aa0730c36bd7710abccd59b66215 examples/Java/kvsimple.java
ba58b751b2696d719c05d8f60bdebd93da5742ab examples/Perl/syncsub.pl
+ad79e50adf5d23d8bf9bf8a29ec8ab07ad3f9b47 examples/Java/rtreq.java
938f008307e416725da0c0e259e45a2abf4ce7a3 examples/Ruby/lpserver.rb
2d753fbefce2e109940f2bb2838e61aafac95460 examples/Tcl/rrclient.tcl
af306aded3f9b4ba9346e444de6fbaee2c8f5380 images/fig57.html
cdd50cfecaf4fdd75f86bd57caef15c4e1a551a4 images/fig32.html
-8bbd8e22934f7e5fe1f39fae82fcf1bd6fa63fdc examples/Java/psenvsub.java
-07c12be9e4d3e6295d55fe9fb60a2bf4ce933b45 examples/Java/taskwork.java
-81f1666789e9c970105a280cab0cab71b54ceb83 examples/C/fileio3.c
+374447f60cc4e1cdae0536ff2f5e075510758d2d examples/Java/psenvsub.java
+0a20fbac8bd1dcc578c5eb44a966364716d8b151 examples/Java/taskwork.java
+a2ae41429dbabffac2f61df806fa58966fa829f7 examples/C/fileio3.c
74e181861a58d8777628ab60d900c0027719f8f7 examples/Tcl/identity.tcl
3b4296ad5c62320f9b196493a4247eb2cd05cc0d examples/PHP/mdbroker.php
ceebcdba5aed54e7db291505ac5f1399a9c23d94 examples/Tcl/flclient2.tcl
@@ -524,7 +557,7 @@ d363b4fd752513f77cef05b4f7314940f6a90308 examples/Haxe/peering2.hx
4cf54788e6b74126f9e0e5e841b2ad0d64bc24e1 images/fig24.html
2fd07614cf3d592062bb2da2b2fa525ec96005d3 examples/Lua/version.lua
846d5c3619c6abdbaec1b61c15412619bd758553 examples/Java/mdcliapi2.java
-cf912c367242d196298ff7b29f9b4306c45e041a images/fig43.txt
+28edde56b50fbde55ea8924bd3f25388d81a799a images/fig43.txt
a3d31e1155e1e94a2f94f4511f8b159376120390 examples/PHP/psenvsub.php
8f70652e74150b007df1d78585d583308f22c838 images/fig18.html
7e247a943c5c1820654e1a53afccc6af1a15d38c images/fig66.html
@@ -534,59 +567,62 @@ f9b0162f2b35fac0e376713f2e3a8022632b62fd examples/Tcl/bstarsrv2.tcl
d01070edf3b90d3a4476d7a4001ab13be72e3144 images/fig30.txt
9aa75f775de177fe937c603fd4038acda1f61301 examples/C++/psenvpub.cpp
ae49804afca1123975717706669b1ea7c37a2494 examples/Haxe/mdclient2.hx
-58469862f6ae4518a8961620169fa2a816a7c0b8 examples/C/eagain.c
+ff11336f83d4775a39d3e77e2e83ba813da03873 examples/C/eagain.c
4f6b02addf92602f48cec666d6ad781107005587 examples/Objective-C/wuserver.m
bde4c8de6a498cb01b13077939246438f2bea09e examples/Tcl/clonesrv5.tcl
cd189e6187770398345581eb07420f74adf97416 images/fig12.txt
a962bf82044ad24a68e58e615bde56e925084eca examples/Python/bstarcli.py
+23bd9a62c620c0289dd713dc1b28be1e317f0834 examples/Perl/rtdealer.pl
cf771c56bcc2cfb37210b06c0c216b1014f04a48 examples/CL/tasksink.lisp
cdc429a6a307669bfc42e2a0ea1cd900c0f1f4b3 examples/Objective-C/mspoller.m
6b7633b5f6cf59eb824181fcacdc22b3d1140946 examples/Node.js/syncpub.js
984c536d1462d38471bc7d0f3291552ddf496b90 examples/C++/rrworker.cpp
83d5e642c342fb7f599fdc0afd2686d664036888 examples/Racket/wuclient.rkt
+7f4a946373eec1e35f1e7d3cd0ada4c5018dc544 examples/Go/syncsub.go
13276c6fe6faf8a91134745baa57c3a7c768f4e6 examples/Lua/peering1.lua
5ead8e955ffd3aef093962fedf4728d31ba9b8c3 examples/Lua/mdworker.lua
5f26f4790fbaf7d9430596b3d0a1bbb139bfc030 examples/Haxe/identity.hx
d67f9d486521c36c3be880408041c2f67a124d57 examples/PHP/peering1.php
-ad1ee934a61a9ba4f7a27303bb339dcb69181ded examples/Go/mtrelay.go
-0abc1617cfb82ded129ae59a6b91735dc7d9effc examples/Delphi/syncpub.dpr
+0d14895fa0f090d8725de23e24f9ec80d7fb2fe1 examples/Go/mtrelay.go
+59aaba1db862652117001c7604341edfd3c6e121 examples/Delphi/syncpub.dpr
d8481c31426c5d10d2bae3b859f937b8c20b23af examples/Lua/rtreq.lua
d11eeafddd91aa9d8001b18baf0c9d7445cf1305 examples/CL/rtreq.lisp
a4bd570b04fee9601ceeb9a256f05a67104852eb examples/Ruby/mdworker.rb
90239ee4bc59d992256c618dda028c16f55ebfd2 examples/Erlang/mspoller.es
-a14c56da5b0be77baee2043445cc2c5132cea483 examples/Java/asyncsrv.java
+e7adb4bbc5d9d9545daaf0e6b21dcff357598b87 examples/Java/asyncsrv.java
3db1df68f9f7478f1c9e0f3b2e84c266a19d25f5 images/fig36.txt
81ca7b3c974d97c050af18a864a0f160aad94b28 examples/Haxe/rrclient.hx
-6002771776c50e8c60cbb4a1255eaba19345639f examples/C#/msgqueue.cs
+3d0189247a402d17242dc5f1b594cdf6341bb8fb examples/C#/msgqueue.cs
5923be948014f0702607b0432be09f2d96ad6617 images/fig64.txt
e4f82fcc83b035388f0ee36651e9456922ccad23 examples/Python/clonesrv1.py
-15cb6e2889cd48e9137f43e9184b542a909ed3bc examples/C#/wuserver.cs
+02f421ff2b77d7c8038e149285722ecdfb6d4d1b examples/C#/wuserver.cs
4fc68495559f6f14e89b297599616af9ab5aa7c5 examples/C++/syncpub.cpp
-d32561733b44e17f68e11332a37ea451271d7d53 images/fig49.txt
-4c355c3ee021f76a7a3c17fe8d73084f67dad1ff examples/C#/version.cs
-e028c4b192655fc17caa2d93271f4b4408e10ace examples/C#/clonecli1.cs
+0cc46e3a077187d3316462e881b2a55a812b39fd images/fig49.txt
+e18dc891f5ceb07fd54e95d1944d2f1756852b2a examples/C#/version.cs
+e2bb5adf503f613cf52d4c6f78c31f4678592522 examples/C#/clonecli1.cs
b1878c6c5ee140cf1c0c1232009d1773d964750d examples/Python/wuproxy.py
261335063778f7117da81a0fcefd0ea5e7ba4f01 examples/F#/taskvent.fsx
8bee4389dc482ea41a969edc0f0a74d3d7382665 examples/Node.js/taskwork.js
-d07c0a1d4aed768a854f2ca8aeff0cb31a0e63b4 examples/C#/interrupt.cs
+9dc7c73a8d673ba2349ef57ca6243006c31292d8 examples/C#/interrupt.cs
3a415228805efc00cc76ee0ddd1c156ec0931f04 examples/Ruby/mdbroker.rb
d551563521aa74d56e8010cfd253d68435cfbb49 images/fig30.html
e6b9b1a9aa818ea53f147962ffb33ccd7df37c21 examples/Tcl/spworker.tcl
+bcc0db1b98f9abf11cabf7dd730354256357a911 examples/Delphi/rtdealer.dpr
3ccfe79cf5c8040097f9bf2c91be166a24bcb13f examples/Ruby/psenvpub.rb
abf89204ea9a06221532aa245cd54a777110c027 examples/Tcl/clonecli3.tcl
5d4d9d06c392dc5877db27425d0d3d600d6a0117 examples/C++/rtreq.cpp
0c28f575d06d95621ab92d75ff311f7dbe6f2eab images/fig69.html
d89583bf0ecc6284bea5eb764b875be3bc38836e examples/Haxe/peering1.hx
-6b1d7f5a62330a7fcccf3a16392f80ebbac88f6c examples/C#/tasksink.cs
+3ac80c081724489f74eebff8bf53c67ad801bae2 examples/C#/tasksink.cs
c2e9e538f889a8dfac7bc8791b34bb528d83170f examples/Python/taskwork.py
-b0bb23f550b303ace9e80373109ebced46caafa7 examples/Delphi/taskvent.dpr
-96e6063c141fe6a77fff308da4d13200e51d933f listings/C/listing_3.c
-ea7338945fc8bcadb1d5ff7fede241918e80a558 examples/Delphi/mtrelay.dpr
-ec38107bb5c1de4d2261fafab2131c3d9579cfb8 images/fig44.txt
+2a01b3ad25739aa3799dee9cc75d09146c5cc0bd examples/Delphi/taskvent.dpr
+3f371b66af875367f92cce6ef2ad569069510548 listings/C/listing_3.c
+3ee9b166191c92ff2c4127cf6927621e523f6dac examples/Delphi/mtrelay.dpr
+f2bdeb81125eaf171a9f5212e19870943917e589 images/fig44.txt
5157a27cd375a61952f4792ddceb152a38a1a022 examples/Java/mdclient.java
-4eb901ffff4da80ea2c755fef9b8e9e78971a468 examples/C/fileio1.c
+0f192d7f0bf272ba9a5a6e962c6d32120d722a23 examples/C/fileio1.c
7a1c3db3b0401371e0bf4188878813d29c949b2f examples/Haxe/interrupt.hx
-e93d8d54afafb7a4a3c7229cd1541bc2ea4630be examples/Java/syncpub.java
+aa12e9b97616fda78d106a24e47e47e350bb1fed examples/Java/syncpub.java
da0678d5e95eb79bce037b5a942a21a7e5ad5e67 examples/Felix/hwclient.flx
8dc30d63dc3bf9792aab68d299a322ee0966403d examples/F#/psenvsub.fsx
8de96d7c83874341df47af49192b5720fdfcd194 examples/F#/tasksink2.fsx
@@ -596,28 +632,30 @@ a7d19cbf1ab02b4badaa2e7e8e59d55508af2a39 examples/Erlang/tasksink.es
da4f91e4b7fde4f2de478da6e0357358175412b4 examples/Erlang/psenvpub.es
ed88f89244f54c196808a203a436661a27c41a2a images/fig51.html
6094db7eeabe82bd65264d74086cad4aefd57859 examples/Objective-C/msreader.m
-f9d0a0669cb0a63f5ca2fa78bad41993a4c1e246 images/fig40.txt
+4d33d2fe83d7f2b506e02c3e6bbd1789888ba4aa images/fig40.txt
42d6bed5c5411d1491da880c1e65ab5eb014db69 examples/Node.js/wuclient.js
-cab289d0991039fc5e7eb7a0324a59c7872a183e examples/Go/rrbroker.go
+8a3568511e7ac4f63898c18aeeaa19a201752604 examples/Go/rrbroker.go
+70f8f69d0eee179db1536adbae9aea5fcf9668c5 examples/Java/clonecli3.java
937d691438f722a7b74763c3b5a60bc3f1aff18c examples/Haxe/spworker.hx
9fd2471fbdb204c1014b85127c88619fe1609c2d fragments/C/filemq-main.c
4024f5c1f920bbbb491953986f4da13bf007d838 images/fig65.html
026935100e4b6db59ee3f10e0f5c0ff21a92e837 examples/Python/clonesrv6.py
-147b628a40f8fb861b946e5898a129ab5b69e538 examples/C/kvsimple.c
+e7cbc247d0db6b60a358e360e65d5480d5c03e2c examples/C/kvsimple.c
0a09709cb0f70a54906cae69a710a1a82f9df360 examples/Lua/peering3.lua
+d8f0985498221d5b29ec4ccdd0ede044cb2e8688 examples/Go/mdwrkapi.go
37fec12dbdcedf2da599e88d3aee12ca54a28d40 examples/C++/rrclient.cpp
9dab739f561e816c12002bfd6a3bfde46e1df976 examples/Scala/syncpub.scala
05cee87881deb0470871ee37c3c28f79848d8667 examples/C++/msreader.cpp
-4714872ae2aa3e16867a104dc2b64a26fe94b026 examples/C/flserver2.c
+d87aaf766aa463af25f9eeaeb14e1b9aaeebfda3 examples/C/flserver2.c
7bfb8809cd3f12d07d8ae8bac7b20669ebae696a examples/Haxe/mdclient.hx
d8582e3fb3e2f71c88c178f7de1637eeb9fb6f39 examples/F#/mspoller.fsx
605467ed0920b734207dad970d90b81ff0b2cd15 examples/Tcl/bstarsrv.tcl
-8bbf0c0d7521069375355cfea12db1af4f9a4684 examples/Java/wuclient.java
+85a8b4a3021d5790aac15654d7ee6fafd5bad83c examples/Java/wuclient.java
41cf357ad67c29439494576d8d6713d0cfd983e3 fragments/C/zyre-beacon.c
-c713cd7cdbe8d2e02e09c30cf248cbdf34f58d75 images/fig45.txt
+867179f96e9adc0ab601eaa3797850f8ae62d991 images/fig45.txt
2adc3d160708690759ef393cde9094d6249212c1 examples/C++/wuserver.cpp
4b7c444789cb4d87d9f5e7fe095c447ae6be27e4 examples/Scala/peering2.scala
-c4c3f4779e818d038c9f406ceab2acb1c9126d4f examples/C/mmiecho.c
+81db8dedb39e8bc6dff203e2ce168100ea9455cc examples/C/mmiecho.c
478229ee0fed61bd53c347dde14c24163042d7ce examples/Ruby/mspoller.rb
94300aaa34b2791851002b2a8442eed9db183c18 examples/Clojure/mspoller.clj
8a6ca213edc8a055815fab007d5d17c9ea22ca49 examples/Python/asyncsrv.py
@@ -626,55 +664,61 @@ c42f18e4d98fbf85a9fed2b7210aaecfe229d9b7 examples/Perl/msreader.pl
a00ef46913f0fe1ba0239a08897eac54734d33e9 examples/Lua/ppqueue.lua
7a3affdf030ad06bbf3e6f62c3060a95bc31cfe0 examples/Felix/wuserver.flx
e8809df4c73d6d22ab8b3a1e4114ed142b75de9e examples/Haxe/bstar.hx
+77fed0244c9bc994ea72446e919630ed7a870aa8 examples/Delphi/rtreq.dpr
ec7c9e16c7574be93c8b2a52070f3c511e8146cd examples/PHP/mtrelay.php
637fe63633f131a096b97c958dcc6b21afef1fcb examples/Erlang/psenvsub.es
+a8cd27a2232c244db54b094330d530d7557d4862 examples/Delphi/lbbroker.dpr
97d9731192887638ab202339984374ba71517ed9 examples/Haskell/taskwork.hs
a7e00a7c16d60da7e8b85e22a5096bc407689dd3 examples/Haxe/lpserver.hx
+3a1ca94dc9f92fb9920f8ebfea5a25d50cc0d694 examples/Go/mdworker.go
181c3ed344dcc4b42262a6eaab52adc119254384 examples/Haxe/ppworker.hx
4219a689f5822159574d07ac23af97688ec7424b examples/Objective-C/taskwork.m
e3e0a93aad24bd4515a6d5eb55104d946c6b5aa8 examples/Python/rtdealer.py
c3f7d84614f2a43e034a083353675ed48edf7813 images/fig69.txt
-2c3014f8a082a8814488d49c7f6e24741d5f8d13 examples/C#/psenvsub.cs
+7bc049ce2908d7f907852661548bff9f34c80f95 examples/C#/psenvsub.cs
a30e34b77ff1ef4e136c061c186999d6e43865c2 examples/F#/psenvpub.fsx
-fe1e772d9b7284c1db5d71c965c3c184d1f147d2 images/fig41.txt
+616b3c7b3c4ce596c6d2a711796b34cdfe29c6f2 images/fig41.txt
6f5abbdcc13d0adf35bf921ba24e890598fd5f40 examples/Haskell/rrclient.hs
-256727742caf471799f4a5bfc80069decd252569 examples/Java/psenvpub.java
-658ebf7b3b375f7828ffed2810f978a313be4f35 images/fig25.txt
+67dbe6e3ea64d79623f093dcfe7534af8eedffa6 examples/Java/psenvpub.java
+6202ec82d2678672b581c64e8cf232c6a4d6863c images/fig25.txt
6c9e789b2121030e7e4e45d5ed806571cafe891b fragments/C/reactor.c
+61fac06f89b37bfe3e0514f4d5ab8418dc8a312f examples/Java/clonesrv1.java
4aaf85684b4730da53d4db829f0c74a5231b5d82 examples/Scala/identity.scala
-4e51c3b8beaccdfaa51cbcd7c76db0921a4d396d examples/C/clonecli4.c
-f9a236e7d02d3144d822578392242d353be93eab examples/Java/taskvent.java
+ae9aea5c3524e9eb632930df5172a7d46a0492d4 examples/C/clonecli4.c
+7c7e58807a90575c13f04910411a90df916f9108 examples/Java/taskvent.java
670708b0fbae6ffef28f048eaa69722da95cbe72 examples/Tcl/taskwork2.tcl
+969d5089d8d918ed597a39ed12fb4506c6313cc1 examples/Java/hwserver.java
a0325006d0a5013b9771ff85f2895d0d051fcab6 examples/Scala/hwclient.scala
d68d866d6c0aee55ad5a87407e2c81422494e474 examples/Ruby/rrclient.rb
f22a46da7b23b95589dc3a0256e68c59c8161a11 examples/Ruby/mdcliapi2.rb
356658177b6fdc3cf9314ef7458af076d0bd786d images/fig28.txt
-f4ef8f0757c0a604067d158314872c17b13cbc8b examples/C/clonecli1.c
+8f216c7d70670052e0d0c217085263af756b3698 examples/C/clonecli1.c
78cea4c633ad9d85ac5f1669fde10bdd5e024de7 fragments/C/filemq-connect.c
-6131f3f44c673d523995a2ca139880214eed1ed4 examples/Delphi/syncsub.dpr
+d1831b90865500baaacc44cb6dc168b23fced0d9 examples/Delphi/syncsub.dpr
f762239cb22c3703449eb6675066128c49fe405a examples/PHP/mdwrkapi.php
29f2dd8b2a9f9914983d03cc821d5bb886bb5d5f examples/Node.js/tasksink.js
216e512d99bfe5bf2e4026ebf4d939b5e3937f1f fragments/C/forward-deliver.c
7d2f295d24a3d135762f1b8afd0324feb72365fa examples/Ruby/tasksink.rb
deb27abf6cc546bd06981369f1b6b857ed2b433f examples/PHP/rrbroker.php
e9294e086e02bbeccfb7044f7b485818606f09ac examples/Haxe/bstarsrv.hx
0bb36e58c66628d69e45817892ff7541ff195e48 examples/Python/ppworker.py
-3716d12f287041f4eb9eb8b1616101a95983ef01 examples/C/peering1.c
+d3d70e1b002b4121d3aaff3045d7acdd94dcd670 examples/C/peering1.c
00904b45d52c2ebfa3c4ccbdb050e59a0d3c8b75 examples/PHP/version.php
-923564b967c88a69f5a35b0214d14be5c27ad9a3 examples/Java/lbbroker.java
+e0400283662dc0e0f0e412ebaa119526c7418c37 examples/Java/lbbroker.java
33b9df8314d8e964a5ccdfd3adcfbe94afb7e68d examples/Tcl/clonesrv1.tcl
809a6fb6e8a82be86ffe0ea768c337c4addc9861 images/fig38.html
78f575cf0dced40352692aad0bf6b044c5b38401 examples/C++/wuclient.cpp
e8dcec2e962eff848e2993fff8992ab20d4df703 examples/Scala/wuserver.scala
-3db0aba7e6b889de9e2d4c15643497b7445c3c77 examples/Delphi/wuclient.dpr
+574aaf3b5e45759f46931cafbab143c2e35cbf4e examples/Delphi/wuclient.dpr
b22744d56e2c02c14e39f1ae7111bd94a7d89d61 examples/Haskell/rtdealer.hs
f859d1e4ce6477cc82463e685f24b37c7c6d4591 examples/Java/mdworker.java
-941186cbf82a9233c5cf3a64a2a862656d4e2fb1 examples/C/syncsub.c
+b0276defae08dfaba990d34ee9e3c600596c87b4 examples/Go/mdcliapi.go
+89fd31ce94a3606de19151dcdc514714a4b77e8f examples/C/syncsub.c
a82fe18ff02f8aeaba24a7ac8b71c8541387cb96 examples/Python/pathosub.py
a17ca9f522711535ada7ac063d963c46ac08d876 examples/Go/psenvsub.go
-8f60d6ff82af34fe11f945f77fa35b48b0ca3255 examples/C#/lpclient.cs
-7a2d68bd1eb183b8314b474be227226f7400a970 examples/Delphi/mspoller.dpr
-24866bcfbe82a7dab299bb590f2ddef1c19222f6 examples/C/clonesrv1.c
+c1cc1a742bf25104809e76ceb8a2caad0cf42f81 examples/C#/lpclient.cs
+a200f9a01d5ee09125c6ef2ba8fc36c870ab314a examples/Delphi/mspoller.dpr
+68dabf338100ed1e09d82e6bddfc94537eb933ad examples/C/clonesrv1.c
b18c46f6571ced278e688f9f3d4eb688328e6e45 examples/Node.js/hwclient.js
22284bee68b3f07153d883f1a71e3c477d5eea9d examples/Erlang/rrclient.es
f6de5c7335e46627ea611eb72cd678f233ab2202 examples/CL/identity.lisp
@@ -683,56 +727,56 @@ cb9140734ae8a32eb67b51854cfd6558dfa0fb28 examples/Java/ppqueue.java
9cba59d77e5bc58e54d2f31b46e03006fffecacd examples/Python/flcliapi.py
d9dac0c15b955107b7bb17045212eedc47a9a83b examples/F#/rrclient.fsx
fd88e273aa6aa83d6e57ba7b5f6e79c2a587fa35 examples/Lua/taskvent.lua
-90b3b9bdf3be2c060d54ac19b0ca71f5d53c49f1 examples/Java/taskwork2.java
-d33029466fe007d6a40eff229ae984db7d24d84d fragments/C/zyre-peer-new-socket.c
-29885d8b42aa761ade711aa3df2f72537f2d7f7e examples/C#/rtdealer.cs
+db6d4d68b09af3dafac009b94f267033a9038809 examples/Java/taskwork2.java
+b9b9cf8c095061dfb6f3943d4827472a95ba6074 fragments/C/zyre-peer-new-socket.c
+32c9d4607a3cabd5bd113779eb7c0da99de8fd48 examples/C#/rtdealer.cs
5099ee606c943236f38ec2c2ca23d41aecc6086a examples/Haxe/mdcliapi.hx
-7cb0afaba65ca6730c3241ea51b723a5bc0080bc examples/C#/spqueue.cs
-464edc2f30ed6be8ffb7e6dd6b3a580678419c52 examples/Ruby/rrbroker.rb
+9b9c6f04c789b5327a8a936f971633dbf0f5eebb examples/C#/spqueue.cs
+d3a3dc95ceb2a4cabfdcb9c5e54ec6688081df8e examples/Ruby/rrbroker.rb
8fa200a41a9f1c62f29f6234d27f654351e2932f examples/Python/rtreq.py
c61b2f5e7e1f0f22b9f7b79c30911308a62ce1c6 examples/Scala/rtdealer.scala
2eb200ebe40e5ad8519904958bd8579a0ffb1852 examples/C++/lbbroker.cpp
-a426ce42762c59b69827a7d02188fc58f44141d0 images/fig57.txt
+b6602f1349ac84e236bdf5ab7acf38ef6158b27a images/fig57.txt
b63c7ba7f580a975a0c666256c09491f409917d8 examples/PHP/titanic.php
02d6406fbee42cf7886b561554013cd00c93e649 images/fig36.html
464826411fe1b1d1968c5597ef8be88338e7c25f examples/Python/identity.py
-2764e2846d3a3b4f000ee4129227193cba16f3b9 examples/C#/lpserver.cs
+9fa77fa0595dff251cfb6d11e941d49b41a2c6b1 examples/C#/lpserver.cs
1ba798e9b2a7f1737c9293344618b9f417a92846 examples/PHP/lpserver.php
ab03e4daf137c1777844839149ba1b8bb1940aaa examples/F#/msreader.fsx
9d92b84a575b76ee5fdac5a8aead948ff30642ef examples/Clojure/taskwork2.clj
-ede61c56ca791dc200d8d2e3dc3ea3e93c88b8fb examples/Java/rtdealer.java
-e45b1e77abdc959f9e430cb0912641fcf7d179e6 images/fig38.txt
-2e55f6cd73044d1877cc1f301a902291e62a4df5 examples/Go/wuproxy.go
+4043c8e31ec852177991d4d77fd29cdf48949ee7 examples/Java/rtdealer.java
+c1222e20eae6005cbb9bbda228bd6a1dc2bf5fe9 images/fig38.txt
+724d456c2ef52930eb73ef48b06b43e2ad4d3330 examples/Go/wuproxy.go
3104553d24dfdb1c56ac22af4fb6d84ac685927e examples/Go/tasksink2.go
f7665b3c745137d93f01bec00c1f3cd5ada9777e examples/Lua/wuproxy.lua
9c1b0fccc7cc8b8c707ca81f2c37732642bb0e26 examples/Node.js/tasksink2.js
-1bc3ac0654d8df13824ee2bd7fd4a2c9f09c0297 examples/C/rrbroker.c
+4b328092ab567ddd6b08e8e855ac2b2f957cad47 examples/C/rrbroker.c
7c682b5ac16af1de897da51335add16f628dcf7c examples/Java/mdclient2.java
d57ccbe787977ff744f80d4f1a79197ecebf06f5 examples/Tcl/flclient3.tcl
f520237500b7e1a64ed29371f254011cc201e600 images/fig11.txt
-361a72d8ebe3d4c7714ecaebf8d8ec45c297021b examples/C/fileio2.c
+d6cc2ffb3b9afc62d4289d3fb63bb7cc973754b5 examples/C/fileio2.c
2616973ca5e429429431da8b0cd68fee2624d780 examples/Ruby/taskwork2.rb
c4f77206176aa5521161c1c3339f9721544386a1 examples/Lua/spworker.lua
3712754dd7ed93e0aa9912839e603cc377fc24d9 images/fig34.html
2e791f8c7978a06b4dbd1838c9d80c2ce2e45021 images/fig29.html
-d250d9438b5016fffc7d213ec9c7aab5d78a0bc2 images/fig46.txt
+933b305cbc599a7ed92111fd83642dbdb71a0fb9 images/fig46.txt
643e0a25fa76bad04e49b3a1dbe1307580dd327c examples/Objective-C/wuclient.m
-f8d9818f5a0c1074c16409d72c3136a79cf394e0 examples/C/mdclient.c
+624d8c49efa3cbbbf331485e868e67ec1f63429c examples/C/mdclient.c
5e53f164abf421c2006fa3a693d0e89f4bf70701 examples/PHP/rrclient.php
d94ee5f18cfb33e812f33dc7043e649a03c32b0c examples/Clojure/psenvpub.clj
9c7cbcee1d9ec6b3aedf20d1b8b87e67483f469b examples/Clojure/tasksink.clj
08ff035f92bf543f376d754760a2c70c33d67395 examples/Clojure/psenvsub.clj
537ff7870193111288a2633fadb6f08a9571f385 examples/PHP/asyncsrv.php
86f6b496dc7a3a9a438bab11eb48c528bfd7c3ea listings/C/listing_9.c
b34b2c8e02016b6b06fc86b29ffac4d3c634a789 examples/Tcl/rrworker.tcl
-11300a3f44bbd371adb002f71a0e60798d6a77b8 examples/C#/taskvent.cs
+88363ff6df028b77bfd0b48ab56768829db48d6a examples/C#/taskvent.cs
1e9bb59fd3f4d4c2cabdfb7a0405b58624b13df6 examples/Python/syncsub.py
-411ad6e6deeb3707a5d273b7dea266b1c3d3a91b images/fig50.txt
+980cf75580b8f904e80d78850df2d1179fd04b38 images/fig50.txt
d08db2f494327c9a65b666e87870036eb427825d examples/Haxe/lbbroker.hx
-7a3cb549757293282c7ceabbdfb099df610f6e15 examples/C#/lbbroker2.cs
+739577b1a9fee3ecbc99acdb649691b6dd558780 examples/C#/lbbroker2.cs
4b31ce38ae50c343af437aef319e959f3dcf73b7 examples/Lua/mdclient2.lua
609460d6a636f53f2eeeaadc57bd7421ad67de73 examples/Perl/wuproxy.pl
-d159ba66186230f04fed8f83844c792aff81019b examples/C/tripping.c
+ebf331e82e58248bcd07768c40245dbb98588a4e examples/C/tripping.c
475db08e2b2dd6088f0f0f9db273dad36b6c0f4d examples/Felix/taskwork.flx
73179f58bce97f2cff063d3b22660047c5b0370f examples/Perl/mspoller.pl
8f8986abfc39b91a8e2c5d020560cd2890d4c759 examples/CL/wuserver.lisp
@@ -742,158 +786,167 @@ cad4eeb6fe15288442ea45008ca3ee75ce40a356 examples/Python/fileio1.py
31bd219d91215e0f6262533bc61779327eaf4ea2 examples/Python/lbbroker3.py
52d9e457f949c67fdb3acd2f64d6ce53686c0b80 examples/Erlang/taskwork2.es
50fcbfe98df4d0871af7d661b81ff27e2e6a3185 images/fig68.txt
-cdee5016c07c977505633ec38fa86293d3e27c0d examples/C/espresso.c
+194160381b1948d68d076cdcbabaed094603520e examples/C/espresso.c
e60f304579ad222dddc8225897c3c579f05ccce8 examples/Perl/wuserver.pl
-06df28d3ac5ae19b5c9eb7f6f64b7b90ec049b47 examples/Delphi/tasksink2.dpr
+4449250c320d9e8d15618a6d0085a1857ccafb11 examples/Delphi/tasksink2.dpr
3834aaa33ec4c8b136651dc03360b8f7dfce7689 images/fig15.txt
2c5354780babaaf2809d4f18e24b13f652098fc4 examples/Haskell/psenvsub.hs
df1eeb177fc9bad19c99bea594b0cfb7c688afa7 examples/Python/mspoller.py
687455a3f25b0a824290a0ac51bfb29aa33f91d8 examples/Haskell/lbbroker.hs
4a12410f03667af7cba83c24707f50ef331ecaf7 examples/PHP/flclient1.php
-095d342176a0fda1cee40a30ca2e17a575197051 examples/C#/mtrelay.cs
+a1edc00f9874c34a76dcae506ffc2180403d983f examples/C#/mtrelay.cs
137bca1cc89a459bf7d5487da751da88b66fba45 images/fig31.html
d6182fd4ee4eb17e1ad1b7b924e4abfcf0079604 images/fig51.txt
c9aa1cea8ad4b225bfaeaae56d2388db2a4bbe13 listings/Lua/listing_54.lua
33129459345c3164e77b597cc6ba1c76724584df examples/Clojure/wuclient.clj
-e16f385f8fa1b28f5ec0e891cb1e05d75f6ead63 examples/C/kvmsg.c
-b6f988ee590f81456223cf76eed663f0e2363d62 examples/C#/syncpub.cs
+14dfb85f4ed42ec7c23c941e0ae8e19e88b519e2 examples/C/kvmsg.c
+d41609a2040b08166cfbb9bf29e917e12f31bf0f examples/C#/syncpub.cs
388926d583d1061b30e41101fd3c73c386f8a7fa examples/Haskell/syncsub.hs
0a47c27d1122cf9c966510be8773e1e45a50e129 examples/PHP/peering2.php
-0b31b12eb61bcf9be22cd96f293ccd1ee1fd855a examples/C/clonesrv4.c
+a9fe928bac87fca23f0549bad0255878427a75b6 examples/C/clonesrv4.c
33d7598d371bb22cfa13b3b6f1ec2afdca2376c7 examples/Haxe/lpclient.hx
-e87a207980d263349cef08fafa26c29f76a5bcfc examples/C/hwserver.c
+ac5b04a272140ad0c9dcf49225dd18f72806385d examples/C/hwserver.c
04af1c7b629c704c3567b341d6fadcade5b4623e examples/PHP/lbbroker.php
bb8a364dafa13cc58fb7beea5660706604fd9bd6 fragments/C/mdclient-async.c
d462ee86e0cda76fa9baa2eee736b57328e48e06 examples/Haxe/rrbroker.hx
775da39ca34fd7747b9996ca5a3814fc7b20cc4e fragments/C/filemq-outbox.c
ecb71c5db9aa051d94a08c6ce4cec21f6be68da9 examples/Lua/taskwork.lua
-b297eb869c526383372c9bf010cd59524e5a71d2 examples/Java/hwclient.java
+2f5ad6339bc051c92339da11f6c5805707598f76 examples/Ruby/asyncsrv.rb
+440aba7e7f0914c8d31935b44709332a39728b5a examples/Java/hwclient.java
139fd93844fc6d40436fc072433805091c743dff examples/Python/titanic.py
eba142807de55f8283f9e037b6b5f3423a496d71 images/fig25.html
2862cbff59b718df962a8d31cd5547825734f79f examples/Ruby/titanic.rb
8c503896c494994aa92badc2bec13c8b0cc465a4 examples/C++/taskwork.cpp
d475b3cef1761b7fe82087363c65402d3fd35ecd examples/Scala/syncsub.scala
9a194dc680787428e8043a16b929fde86e879d05 examples/Python/rrworker.py
aa08eecc0c17fc62ede2b94fa68634b180fa191f examples/Python/flserver1.py
-92315f716ea52f34fea2225ee902584137726271 examples/C/rtreq.c
-05151851bf4cf7ed862564fa26806e85c72342f3 examples/C/pathosub.c
-e4a3b1696fa822e9e5c3d258d70d27531f20b8a7 examples/C/flclient3.c
+404adc2ceafb6e239779ffe67e0556e88ba58bf8 examples/C/rtreq.c
+25418a9d043603f51f8942274a25d8cf6e455c08 examples/C/pathosub.c
+d483dd7e80d571a155c5169daf5552d3086b928a examples/C/flclient3.c
8b478d2ee0ed9760bfca9fe7a444accb1729419c examples/F#/syncsub.fsx
0d4e1c57fd64d769ca8569cdb7ea89726e05c2cd examples/Tcl/ticlient.tcl
6c00b6105deaf40e891c5ebeb6d3aabd184ae79f examples/CL/mtserver.lisp
044f1a4b49590b07181fb131005ac47225180a77 images/fig59.txt
+6c42382bab00c57293aaeea3875e151c63dd94e2 examples/Go/lpclient.go
356e568c343e9ac7502c2acddd1dbc86a50777cd examples/PHP/taskvent.php
a19133e3125629d9e088dc5e093ca64fa079adb4 examples/Clojure/lbbroker.clj
c416903da6d1ee6cb2ac35379d11eba5c3c8e7a4 examples/Lua/mdcliapi.lua
-a77bdf24390fbd14936e93c933a4b1f11bf508a3 examples/C/pathopub.c
-480791747730347aab8e38375d8cdad255eac624 examples/C#/rtreq.cs
+0b169963296bfef5eee48647593e6497d8535e54 examples/C/pathopub.c
+042e40aaab773d794329b82de91bd1710b5c37b2 examples/C#/rtreq.cs
189a00fa6ec82be236501914ec7cdf59f5ad10b2 examples/F#/rtreq.fsx
223024a5402ade184eddf55db02bbe15bc8bfb4f examples/CL/mspoller.lisp
c601630483aa8163c164cc05654c93e1ec4238c6 examples/Python/mmiecho.py
+814f037b7565ade530129750ccbd5d3c58a079d6 examples/Delphi/lpclient.dpr
04b62bdeaeb81b021a26f0a9a1b5d05e65809b0d images/fig67.txt
8aa4b0bcbf4a6ad58ccff0bbb23dcc556cd748e2 examples/Scala/tasksink.scala
fc2cbd33b5512f2117673a1d75606e94172068fe images/fig58.html
7f1f4a7dcdf1252b8a586a5f7ede040b33a43011 examples/Racket/peering1.rkt
-3576a6deab0a0102a7801b26103ba13772fb2f7e examples/C#/kvsimple.cs
+26a59bb7b3c4811ac826bfb2d2474d6aa67c0471 examples/C#/kvsimple.cs
bccd2903912a0ee9327147df46c2f2ee4af4eb7d examples/PHP/msgqueue.php
7cd942169f9e19b33d41873f80dca8d24befd4df examples/C++/rrbroker.cpp
3f8a218b52eb47b789c995025e4a4f01979ba753 fragments/C/binding.c
5ab6f9eae9b48e19d8d9db8fe00491d7afde1d09 examples/Perl/hwclient.pl
3c6a9991700252ff4bf317ea30374b89f5397369 examples/PHP/ppqueue.php
-eac1fdeea054fa75aa75ca66f260c4311e1f20cd fragments/C/fmq-server-methods.c
-ed847f4794451efafbc3fe0147f473d39b0f9d02 examples/C#/ppqueue.cs
+73b605b59ab67e24f5bdf894012ac409ab4d7cbd fragments/C/fmq-server-methods.c
+ea7b50c351f1250656e1d4a2113c0a82a1d0b0b3 examples/C#/ppqueue.cs
050c9a52a5e95e34019579a68f6d69ac4593e074 examples/Haxe/psenvpub.hx
454aaf49cf11eb196137db4b526ade21a29b9678 examples/PHP/rrworker.php
8e636c1772843986c290c680361eb88fb98eeadf examples/Python/clonesrv3.py
029199c8a81f8216472398be978d95800a21a7f7 examples/Python/rrbroker.py
-9db57ece45c7799ea6aa96b721737203e149a444 examples/C/hwclient.c
+8313229e329be84714221313618bf3f5978ad0a7 examples/C/hwclient.c
5bb675a6bd01e261d362f0af4ccdec8115594c40 examples/Perl/mtrelay.pl
b1e9caf0f65c7e5cc871e71bd6b66540aa34706f examples/Perl/version.pl
b5adb151d9261bf29736db8a224f2546db19c945 examples/Go/interrupt.go
cb990ae7c17f286112b5bf854fdff34bd1928f1b examples/Scala/lbbroker.scala
7366146da7d9eee0b60679686ff5405f1d7a8b21 examples/Python/espresso.py
a15cf4f006365029bcc77a745dbb3834d8b8abff examples/Python/bstarsrv2.py
0ea81e82dc8df0be93ab6b3bd8b45b180656bfb0 images/fig49.html
-e21d50d3437b908c6a73df83388a47024a89db32 fragments/C/bstar.c
+38b68c720cec633389e0d5a5b3f520936fadf397 fragments/C/bstar.c
bdbb101eb5f90914501411e4c64e2c6729a3f138 examples/Haskell/rrbroker.hs
-51ad42202da234dfb591357a66b6a65846768e9d examples/Delphi/version.dpr
+207966a5b67d0543e5066b92a7baa45250b44795 examples/Delphi/version.dpr
820d3cbfdb8aa3c0286920322dc7d0ca44dc13ef examples/Python/clonesrv5.py
aeacc2169932a79b2878a7632bdc74f56feb2dd4 examples/Tcl/rtreq.tcl
eee27cebfc3430bb721105e5d820b5820960f8b8 examples/Tcl/syncpub.tcl
-22231306ee0a96931796aeab7edbc7a2b66ccadd examples/C#/wuproxy.cs
-a2d591ca2392f5f245a1067f198370eb093db65c fragments/C/recvmore.c
-dcfa38144e9ca888e88e26dbe7eae24d26887f42 examples/C/mspoller.c
-51ff473e39ebfe618aa97b2200c9180efa785300 examples/C/clonesrv2.c
+b3d5b2b9a29794bd811c1777edf1b6d6d07fd4c8 examples/C#/wuproxy.cs
+0cc91990c0c4f5628157e391d43074bcd9c518c9 fragments/C/recvmore.c
+8f956cb9bd1fd48fba8919e5ac819f1ea61823c3 examples/C/mspoller.c
+6f6101425256e535b1408cee97da6095b5de1b9d examples/C/clonesrv2.c
37bc92528a15cdbeb8302bc27d29bbed9202fbfe examples/PHP/suisnail.php
8c1ecd0d543358734087158cf299ffa98f960cda examples/Go/taskvent.go
e3b95ea8ee2eadea277631c3c16dd7d5b8da37f6 examples/PHP/mdclient.php
+3591e69f2753883fffaa163dd41ad256273d5dab examples/Delphi/spqueue.dpr
7b36da4cfba46a19dfbf7e74b216d4757be8ce60 examples/Tcl/mdclient.tcl
+5e4499c493544fe747e3caa3b1b30f437b1d8527 examples/Java/lbbroker3.java
9806d055c7c4df58841399c365ed929c79a179a8 examples/Felix/taskvent.flx
7015b197d0a9ba9b09239245af73188343aa9f65 examples/Go/msreader.go
-5e4d11be82cdea93f9dcf219dc80ac65589c4951 examples/Java/tasksink.java
+d6b3d1ee2725c463f47f87692e5cb477ec74d248 examples/Java/tasksink.java
34486074d3fd5713802f89ba80c8ef161c28bae8 images/fig61.html
fbb1fe86d260e1144bce0552b4430c6d074c4f8d examples/Perl/taskwork.pl
28b49ef3458db97ff3e067ffbe82e679dcdbc85d examples/CL/msgqueue.lisp
b6a99b3f201db11d19790372f661d267888c5b8d listings/C/listing_5.c
2e2597cdb67625c3605417fc9b251f98309d9cc8 examples/F#/mtrelay.fsx
-926b8eb58ced92421f238451ac200d924edb18c6 examples/Java/rrbroker.java
+66098e0effaeeac77b73dc077c48901f4d77859e examples/Java/rrbroker.java
3251f5a918c518d4d999745f4bf519aff15c7fe9 examples/C++/spqueue.cpp
599ba58b3c662b5544df37cbcf1629bd53d4d73e examples/Haskell/mtserver.hs
ca32f9d180f19102ba508528215cc205ada78969 examples/Python/ticlient.py
-6329e7bd426fcd55c8f09d1cdb284c6c208e5f4b examples/C/mdcliapi2.c
-9808e21fc8c16b78260520099c06e012328fe7ef examples/Java/rrclient.java
-01e564ed11b92b06ca1c9d2b5d3750014d094389 examples/Go/rtdealer.go
+34780580f1105cfa0bc3be1e58d544ac71fc3341 examples/C/mdcliapi2.c
+ab3677119298e55c21d14d9303a6714403da5b37 examples/Java/rrclient.java
+56a8dfe4502fb612418c459f7a0e0ed747f16439 examples/Go/rtdealer.go
d86949a2f0c731f7adebc68817bd40a1d3956249 examples/Haxe/mdcliapi2.hx
f9a1065debae27c68bb4b5ba2f42f1c2f750882e examples/Haskell/taskwork2.hs
d56849079c6febe5435dc8e9d80efc6cd3bc0b57 examples/Tcl/psenvpub.tcl
1a1f021db1ee5026b046979255bc06557ce5ccc5 examples/Python/taskwork2.py
49d8e81d1a2a15f28797329da96cf4357c0295b5 listings/Tcl/listing_51.tcl
b0433d2cd17f5378ca0fb15e29a38dfd7676a38e examples/Clojure/rrworker.clj
-57dc37180cf0cb55cf74cab641aeb5963f0dd2f6 examples/C#/taskwork2.cs
+76c657876405e7d2420fe1651029e5754e977719 examples/C#/taskwork2.cs
be1675522415917024e893c987eb2bfa3cea6497 examples/CL/psenvpub.lisp
-e9d14d5c9f07099270bd481761a91f6cee3c8e69 examples/C/psenvpub.c
+14a7dfdd391bb83bebc9e8ac9907f27958e497b8 examples/C/psenvpub.c
7bd3e7bec716f58b445c5aa362487cb561ac8197 examples/Scala/interrupt.scala
dbfe698065615c709df22f3dbafe20d92c10df21 examples/C++/wuproxy.cpp
831cbd27da4d2640d2138376c68fdf727f39fc90 examples/CL/rtdealer.lisp
+51699a042aa07cfaefc29c990a661c92d7a8e9db examples/Java/peering2.java
3d4902440450deb9e6fe770a5d180cdebd1d75aa examples/C++/taskwork2.cpp
70f78a553b0ce661932abed8aea9c29b3a7cd246 examples/Haxe/msgqueue.hx
9b64452578fa4991a7b12b83726618e97d9b6961 examples/Python/peering2.py
040c9a2a97211fbe7694e38722c009b99e82e9e0 images/fig11.html
ce1b0ff8570cfaccf4da8d1616efa7a9832691c0 examples/Erlang/tasksink2.es
-b8810620cd3720f59d0da02a129aa15e7b6a7c9c examples/C#/spworker.cs
+208f3f00cd70d17e87084d475aaceceaa54212d1 examples/C#/spworker.cs
e571c5139b2421c11e1d1a6a8f3fceb3e46c57d5 examples/Python/flclient1.py
-fc5f173eb09369a47d77a13302d5f41a0d6f1efd examples/C/titanic.c
-b0ac55ad4ddb5e379b3c538d8c9fc39a55373663 examples/Delphi/mtserver.dpr
+6ff30f6b9c0cb1eb945017a11684dbc9a4b77de6 examples/C/titanic.c
+7f3d0779df5c80f5e1ad1fd35bac4cb699281d97 examples/Delphi/mtserver.dpr
d2897ea493dd51909f8493f4696a61e179839348 examples/Haskell/rrworker.hs
eb9d69319caba861c00f3bdd2171c4b1ddb2e920 images/fig15.html
1e57bb46cc6483e97c5007a9a6f8eb34ff800fd3 examples/Haxe/spqueue.hx
6e380b8ab0c1328367eebb09ca8898061300ea0c examples/Scala/taskvent.scala
f29224468cd3a41a6c49e15473255a03ccc714a1 examples/Tcl/spqueue.tcl
-e3b5a89286a8f1ca714c530f2516ccb2f7812ef3 examples/C/interface.c
+51eb67ac717cb906b195b866a14495fc8763d09d examples/C/interface.c
e401bbc295490d46d4bc2faf43e18d83ecc347c8 examples/Tcl/tripping.tcl
15c1c67a75d5fd2494d7accd02825c71314a9328 images/fig6.html
-f6ad34460eb79ea8e8bc3a76f08861d041410459 examples/C/wuproxy.c
+bf7dca281e272216c02b175c314c6c6c2d3829b1 examples/C/wuproxy.c
20725ab69a77fcc360b08324a3ddcc2f340e6cb3 examples/Python/spworker.py
081680119fb0cc113bcd132d9d8bd83cb1014f9a examples/Python/peering1.py
29510a4334f677770d1a5bcd1cda0ac5b26e1847 examples/Node.js/taskwork2.js
de75777b140ade5e3a8d40dd1e0add6b130012cf examples/Haskell/msgqueue.hs
05930495b09eb242a7c95dcc8352f3a4ef633dfc fragments/C/fmq-server-api.c
c8b48d8c968235a8abbbfe75bb10df23a5195ba3 examples/Python/mdworker.py
e0262047664aeec36e21064043def139c1fc9155 images/fig70.txt
+995d10c8269b371e089b9a82286ac245f4d2bdcc examples/Delphi/lpserver.dpr
+453bd45a01ad126831bb34b7341ddb802c798446 examples/C/clonecli6.c
3b6d4525a42e93a330e3477340822168b4ca8f75 examples/Python/flclient2.py
-98a30320f3002931534b647d2fcde0cadf939bcf examples/C/version.c
+c26d17db157dc84eae2a9ba1719c6cfc17614170 examples/C/version.c
163e2cd99a87e379c1a87029469e0a9d8bb60687 images/fig33.html
0801e90a3e07e49b49bb35e7f3e7bd2f6d266ccc images/fig7.txt
c5daa5026683f992a38e451a02137c852ac10cf6 examples/Ruby/taskwork.rb
-37cae4e61787d0e919eecb92bf8bb120b7af9720 examples/C#/wuclient.cs
+1dd739f1d8091e6f7eef4b9ae6d049206b35b154 examples/C#/wuclient.cs
b42c1d6d1c4ffafeddf3195ebd8d32454a31d131 examples/PHP/flclient2.php
-f05049e9fe014ac889bf9adf03ef0b1b1786482f images/fig3.txt
+7d4c9722fd1802478dc1e56645c0f74bd19cc693 images/fig3.txt
49d8e81d1a2a15f28797329da96cf4357c0295b5 listings/Tcl/listing_53.tcl
6d0728c1f389c9146353665ea97e9dccd013c067 examples/Ruby/identity.rb
-355f613847209ec070652f0172c7977bb831bbbc fragments/C/clone-methods.c
+a2ab4b661f1da77d469a2bf1c74f39b9d43a94c1 fragments/C/clone-methods.c
28b2b15746d80f3871d749d7de62a66947758b77 fragments/C/fsm-instance.c
67de9145c8bcdae5b272e4aa0fa8d72b798b62aa images/fig16.txt
7adeac0c791e19168f44c751cba6c468533b1f30 examples/Lua/mdwrkapi.lua
+3c1191aeca07eb94eaa78ae7f2b684bb34d64f55 examples/Python/clonecli6.py
ab0a2a2e4104987e4f51ad3fe9edd0754fbcbf1d examples/Haxe/bstarcli.hx
73ee4b49c4c999d28a0bb3578e172936195a1b3f examples/PHP/rtreq.php
1ef10b9ac9ce6f170e6f7ea5cb30b1a3e60a46db examples/Node.js/mspoller.js
@@ -914,18 +967,18 @@ cfe68db32b7b49ac8cf33bd4cde15754f6493bd0 examples/Perl/wuclient.pl
eb12dccc27f346760f4aee64c17df824847a3df5 examples/Perl/tasksink2.pl
ffa6f911753f4667adeac7acbf0af82619c3298e images/fig59.html
ae475a12b99273599a214d56bf703775ff140768 fragments/C/interrupt.c
-89190c2c76b14e9143cbdda97ea49c9ec0375bd9 examples/Delphi/msreader.dpr
+17be53d1777471b2ed74de4926395d4c618ae60e examples/Delphi/msreader.dpr
5749da0d2c7a5e101cdbf5c20a9fc785c4715663 examples/Lua/asyncsrv.lua
-a549bfefda37eb24bec206266654fa07b59c47f3 listings/C/listing_1.c
+513d70335b439f1342b902355ebd375cf09d3637 listings/C/listing_1.c
5f2ef1d0e9b906dc41082d21437e27dc07e15266 examples/PHP/psenvpub.php
855c1c483a7b292b18287fc9a6c01ecd078428eb examples/Haskell/psenvpub.hs
76757f1ea4c6d00304b1c3862bbce137923ce313 examples/C++/hwserver.cpp
d4a9334aedf99b5a80c6aa8d4bad7c4a78a95bf6 examples/Erlang/asyncsrv.es
-5ff3c2c179e232a14a77c44b28a4ba00136df193 examples/C/mdcliapi.c
+6ceae71b17dd3e09e3c624148efd05d9205bfaeb examples/C/mdcliapi.c
c58e47792e687956eeffd0a9771e16740f99c583 images/fig9.html
45e372bbd69237f77bda4cd8ebfcb6b322624993 examples/Tcl/lpclient.tcl
63ad6de94fb07b6c81a710b62e7c3448326958b6 examples/Haskell/asyncsrv.hs
-6be59a869b523f84d39911ba3555bb5a776e2195 examples/Go/version.go
+b23138dc4864efe5088034fc784a958432c4f327 examples/Go/version.go
e9dd478370cd491253aa8d8f1c6c1edd4058a87f examples/Ruby/interrupt.rb
b4feff8a129abe704d2b6e50dda8619a44db1dd7 examples/F#/peering2.fsx
7eecdb8dd0439f2e3ccfd373207e4a347b633fcb examples/Scala/mtserver.scala
@@ -934,66 +987,67 @@ bcbf3df1c3a7b6177e2fb9c4b23fbef2c04fe453 examples/Tcl/tasksink2.tcl
90c96bfd1e30968d85624f75d7bb774b863dcffa examples/Haxe/tasksink.hx
f40c8598540a80e5c0faa3cd3bc173065254bbde examples/Erlang/mtserver.es
78a06c0b8f7d02d0e076bff3dc7e89b742f18848 examples/Haxe/wuserver.hx
-da7b030c35b1fa509d48955824533378176cd6c1 examples/Java/mspoller.java
+cc4b72d827309d86555222476ecdcec8d19c5c50 examples/Java/mspoller.java
b81c5daae5af78bf186862209dfdd23cbd259c9b examples/F#/tasksink.fsx
-b0c4d4ae03d3bce0aa3ba3a1f8d2c0c92fc61163 examples/Go/mtserver.go
+f55d3deb95c86e88817ce97ad98dc09ab4fbf8b7 examples/Go/mtserver.go
a125413e2b9b557bb3e8f4529b4431a3537d34d3 examples/CL/lbbroker.lisp
d5fbea85f42e96cd6ce39282e7b0cecf68db1f5a examples/Lua/lbbroker2.lua
ede3eb3fee0360425dd960bf6b29157981b53b87 examples/PHP/rtdealer.php
e36ceb93cd7503297a9821d7e51357c9f77599bc examples/PHP/taskwork2.php
254d74723d839130f38073b4248aeaef0d512b94 examples/PHP/ticlient.php
-949aebaa5e5a4a6417df102e579ce33e983c9207 examples/Python/suisnail.py
+d49b0c1f8cdfb94d211913b1fef554a7ab0a15bd examples/Python/suisnail.py
a99fc828954bca4c08e077a9147ca1a99b3a29d0 examples/F#/peering3.fsx
880a97667e3465a2dced8dbde99c9f71c8ac9c53 examples/Tcl/ppworker.tcl
-678e1dcb4966f30bf28bafde85767432a85f03fb examples/Delphi/tasksink.dpr
+1719465766c57c905cbb757e37f47865a8baf8a2 examples/Delphi/tasksink.dpr
160ea8fcc92e6b05d9906ce63c107a34a138d2af examples/Node.js/rrclient.js
381dcc465e0a5c9fdc217034c5803eaad476cb58 images/fig41.html
c410d3af3592d2be77fc80aa4fbca11d3d45cb7e examples/Haxe/titanic.hx
7fab697f4da9c4b44dc5ffb9d0faedc487d7c385 examples/Haxe/mtserver.hx
af6b21c60b02bf86a4158781bedcab6723c5fa19 images/fig6.txt
-80751b819937675958af95127b94b68fbe54d3aa examples/C#/tasksink2.cs
-e9bcc31ffb4a357c4026512d3dd0c2bab9c1fb42 examples/C/identity.c
+b63768d4dc4f39dbe043fc2b20015395dc879de8 examples/C#/tasksink2.cs
+eb754d117cb0fb1c8195640e3624a07d3a7d5030 examples/C/identity.c
1de227372609fe7a702519a0c6ab2950a6e1ffcf examples/Lua/spqueue.lua
6d3eb2c3d6aecc2255b97edefc6f91058fd9f26c examples/Erlang/rtreq.es
8689712ef4f7f3cc8070cabc5302c2c7b46f613f examples/Python/ppqueue.py
06166b811305de2ee97b632732dfbfeef3ccf9e4 examples/Tcl/lpserver.tcl
dab6b84c5feee87a09ace593567e148b3141eccd examples/Lua/wuserver.lua
ee9a1c94b5f978f6592c468aa0d6caedc7f827d3 examples/Tcl/wuclient.tcl
beba4fe71981ae5f231e49acfc20c7df81020307 examples/Python/taskvent.py
-c89f65083747f05e5f0d666f2f7f10e99fd60b72 examples/Delphi/wuproxy.dpr
+8aa77b2549e1a759e1af17817d750497212d6c74 examples/Delphi/wuproxy.dpr
9371cb5b48bdef635b8b678b3d9dad68eb7aedb6 images/fig35.txt
e78618af875fe0ad2d9c4419a1f45e54d95049e3 examples/Python/udpping1.py
8085ca1c76460428ee1dd6b12ec7b78de15d1239 examples/Haxe/ticlient.hx
-d97105570739026ae9d0cde0765690932bdc0385 images/fig56.txt
+7e2b72d6bf3b0bf7a3cc2c9872e65963eaad46dc images/fig56.txt
+379825aefc0bef6dd136708d1cf6bb2e5655ac6c examples/Java/identity.java
073a42ebad1b366801557f2eb0285f87943d153c examples/Haxe/mtrelay.hx
-f9ca31a94c338743782c3a054023f90f4a30bc55 examples/C/lbbroker3.c
-2d0d39e83a4aedbb0a2636d1f1af339a13ff0b5d examples/Tcl/wuproxy.tcl
+c406841503903cc8ad2e06fc30a3f3f47f10fbf2 examples/C/lbbroker3.c
80fa778b782013d5858483c6bbc60cac5ac02e2f examples/Tcl/mdclient2.tcl
+2d0d39e83a4aedbb0a2636d1f1af339a13ff0b5d examples/Tcl/wuproxy.tcl
790af6d31afbb5989ebd9498ca945b29ce0ae9ff examples/Node.js/syncsub.js
-cb7110eb2dda8a85645e294bd30cd94eee627537 examples/Go/rrworker.go
+52f09c5c8d5538e796e5f3e7647b0d5fd40e2474 examples/Go/rrworker.go
0cf903048614650325c99f1ef0755161cb5aa379 examples/Python/mtrelay.py
-bbbd0a5797391c41f95d65a1581c3f118d741ed7 examples/C/taskvent.c
+b3a41cfa1a1b009bc9e6d9f2b22f2c2288e45042 examples/C/taskvent.c
8ebdebda345981e274bc43a97614033c25fc0f0c examples/Ruby/wuserver.rb
a32ab8cfc2b4d0dc740706f77a1d5f4da34ddb12 examples/Lua/msgqueue.lua
-209004a947f5930aa1982e001567899ddbc1ceeb examples/Go/msgqueue.go
+a251a4698822d4ad3925a018c4e5893ef2e72c17 examples/Go/msgqueue.go
6f500d37d0b8af5b8f70193b8963bb0e20d12ac1 examples/Felix/mspoller.flx
6e2deb814a4f50a235f414a670a84eacab55def2 examples/Python/clonesrv4.py
2a56e3734ff6c5567486ff64c190a05609b1dfc9 examples/Python/tripping.py
-dcb44567004fed7d62f6fd37cedc9d69944b04d2 examples/Java/rrworker.java
-156fc1b2f0cebacaaf1cf8a7c6ddc5713ba285e1 fragments/C/publish-file.c
+1d5b58b8883971640ff578e7ab84614ac812a990 examples/Java/rrworker.java
+b6e3e8f9cc8c748a992e7d5ad8d11cde4f9e80d5 fragments/C/publish-file.c
6df760c1cd3835bc0776605c7856d30b15279183 examples/Tcl/suisnail.tcl
61921f916d68a29e03e7a241d78814cce13e3f42 examples/CL/psenvsub.lisp
97281518b39a4f34097724b5c770798b54d1688d examples/Lua/tasksink.lua
-8fa732b14ccf66aec5444cd06977ea7ca326befa examples/C/lpserver.c
+d39778616a7254b1d3acc9360e44caabc610b906 examples/C/lpserver.c
c2676475f8fda872393cce58dc7df21c62cced03 examples/C++/suisnail.cpp
-2f206b28a569c44201f1b0488bda32852b4f4cd1 examples/C#/lbbroker.cs
+468777b414cd73ed95ad6be3e18622183a3b19f6 examples/C#/lbbroker.cs
4c909b7b69fe8b6c9e25b5306b8540d4517b024b examples/Tcl/taskvent.tcl
36af0e9d235c633f1b459f796be7aa5d4fa9d4ba examples/C++/rtdealer.cpp
8e0156bdbe5db912b1aef803b0d1e2cdfa2d7870 examples/Python/pathopub.py
-a691c14ec0abde79efb50088d41a03012e4b9d93 examples/C/tasksink.c
-851df4e00d6ee9b43cd9472096f5a1e449fb0449 examples/C/spqueue.c
+989519a75ca0a783a0930f483a9815826ebe1d8e examples/C/tasksink.c
+e4544fc8ae8d4ae60b65d8ff5b70bb6b30bf77b5 examples/C/spqueue.c
ee774e13cae3a8b453436491047368021229c058 examples/Felix/tasksink.flx
-a017f0d80efee4eb5caec88441a171e367610d7c examples/Java/mtserver.java
+f3b79080f4f77a46fdf5abf7e1e15b73b9210920 examples/Java/mtserver.java
5ffe06bb649eee8bf9565f70994a2bc544b9d9d4 examples/Perl/rrclient.pl
194a4976288688772541b112b8748d68b0d4c42d examples/Erlang/mtrelay.es
86f6b496dc7a3a9a438bab11eb48c528bfd7c3ea listings/C/listing_8.c
@@ -1007,32 +1061,37 @@ a9ca460aa870b79fabe8e5ca8c203772adf866da images/fig21.html
a10b78dc8bac3e67d003c7d68da774fc52dd327c images/fig20.txt
654962eec97c61bf81bd22b7e71f55b81d73bf46 examples/Q/version.q
4397bdcd9547fd9c9572d105a0651a592ed78c71 fragments/C/highreader.c
+981eeee4795618c3a01739039d0d4fd8dc1811e3 examples/Go/ppqueue.go
ba0ea3fc43c2887ccc027ea3e4842ba0faf70e70 images/fig13.html
ce4ba44a105f6913fffe18c8b30e394c511efa9d examples/Haskell/wuclient.hs
bb339d758ba9514150356f31869379097012ac22 examples/Perl/taskwork2.pl
+f46472f682416d1dd0f0e0d2225f9a9ee5f30344 examples/Delphi/asyncsrv.dpr
74eb1533786c80da0bed4a1e944539a3f49a59c8 examples/Erlang/taskwork.es
7925752bb5a0bc6686e73ef9988cb8939e811046 examples/Python/psenvsub.py
+818aa80cdaec5c5a186d6057ac8da25bba9e2874 examples/Delphi/rrworker.dpr
2568d2168134bc961bf3287790843b71ac5c23c8 images/fig27.html
-577e6ba4178986b5055451941763e866230d011d examples/Go/rrclient.go
+575729ca65a51a0943a2b9a4dcb9f601094b7d14 examples/Go/rrclient.go
53f4354839ef8666abd0d377de03d9f408c0f855 examples/Perl/rrworker.pl
-76d3373c01a9e53db641b765b6847090dd456997 images/fig53.txt
-1562798256e98197a89f5f84dcee2452cd651675 examples/C#/identity.cs
+c74db724c2d76fe0eeb06980d2dcfc56ff935079 images/fig53.txt
+ed035b0b5bd89560cfc55abbea7a620e180e0ad1 examples/Go/mdbroker.go
+4fabe4159d1a1124bf34ea9f0eac4e3ba7765fc2 examples/C#/identity.cs
b20eef22a2eb404f50a16ab964312d02e98e582c examples/Lua/msreader.lua
08786b43b74f2e4215888c7603ca941c50f72761 examples/C++/lpclient.cpp
+e7f0748ff53afc679e0e7b4d8e71969a8b88b955 examples/Go/asyncsrv.go
af3d72a3dd615769775249428cb4326cd626fdf8 fragments/C/zyre-listener.c
304315bf28011c811f657ad49aaaaec595e82837 examples/Lua/wuclient.lua
+5f8efad2a8476391e8c779b30842fcf4ad049aa7 examples/F#/hwclient.fsx
1a8c84cde8bc82946c6ccd643ba4e34e7329949c examples/Tcl/mmiecho.tcl
8baf7592263d466e3b5be2e91d958eb5d0cbc342 examples/Objective-C/hwclient.m
-5f8efad2a8476391e8c779b30842fcf4ad049aa7 examples/F#/hwclient.fsx
513a5190bea8aef397ddc21748abd992a9b82e84 examples/F#/lbbroker.fsx
-dbea6f88e76f7b5406b5b616e427a7c844ecc160 fragments/C/kvsetttl.c
a9aaa1bbc4fcc045ca68181f0d6aeb83d6d08520 examples/Haxe/lbbroker2.hx
+dbea6f88e76f7b5406b5b616e427a7c844ecc160 fragments/C/kvsetttl.c
ac1156ba2f953b3997550affe245164d50925024 examples/PHP/lbbroker2.php
-a58db4e6242dcbd31dcfe8248382a69cb5ebf4dc examples/C/rtdealer.c
+65c84a8c035104110f09a6d719e1d97285c724f4 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 bin/mkwikidot
@@ -267,6 +267,10 @@ while (<>) {
}
else {
# Normal text
+ # Replace double hyphens with em dashes
+ while (/(--)/) {
+ $_ = "$`$'";
+ }
writeln ($_);
}
}
View
6 chapter7.txt
@@ -862,7 +862,7 @@ A useful thing about state machines is that you can read them state by state. Ea
In a 0MQ protocol server, we have a state machine instance //per client//. That sounds complex but it isn't, as we'll see. We describe our first state, {{Start}}, as having one valid event: {{OHAI}}. We check the user's credentials and then arrive in the Authenticated state[figure].
-[[code type="textdiagram" title="The "Start" State"]]
+[[code type="textdiagram" title="The Start State"]]
.-------------------.
| Start |
'-+-----------------'
@@ -875,7 +875,7 @@ In a 0MQ protocol server, we have a state machine instance //per client//. That
The {{Check Credentials}} action produces either an {{ok}} or an {{error}} event. It's in the Authenticated state that we handle these two possible events by sending an appropriate reply back to the client[figure]. If authentication failed, we return to the {{Start}} state where the client can try again.
-[[code type="textdiagram" title="The "Authenticated" State"]]
+[[code type="textdiagram" title="The Authenticated State"]]
.-------------------.
| Authenticated |
'-+-----------------'
@@ -893,7 +893,7 @@ The {{Check Credentials}} action produces either an {{ok}} or an {{error}} event
When authentication has succeeded, we arrive in the Ready state. Here we have three possible events: an ICANHAZ or HUGZ message from the client, or a heartbeat timer event[figure].
-[[code type="textdiagram" title="The "Ready" State"]]
+[[code type="textdiagram" title="The Ready State"]]
.-------------------.
| Ready |
'-+-----------------'
View
2 chapter8.txt
@@ -242,7 +242,7 @@ connect to tcp://192.168.55.254:9000
Which in 0MQ-speak looks like this:
-[[code type="fragment" name="brute-force discovery"]]
+[[code type="fragment" name="brute-force-discovery"]]
int address;
for (address = 1; address < 255; address++)
zsocket_connect (listener, "tcp://192.168.55.%d:9000", address);
View
12 examples/Java/hwserver.java
@@ -10,25 +10,17 @@
public static void main (String[] args) throws Exception{
ZMQ.Context context = ZMQ.context(1);
-
// Socket to talk to clients
ZMQ.Socket socket = context.socket(ZMQ.REP);
-
socket.bind ("tcp://*:5555");
while (!Thread.currentThread ().isInterrupted ()) {
-
byte[] reply = socket.recv(0);
- System.out.println("Received " + ": [" + new String(reply) + "]");
-
- // Create a "Hello" message.
- String request = "world" ;
- // Send the message
+ System.out.println("Received Hello");
+ String request = "World" ;
socket.send(request.getBytes (), 0);
-
Thread.sleep(1000); // Do some 'work'
}
-
socket.close();
context.term();
}
View
6 fragments/C/bstar.c
@@ -1,5 +1,5 @@
// Create a new Binary Star instance, using local (bind) and
-// remote (connect) endpoints to set-up the server peering.
+// remote (connect) endpoints to set up the server peering.
bstar_t *bstar_new (int primary, char *local, char *remote);
// Destroy a Binary Star instance
@@ -17,6 +17,6 @@ int bstar_voter (bstar_t *self, char *endpoint, int type,
void bstar_new_active (bstar_t *self, zloop_fn handler, void *arg);
void bstar_new_passive (bstar_t *self, zloop_fn handler, void *arg);
-// Start the reactor, ends if a callback function returns -1, or the
-// process received SIGINT or SIGTERM.
+// Start the reactor, which ends if a callback function returns -1,
+// or the process received SIGINT or SIGTERM.
int bstar_start (bstar_t *self);
View
5 fragments/C/clone-methods.c
@@ -21,8 +21,3 @@ void
// Get a value from the shared hashmap
char *
clone_get (clone_t *self, char *key);
-[[/clone]]
-
-So here is Model Six of the clone client, which has now become just a thin shell using the clone class:
-
-[[code type="example" title="Clone client, Model Six" name="clonecli6"]]
View
2 fragments/C/errorhandling.c
@@ -3,7 +3,7 @@ assert (context);
void *socket = zmq_socket (context, ZMQ_REP);
assert (socket);
int rc = zmq_bind (socket, "tcp://*:5555");
-if (rc != 0) {
+if (rc == -1) {
printf ("E: bind failed: %s\n", strerror (errno));
return -1;
}
View
2 fragments/C/fmq-server-methods.c
@@ -1,5 +1,5 @@
void
-fmq_server_publish (fmq_server_t *self, const char *location, const char *alias)
+fmq_server_publish (fmq_server_t *self, char *location, char *alias)
{
assert (self);
assert (location);
View
4 fragments/C/killsignal.c
@@ -2,6 +2,4 @@ void *control = zmq_socket (context, ZMQ_PUB);
zmq_bind (control, "tcp://*:5559");
...
// Send kill signal to workers
-zmq_msg_init_data (&message, "KILL", 5);
-zmq_msg_send (control, &message, 0);
-zmq_msg_close (&message);
+s_send (controller, "KILL");
View
3 fragments/C/lbreader.c
@@ -1,6 +1,5 @@
while (true) {
- // Read and save all frames until we get an empty frame
- // In this example there is only 1 but it could be more
+ // Get one address frame and empty delimiter
char *address = s_recv (worker);
char *empty = s_recv (worker);
assert (*empty == 0);
View
48 fragments/C/lowreader.c
@@ -1,32 +1,26 @@
while (true) {
- // Read and save all frames until we get an empty frame
- // In this example there is only 1 but it could be more
- zmq_msg_t address;
- zmq_msg_init (&address);
- zmq_msg_recv (worker, &address, 0);
+ // Get one address frame and empty delimiter
+ char address [255];
+ int address_size = zmq_recv (worker, address, 255, 0);
+ if (address_size == -1)
+ break;
- zmq_msg_t empty;
- zmq_msg_init (&empty);
- zmq_msg_recv (worker, &empty, 0);
+ char empty [1];
+ int empty_size = zmq_recv (worker, empty, 1, 0);
+ zmq_recv (worker, &empty, 0);
+ assert (empty_size <= 0);
+ if (empty_size == -1)
+ break;
// Get request, send reply
- zmq_msg_t payload;
- zmq_msg_init (&payload);
- zmq_msg_recv (worker, &payload, 0);
-
- int char_nbr;
- printf ("Worker: ");
- for (char_nbr = 0; char_nbr < zmq_msg_size (&payload); char_nbr++)
- printf ("%c", *(char *) (zmq_msg_data (&payload) + char_nbr));
- printf ("\n");
-
- zmq_msg_init_size (&payload, 2);
- memcpy (zmq_msg_data (&payload), "OK", 2);
-
- zmq_msg_send (worker, &address, ZMQ_SNDMORE);
- zmq_close (&address);
- zmq_msg_send (worker, &empty, ZMQ_SNDMORE);
- zmq_close (&empty);
- zmq_msg_send (worker, &payload, 0);
- zmq_close (&payload);
+ char request [256];
+ int request_size = zmq_recv (worker, request, 255, 0);