YAMI - Yet Another Messaging Infrastructure


YAMI Home

Concept

Specification

Implementation

What next?

Questions
& Answers

Comments

Questions & Answers

Everybody can ask a question. Just send me an e-mail and I'll try to answer.


When I start the YAMI server on my Linux machine, I can see many processes with the same name.

This is due to the way threads are implemented in older Linux kernel. Typical YAMI application (whether it is a client or server) uses many internal threads of execution. All of them are reported by the ps utility, because this utility does not differentiate between processes and threads. This effect applies to all multi-threaded programs on GNU/Linux machines.


I cannot start the same YAMI program again, short after it has stopped.
The program does not start immediately, but waits some time. Later it works normally.

On Unix systems, the used sockets are kept around for some time even after the program terminated. When the same program starts again, it tries to use a resource that from the system's viewpoint is already occupied.
In order to overcome this problem, set the reuseaddr policy to true. See tutorial examples how to do it.


Is it possible to register a PassiveObject inside another PassiveObject's call function?

Yes. Moreover - you can also unregister any object, even the same ("this" object). These operations are thread-safe, which means that even when the object in question is executing its own call method (even in many different threads), you can unregister it and the object becomes invisible for every new incoming message (unknown object notification will be sent back). Threads that currently execute calls will be allowed to finish their job and when the last thread leaves, the object structure (the one kept internally by the agent) will be physically destroyed. This can be useful for writing methods like destroy or release or however you name them - unregistering is not harmful for currently executing call methods.


Does YAMI handle the conversions between different string encodings?

No. YAMI allows you to send messages containing parameters of type wide string, but no conversion is done automatically. In order to enforce the real compatibility between the communicating objects, all parts need to have the same understanding of what particular character codes mean.