// // Copyright (C) 2006 Institut fuer Telematik, Universitaet Karlsruhe (TH) // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // // // The main module of the Pastry implementation // // @author Felix Palmen // simple Pastry parameters: useBaseLookup: bool, // use BaseLookup class keyLength: numeric, // length of Overlay Key localPort: numeric, debugOutput: bool, // enable debug output measureNetwInitPhase: bool, // gather statistics when bootstrapping hopCountMax: numeric, // maximum number of overlay hops joinOnApplicationRequest : bool, // only join the overlay on application request drawOverlayTopology: bool, // draw arrow to successor node? iterativeLookup : bool, // do iterative instead of recursive // lookups lookupRedundantNodes : numeric, lookupParallelPaths : numeric, lookupParallelRpcs : numeric, lookupSecure : bool, lookupMerge : bool, lookupFailedNodeRpcs : bool, enableNewLeafs : bool, // enable Pastry API call newLeafs() optimizeLookup : bool, // whether to search the closest node // in findCloserNode() calls optimisticForward : bool, // forward message immediately in // recursive mode, otherwise ping first avoidDuplicates : bool, // when node seems unreachable but msg // already sent, do not retry partialJoinPath : bool, // allow join even with missing state // message along the routing path bitsPerDigit: numeric, // bits per Pastry digit numberOfLeaves: numeric, // number of entries in leaf set numberOfNeighbors: numeric, // number of entries in neighborhoot set joinTimeout: numeric, // seconds to wait for STATE message // from closest node readyWait: numeric, // seconds to wait for missing state // messages in JOIN phase secondStageWait: numeric, // how long to wait before starting // second stage of init phase pingCacheExpireTime: numeric, // maximum number of seconds rtt for // a node is cached repairTimeout: numeric, // how long to wait for repair messages ringCheckInterval: numeric, // check direct neighbors on the ring // every x seconds (0 to disable) sendStateWaitAmount: numeric, // how long to wait when sending state // tables delayed (should be very small) pingTimeout: numeric, // how long to wait for PING reply pingRetries: numeric; // how often to retry PING after // timeout gates: in: from_udp[]; out: to_udp[]; in: from_app; out: to_app; endsimple