package main

import (
	"converge/pkg/iowrappers"
	"converge/pkg/websocketutil"
	"github.com/gorilla/websocket"
	"log"
	"net"
	"os"
	"time"
)

func closeConnection(conn net.Conn) {
	if tcpConn, ok := conn.(*net.TCPConn); ok {
		tcpConn.SetLinger(0)
	}
	_ = conn.Close()
}

type Stdio struct{}

func (stdio Stdio) Read(b []byte) (n int, err error) {
	return os.Stdin.Read(b)
}
func (stdio Stdio) Write(b []byte) (n int, err error) {
	return os.Stdout.Write(b)
}

func main() {
	wsURL := os.Args[1]

	_wsConn, _, err := websocket.DefaultDialer.Dial(wsURL, nil)
	_wsConn.SetReadDeadline(time.Time{})
	_wsConn.SetWriteDeadline(time.Time{})
	if err != nil {
		log.Println("WebSocket connection error:", err)
		panic(err)
	}
	wsConn := websocketutil.NewWebSocketConn(_wsConn)
	defer wsConn.Close()

	iowrappers.SynchronizeStreams(wsConn, Stdio{})
}