in protocol/dubbo3/dubbo3_protocol.go [211:276]
func (dp *DubboProtocol) openServer(url *common.URL, tripleCodecType tripleConstant.CodecType) {
dp.serverLock.Lock()
defer dp.serverLock.Unlock()
_, ok := dp.serverMap[url.Location]
if ok {
dp.serverMap[url.Location].RefreshService()
return
}
opts := []triConfig.OptionFunction{
triConfig.WithCodecType(tripleCodecType),
triConfig.WithLocation(url.Location),
triConfig.WithLogger(logger.GetLogger()),
}
tracingKey := url.GetParam(constant.TracingConfigKey, "")
if tracingKey != "" {
tracingConfig := config.GetTracingConfig(tracingKey)
if tracingConfig != nil {
if tracingConfig.ServiceName == "" {
tracingConfig.ServiceName = config.GetApplicationConfig().Name
}
switch tracingConfig.Name {
case "jaeger":
opts = append(opts, triConfig.WithJaegerConfig(
tracingConfig.Address,
tracingConfig.ServiceName,
*tracingConfig.UseAgent,
))
default:
logger.Warnf("unsupported tracing name %s, now triple only support jaeger", tracingConfig.Name)
}
}
}
maxServerRecvMsgSize := constant.DefaultMaxServerRecvMsgSize
if recvMsgSize, err := humanize.ParseBytes(url.GetParam(constant.MaxServerRecvMsgSize, "")); err == nil && recvMsgSize != 0 {
maxServerRecvMsgSize = int(recvMsgSize)
}
maxServerSendMsgSize := constant.DefaultMaxServerSendMsgSize
if sendMsgSize, err := humanize.ParseBytes(url.GetParam(constant.MaxServerSendMsgSize, "")); err == nil && sendMsgSize != 0 {
maxServerSendMsgSize = int(sendMsgSize)
}
opts = append(opts, triConfig.WithGRPCMaxServerRecvMessageSize(maxServerRecvMsgSize))
opts = append(opts, triConfig.WithGRPCMaxServerSendMessageSize(maxServerSendMsgSize))
triOption := triConfig.NewTripleOption(opts...)
tlsConfig := config.GetRootConfig().TLSConfig
if tlsConfig != nil {
triOption.TLSCertFile = tlsConfig.TLSCertFile
triOption.TLSKeyFile = tlsConfig.TLSKeyFile
triOption.CACertFile = tlsConfig.CACertFile
triOption.TLSServerName = tlsConfig.TLSServerName
logger.Infof("Triple Server initialized the TLSConfig configuration")
}
_, ok = dp.ExporterMap().Load(url.ServiceKey())
if !ok {
panic("[DubboProtocol]" + url.Key() + "is not existing")
}
srv := triple.NewTripleServer(dp.serviceMap, triOption)
dp.serverMap[url.Location] = srv
srv.Start()
}