/* * Copyright 2012 Thomas Bocek * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package net.tomp2p.p2p.builder; import java.util.HashMap; import java.util.Map; import net.tomp2p.futures.FutureChannelCreator; import net.tomp2p.futures.FutureTask; import net.tomp2p.p2p.Peer; import net.tomp2p.p2p.RequestP2PConfiguration; import net.tomp2p.p2p.RoutingConfiguration; import net.tomp2p.peers.Number160; import net.tomp2p.storage.Data; import net.tomp2p.task.Worker; public class SubmitBuilder { private final static FutureTask FUTURE_TASK_SHUTDOWN = new FutureTask().setFailed("Peer is shutting down"); private final static Map<Number160, Data> EMPTY_MAP = new HashMap<Number160, Data>(); private final Number160 locationKey; private final Worker worker; private final Peer peer; // private Map<Number160, Data> dataMap; private RoutingConfiguration routingConfiguration; private RequestP2PConfiguration requestP2PConfiguration; private FutureChannelCreator futureChannelCreator; private boolean signMessage = false; private boolean isManualCleanup = false; // public SubmitBuilder(Peer peer, Number160 locationKey, Worker worker) { this.peer = peer; this.locationKey = locationKey; this.worker = worker; } public Map<Number160, Data> getDataMap() { return dataMap; } public SubmitBuilder setDataMap(Map<Number160, Data> dataMap) { this.dataMap = dataMap; return this; } public RoutingConfiguration getRoutingConfiguration() { return routingConfiguration; } public SubmitBuilder setRoutingConfiguration(RoutingConfiguration routingConfiguration) { this.routingConfiguration = routingConfiguration; return this; } public RequestP2PConfiguration getRequestP2PConfiguration() { return requestP2PConfiguration; } public SubmitBuilder setRequestP2PConfiguration(RequestP2PConfiguration requestP2PConfiguration) { this.requestP2PConfiguration = requestP2PConfiguration; return this; } public FutureChannelCreator getFutureChannelCreator() { return futureChannelCreator; } public SubmitBuilder setFutureChannelCreator(FutureChannelCreator futureChannelCreator) { this.futureChannelCreator = futureChannelCreator; return this; } public boolean isSignMessage() { return signMessage; } public SubmitBuilder setSignMessage(boolean signMessage) { this.signMessage = signMessage; return this; } public SubmitBuilder signMessage() { this.signMessage = true; return this; } public boolean isManualCleanup() { return isManualCleanup; } public SubmitBuilder setManualCleanup(boolean isManualCleanup) { this.isManualCleanup = isManualCleanup; return this; } public SubmitBuilder manualCleanup() { this.isManualCleanup = true; return this; } public FutureTask start() { if (peer.isShutdown()) { return FUTURE_TASK_SHUTDOWN; } if (dataMap == null) { dataMap = EMPTY_MAP; } if (routingConfiguration == null) { routingConfiguration = new RoutingConfiguration(3, 5, 10, 2); } if (requestP2PConfiguration == null) { requestP2PConfiguration = new RequestP2PConfiguration(1, 0, 1); } if (futureChannelCreator == null) { futureChannelCreator = peer.reserve(routingConfiguration, requestP2PConfiguration, "submit-builder"); } return peer.getDistributedTask().submit(locationKey, dataMap, worker, routingConfiguration, requestP2PConfiguration, futureChannelCreator, signMessage, isManualCleanup, peer.getConnectionBean().getConnectionReservation()); } }