package databag

import (
	"errors"
	"github.com/gorilla/websocket"
	"net/http"
)

var relayer = websocket.Upgrader{}
var left *websocket.Conn
var right *websocket.Conn
var cur bool = false

//Status handler for websocket connection
func Relay(w http.ResponseWriter, r *http.Request) {

  relayer.CheckOrigin = func(r *http.Request) bool { return true }

	// accept websocket connection
	conn, err := relayer.Upgrade(w, r, nil)
	if err != nil {
		ErrMsg(err)
		return
	}
  if (cur) {
    right = conn;
    PrintMsg("CONNECTED RIGHT");
  } else {
    left = conn;
    PrintMsg("CONNECTED LEFT");
  }
  cur = !cur;

	defer conn.Close()
	conn.SetReadLimit(APPBodyLimit)

  for true {
    t, m, res := conn.ReadMessage()
    if res != nil {
      ErrMsg(res)
      return
    }
    if t != websocket.TextMessage {
      ErrMsg(errors.New("invalid websocket message type"))
      return
    }
    if conn == left {
      if err := right.WriteMessage(websocket.TextMessage, m); err != nil {
        ErrMsg(err)
        return
      }
    }
    if conn == right {
      if err := left.WriteMessage(websocket.TextMessage, m); err != nil {
        ErrMsg(err)
        return
      }
    }
  }
}