Collage  1.4.0
High-performance C++ library for developing object-oriented distributed applications.
 All Pages
README.md
1 [TOC]
2 
3 # Introduction {#Introduction}
4 
5 Collage is a cross-platform C++ library for building heterogenous, distributed
6 applications. Among other things, it is the cluster backend for the [Equalizer
7 parallel rendering framework](https://github.com/Eyescale/Equalizer). Collage
8 provides an abstraction of different network connections, peer-to-peer
9 messaging, node discovery, synchronization and high-performance,
10 object-oriented, versioned data distribution. Collage is designed for
11 low-overhead multi-threaded execution which allows applications to easily
12 exploit multi-core architectures.
13 
14 The
15 [API documentation](http://eyescale.github.io/Collage-1.4/index.html) can be
16 found on [eyescale.github.io](http://eyescale.github.io/). As with any open
17 source project, the available source code, in particular the
18 [unit tests](https://github.com/Eyescale/Collage/tree/1.4/tests) provide a
19 reference for developing applications.
20 
21 Technical questions can be posted to the Equalizer
22 [Developer Mailing List](http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev),
23 or directly to
24 [info@equalizergraphics.com](mailto:info@equalizergraphics.com?subject=Collage%20question).
25 
26 Commercial support, custom software development and porting services are
27 available from [Eyescale](http://www.eyescale.ch). Please contact
28 [info@eyescale.ch](mailto:info@eyescale.ch?subject=Collage%20support)
29 for further information.
30 
31 # Features {#Features}
32 
33 Collage provides different levels of abstraction to facilitate the
34 development distributed applications:
35 
36 * Network Connections: stream-oriented point-to-point and reliable multicast
37  connections for TCP/IP, SDP, InfiniBand RDMA, UDT, events, named and anonymous
38  pipes, memory buffers and reliable multicast over UDP.
39 * Peer-to-Peer Messaging: Endian-safe node-to-node message communication with
40  thread-aware message dispatch.
41 * Synchronization: Distributed barriers and synchronous messaging.
42 * Object data distribution: high-performance, object-oriented, versioned data
43  distribution for C++ objects based on delta serialization.
44 * Detailed @ref Changelog
45 
46 # Building {#Building}
47 
48 Collage is a cross-platform library, designed to run on any modern operating
49 system, including all Unix variants and the Windows operating system. Collage
50 uses CMake to create a platform-specific build environment. The following
51 platforms and build environments are tested:
52 
53 * Linux: Ubuntu 14.04, RHEL 6.6 (Makefile, Ninja)
54 * Windows: 7 (Visual Studio 2012)
55 * Mac OS X: 10.8 (Makefile, Ninja)
56 
57 Building from source is as simple as:
58 
59  git clone https://github.com/Eyescale/Collage.git
60  mkdir Collage/build
61  cd Collage/build
62  cmake ..
63  make