Commit 69ae249e authored by Michel Roy's avatar Michel Roy
Browse files

add meep-watchdog package

removed meep-virt-engine binary
parent 0d97877f
Loading
Loading
Loading
Loading
−10.8 MiB

File deleted.

+13 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2019
 * InterDigital Communications, Inc.
 * All rights reserved.
 *
 * The information provided herein is the proprietary and confidential
 * information of InterDigital Communications, Inc.
 */

package watchdog

const pingPrefix string = "ping:"
const pongPrefix string = "pong:"
+14 −0
Original line number Diff line number Diff line
module github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-watchdog

go 1.12

require (
	github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0
	github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0
	github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351
	github.com/go-redis/redis v6.15.2+incompatible
)

replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger

replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis
+13 −0
Original line number Diff line number Diff line
github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+GijnyU6O1k4odp5TnqZQTsp5v7+n/E4Y=
github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4=
github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k=
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+86 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2019
 * InterDigital Communications, Inc.
 * All rights reserved.
 *
 * The information provided herein is the proprietary and confidential
 * information of InterDigital Communications, Inc.
 */

package watchdog

import (
	"errors"
	"strings"

	log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger"
	redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis"
)

// Pingee - Implements a Redis Pingee`
type Pingee struct {
	name        string
	isStarted   bool
	pingChannel string
	pongChannel string
	rc          *redis.Connector
}

// NewPingee - Create, Initialize and connect  a pingee
func NewPingee(dbAddr string, name string) (p *Pingee, err error) {
	if name == "" {
		err = errors.New("Missing pingee name")
		log.Error(err)
		return nil, err
	}

	p = new(Pingee)
	p.name = name
	p.isStarted = false
	p.pingChannel = p.name + ":ping"
	p.pongChannel = p.name + ":pong"

	// Connect to Redis DB
	p.rc, err = redis.NewConnector(dbAddr)
	if err != nil {
		log.Error("Pingee ", p.name, " failed connection to Redis")
		log.Error(err)
		return nil, err
	}
	log.Debug("Pingee created ", p.name)
	return p, nil
}

// Start - Listen & reply to ping requests
// - use on pingee side
func (p *Pingee) Start() (err error) {
	err = p.rc.Subscribe(p.pingChannel)
	if err != nil {
		log.Error("Pingee ", p.name, " failed to subscribe to ", p.pingChannel)
		log.Error(err)
		return err
	}
	// Listen for subscribed pings. Provide event handler method.
	go func() {
		_ = p.rc.Listen(p.pingHandler)
	}()
	p.isStarted = true
	return nil
}

// Stop - Unsubscribe and stop listening to ping channel
func (p *Pingee) Stop() (err error) {
	if p.isStarted {
		p.isStarted = false
		p.rc.StopListen()
		p.rc.Unsubscribe(p.pingChannel)
		log.Debug("Pignee stopped ", p.name)
	}
	return nil
}

func (p *Pingee) pingHandler(channel string, payload string) {
	pingMsg := strings.TrimPrefix(payload, pingPrefix)
	pongMsg := pongPrefix + pingMsg
	p.rc.Publish(p.pongChannel, pongMsg)
}
Loading