Pattern-Oriented Software Architecture,Volume 2, Patterns for Concurrent and Networked Objects