|
Summary
Marker data during event based transfer has been received.
Description
The OnReceiveMarker event occurs during an event based transfer of a file in block mode. OnReceiveMarker event is interleaved with OnReceive events according to the marker frequency. An event
driven get operation is started by calling the GetFileWithRestart method (or by setting the FileAction property to FILE_ACTION_GET) with the call to the EventMode method (or with the TransferMode
property set to TRANSFER_MODE_EVENT). An event driven put operation is started by calling the PutFileWithRestart method (or by setting the FileAction property to FILE_ACTION_PUT with the call to the
EventMode method or with the TransferMode property set to TRANSFER_MODE_EVENT). The remote file must be specified with the RemoteFile property, but the LocalFile property is ignored and can be left
blank in case of transferring the file from server to local machine.
Instead of writing incoming marker data from server directly to a local marker file, an event based operation in block mode delivers the marker to the application with one or more OnReceiveMarker
events. The event passes marker data to the application in a string buffer. It is up to the application to process the marker data. The buffer could, for example, be written to a disk file. In case
of an abnormal termination of file transfer, user can use GetFileWithRestart or PutFileWithRestart function with any of the markers previously received. This will start the transfer of file from the
specified marker position. It is user's responsibility to position the local file according to marker. This way user does not need to transfer the whole file again.
In the case of a Get, each marker should be stored together with the corresponding byte position of the block of data received in the local file immediately preceding the marker. If the file transfer
is terminated abnormally, instead of transferring the whole file again, user can position the local file to the most recent position stored and send a GetFileWithRestart command with the
corresponding stored marker.
In case of a Put operation, OnReceiveMarker delivers the local file position as well as server marker for that position. User should store this buffer in a file. The format of the buffer received is
h-l=m, where h is the high word of local file position, l is the low word of local file position and m is the server marker for the local file position. In case of abnormal file transfer termination,
user may position the local file to the most recent file position and send PutFileWithRestart function with the corresponding server marker.
If the application does not want to receive any more OnReceiveMarker events, then the transfer can be aborted by setting the FileAction property to FILE_ACTION_ABORT (or by calling the AbortFile
method) during the OnReceiveMarker event.
While handling the OnReceiveMarker event, an application should not perform tasks, which have the potential of requiring a lot of time to complete, such as generating a message box. A substantial
delay could cause the application to not receive subsequent OnReceive and OnReceiveMarker events.
Example
Sub FTPClient_OnReceiveMarker (Buffer As String) " The buffer parameter contains the marker in the form of a numeric string eg. "24968"
Listing.AddItem Buffer End Sub
|