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())); }
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)); }
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)); }
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]; }
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); }
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; } }
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; }