#include "IPAddress.h"

namespace core {

   IPAddress::IPAddress() {
      addressLength = sizeof(addr);
   }

   IPAddress::IPAddress(std::string address) {
      std::string url = address.substr(0, address.find(":"));
      std::string s_port = address.substr(address.find(":") + 1);
      std::stringstream convert(s_port);
      short int port = 0;
      convert >> port;
      IPAddress(url, port);
   }
   
   IPAddress::IPAddress(std::string address, int port) {
      memset(&addr, 0, sizeof(addr));
      addr.sin_family = AF_INET;
      addr.sin_port = htons(port);
      struct hostent *hp = gethostbyname(address.c_str());
      memcpy((void *)&addr.sin_addr, hp->h_addr_list[0], hp->h_length);
      addressLength = sizeof(addr);
   }
   
   IPAddress::~IPAddress() {
      
   }
   
   struct sockaddr * IPAddress::getPointer() {
      return (sockaddr *)&addr;
   }
   
   std::string IPAddress::getClientAddress() {
      std::string result;
      return result;
   }
   
   std::string IPAddress::getClientAddressAndPort() {
      std::stringstream out;
      out << inet_ntoa(addr.sin_addr);
      out << ":" << addr.sin_port;
      return out.str();
   }
   
   int IPAddress::getClientPort() {
      int result = -1;
      return result;
   }
   
}

