Commit d6203ac2 authored by Matt Tucker's avatar Matt Tucker Committed by matt

Initial work on faster offline presence.

git-svn-id: http://svn.igniterealtime.org/svn/repos/wildfire/trunk@6351 b35dd754-fafc-0310-a699-88a17e54d16e
parent 2990f865
...@@ -40,6 +40,12 @@ CREATE TABLE jiveOffline ( ...@@ -40,6 +40,12 @@ CREATE TABLE jiveOffline (
CONSTRAINT jiveOffline_pk PRIMARY KEY (username, messageID) CONSTRAINT jiveOffline_pk PRIMARY KEY (username, messageID)
); );
CREATE TABLE jivePresence (
username VARCHAR(64) NOT NULL,
offlinePresence LONGVARCHAR,
lastActivity VARCHAR(15),
CONSTRAINT jivePresence_pk PRIMARY KEY (username)
);
CREATE TABLE jiveRoster ( CREATE TABLE jiveRoster (
rosterID BIGINT NOT NULL, rosterID BIGINT NOT NULL,
......
...@@ -16,6 +16,8 @@ import org.dom4j.DocumentException; ...@@ -16,6 +16,8 @@ import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper; import org.dom4j.DocumentHelper;
import org.jivesoftware.util.LocaleUtils; import org.jivesoftware.util.LocaleUtils;
import org.jivesoftware.util.Log; import org.jivesoftware.util.Log;
import org.jivesoftware.util.Cache;
import org.jivesoftware.util.CacheManager;
import org.jivesoftware.wildfire.*; import org.jivesoftware.wildfire.*;
import org.jivesoftware.wildfire.auth.UnauthorizedException; import org.jivesoftware.wildfire.auth.UnauthorizedException;
import org.jivesoftware.wildfire.component.InternalComponentManager; import org.jivesoftware.wildfire.component.InternalComponentManager;
...@@ -58,6 +60,9 @@ public class PresenceManagerImpl extends BasicModule implements PresenceManager ...@@ -58,6 +60,9 @@ public class PresenceManagerImpl extends BasicModule implements PresenceManager
private InternalComponentManager componentManager; private InternalComponentManager componentManager;
private Cache lastActivityCache;
private Cache offlinePresenceCache;
public PresenceManagerImpl() { public PresenceManagerImpl() {
super("Presence manager"); super("Presence manager");
...@@ -378,6 +383,10 @@ public class PresenceManagerImpl extends BasicModule implements PresenceManager ...@@ -378,6 +383,10 @@ public class PresenceManagerImpl extends BasicModule implements PresenceManager
public void initialize(XMPPServer server) { public void initialize(XMPPServer server) {
super.initialize(server); super.initialize(server);
this.server = server; this.server = server;
offlinePresenceCache = CacheManager.initializeCache("Offline Presence Cache", "offlinePresence", 512*1024);
lastActivityCache = CacheManager.initializeCache("Last Activity Cache", "lastActivity", 128*1024);
deliverer = server.getPacketDeliverer(); deliverer = server.getPacketDeliverer();
sessionManager = server.getSessionManager(); sessionManager = server.getSessionManager();
userManager = server.getUserManager(); userManager = server.getUserManager();
...@@ -385,6 +394,12 @@ public class PresenceManagerImpl extends BasicModule implements PresenceManager ...@@ -385,6 +394,12 @@ public class PresenceManagerImpl extends BasicModule implements PresenceManager
rosterManager = server.getRosterManager(); rosterManager = server.getRosterManager();
} }
public void stop() {
// Clear the caches when stopping the module.
offlinePresenceCache.clear();
lastActivityCache.clear();
}
private Component getComponent(JID probee) { private Component getComponent(JID probee) {
// Check for registered components // Check for registered components
Component component = componentManager.getComponent(probee); Component component = componentManager.getComponent(probee);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment