feat: Initial revision

This commit is contained in:
Adrian Rumpold
2022-07-04 06:51:34 +02:00
commit 0054a2d9ae
13 changed files with 468 additions and 0 deletions

9
pkg/model/model.go Normal file
View File

@@ -0,0 +1,9 @@
package model
type Event struct{}
type ClipboardUpdated struct {
Event
Content []byte `json:"content"`
ContentType string `json:"contentType"`
}

42
pkg/net/client.go Normal file
View File

@@ -0,0 +1,42 @@
package net
import (
"bytes"
"encoding/json"
"net"
"github.com/AdrianoKF/go-clip/pkg/model"
)
type Client struct {
addr net.UDPAddr
handler HandlerFunc
}
func NewClient(addr net.UDPAddr, handler HandlerFunc) *Client {
instance := &Client{
addr,
handler,
}
return instance
}
func (c Client) SendEvent(msg model.ClipboardUpdated) error {
conn, err := net.DialUDP("udp4", nil, &c.addr)
if err != nil {
return err
}
defer conn.Close()
buf := make([]byte, 0)
w := bytes.NewBuffer(buf)
encoder := json.NewEncoder(w)
encoder.Encode(msg)
_, err = conn.Write(w.Bytes())
if err != nil {
return err
}
return nil
}

43
pkg/net/server.go Normal file
View File

@@ -0,0 +1,43 @@
package net
import (
"net"
"github.com/AdrianoKF/go-clip/internal/util"
)
type Server struct {
addr net.UDPAddr
Handler HandlerFunc
}
func NewServer(addr net.UDPAddr, handler HandlerFunc) *Server {
instance := &Server{
addr,
handler,
}
return instance
}
func (s Server) Listen() {
conn, err := net.ListenMulticastUDP("udp4", nil, &s.addr)
if err != nil {
util.Logger.Error("Error listening on UDP", err)
return
}
defer conn.Close()
buf := make([]byte, maxDatagramSize)
for {
n, addr, err := conn.ReadFromUDP(buf)
if err != nil {
util.Logger.Error("Error reading from UDP", err)
return
}
util.Logger.Info("Received UDP packet from ", addr, " with ", n, " bytes")
if s.Handler != nil {
go s.Handler(addr, n, buf)
}
}
}

9
pkg/net/types.go Normal file
View File

@@ -0,0 +1,9 @@
package net
import "net"
const (
maxDatagramSize = 8192
)
type HandlerFunc func(*net.UDPAddr, int, []byte)