| 28 | } |
| 29 | |
| 30 | func NewForwarder(cfg Config, logger log.Logger) (*Forwarder, error) { |
| 31 | if err := cfg.Validate(); err != nil { |
| 32 | return nil, fmt.Errorf("failed to validate config: %w", err) |
| 33 | } |
| 34 | |
| 35 | return &Forwarder{ |
| 36 | cfg: cfg, |
| 37 | logger: logger, |
| 38 | connections: make(map[string]*grpc.ClientConn), |
| 39 | clients: make(map[string]ptraceotlp.GRPCClient), |
| 40 | initialized: false, |
| 41 | mu: &sync.RWMutex{}, |
| 42 | }, nil |
| 43 | } |
| 44 | |
| 45 | // Dial creates client connections and clients based on config. |
| 46 | // Dial is expected to be called only once. |