@@ -73,15 +73,16 @@ const (
7373)
7474
7575//PerformTransfer transfers this file from the source to the target.
76- //The return value indicates if the transfer finished successfully.
77- func (f File ) PerformTransfer () TransferResult {
76+ //It returns the TransferResult (which indicates if the transfer finished successfully)
77+ //and the number of bytes transferred.
78+ func (f File ) PerformTransfer () (TransferResult , int64 ) {
7879 object := f .TargetObject ()
7980
8081 //check if this file needs transfer
8182 if f .Job .Matcher .ImmutableFileRx != nil && f .Job .Matcher .ImmutableFileRx .MatchString (f .Spec .Path ) {
8283 if f .Job .Target .FileExists [object .Name ()] {
8384 logg .Debug ("skipping %s: already transferred" , object .FullName ())
84- return TransferSkipped
85+ return TransferSkipped , 0
8586 }
8687 }
8788
@@ -122,14 +123,14 @@ func (f File) PerformTransfer() TransferResult {
122123 logg .Error ("skipping target %s: HEAD failed: %s" ,
123124 object .FullName (), err .Error (),
124125 )
125- return TransferFailed
126+ return TransferFailed , 0
126127 }
127128 }
128129
129130 //if we want to upload a symlink, we can skip the whole Last-Modified/Etag
130131 //shebang and straight-up compare the symlink target
131132 if f .Spec .SymlinkTargetPath != "" {
132- return f .uploadSymlink (currentSymlinkTarget , hdr .IsLargeObject ())
133+ return f .uploadSymlink (currentSymlinkTarget , hdr .IsLargeObject ()), 0
133134 }
134135
135136 //retrieve object from source, taking advantage of Etag and Last-Modified where possible
@@ -160,13 +161,13 @@ func (f File) PerformTransfer() TransferResult {
160161 }
161162 if err != nil {
162163 logg .Error ("GET %s failed: %s" , f .Spec .Path , err .Error ())
163- return TransferFailed
164+ return TransferFailed , 0
164165 }
165166 if body != nil {
166167 defer body .Close ()
167168 }
168169 if sourceState .SkipTransfer { // 304 Not Modified
169- return TransferSkipped
170+ return TransferSkipped , 0
170171 }
171172
172173 if util .LogIndividualTransfers {
@@ -198,9 +199,9 @@ func (f File) PerformTransfer() TransferResult {
198199 }
199200
200201 if ok {
201- return TransferSuccess
202+ return TransferSuccess , size
202203 }
203- return TransferFailed
204+ return TransferFailed , 0
204205}
205206
206207func (f File ) uploadSymlink (previousTarget * schwift.Object , cleanupOldSegments bool ) TransferResult {
0 commit comments