NewIndexer creates a new indexer instance.
(packfilePath string, odb *Odb, callback TransferProgressCallback)
| 27 | |
| 28 | // NewIndexer creates a new indexer instance. |
| 29 | func NewIndexer(packfilePath string, odb *Odb, callback TransferProgressCallback) (indexer *Indexer, err error) { |
| 30 | var odbPtr *C.git_odb = nil |
| 31 | if odb != nil { |
| 32 | odbPtr = odb.ptr |
| 33 | } |
| 34 | |
| 35 | indexer = new(Indexer) |
| 36 | populateRemoteCallbacks(&indexer.ccallbacks, &RemoteCallbacks{TransferProgressCallback: callback}, nil) |
| 37 | |
| 38 | runtime.LockOSThread() |
| 39 | defer runtime.UnlockOSThread() |
| 40 | |
| 41 | cstr := C.CString(packfilePath) |
| 42 | defer C.free(unsafe.Pointer(cstr)) |
| 43 | |
| 44 | ret := C._go_git_indexer_new(&indexer.ptr, cstr, 0, odbPtr, indexer.ccallbacks.payload) |
| 45 | runtime.KeepAlive(odb) |
| 46 | if ret < 0 { |
| 47 | untrackCallbacksPayload(&indexer.ccallbacks) |
| 48 | return nil, MakeGitError(ret) |
| 49 | } |
| 50 | |
| 51 | runtime.SetFinalizer(indexer, (*Indexer).Free) |
| 52 | return indexer, nil |
| 53 | } |
| 54 | |
| 55 | // Write adds data to the indexer. |
| 56 | func (indexer *Indexer) Write(data []byte) (int, error) { |
searching dependent graphs…