Ma tha http.Client air a roinn mar-thà le iarrtasan co-aontach, cùm an raon Transport aige seasmhach. Faodaidh pasgan an giùlan làn-rèitichte a gheibh gach turas às dèidh sin a shioncronachadh:

type routeSlot struct {
    mu sync.RWMutex
    current http.RoundTripper
}

func (s *routeSlot) RoundTrip(r *http.Request) (*http.Response, error) {
    s.mu.RLock()
    current := s.current
    s.mu.RUnlock()
    return current.RoundTrip(r)
}

func (s *routeSlot) Set(next http.RoundTripper) {
    s.mu.Lock()
    s.current = next
    s.mu.Unlock()
}

Le net/http agus sync, tòisich e mus tèid an neach-ceannach fhoillseachadh:

slot := &routeSlot{current: initialTransport}
client := &http.Client{Transport: slot}

slot.Set(nextTransport)

Feumaidh initialTransport agus nextTransport a bhith neo-nil, làn-rèitichte agus sàbhailte a thaobh co-aontachd. Tog gach giùlan proxy mus fhoillsich thu e, agus fàg a rèiteachadh gun atharrachadh fhad 's a tha iarrtasan ga chleachdadh.

Chan eil an glas a' dìon ach dealbh a' phuingear, mar sin cha chùm iarrtas mall an glas slighe airson a mhalairt lìonra gu lèir. Tha iarrtas a tha a' cleachdadh an deilbh roimhe a' leantainn air a' ghiùlan sin; cha dèan an t-atharrachadh ath-chluich air no cha ghluais e a cheangal.

Cùm agus leig dheth seann ghiùlaidhean tro chuairt-beatha cuingealaichte na h-aplacaid, a' leigeil le obair a tha a' dol a chrìochnachadh agus a' dùnadh linnean dìomhain far a bheil sin iomchaidh. Faodaidh ath-sheòladh RoundTrip eile adhbhrachadh às dèidh atharrachaidh. Ma dh'fheumas sruth-obrach slàn aon shlighe, sònraich an t-slighe sin aig crìoch an t-sruth-obrach an àite an roghnaichear co-roinnte seo atharrachadh letheach slighe troimhe.

Artaigilean co-cheangailte