bts

package module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2021 License: MIT Imports: 12 Imported by: 0

README

🗼 go-bts

🗼 ~~ 🗼 ~~ 🗼

~            ~~~            ~

🗼 ~~~~~~ 🗼 ~~~~~~🗼

~            ~~~            ~

🗼 ~~ 🗼 ~~ 🗼


it's just a simple peer to peer library to help you making a simple connection between your application/service just like a BTS Tower base on UDP network.

Example

package main


import (
    bts "github.com/lazyguyid/go-bts"
)

var receiver, transmitter bool

func init() {
	flag.BoolVar(&receiver, "receiver", false, "activate receiver")
	flag.BoolVar(&transmitter, "transmitter", false, "activate transmitter")
}

func receivers(t *bts.Tower) {
	fmt.Println("receiver start")
	t = bts.NewTower(&bts.Setup{
		Name:       "Tower A",
		ID:         "bts-example",
		Addr:       "udp://127.0.0.1:4321",
		PacketSize: 2048,
		AsGate:     false,
	})
}

func transmitters(t *bts.Tower) {
	t.Connect([]bts.Transmitter{
		bts.Transmitter{
			Active:       true,
			ID:           "uuid",
			Addr:         "udp://127.0.0.1:4321",
			PingInterval: 10 * time.Second,
			Receiver: func(t *bts.Tower, v []byte, transmitter *bts.Transmitter) error {
				fmt.Println(fmt.Sprintf("\r[%s]:: %s", transmitter.Conn.RemoteAddr().String(), string(v)))
				return nil
			},
		},
	})
}

func main() {
	flag.Parse()
	tower := bts.NewTower(nil)
	if receiver {
		tower = bts.NewTower(&bts.Setup{
			Name:       "Tower A",
			ID:         "bts-example",
			Addr:       "udp://127.0.0.1:4321",
			PacketSize: 2048,
			AsGate:     false,
			Callback: func(t *bts.Tower, p []byte, transAddr net.Addr) error {
				fmt.Println(fmt.Sprintf("\r[%v]:: %s", transAddr, string(p)))
				return nil
			},
		})
	}
	if transmitter {
		transmitters(tower)
	}
	tower.ActivatePrompt(true)
	tower.Ready()
}

Screenshoot

NOTE**
This project is under construction, so we don't encourage you to use it in production environment!

Copyright © 2021 lazyguyid.

Documentation

Index

Constants

View Source
const (
	CONNECTWITH = "/connectwith"
	DISCONNECT  = "/disconnect"
)
View Source
const (
	BADGER = "BADGER"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type DB

type DB struct {
	// contains filtered or unexported fields
}

func (*DB) BadgerDB

func (db *DB) BadgerDB() *badger.DB

type Database

type Database interface {
	BadgerDB() *badger.DB
}

type HeaderInfo

type HeaderInfo struct{}

type Packet

type Packet struct {
	Data interface{}
}

type PacketHeader

type PacketHeader struct {
	ID        string
	Timestamp int64
	Ping      bool
	Info      *HeaderInfo
}

type Prompt

type Prompt struct {
	Active    bool
	CurrTrans []string
}

type Receiver

type Receiver struct {
	Addr      *net.Addr
	Conn      net.PacketConn
	TransAddr map[string]net.Addr
	Action    func(t *Tower, v []byte, transAddr net.Addr) error
	Active    bool
}

func (*Receiver) IsValidTransmitter

func (receiver *Receiver) IsValidTransmitter(transAddr net.Addr) (r bool)

receiver

type Setup

type Setup struct {
	Name       string
	ID         string
	Addr       string
	PacketSize int
	AsGate     bool
	Callback   func(t *Tower, v []byte, transAddr net.Addr) error
}

Setup bts tower

type Tower

type Tower struct {
	ID            string
	Name          string
	Status        string
	Transmitters  map[string]*Transmitter
	Receiver      *Receiver
	MaxBufferSize int64

	Address      string
	EnablePrompt bool
	Prompt       *Prompt
	// contains filtered or unexported fields
}

func NewTower

func NewTower(setup *Setup) *Tower

func (*Tower) ActivatePrompt

func (tower *Tower) ActivatePrompt(v bool)

func (*Tower) Connect

func (tower *Tower) Connect(ts []Transmitter)

func (*Tower) Disconnected

func (tower *Tower) Disconnected(t string) bool

func (*Tower) Ready

func (tower *Tower) Ready() (err error)

func (*Tower) RunCmd

func (tower *Tower) RunCmd(t string) (cntinue bool, err error)

func (*Tower) SetStatus

func (tower *Tower) SetStatus(s string, towers []string) error

func (*Tower) Transmit

func (tower *Tower) Transmit(t string, p interface{}) error

type Transmitter

type Transmitter struct {
	ID            string
	Addr          string
	PingInterval  time.Duration
	EnablePrompt  bool
	Active        bool
	Receiver      func(t *Tower, v []byte, trans *Transmitter) error
	Conn          net.Conn
	MaxBufferSize int64
}

func (*Transmitter) Transmit

func (transmitter *Transmitter) Transmit(v interface{}) (err error)

transmit to transmitter

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL