/**
 *  << Copyright 2022 Iñigo Tamayo Uria, Ana Domínguez Fanlo, Mikel Joseba Zorrilla Berasategui, Guillermo Pacho Rodríguez, Bruno Simões and Stefano Masneri. >>
 *  This file is part of orkestralibUnity.
 *  orkestralibUnity is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 *  orkestralibUnity is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
 *  You should have received a copy of the GNU Lesser General Public License along with orkestralibUnity. If not, see <https://www.gnu.org/licenses/>.
 **/
using OrkestraLib.Message;
using System;

namespace OrkestraLib.Network
{
    public interface IWebSocketAdapter
    {
        public string GetURL();

        /// <exception cref="ServiceException">Thrown when there is a connection problem</exception>
        public void Connect(string url);

        public void Connect(string serverUrl,
                                      Action<IWebSocketAdapter> config,
                                      Action<bool> onConnect);

        public bool IsConnected();

        public void Disconnect();

        public void On(string eventName, Action<string> callback);

        public void Emit(string evtKey, string data);

        public void Emit(string evtKey, IPacket data);
    }
}
