All geoip modules MUST have the following functions: //----------- QString get_country(QHostAddress ip); GeoIp search(QHostAddress ip); void geoResolved(); //-------- If the modules uses a remote entitity for any part of the requests, the module MUST cache the answers. The cache MUST be at least 3000 entries in size. //------------------- Their functionality and api is: get_country -> gets the current known country of an ip address Syncronous. this function can open files, but should have a small bound on its termination time. If the module uses external resolving, the ip address should be added to the queue of unkown ip addresses. search -> gets the current known geoip info. Syncronous. this function can open files, but should have a small bound on its termination time. If the module uses external resolving, the ip address should be added to the queue of unkown ip addresses. geoResolved -> this function is called when the module has completed a new batch of requests, if the module has any remote resolving.