AAO DRAMA/DRAMA2 C++ Interface
DRAMA C++11 and later interface
|
◆ SendBulkTrigger() [1/2]
Send a bulk data trigger message to the parent action. This method sends a trigger message (see SendTrigger()) with a bulk data argument. The trigger message has an amount of shared memory associated with it, created as a drama::BulkData object. If the bulk data contains an exported SDS item, then the target task can receive the bulk data without doing any more work. Sending of bulk data involves creating an DRAMA message transaction and this routine returns the associated transaction id. The sending action should receive additional reschedule events with an entry reason of EntryCode::BulkTransferred indicating the progress of the transfer. It will also receive an entry with a reason of EntryCode::BulkDone when the target task releases the shared memory. When processing a EntryCode::BulkTransferred, you can then call GetEntry().GetBulkInfo() to retrieve details of the transfer. The reception of EntryCode::BulkTransferred messages are dependent on the behavour of the target task. If it is a local task, then these mesages are recevid each time it calls drama::BulkDataArg::Report(). If the target task is remote, these update messages are sent by the local IMP transmitter task at a rate determined by it. If NotifyBytes is non-zero it indicates a hint to the target about the rate at which these notifications are requested. You should not delete the shared memory yourself until get the first message using one of these codes. When you get EntryCode::BulkDone you are free to reuse all the shared memory as the target task has finished accessing the shared memory. You can reuse parts of the shared memory early by making use of information in GetEntry().GetBulkInfo() to determine what parts of the bulk data have been used. If the target task is local, then EntryCode::BulkDone is received when the target task action entry returns or if in the case where the the task invokes DitsBulkArgInfo(3)(), when it has called DitsBulkArgRelease(3)(). If the target task is remote, then EntryCode::BulkDone is received when the local transmitter task has finished forwarding the data to the remote machine. As a result, in the remote task case, you are not notified when the target task has finished accessing the data, just when it is safe for you to re-use the local shared memory.
Referenced by drama::MessageHandler::SendBulkTrigger(). |
Click here for the DRAMA home page and here for the AAO home page.
For more information, contact tony.farrell@mq.edu.au
Generated on Thu Dec 12 2024 23:07:36 for AAO DRAMA/DRAMA2 C++ Interface by 1.9.8