diff --git a/cmd/camtool/sync.go b/cmd/camtool/sync.go index 78692dfb8..6a61a24a8 100644 --- a/cmd/camtool/sync.go +++ b/cmd/camtool/sync.go @@ -361,7 +361,7 @@ func (c *syncCmd) doPass(src, dest, thirdLeg blobserver.Storage) (stats SyncStat mismatches = append(mismatches, br) } - go client.ListMissingDestinationBlobs(destNotHaveBlobs, onMismatch, readSrcBlobs, destBlobs) + go blobserver.ListMissingDestinationBlobs(destNotHaveBlobs, onMismatch, readSrcBlobs, destBlobs) // Handle three-legged mode if tc is provided. checkThirdError := func() {} // default nop @@ -379,7 +379,7 @@ func (c *syncCmd) doPass(src, dest, thirdLeg blobserver.Storage) (stats SyncStat } } thirdNeedBlobs := make(chan blob.SizedRef) - go client.ListMissingDestinationBlobs(thirdNeedBlobs, onMismatch, destNotHaveBlobs, thirdBlobs) + go blobserver.ListMissingDestinationBlobs(thirdNeedBlobs, onMismatch, destNotHaveBlobs, thirdBlobs) syncBlobs = thirdNeedBlobs firstHopDest = thirdLeg } diff --git a/pkg/client/sync_test.go b/pkg/blobserver/sync_test.go similarity index 99% rename from pkg/client/sync_test.go rename to pkg/blobserver/sync_test.go index fe4d84122..e99415e5d 100644 --- a/pkg/client/sync_test.go +++ b/pkg/blobserver/sync_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package client +package blobserver import ( "strings" diff --git a/pkg/client/sync.go b/pkg/client/sync.go deleted file mode 100644 index 88612f736..000000000 --- a/pkg/client/sync.go +++ /dev/null @@ -1,63 +0,0 @@ -/* -Copyright 2011 Google Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package client - -import ( - "camlistore.org/pkg/blob" -) - -// ListMissingDestinationBlobs reads from 'srcch' and 'dstch' (sorted -// enumerations of blobs from two blob servers) and sends to -// 'destMissing' any blobs which appear on the source but not at the -// destination. destMissing is closed at the end. -func ListMissingDestinationBlobs(destMissing chan<- blob.SizedRef, sizeMismatch func(blob.Ref), srcch, dstch <-chan blob.SizedRef) { - defer close(destMissing) - - src := &blob.ChanPeeker{Ch: srcch} - dst := &blob.ChanPeeker{Ch: dstch} - - for { - _, ok := src.Peek() - if !ok { - break - } - - // If the destination has reached its end, anything - // remaining in the source is needed. - if _, ok := dst.Peek(); !ok { - destMissing <- src.MustTake() - continue - } - - srcStr := src.MustPeek().Ref - dstStr := dst.MustPeek().Ref - - switch { - case srcStr == dstStr: - // Skip both - sb := src.MustTake() - db := dst.MustTake() - if sb.Size != db.Size { - sizeMismatch(sb.Ref) - } - case srcStr.Less(dstStr): - destMissing <- src.MustTake() - case dstStr.Less(srcStr): - dst.Take() - } - } -}