////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Save server data (query info)
// ipl = long representation of ip
// port = query port
// engine = engine id
// flag = query flags (optional)
// sql = sql connection to use (optional, better to use an allocated connection then grabbing from the pool)
//
//Returns:
// >0 = server id
// -1 = unable to save server (exists already?)
// -2 = should never happen (since the id is new in the db)
//
int threadhub::saveNewServer(unsigned ipl, unsigned short int port, int engine, int flag=GM_DEFAULT_QUERY_FLAGS, sql_p *sql=NULL) {
int ret=-1;
bool sql_allocated=false;
if (sql==NULL) {
sql = _sql_cs.allocItem();
sql_allocated = true;
}
ret = sql->save_new_server(ipl,port,engine,flag);
if ( ret>0 ) {
if ( !this->allocateID(ret) ) {
//nasty
ret=-2;
}
}
if (sql_allocated) _sql_cs.freeItem(sql);
return ret;
}