MCPcopy
hub / github.com/grpc/grpc-go / initParsedTargetAndResolverBuilder

Method initParsedTargetAndResolverBuilder

clientconn.go:1836–1873  ·  view source on GitHub ↗

initParsedTargetAndResolverBuilder parses the user's dial target and stores the parsed target in `cc.parsedTarget`. The resolver to use is determined based on the scheme in the parsed target and the same is stored in `cc.resolverBuilder`. Doesn't grab cc.mu as this method is expected to be called

()

Source from the content-addressed store, hash-verified

1834//
1835// Doesn't grab cc.mu as this method is expected to be called only at Dial time.
1836func (cc *ClientConn) initParsedTargetAndResolverBuilder() error {
1837 logger.Infof("original dial target is: %q", cc.target)
1838
1839 var rb resolver.Builder
1840 parsedTarget, err := parseTarget(cc.target)
1841 if err == nil {
1842 rb = cc.getResolver(parsedTarget.URL.Scheme)
1843 if rb != nil {
1844 cc.parsedTarget = parsedTarget
1845 cc.resolverBuilder = rb
1846 return nil
1847 }
1848 }
1849
1850 // We are here because the user's dial target did not contain a scheme or
1851 // specified an unregistered scheme. We should fallback to the default
1852 // scheme, except when a custom dialer is specified in which case, we should
1853 // always use passthrough scheme. For either case, we need to respect any overridden
1854 // global defaults set by the user.
1855 defScheme := cc.dopts.defaultScheme
1856 if internal.UserSetDefaultScheme {
1857 defScheme = resolver.GetDefaultScheme()
1858 }
1859
1860 canonicalTarget := defScheme + ":///" + cc.target
1861
1862 parsedTarget, err = parseTarget(canonicalTarget)
1863 if err != nil {
1864 return err
1865 }
1866 rb = cc.getResolver(parsedTarget.URL.Scheme)
1867 if rb == nil {
1868 return fmt.Errorf("could not get resolver for default scheme: %q", parsedTarget.URL.Scheme)
1869 }
1870 cc.parsedTarget = parsedTarget
1871 cc.resolverBuilder = rb
1872 return nil
1873}
1874
1875// parseTarget uses RFC 3986 semantics to parse the given target into a
1876// resolver.Target struct containing url. Query params are stripped from the

Callers 1

NewClientFunction · 0.95

Calls 5

getResolverMethod · 0.95
GetDefaultSchemeFunction · 0.92
parseTargetFunction · 0.70
InfofMethod · 0.65
ErrorfMethod · 0.65

Tested by

no test coverage detected