package main

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

var upgrader = websocket.Upgrader{
	ReadBufferSize:  1024,
	WriteBufferSize: 1024,
}

func main() {
	// Connect to TCP server

	// Set up WebSocket handler
	http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
		tcpConn, err := net.Dial("tcp", "localhost:2222") // Replace with your TCP server address
		if err != nil {
			log.Fatal("Error connecting to TCP server:", err)
		}
		defer tcpConn.Close()
		handleWebSocket(w, r, tcpConn)
	})

	// Start HTTP server
	fmt.Println("WebSocket server listening on :8000")
	log.Fatal(http.ListenAndServe(":8000", nil))
}

func handleWebSocket(w http.ResponseWriter, r *http.Request, tcpConn net.Conn) {
	conn, err := upgrader.Upgrade(w, r, nil)
	wsConn := websocketutil.NewWebSocketConn(conn)
	if err != nil {
		log.Println("Error upgrading to WebSocket:", err)
		return
	}
	defer wsConn.Close()

	iowrappers.SynchronizeStreams(tcpConn, wsConn)
}