Skip to content

Commit

Permalink
WIP: change to add log receiver
Browse files Browse the repository at this point in the history
  • Loading branch information
ymotongpoo committed Nov 29, 2023
1 parent e93317f commit 4b31d0f
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 28 deletions.
54 changes: 40 additions & 14 deletions receiver/discordreceiver/discord.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,28 +28,54 @@ import (
)

type discordHandler struct {
session *discordgo.Session
consumer consumer.Metrics
cancel context.CancelFunc
config *Config
obsrecv *receiverhelper.ObsReport
mb *metadata.MetricsBuilder
mcCh chan messageCreateEvent
session *discordgo.Session
metricsConsumer consumer.Metrics
logsConsumer consumer.Logs
cancel context.CancelFunc
config *Config
obsrecv *receiverhelper.ObsReport
mb *metadata.MetricsBuilder
mcCh chan messageCreateEvent
}

func newDiscordHandler(consumer consumer.Metrics, cfg *Config, settings receiver.CreateSettings, obsrecv *receiverhelper.ObsReport) (*discordHandler, error) {
func newDiscordMetricsHandler(
consumer consumer.Metrics,
cfg *Config,
settings receiver.CreateSettings,
obsrecv *receiverhelper.ObsReport,
) (*discordHandler, error) {
s, err := discordgo.New("Bot " + cfg.Token)
if err != nil {
return nil, err
}

dh := &discordHandler{
session: s,
consumer: consumer,
config: cfg,
obsrecv: obsrecv,
mb: metadata.NewMetricsBuilder(cfg.MetricsBuilderConfig, settings),
mcCh: make(chan messageCreateEvent, 1000),
session: s,
metricsConsumer: consumer,
config: cfg,
obsrecv: obsrecv,
mb: metadata.NewMetricsBuilder(cfg.MetricsBuilderConfig, settings),
mcCh: make(chan messageCreateEvent, 1000),
}
return dh, nil
}

func newDiscordLogsHandler(
consumer consumer.Logs,
cfg *Config,
settings receiver.CreateSettings,
obsrecv *receiverhelper.ObsReport,
) (*discordHandler, error) {
s, err := discordgo.New("Bot " + cfg.Token)
if err != nil {
return nil, err
}
dh := &discordHandler{
session: s,
logsConsumer: consumer,
config: cfg,
obsrecv: obsrecv,
mcCh: make(chan messageCreateEvent, 1000),
}
return dh, nil
}
Expand Down
20 changes: 19 additions & 1 deletion receiver/discordreceiver/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ func NewFactory() receiver.Factory {
metadata.Type,
createDefaultConfig,
receiver.WithMetrics(createMetricsReceiver, metadata.MetricsStability),
receiver.WithLogs(createLogsReceiver, metadata.LogsStability),
)
}

Expand All @@ -48,5 +49,22 @@ func createMetricsReceiver(
if err != nil {
return nil, err
}
return newDiscordReceiver(c, settings, consumer)
return newDiscordMetricsReceiver(c, settings, consumer)
}

func createLogsReceiver(
_ context.Context,
settings receiver.CreateSettings,
cfg component.Config,
consumer consumer.Logs,
) (receiver.Logs, error) {
if consumer == nil {
return nil, component.ErrNilNextConsumer
}
c := cfg.(*Config)
err := c.Validate()
if err != nil {
return nil, err
}
return newDiscordLogsReceiver(c, settings, consumer)
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion receiver/discordreceiver/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ type: discord
status:
class: receiver
stability:
development: [metrics]
development: [metrics, logs]
codeowners:
active: [ymotongpoo]

Expand Down
50 changes: 38 additions & 12 deletions receiver/discordreceiver/receiver.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,20 @@ import (
)

type discordReceiver struct {
consumer consumer.Metrics
settings receiver.CreateSettings
cancel context.CancelFunc
config *Config
dh *discordHandler
obsrecv *receiverhelper.ObsReport
metricsConsumer consumer.Metrics
logsConsumer consumer.Logs
settings receiver.CreateSettings
cancel context.CancelFunc
config *Config
dh *discordHandler
obsrecv *receiverhelper.ObsReport
}

func newDiscordReceiver(config *Config, settings receiver.CreateSettings, consumer consumer.Metrics) (*discordReceiver, error) {
func newDiscordMetricsReceiver(
config *Config,
settings receiver.CreateSettings,
consumer consumer.Metrics,
) (*discordReceiver, error) {
obsrecv, err := receiverhelper.NewObsReport(receiverhelper.ObsReportSettings{
ReceiverID: settings.ID,
Transport: "event",
Expand All @@ -43,18 +48,39 @@ func newDiscordReceiver(config *Config, settings receiver.CreateSettings, consum
return nil, err
}
return &discordReceiver{
consumer: consumer,
settings: settings,
config: config,
obsrecv: obsrecv,
metricsConsumer: consumer,
settings: settings,
config: config,
obsrecv: obsrecv,
}, nil
}

func newDiscordLogsReceiver(
config *Config,
settings receiver.CreateSettings,
consumer consumer.Logs,
) (*discordReceiver, error) {
obsrecv, err := receiverhelper.NewObsReport(receiverhelper.ObsReportSettings{
ReceiverID: settings.ID,
Transport: "event",
ReceiverCreateSettings: settings,
})
if err != nil {
return nil, err
}
return &discordReceiver{
logsConsumer: consumer,
settings: settings,
config: config,
obsrecv: obsrecv,
}, nil
}

func (r *discordReceiver) Start(ctx context.Context, _ component.Host) error {
ctx, r.cancel = context.WithCancel(ctx)

var err error
r.dh, err = newDiscordHandler(r.consumer, r.config, r.settings, r.obsrecv)
r.dh, err = newDiscordMetricsHandler(r.metricsConsumer, r.config, r.settings, r.obsrecv)
if err != nil {
return err
}
Expand Down

0 comments on commit 4b31d0f

Please sign in to comment.