package probe

import (
	"git.loafle.net/commons_go/logging"
	"git.loafle.net/commons_go/websocket_fasthttp/websocket"
	oogws "git.loafle.net/overflow/overflow_gateway_websocket/servlet"
	oogwsub "git.loafle.net/overflow/overflow_gateway_websocket/subscribe"
	oos "git.loafle.net/overflow/overflow_subscriber"
)

func newSubscriberHandler(servletHandler oogws.ServletHandler) oogwsub.SubscriberHandler {
	sh := &SubscriberHandlers{}
	sh.ServletHandler = servletHandler
	sh.Channel = cfg.Entry

	return sh
}

type SubscriberHandlers struct {
	oogwsub.SubscriberHandlers
}

func (sh *SubscriberHandlers) OnSubscribe(channel string, message oos.SubscribeMessage) {
	switch message.TargetType {
	case oos.PROBE:
		for _, pid := range message.Targets {
			if soc := sh.GetSocket(pid); nil != soc {
				soc.WriteMessage(websocket.TextMessage, message.Message)
			}
		}
	default:
		logging.Logger().Warnf("[PROBE] SubscriberHandler: Unknown TargetType %s", message.TargetType)
	}
}

func (sh *SubscriberHandlers) Validate() {
	sh.SubscriberHandlers.Validate()
}