public SendableGet(ClientRequester parent, boolean realTimeFlag) { super(parent.persistent(), realTimeFlag); this.parent = parent; }
protected ClientRequester(short priorityClass, ClientBaseCallback cb) { this.priorityClass = priorityClass; this.client = cb.getRequestClient(); this.realTimeFlag = client.realTimeFlag(); if(client == null) throw new NullPointerException(); hashCode = super.hashCode(); // the old object id will do fine, as long as we ensure it doesn't change! synchronized(allRequesters) { if(!persistent()) allRequesters.put(this, dumbValue); } creationTime = System.currentTimeMillis(); }
/** Notify clients by calling innerNotifyClients off-thread. */ public final void notifyClients(ClientContext context) { context.getJobRunner(persistent()).queueNormalOrDrop(new PersistentJob() { @Override public boolean run(ClientContext context) { innerNotifyClients(context); return false; } }); }
context.uskManager.getFetcher(usk.copy(usk.suggestedEdition), ctx, false, requester.persistent(), realTimeFlag, new MyUSKFetcherCallback(requester, cb, usk, metaStrings, ctx, actx, realTimeFlag, maxRetries, recursionLevel, dontTellClientGet, l, requester.persistent(), true), false, context, true); if(isEssential) requester.addMustSucceedBlocks(1); new USKProxyCompletionCallback(usk, cb, requester.persistent()); context.uskManager.getFetcher(usk.copy(-usk.suggestedEdition), ctx, false, requester.persistent(), realTimeFlag, new MyUSKFetcherCallback(requester, cb, usk, metaStrings, ctx, actx, realTimeFlag, maxRetries, recursionLevel, dontTellClientGet, l, requester.persistent(), false), false, context, false); if(isEssential) requester.addMustSucceedBlocks(1);
if(decode && block != null) { try { data = block.decode(context.getBucketFactory(parent.persistent()), 1025 /* it's an SSK */, true); } catch (KeyDecodeException e) { data = null;
/** Convert a ClientKeyBlock to a Bucket. If an error occurs, report it via onFailure * and return null. */ protected Bucket extract(ClientKeyBlock block, ClientContext context) { Bucket data; try { data = block.decode(context.getBucketFactory(parent.persistent()), (int)(Math.min(ctx.maxOutputLength, Integer.MAX_VALUE)), false); } catch (KeyDecodeException e1) { if(logMINOR) Logger.minor(this, "Decode failure: "+e1, e1); onFailure(new FetchException(FetchExceptionMode.BLOCK_DECODE_ERROR, e1.getMessage()), false, context); return null; } catch (TooBigException e) { onFailure(new FetchException(FetchExceptionMode.TOO_BIG, e), false, context); return null; } catch (InsufficientDiskSpaceException e) { onFailure(new FetchException(FetchExceptionMode.NOT_ENOUGH_DISK_SPACE), false, context); return null; } catch (IOException e) { Logger.error(this, "Could not capture data - disk full?: "+e, e); onFailure(new FetchException(FetchExceptionMode.BUCKET_ERROR, e), false, context); return null; } return data; }