示例#1
0
  Game(const std::string& game_id) {
    comm = socket(AF_INET, SOCK_STREAM, 0);
    memset(buffer, 0, MAX_MESSAGE_LENGTH);

    hostent* server = gethostbyname("crisco.seas.harvard.edu");
    //hostent* server = gethostbyname("localhost");
    if (server == NULL)
      std::cout << "No such host!" << std::endl;;

    sockaddr_in addr;
    memset((char*)&addr, 0, sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(8080);
    memcpy((char*)&addr.sin_addr.s_addr, (char*)server->h_addr, server->h_length);
    if (connect(comm, (sockaddr*)&addr, sizeof(addr)) < 0)
      std::cout << "Connection Error" << std::endl;

    send(game_id);
    std::cout << "Waiting for game " << recv() << std::endl;

    std::string message = recv();
    std::cout << message << std::endl;
    assert(message == std::string("READY"));

    // Receive our game wall
    wall = vector2wall(string2vector(recv()));
  }
示例#2
0
void xmlutils::string2vector(std::string s, std::vector<int>& v, int minLength, int maxLength, const char *sep)
{
    std::vector<std::string> vs;
    string2vector(s, vs, minLength, maxLength, sep);
    v.clear();
    for(std::vector<std::string>::iterator it = vs.begin(); it != vs.end(); ++it)
        v.push_back(boost::lexical_cast<int>(*it));
}
示例#3
0
 void make_move(const std::string& move) {
   send(move);
   std::string msg = recv();
   if (msg == std::string("WIN")) {
     std::cout << "***" << msg << "***" << std::endl;
     exit(0);
   }
   wall = vector2wall(string2vector(msg));
 }
示例#4
0
 int get_discard() {
   std::string msg = recv();
   if (msg == std::string("LOSE")) {
     std::cout << "***" << msg << "***" << std::endl;
     exit(1);
   }
   std::vector<int> data = string2vector(msg);
   owall = data2wall(data.begin()+1, data.end());
   return data[0];
 }
示例#5
0
std::vector<int> xmlutils::getAttrIntV(tinyxml2::XMLElement *e, std::string name, std::string defaultValue, int minLength, int maxLength, const char *sep)
{
    std::vector<int> defaultValueV;
    try
    {
        string2vector(defaultValue, defaultValueV, minLength, maxLength, sep);
    }
    catch(std::range_error &ex)
    {
        std::stringstream ss;
        ss << "invalid default value for attribute '" << name << "': " << ex.what();
        throw std::range_error(ss.str());
    }

    return getAttrIntV(e, name, defaultValueV, minLength, maxLength, sep);
}
示例#6
0
std::vector<int> xmlutils::getAttrIntV(tinyxml2::XMLElement *e, std::string name, std::vector<int> defaultValue, int minLength, int maxLength, const char *sep)
{
    if(hasAttr(e, name))
    {
        try
        {
            std::vector<int> ret;
            string2vector(getAttrStr(e, name), ret, minLength, maxLength, sep);
            return ret;
        }
        catch(std::range_error &ex)
        {
            std::stringstream ss;
            ss << "attribute '" << name << "' " << ex.what();
            throw std::range_error(ss.str());
        }
    }
    else
    {
        return defaultValue;
    }
}
示例#7
0
static void firmware (char const * filename, unsigned module, char const * memory, unsigned offset, flag_t flags)

{
	if (_anyset (flags, NVM_FIRMWARE))
	{
		if ((* memory > 0x20) && (* memory < 0x7f))
		{
			printf ("%s (%d) %s\n", filename, module, memory);
		}
		else
		{
			printf ("%s (%d) %s\n", filename, module, memory + offset);
		}
		return;
	}
	if (_anyset (flags, NVM_IDENTITY))
	{
		char * vector [16];
		char buffer [256];
		if ((* memory > 0x20) && (* memory < 0x7f))
		{
			strncpy (buffer, memory, sizeof (buffer));
		}
		else
		{
			strncpy (buffer, memory + offset, sizeof (buffer));
		}
		string2vector (vector, buffer, '-');
		printf ("%s ", vector [HARDWARE]);
		printf ("%04d ", atoi (vector [BUILD]));
		printf ("%s ", vector [DATE]);
		printf ("%s.", vector [VER]);
		printf ("%s ", vector [REV]);
		printf ("%s (%d)\n", filename, module);
		return;
	}
	return;
}