I am using mongodb for database in smartfox server. I am sharing my code, i just want to know can i reuse my Zone Mongo Connection(MongoClinet) directly inside the room or i have to create new Mongo Connection for room.
MyZoneExtension.java :-
Code: Select all
import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.smartfoxserver.v2.core.SFSEventType;
import com.smartfoxserver.v2.extensions.SFSExtension;
import sfs2x.extension.poker.db.MongoDBManager;
public class MyZoneExtension extends SFSExtension {
@Override
public void init() {
trace("======init()=====");
MongoDBManager.initializeConnection(this);
this.addEventHandler(SFSEventType.SERVER_READY, ConnectionCheckHandler.class);
this.addEventHandler(SFSEventType.USER_LOGIN, LoginEventHandler.class);
}
@Override
public void destroy() {
MongoDBManager.getInstance().closeConnection();
}
}
MongoDBManager.java :-
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import com.smartfoxserver.v2.extensions.SFSExtension;
public class MongoDBManager {
private static MongoDBManager mongoDbManager = null;
private MongoClient mongoClient = null;
private MongoDatabase database = null;
private static SFSExtension ext;
private MongoDBManager() {
if (mongoClient == null) {
mongoClient = MongoClients.create("<mongo db uri>");
database = mongoClient.getDatabase("test_slots_db");
}
ext.trace("====MongoDBManager()===");
}
public static void initializeConnection (SFSExtension extension) {
ext = extension;
if (mongoDbManager == null) {
mongoDbManager = new MongoDBManager();
}
}
public static MongoDBManager getInstance() {
return mongoDbManager;
}
public MongoClient getConnection() {
return mongoClient;
}
public MongoDatabase getDBManager() {
return database;
}
public void closeConnection() {
if (mongoClient != null) {
mongoClient.close();
}
ext.trace("====closeConnection()===");
}
}