- Remarks
-
This method is called only if you
implemented IwodFtpNotify interface in your application,
and wodFtpDLX.Notification
property has received reference to instance of your
implementation.
This notification method can be used for monitoring file
transfers. It is called during file transfer started by
GetFile
or PutFile methods.
It will be called several times, depending on your network
speed (thus length of packets sent/received), file size, or
something else. There is no default rule on exact number of
times it will be called. Once transfer is finished,
Position argument will have the
same value as Total argument.
Once transfer is finished, Position argument will have the
same value as Total argument. As long as file size does fit
in 32bit long integer,
Progress
notification will be called instead of this one. If position or
total arguments does not fit anymore in 32bit long integer,
Progress64 notification will be called. Depending on the programming
language you use, you will need to convert these values to
appropriate int64 integer.
Also, once file transfer is finished Done
notification method will be called.
NOTE: it is possible that Position or Total
values become negative - it is because unsigned values are used, but
VB (and other environments) expect to see signed values. If this
happens, we suggest you use following code (VB example):
- Private Const MAX_UNSIGNED = 4294967296#
' HEX 1,0000,0000
Private Sub IwodFtpNotify_Progress(ByVal Owner As
wodFtpDLXComLib.IwodFtpDLXCom, ByVal Position As Long, ByVal Total
As Long)
Ftp1_Progress64 Position, 0, Total, 0
End Sub
Private Sub IwodFtpNotify_Progress64(ByVal Owner As
wodFtpDLXComLib.IwodFtpDLXCom, ByVal PositionLo As Long, ByVal
PositionHi As Long, ByVal TotalLo As Long, ByVal TotalHi As Long)
If TotalLo <> 0 And TotalHi <> 0 Then
Dim pos As Double
Dim tot As Double
pos = PositionLo
If (pos < 0) Then pos = pos + MAX_UNSIGNED
tot = TotalLo
If tot < 0 Then tot = tot + MAX_UNSIGNED
If TotalHi <> 0 Then
pos = pos + PositionHi *
MAX_UNSIGNED
tot = tot + TotalHi *
MAX_UNSIGNED
End If
Debug.Print "Progress " & pos & "/" & tot
Else
Debug.Print "Progress " & PositionLo & "/" &
TotalLo
End If
End Sub
|