export smartTransportCallback
( errorMessage **C.char, out **C.git_transport, owner *C.git_remote, handle unsafe.Pointer, )
| 297 | |
| 298 | //export smartTransportCallback |
| 299 | func smartTransportCallback( |
| 300 | errorMessage **C.char, |
| 301 | out **C.git_transport, |
| 302 | owner *C.git_remote, |
| 303 | handle unsafe.Pointer, |
| 304 | ) C.int { |
| 305 | registeredSmartTransport := pointerHandles.Get(handle).(*RegisteredSmartTransport) |
| 306 | remote, ok := remotePointers.get(owner) |
| 307 | if !ok { |
| 308 | // create a new empty remote and set it |
| 309 | // as a weak pointer, so that control stays in golang |
| 310 | remote = createNewEmptyRemote() |
| 311 | remote.weak = true |
| 312 | } |
| 313 | |
| 314 | managed := &managedSmartSubtransport{ |
| 315 | remote: remote, |
| 316 | callback: registeredSmartTransport.callback, |
| 317 | subtransport: (*C._go_managed_smart_subtransport)(C.calloc(1, C.size_t(unsafe.Sizeof(C._go_managed_smart_subtransport{})))), |
| 318 | } |
| 319 | managedHandle := pointerHandles.Track(managed) |
| 320 | managed.handle = managedHandle |
| 321 | managed.subtransport.handle = managedHandle |
| 322 | |
| 323 | runtime.LockOSThread() |
| 324 | defer runtime.UnlockOSThread() |
| 325 | |
| 326 | ret := C._go_git_transport_smart(out, owner, cbool(registeredSmartTransport.stateless), managed.subtransport) |
| 327 | if ret != 0 { |
| 328 | pointerHandles.Untrack(managedHandle) |
| 329 | } |
| 330 | return ret |
| 331 | } |
| 332 | |
| 333 | //export smartTransportSubtransportCallback |
| 334 | func smartTransportSubtransportCallback( |
no test coverage detected
searching dependent graphs…