[Vortex] Question about ausage pattern

Robert M. Münch robert.muench at robertmuench.de
Sun Mar 30 17:11:22 CEST 2008


Hi, I have a question how to make best use of vortex lib in the following  
scenario:

I have a simple "file transfer" profile. The initiator sends a message,  
requesting a file, the reciever get a filename and sends the file. So it's  
most like the simple-file-transfer examples included in Vortex.

Now the question is, the initiator uses a frame-recieved handler to write  
the recieved data. But, how to get either the filename or the filepointer  
to this handler? I don't want to use globals because there can be more  
than one file transfer at the same time, vortex is threaded etc.

I see the following options:

1. I open a channel and beside the profile I specify the filename to use.  
In this case every transfer gets it's own channel.

How big is the overhead to open / close channels? At the moment I think a  
channel is once opened and than stays open for a longer period.


2. The initiator already sends the filename to the sender. The sender  
could reply with an answer ackknowleding that the file was found by  
sending back the filename as the first answer. All following answers than  
will be the file content.

I don't know if it's complex to handle the first answer as a special  
answer on the initiator side and than enter a loop to recieve the file  
content.


3. I somehow setup something like a queue or register on the initiator  
side, where the filename and channel number will be tracked. Than the  
channel handler can lookup what filename to use.

This implies that there is only one transfer at the same time for one  
channel. Which I think is no restriction. Depending on the size of the  
register (if not done dynamically) the number of concurrent transfers is  
limited.


What do you think is the best approach that fits to vortex? Am I missing  
an other more elegent solution?

Best regards.

-- 
Robert M. Münch
http://www.robertmuench.de



More information about the Vortex mailing list