import java.util.logging.Level;
import java.util.logging.Logger;
+import net.pterodactylus.fcp.highlevel.GetRequestResult;
import net.pterodactylus.fcp.highlevel.HighLevelCallback;
import net.pterodactylus.fcp.highlevel.HighLevelCallbackListener;
import net.pterodactylus.fcp.highlevel.HighLevelClient;
import net.pterodactylus.fcp.highlevel.HighLevelProgress;
import net.pterodactylus.fcp.highlevel.HighLevelProgressListener;
+import net.pterodactylus.fcp.highlevel.PutDirRequestResult;
+import net.pterodactylus.fcp.highlevel.PutRequestResult;
import net.pterodactylus.fcp.highlevel.RequestListResult;
import net.pterodactylus.fcp.highlevel.RequestResult;
+import net.pterodactylus.jsite.core.Request.Type;
import net.pterodactylus.util.logging.Logging;
/**
logger.log(Level.WARNING, "no client for node: " + node);
return;
}
- final Map<String, Request> identifierRequests = new HashMap<String, Request>();
+ final Map<String, Request> identifierRequests = Collections.synchronizedMap(new HashMap<String, Request>());
nodeRequests.put(node, identifierRequests);
HighLevelCallback<RequestListResult> requestListCallback = highLevelClient.getRequests();
requestListCallback.addHighLevelCallbackListener(new HighLevelCallbackListener<RequestListResult>() {
return;
}
for (RequestResult requestResult: requestListResult) {
- Request request = new Request(node, requestResult.getIdentifier());
- identifierRequests.put(requestResult.getIdentifier(), request);
- /* TODO - fill request */
- fireRequestAdded(request);
+ String identifier = requestResult.getIdentifier();
+ logger.log(Level.FINER, "got identifier: " + identifier);
+ Request request = identifierRequests.get(identifier);
+ if (request == null) {
+ request = new Request(node, identifier);
+ }
+ if (request.getType() == null) {
+ if (requestResult instanceof GetRequestResult) {
+ request.setType(Type.get);
+ } else if (requestResult instanceof PutRequestResult) {
+ request.setType(Type.put);
+ } else if (requestResult instanceof PutDirRequestResult) {
+ request.setType(Type.putDir);
+ }
+ }
+ if (identifierRequests.containsKey(identifier)) {
+ continue;
+ }
+ identifierRequests.put(requestResult.getIdentifier(), request);
+ fireRequestAdded(request);
}
}
});
Map<String, Request> identifierRequests = nodeRequests.get(node);
if (identifierRequests == null) {
logger.warning("got node without request map: " + node);
- return;
+ identifierRequests = Collections.synchronizedMap(new HashMap<String, Request>());
+ nodeRequests.put(node, identifierRequests);
}
Request request = identifierRequests.get(identifier);
- if (request == null) {
- logger.warning("got progress for unknown request: " + identifier);
- return;
- }
+ if (request == null) {
+ logger.warning("got progress for unknown request: " + identifier);
+ request = new Request(node, identifier);
+ identifierRequests.put(identifier, request);
+ fireRequestAdded(request);
+ }
request.setTotalBlocks(highLevelProgress.getTotalBlocks());
request.setRequiredBlocks(highLevelProgress.getRequiredBlocks());
request.setSuccessfulBlocks(highLevelProgress.getSuccessfulBlocks());