Files
Work/wininet/connection.hpp
2024-08-07 09:16:27 -04:00

83 lines
1.8 KiB
C++

#ifndef _WININET_CONNECTION_HPP_
#define _WININET_CONNECTION_HPP_
#ifndef _WININET_INTERNET_HPP_
#include <wininet/internet.hpp>
#endif
class Connection
{
public:
Connection();
virtual ~Connection();
bool connect(const Internet &internet,const String &strServer);
bool connect(const Internet &internet,const String &strServer,int service,int port);
bool connectURL(const Internet &internet,const String &strURL);
void close();
HINTERNET getHANDLE(void)const;
bool isOkay(void)const;
private:
HINTERNET mhConnection;
};
inline
Connection::Connection()
: mhConnection(0)
{
}
inline
Connection::~Connection()
{
close();
}
inline
bool Connection::connect(const Internet &internet,const String &strServer)
{
if(!internet.isOkay())return false;
close();
mhConnection=::InternetConnect(internet.getHANDLE(),strServer.str(),INTERNET_INVALID_PORT_NUMBER,NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
return isOkay();
}
// connect(internet,"loocalhost",INTERNET_SERVICE_HTTP,INTERNET_DEFAULT_HTTP_PORT)
inline
bool Connection::connect(const Internet &internet,const String &strServer,int service,int port)
{
if(!internet.isOkay())return false;
close();
mhConnection=::InternetConnect(internet.getHANDLE(),strServer.str(),port,NULL,NULL,service,0,0);
return isOkay();
}
inline
bool Connection::connectURL(const Internet &internet,const String &strURL)
{
if(!internet.isOkay())return false;
close();
mhConnection=::InternetConnect(internet.getHANDLE(),strURL.str(),INTERNET_INVALID_PORT_NUMBER,NULL,NULL,INTERNET_SERVICE_URL,0,0);
return isOkay();
}
inline
void Connection::close()
{
if(!isOkay())return;
::InternetCloseHandle(mhConnection);
mhConnection=0;
}
inline
HINTERNET Connection::getHANDLE(void)const
{
return mhConnection;
}
inline
bool Connection::isOkay()const
{
return mhConnection?true:false;
}
#endif