#pragma once

#include "fwd.hpp"

NAMESPACE_SOUP
{
	struct ServerService
	{
		using callback_t = void(*)(Socket& client, ServerService&, Server&) SOUP_EXCAL;

		// on_connection_established is called when the TCP connection is established
		callback_t on_connection_established = nullptr;

		// on_tunnel_established is called when:
		// - (non-crypto) the TCP connection is established
		// - (crypto) the TLS handshake has completed
		const callback_t on_tunnel_established;

		ServerService(callback_t on_tunnel_established)
			: on_tunnel_established(on_tunnel_established)
		{
		}
	};
}
