diff options
| -rw-r--r-- | remote.go | 32 | ||||
| -rw-r--r-- | wrapper.c | 3 |
2 files changed, 27 insertions, 8 deletions
@@ -38,14 +38,14 @@ const ( RemoteCompletionError = C.GIT_REMOTE_COMPLETION_ERROR ) -type ProgressCallback func(str string) int +type TransportMessageCallback func(str string) int type CompletionCallback func(RemoteCompletion) int type CredentialsCallback func(url string, username_from_url string, allowed_types CredType) (int, *Cred) type TransferProgressCallback func(stats TransferProgress) int type UpdateTipsCallback func(refname string, a *Oid, b *Oid) int type RemoteCallbacks struct { - ProgressCallback + SidebandProgressCallback TransportMessageCallback CompletionCallback CredentialsCallback TransferProgressCallback @@ -65,14 +65,14 @@ func populateRemoteCallbacks(ptr *C.git_remote_callbacks, callbacks *RemoteCallb ptr.payload = unsafe.Pointer(callbacks) } -//export progressCallback -func progressCallback(_str *C.char, _len C.int, data unsafe.Pointer) int { +//export sidebandProgressCallback +func sidebandProgressCallback(_str *C.char, _len C.int, data unsafe.Pointer) int { callbacks := (*RemoteCallbacks)(data) - if callbacks.ProgressCallback == nil { + if callbacks.SidebandProgressCallback == nil { return 0 } str := C.GoStringN(_str, _len) - return callbacks.ProgressCallback(str) + return callbacks.SidebandProgressCallback(str) } //export completionCallback @@ -127,6 +127,26 @@ func RemoteIsValidName(name string) bool { return false } +func (r *Remote) SetCheckCert(check bool) { + C.git_remote_check_cert(r.ptr, cbool(check)) +} + +func (r *Remote) SetCallbacks(callbacks *RemoteCallbacks) error { + var ccallbacks C.git_remote_callbacks + + populateRemoteCallbacks(&ccallbacks, callbacks) + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ecode := C.git_remote_set_callbacks(r.ptr, &ccallbacks) + if ecode < 0 { + return MakeGitError(ecode) + } + + return nil +} + func (r *Remote) Free() { runtime.SetFinalizer(r, nil) C.git_remote_free(r.ptr) @@ -26,12 +26,11 @@ int _go_git_odb_foreach(git_odb *db, void *payload) } void _go_git_setup_callbacks(git_remote_callbacks *callbacks) { - typedef int (*progress_cb)(const char *str, int len, void *data); typedef int (*completion_cb)(git_remote_completion_type type, void *data); typedef int (*credentials_cb)(git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *data); typedef int (*transfer_progress_cb)(const git_transfer_progress *stats, void *data); typedef int (*update_tips_cb)(const char *refname, const git_oid *a, const git_oid *b, void *data); - callbacks->progress = (progress_cb)progressCallback; + callbacks->sideband_progress = (git_transport_message_cb)sidebandProgressCallback; callbacks->completion = (completion_cb)completionCallback; callbacks->credentials = (credentials_cb)credentialsCallback; callbacks->transfer_progress = (transfer_progress_cb)transferProgressCallback; |
