Lines 13-24
Link Here
|
13 |
* |
13 |
* |
14 |
* Contributors: |
14 |
* Contributors: |
15 |
* {Name} (company) - description of contribution. |
15 |
* {Name} (company) - description of contribution. |
|
|
16 |
* David McKnight (IBM) - [202822] don't need to remove children from map here |
16 |
*******************************************************************************/ |
17 |
*******************************************************************************/ |
17 |
|
18 |
|
18 |
package org.eclipse.dstore.internal.core.util; |
19 |
package org.eclipse.dstore.internal.core.util; |
19 |
|
20 |
|
|
|
21 |
import java.util.ArrayList; |
20 |
import java.util.LinkedList; |
22 |
import java.util.LinkedList; |
21 |
import java.util.List; |
|
|
22 |
|
23 |
|
23 |
import org.eclipse.dstore.core.model.DataElement; |
24 |
import org.eclipse.dstore.core.model.DataElement; |
24 |
import org.eclipse.dstore.core.model.DataStore; |
25 |
import org.eclipse.dstore.core.model.DataStore; |
Lines 39-46
Link Here
|
39 |
// that are older than _expiryTime milliseconds are removed. |
40 |
// that are older than _expiryTime milliseconds are removed. |
40 |
public static final int DEFAULT_EXPIRY_TIME = 600; // in seconds |
41 |
public static final int DEFAULT_EXPIRY_TIME = 600; // in seconds |
41 |
public static final int DEFAULT_INTERVAL_TIME = 60; // in seconds |
42 |
public static final int DEFAULT_INTERVAL_TIME = 60; // in seconds |
42 |
private int _intervalTime = DEFAULT_INTERVAL_TIME * 100; |
43 |
private int _intervalTime = DEFAULT_INTERVAL_TIME * 10; |
43 |
private int _expiryTime = DEFAULT_EXPIRY_TIME * 100; |
44 |
private int _expiryTime = DEFAULT_EXPIRY_TIME * 10; |
44 |
public static final String EXPIRY_TIME_PROPERTY_NAME = "SPIRIT_EXPIRY_TIME"; //$NON-NLS-1$ |
45 |
public static final String EXPIRY_TIME_PROPERTY_NAME = "SPIRIT_EXPIRY_TIME"; //$NON-NLS-1$ |
45 |
public static final String INTERVAL_TIME_PROPERTY_NAME = "SPIRIT_INTERVAL_TIME"; //$NON-NLS-1$ |
46 |
public static final String INTERVAL_TIME_PROPERTY_NAME = "SPIRIT_INTERVAL_TIME"; //$NON-NLS-1$ |
46 |
|
47 |
|
Lines 96-104
Link Here
|
96 |
} |
97 |
} |
97 |
|
98 |
|
98 |
public synchronized void addToQueueForRemoval(DataElement element) |
99 |
public synchronized void addToQueueForRemoval(DataElement element) |
99 |
{ |
100 |
{ |
|
|
101 |
System.out.println("dis:"+element.getName()); |
100 |
synchronized (_queue) |
102 |
synchronized (_queue) |
101 |
{ |
103 |
{ |
|
|
104 |
|
102 |
if (_dataStore.isDoSpirit() && _dataStore == element.getDataStore()) |
105 |
if (_dataStore.isDoSpirit() && _dataStore == element.getDataStore()) |
103 |
{ |
106 |
{ |
104 |
QueueItem item = new QueueItem(element, System.currentTimeMillis()); |
107 |
QueueItem item = new QueueItem(element, System.currentTimeMillis()); |
Lines 116-121
Link Here
|
116 |
{ |
119 |
{ |
117 |
synchronized (_queue) |
120 |
synchronized (_queue) |
118 |
{ |
121 |
{ |
|
|
122 |
|
123 |
System.out.println("spiriting"); |
119 |
_dataStore.memLog(" "); //$NON-NLS-1$ |
124 |
_dataStore.memLog(" "); //$NON-NLS-1$ |
120 |
int disconnected = 0; |
125 |
int disconnected = 0; |
121 |
if (!_dataStore.isDoSpirit()) |
126 |
if (!_dataStore.isDoSpirit()) |
Lines 136-148
Link Here
|
136 |
|
141 |
|
137 |
_dataStore.memLog("Size of queue: " + _queue.size()); //$NON-NLS-1$ |
142 |
_dataStore.memLog("Size of queue: " + _queue.size()); //$NON-NLS-1$ |
138 |
|
143 |
|
|
|
144 |
ArrayList toRefresh = new ArrayList(); |
139 |
while (_queue.size() > 0 && System.currentTimeMillis() - ((QueueItem) _queue.getFirst()).timeStamp > _expiryTime) |
145 |
while (_queue.size() > 0 && System.currentTimeMillis() - ((QueueItem) _queue.getFirst()).timeStamp > _expiryTime) |
140 |
{ |
146 |
{ |
141 |
DataElement toBeDisconnected = ((QueueItem) _queue.removeFirst()).dataElement; |
147 |
DataElement toBeDisconnected = ((QueueItem) _queue.removeFirst()).dataElement; |
142 |
if (!toBeDisconnected.isSpirit()) |
148 |
if (!toBeDisconnected.isSpirit()) |
143 |
{ |
149 |
{ |
144 |
toBeDisconnected.setSpirit(true); |
150 |
toBeDisconnected.setSpirit(true); |
145 |
_dataStore.refresh(toBeDisconnected); |
151 |
toBeDisconnected.setUpdated(false); |
|
|
152 |
DataElement parent = toBeDisconnected.getParent(); |
153 |
if (!toRefresh.contains(parent)) |
154 |
{ |
155 |
toRefresh.add(toBeDisconnected.getParent()); |
156 |
} |
157 |
//_dataStore.refresh(toBeDisconnected); |
146 |
disconnected++; |
158 |
disconnected++; |
147 |
numDisconnected++; |
159 |
numDisconnected++; |
148 |
} |
160 |
} |
Lines 152-157
Link Here
|
152 |
} |
164 |
} |
153 |
unmap(toBeDisconnected); |
165 |
unmap(toBeDisconnected); |
154 |
} |
166 |
} |
|
|
167 |
|
168 |
_dataStore.refresh(toRefresh); |
169 |
|
155 |
_dataStore.memLog("Disconnected " + disconnected + " DataElements."); //$NON-NLS-1$ //$NON-NLS-2$ |
170 |
_dataStore.memLog("Disconnected " + disconnected + " DataElements."); //$NON-NLS-1$ //$NON-NLS-2$ |
156 |
_dataStore.memLog("Elements created so far: " + numCreated); //$NON-NLS-1$ |
171 |
_dataStore.memLog("Elements created so far: " + numCreated); //$NON-NLS-1$ |
157 |
_dataStore.memLog("Elements disconnected so far: " + numDisconnected); //$NON-NLS-1$ |
172 |
_dataStore.memLog("Elements disconnected so far: " + numDisconnected); //$NON-NLS-1$ |
Lines 162-176
Link Here
|
162 |
|
177 |
|
163 |
private void unmap(DataElement element) |
178 |
private void unmap(DataElement element) |
164 |
{ |
179 |
{ |
165 |
List children = element.getNestedData(); |
|
|
166 |
if (children != null) |
167 |
{ |
168 |
for (int i = 0; i < children.size(); i++) |
169 |
{ |
170 |
DataElement child = (DataElement)children.get(i); |
171 |
unmap(child); |
172 |
} |
173 |
} |
174 |
_dataStore.getHashMap().remove(element.getId()); |
180 |
_dataStore.getHashMap().remove(element.getId()); |
175 |
} |
181 |
} |
176 |
|
182 |
|