summaryrefslogtreecommitdiff
path: root/Source/FusionDale/README
blob: 04c3264c431a4ad0099f6e05815be30f0464ac87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
FusionDale
----------

FusionDale is applied Fusion and will be a collection of different
services for use by applications and other libraries.

There's a component manager (Coma) which allows any process to create a
component - identified by only a string at the moment - and provide methods
and notifications. Other processes can get access to the component and call
methods or listen to notifications. Multiple component managers can exist
with each one identified globally by a string.

You have the ability to create 'thread local shared memory' and reuse it to
avoid alloc/free for every RPC call with data not already in shared memory.
Allocation will happen on first call or if the buffer needs to be extended,
but there's a method to free it in case a big allocation has been done or
just for cleanup.

Be aware that only method calls are synchronous. Notifications are sent out
and execution returns to the sender immediately. Component implementors can
register a callback being called when there's no more recipient for a notification
that was sent, e.g. to free the shared data associated with the notification.

FusionDale also contains a messaging API for notifications and data distribution
using shared memory with lifecycle management. The attached data is freed after
all recipients have processed the message, or exited, or died. However, this code
is more complex than it needs to be due to some relevant improvements in Fusion.