// Copyright 2022, FOSS-VG Developers and Contributers
//
// Author(s):
//  BodgeMaster
//
// This program is free software: you can redistribute it and/or modify it
// under the terms of the GNU Affero General Public License as published
// by the Free Software Foundation, version 3.
//
// This program 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// version 3 along with this program.
// If not, see https://www.gnu.org/licenses/agpl-3.0.en.html

#pragma once

#include <string>

#include "../error.hpp"

namespace network {
    struct Connection {
    }

    // host could be a hostname or address
    ErrorOr<Connection> connect(std::string host);
    void disconnect(Connection);

    // start listening for incoming connections
    ErrorOrVoid startListening();
    // stop listening for new incoming connections but keep existing
    // connections open
    void stopListening();
    // stop listening for incoming connections and disconnect all
    void stopCommunication();

    ErrorOr<Connection> acceptNextIncoming();
}
