當前位置: 首頁>>代碼示例>>Golang>>正文


Golang files.Set類代碼示例

本文整理匯總了Golang中github.com/syncthing/syncthing/files.Set的典型用法代碼示例。如果您正苦於以下問題:Golang Set類的具體用法?Golang Set怎麽用?Golang Set使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了Set類的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: sendIndexes

func sendIndexes(conn protocol.Connection, repo string, fs *files.Set, ignores ignore.Patterns) {
    nodeID := conn.ID()
    name := conn.Name()
    var err error

    if debug {
        l.Debugf("sendIndexes for %s-%[email protected]/%q starting", nodeID, name, repo)
    }

    defer func() {
        if debug {
            l.Debugf("sendIndexes for %s-%[email protected]/%q exiting: %v", nodeID, name, repo, err)
        }
    }()

    minLocalVer, err := sendIndexTo(true, 0, conn, repo, fs, ignores)

    for err == nil {
        time.Sleep(5 * time.Second)
        if fs.LocalVersion(protocol.LocalNodeID) <= minLocalVer {
            continue
        }

        minLocalVer, err = sendIndexTo(false, minLocalVer, conn, repo, fs, ignores)
    }
}
開發者ID:spaam,項目名稱:syncthing,代碼行數:26,代碼來源:model.go

示例2: sendIndexTo

func sendIndexTo(initial bool, minLocalVer uint64, conn protocol.Connection, repo string, fs *files.Set) (uint64, error) {
    nodeID := conn.ID()
    name := conn.Name()
    batch := make([]protocol.FileInfo, 0, indexBatchSize)
    currentBatchSize := 0
    maxLocalVer := uint64(0)
    var err error

    fs.WithHave(protocol.LocalNodeID, func(fi protocol.FileIntf) bool {
        f := fi.(protocol.FileInfo)
        if f.LocalVersion <= minLocalVer {
            return true
        }

        if f.LocalVersion > maxLocalVer {
            maxLocalVer = f.LocalVersion
        }

        if len(batch) == indexBatchSize || currentBatchSize > indexTargetSize {
            if initial {
                if err = conn.Index(repo, batch); err != nil {
                    return false
                }
                if debug {
                    l.Debugf("sendIndexes for %s-%s/%q: %d files (<%d bytes) (initial index)", nodeID, name, repo, len(batch), currentBatchSize)
                }
                initial = false
            } else {
                if err = conn.IndexUpdate(repo, batch); err != nil {
                    return false
                }
                if debug {
                    l.Debugf("sendIndexes for %s-%s/%q: %d files (<%d bytes) (batched update)", nodeID, name, repo, len(batch), currentBatchSize)
                }
            }

            batch = make([]protocol.FileInfo, 0, indexBatchSize)
            currentBatchSize = 0
        }

        batch = append(batch, f)
        currentBatchSize += indexPerFileSize + len(f.Blocks)*IndexPerBlockSize
        return true
    })

    if initial && err == nil {
        err = conn.Index(repo, batch)
        if debug && err == nil {
            l.Debugf("sendIndexes for %s-%s/%q: %d files (small initial index)", nodeID, name, repo, len(batch))
        }
    } else if len(batch) > 0 && err == nil {
        err = conn.IndexUpdate(repo, batch)
        if debug && err == nil {
            l.Debugf("sendIndexes for %s-%s/%q: %d files (last batch)", nodeID, name, repo, len(batch))
        }
    }

    return maxLocalVer, err
}
開發者ID:johnjohnsp1,項目名稱:syncthing,代碼行數:59,代碼來源:model.go

示例3: needList

func needList(s *files.Set, n protocol.NodeID) []protocol.FileInfo {
    var fs []protocol.FileInfo
    s.WithNeed(n, func(f protocol.FileInfo) bool {
        fs = append(fs, f)
        return true
    })
    return fs
}
開發者ID:rom1504,項目名稱:syncthing,代碼行數:8,代碼來源:set_test.go

示例4: globalList

func globalList(s *files.Set) []protocol.FileInfo {
    var fs []protocol.FileInfo
    s.WithGlobal(func(f protocol.FileInfo) bool {
        fs = append(fs, f)
        return true
    })
    return fs
}
開發者ID:rom1504,項目名稱:syncthing,代碼行數:8,代碼來源:set_test.go

示例5: haveList

func haveList(s *files.Set, n protocol.NodeID) []protocol.FileInfo {
    var fs []protocol.FileInfo
    s.WithHave(n, func(fi protocol.FileIntf) bool {
        f := fi.(protocol.FileInfo)
        fs = append(fs, f)
        return true
    })
    return fs
}
開發者ID:hotoracle,項目名稱:syncthing,代碼行數:9,代碼來源:set_test.go


注:本文中的github.com/syncthing/syncthing/files.Set類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。