#pragma once

#ifndef EHS_IPV4_HEADER
	#define EHS_IPV4_HEADER 60
#endif

#ifndef EHS_IPV6_HEADER
	#define EHS_IPV6_HEADER 40
#endif

#ifndef EHS_UDP_HEADER
	#define EHS_UDP_HEADER 8
#endif

#ifndef EHS_IPV4_UDP_PAYLOAD
	#define EHS_IPV4_UDP_PAYLOAD (EHS_UINT_16_MAX - EHS_IPV4_HEADER - EHS_UDP_HEADER)
#endif

#ifndef EHS_IPV6_UDP_PAYLOAD
	#define EHS_IPV6_UDP_PAYLOAD (EHS_UINT_16_MAX - EHS_IPV6_HEADER - EHS_UDP_HEADER)
#endif

namespace ehs
{
    enum class AddrType
    {
        IPV6,
        IPV4
    };

    enum class ContentType
    {
        APP_MULTIPART_FORMDATA,
        APP_FORMURLENCODED,
        APP_JAVASCRIPT,
        APP_JSON,
        APP_XML,
        TEXT_PLAIN,
        TEXT_HTML,
        TEXT_XML,
        NONE
    };

#if defined(EHS_OS_WINDOWS)
	typedef UInt_64 Socket;
	#define EHS_INVALID_SOCKET EHS_UINT_64_MAX
#elif defined(EHS_OS_LINUX)
	typedef SInt_32 Socket;
	#define EHS_INVALID_SOCKET (SInt_32)0xffffffff
#endif
}