You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(123) |
Dec
(100) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(12) |
Feb
(80) |
Mar
(35) |
Apr
|
May
|
Jun
(28) |
Jul
(10) |
Aug
(6) |
Sep
|
Oct
|
Nov
(16) |
Dec
|
| 2008 |
Jan
|
Feb
|
Mar
(8) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
(6) |
| 2009 |
Jan
(20) |
Feb
(1) |
Mar
(19) |
Apr
(12) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
|
From: Peter P. <pr...@us...> - 2007-03-20 12:27:56
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/log In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6667/src/edu/harvard/syrah/pyxida/log Modified Files: ReportCoordReqMsg.java LogManager.java ReportCoordReplyMsg.java Log Message: Refactored async lib Index: ReportCoordReplyMsg.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/log/ReportCoordReplyMsg.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ReportCoordReplyMsg.java 15 Feb 2007 18:01:26 -0000 1.3 --- ReportCoordReplyMsg.java 20 Mar 2007 12:27:53 -0000 1.4 *************** *** 1,5 **** package edu.harvard.syrah.pyxida.log; ! import edu.harvard.syrah.sbon.comm.obj.ObjMessage; public class ReportCoordReplyMsg extends ObjMessage { --- 1,5 ---- package edu.harvard.syrah.pyxida.log; ! import edu.harvard.syrah.sbon.async.comm.obj.ObjMessage; public class ReportCoordReplyMsg extends ObjMessage { Index: LogManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/log/LogManager.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** LogManager.java 5 Mar 2007 16:23:42 -0000 1.5 --- LogManager.java 20 Mar 2007 12:27:53 -0000 1.6 *************** *** 9,16 **** import edu.harvard.syrah.sbon.async.CallbacksIF.CB0; import edu.harvard.syrah.sbon.async.CallbacksIF.CB1; ! import edu.harvard.syrah.sbon.comm.AddressFactory; ! import edu.harvard.syrah.sbon.comm.AddressIF; ! import edu.harvard.syrah.sbon.comm.obj.ObjCommIF; ! import edu.harvard.syrah.sbon.comm.obj.ObjCommRRCB; public class LogManager { --- 9,16 ---- import edu.harvard.syrah.sbon.async.CallbacksIF.CB0; import edu.harvard.syrah.sbon.async.CallbacksIF.CB1; ! import edu.harvard.syrah.sbon.async.comm.AddressFactory; ! import edu.harvard.syrah.sbon.async.comm.AddressIF; ! import edu.harvard.syrah.sbon.async.comm.obj.ObjCommIF; ! import edu.harvard.syrah.sbon.async.comm.obj.ObjCommRRCB; public class LogManager { Index: ReportCoordReqMsg.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/log/ReportCoordReqMsg.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ReportCoordReqMsg.java 5 Mar 2007 16:23:42 -0000 1.4 --- ReportCoordReqMsg.java 20 Mar 2007 12:27:53 -0000 1.5 *************** *** 2,6 **** import edu.harvard.syrah.pyxida.nc.lib.Coordinate; ! import edu.harvard.syrah.sbon.comm.obj.ObjMessage; public class ReportCoordReqMsg extends ObjMessage { --- 2,6 ---- import edu.harvard.syrah.pyxida.nc.lib.Coordinate; ! import edu.harvard.syrah.sbon.async.comm.obj.ObjMessage; public class ReportCoordReqMsg extends ObjMessage { |
|
From: Peter P. <pr...@us...> - 2007-03-20 12:27:55
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6667/src/edu/harvard/syrah/pyxida/knn Modified Files: KnnSim.java ZoneManager.java Log Message: Refactored async lib Index: ZoneManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/ZoneManager.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ZoneManager.java 14 Mar 2007 16:38:00 -0000 1.3 --- ZoneManager.java 20 Mar 2007 12:27:53 -0000 1.4 *************** *** 7,11 **** import java.util.SortedMap; - import java.util.HashSet; public interface ZoneManager { --- 7,10 ---- Index: KnnSim.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/KnnSim.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** KnnSim.java 14 Mar 2007 18:12:26 -0000 1.4 --- KnnSim.java 20 Mar 2007 12:27:53 -0000 1.5 *************** *** 6,23 **** package edu.harvard.syrah.pyxida.knn; ! import java.io.BufferedReader; ! import java.io.File; ! import java.io.FileNotFoundException; ! import java.io.FileReader; ! import java.io.IOException; import java.text.NumberFormat; ! import java.util.HashMap; ! import java.util.HashSet; ! import java.util.Map; ! import java.util.Set; ! import java.util.Iterator; ! import java.util.SortedMap; ! import java.util.StringTokenizer; ! import java.util.TreeMap; import edu.harvard.syrah.pyxida.nc.lib.Coordinate; --- 6,12 ---- package edu.harvard.syrah.pyxida.knn; ! import java.io.*; import java.text.NumberFormat; ! import java.util.*; import edu.harvard.syrah.pyxida.nc.lib.Coordinate; |
Update of /cvsroot/pyxida/Pyxida/sim In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16219 Added Files: Makefile coord2nn.cc dist_driver.cc distributions.cc distributions.h energy.cc error.h genPerfectCoords.cc gossip.cc histogram.cc histogram.h math_util.cc math_util.h nn.cc node.cc node.h parameters.cc point.cc point.h rs.cc rs.h rs_alg.h rs_alg_greedy.cc rs_alg_simple.cc rs_alg_simple.h rs_aux.cc rs_stat.cc samples.cc samples.h sim.h sim_aux.cc triangle.cc triangleRPL.cc vivaldi.cc vs.cc zoneTest.cc Log Message: vivaldi and routing simulator code import --- NEW FILE: coord2nn.cc --- /* $Id: coord2nn.cc,v 1.1 2007/03/15 12:20:49 ledlie Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2006. All rights reserved. */ #include "node.h" void printUsage () { cout << "coord2nn\n" << " -n nodeCount\n" << " -c coord file\n" << " -D destination ids less than or equal to this id\n" << " -x dimensions\n" << " -z use height\n" << " -k output k nearest neighbors\n" << " -e output distance to each neighbor\n"; exit (-1); } int main (int argc, char **argv) { char c = 0; int MAX_DST = 0; char *coordFile = NULL; bool outputDistance = false; int numNeighbors = 1; while ((c = getopt(argc,argv,"x:n:c:zD:k:e")) >= 0) { switch (c) { case 'x': DIMENSIONS = atoi(optarg); break; case 'k': numNeighbors = atoi(optarg); break; case 'e': outputDistance = true; break; case 'D': MAX_DST = atoi(optarg); break; case 'n': nodeCount = atoi(optarg); break; case 'z': USE_HEIGHT = true; break; case 'c': coordFile = optarg; break; default: printUsage (); break; } } if (MAX_DST <= 0) { printUsage(); } if (coordFile == NULL) { printUsage(); } FILE *coordFP = NULL; if ((coordFP = fopen (coordFile, "r")) == NULL) { printf ("Cannot open file %s", coordFile); exit (-1); } map<int,Point*> node2coord; bool endOfFile = false; int nodeId; int amt; while (!endOfFile) { amt = fscanf (coordFP, "%d", &nodeId); if (amt <= 0) { endOfFile = true; } else { double vec[DIMENSIONS]; double height; for (int d = 0; d < DIMENSIONS; d++) { float element; int amt = fscanf (coordFP, " %f", &element); ASSERT (amt > 0); vec[d] = element; } if (USE_HEIGHT) { amt = fscanf (coordFP, " h%f", &height); ASSERT (amt > 0); } amt = fscanf (coordFP, "\n"); Point *p = new Point (vec, height); node2coord.insert(pair<int,Point*>(nodeId,p)); } } for (map<int,Point*>::const_iterator dstIter = node2coord.begin(); dstIter != node2coord.end(); dstIter++) { int dstId = dstIter->first; Point *dstPoint = dstIter->second; if (dstId > MAX_DST) { map<double,int> dist2id; for (map<int,Point*>::const_iterator srcIter = node2coord.begin(); srcIter != node2coord.end(); srcIter++) { int srcId = srcIter->first; Point *srcPoint = srcIter->second; if (srcId <= MAX_DST) { double distance = srcPoint->getEuclideanDistance(dstPoint); dist2id.insert(pair<double,int>(distance,srcId)); } } int nearCount = 0; printf ("%d", dstId); for (map<double,int>::const_iterator nearIter = dist2id.begin(); nearCount < numNeighbors && nearIter != dist2id.end(); nearIter++) { double nearestDistance = nearIter->first; int nearestId = nearIter->second; printf (" %d", nearestId); if (outputDistance) { printf (" %f", nearestDistance); } nearCount++; } printf ("\n"); } } } --- NEW FILE: dist_driver.cc --- /* $Id: dist_driver.cc,v 1.1 2007/03/15 12:20:49 ledlie Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2005. All rights reserved. */ #include <stdio.h> #include <stdlib.h> #include "error.h" #include "distributions.h" int main () { SRand(getpid()); ZipfIntegerDistribution *z = new ZipfIntegerDistribution (2.0, 10); for (int i = 0; i<10; i++) { printf ("%d %d\n", i, z->next()); } } --- NEW FILE: rs.cc --- /* $Id: rs.cc,v 1.1 2007/03/15 12:20:49 ledlie Exp $ */ #include "distributions.h" #include "rs.h" #include "rs_alg.h" int ringBase = 2; Node *nodes; int summaryFrequency = 1000; FILE *runLogFP, *summaryFP, *traceFP; FILE *hopFP; bool useChurn = false; bool useGossipSet = false; bool recordDelayStretch = false; bool useGreedyByZone = true; bool usePlanarDistance = false; bool useNodeWithNearestDistance = false; void performNNcomparison (); /* * The gist: * Take as input: a coordinates file, a latency matrix, * and a routing algorithm. * The nodes get divided into two types: participants and destinations. * The simulator runs for a given number of rounds. * In every round (which is meant to represent a second) * each node is either born or dies or stays alive or dead, * a given number of queries take place * queries originate from a random node. * targets are either randomly or Zipf distributed * each node can attempt to update its routing tables * by sending one or more messages */ void printUsage (char* problem) { cout << "Usage: rs\n" <<"\n" <<"\n Coordinate parameters\n" <<" -m routing strategy\n" <<" g: simple greedy, 5 nearby neighbors, 0 long distance\n" <<" s: Small World, 4 nearby neighbors, 1 random neighbor\n" <<" t: Theta Graphs: angle=pi/16, levels=1\n" <<" h: Hassan and Peleg's Scaled-Theta Graphs: angle=pi/16, levels=4\n" <<" c: Ratnasamy's CAN: angle=pi/4, level=1\n" <<" a: Abraham and Malkhi's Compact Routing\n" <<" -s num sectors (-s and -l override parameters from -m)\n" <<" -l num levels\n" <<" -b base for ring radius (default "<<ringBase<<")\n" <<" -o routing options\n" <<" d: do routing greedily by distance, not by zone\n" <<" p: use planar distance to determine zones, not euclidean\n" <<" c: use nearest coordinate as nearest point, not nearest latency on routing path\n" <<"\n Coordinate parameters\n" <<" -c initial coordinates filename\n" <<" -x coordinate dimensions\n" <<" -z coordinates use height\n" <<"\n Workload distribution parameters\n" <<" -w queries per round\n" <<" -K routing destinations (uniform or zipf), e.g. U/80/20\n" <<" U/80/20 uniformly at random from \n" <<"\n Node/Churn parameters\n" <<" -r RTT filename (Euclidean distance btw nodes used if missing)\n" << " -C use churn with this as mean lifetime, poisson distributed\n" <<" -g gossip strategy (r and n are mutually exclusive)\n" <<" r: random gossip\n" <<" n: nearby neighbor gossip\n" <<" j: seed tables by routing to our coord from random node\n" <<" a: gossip everyone we know, not just tables\n" <<" -n overlay node count\n" <<" -t target nodes count\n" <<" n+t = nodes in RTT file\n" <<"\n" <<" Simulator parameters\n" <<" -V types of output\n" <<" r: log of each query (.log) \n" <<" h: track hop distances (.hop) and delay stretch\n" <<" -S random seed\n" <<" -R rounds\n" <<" -P start recording stats after this round (default: no delay)\n" <<" -D debug\n" <<" -F frequency of runtime summary output (once every "<<summaryFrequency<<" rounds is default)\n" <<" -O output file prefix\n" <<" -N compare coord to rtt nearest neighbours\n" <<"\n" <<"Distributions:\n" <<" Pareto P/scale/shape\n" <<" Normal N/mean/stddev\n" <<" Zipf Z/alpha/num-elements\n" <<" Poisson F/mean\n" <<" Uniform U [0..1)\n" <<" Constant C/value\n"; if (problem) { cout << problem << endl; } exit (-1); } int main (int argc, char **argv) { Strategy strategy; NNAlg *nnAlg = NULL; char routingStrategyChar = ' '; char *churnDistStr = NULL, *keyDistStr = NULL, *outputPrefix = NULL, *rttFilename = NULL, *coordsFilename; IntegerDistribution *keyDist; Distribution *churnDist; DistributionFactory *distFactory = NULL; char c = 0; int seed = getpid(); int rounds = 0; int meanLifetime = 0; bool gossipOnJoin = false; #ifdef DEBUG debug = false; #endif double queriesPerRound = -1.; bool finished = false; char *routingStrategyOptionsStr = NULL; char *gossipStrategyStr = NULL; char *outputTypeStr = NULL; int numSectors = 0; int numLevels = 0; bool perQueryOutput = false; int recordingStatsRound = 0; char *nn_alg_options = NULL; double lKatJoin = 0.; bool nnComparison = false; distFactory = new DistributionFactory (); while ( (c = getopt(argc,argv,"m:c:C:w:K:S:Df:O:n:u:r:x:t:F:R:o:g:s:l:V:b:P:zo:N")) >= 0) { switch (c) { case 'N': nnComparison = true; break; case 'g': gossipStrategyStr = optarg; break; case 'm': routingStrategyChar = *optarg; break; case 'V': outputTypeStr = optarg; break; case 'o': nn_alg_options = optarg; break; case 'b': ringBase = atoi(optarg); break; case 'P': recordingStatsRound = atoi(optarg); break; case 's': numSectors = atoi(optarg); break; case 'l': numLevels = atoi(optarg); break; case 'C': meanLifetime = atoi(optarg); useChurn = true; break; case 'K': keyDistStr = optarg; break; case 'w': queriesPerRound = atof (optarg); break; case 'r': rttFilename = optarg; break; case 'c': coordsFilename = optarg; break; case 'z': USE_HEIGHT = true; break; case 'x': DIMENSIONS = atoi (optarg); //printf ("set dim to %d\n", DIMENSIONS); break; case 'R': rounds = atoi (optarg); break; case 'n': nodeCount = atoi (optarg); break; case 't': dstNodeCount = atoi (optarg); break; case 'S': seed = atoi (optarg); break; case 'F': summaryFrequency = atoi (optarg); break; #ifdef DEBUG case 'D': debug = true; break; #endif case 'O': outputPrefix = optarg; break; default: printUsage ("Undefined option"); break; } } systemNodeCount = nodeCount + dstNodeCount; SRand (seed); if (ringBase <= 1) printUsage("Ring base must be greater than 1"); if (recordingStatsRound < 0 || recordingStatsRound >= rounds) printUsage("Invalid recording stats round"); if (coordsFilename == NULL) printUsage("Error with coordinate filename"); if (keyDistStr == NULL) printUsage("Error in key distribution"); if (summaryFrequency <= 0) printUsage("f must be greater than 0"); if (queriesPerRound < 0.) printUsage("Workload rate must be greater than or equal to 0."); if (outputPrefix == NULL) printUsage("Output file prefix is required."); if (DIMENSIONS <= 0) printUsage("Dimensions must be greater than 0"); if (!useChurn && gossipStrategyStr != NULL) { printUsage("Cannot have a gossip strategy without churn"); } if (gossipStrategyStr != NULL) { if ((strchr(gossipStrategyStr,'r') != NULL) && (strchr(gossipStrategyStr,'n') != NULL)) { printUsage("Gossip strategies are mutually exclusive"); } if (strchr(gossipStrategyStr,'r')) { gossipStrategy = Random; } if (strchr(gossipStrategyStr,'n')) { gossipStrategy = Local; } if (strchr(gossipStrategyStr,'j')) { gossipOnJoin = true; } if (strchr(gossipStrategyStr,'a')) { useGossipSet = true; } } if (useChurn && gossipStrategy == None) { printUsage("Must have a gossip strategy with churn"); } if (outputTypeStr != NULL) { if (strchr(outputTypeStr,'r')) { perQueryOutput = true; } if (strchr(outputTypeStr,'h')) { recordDelayStretch = true; } } if (nn_alg_options != NULL) { if (strchr(nn_alg_options,'d')) { useGreedyByZone = false; } if (strchr(nn_alg_options,'p')) { usePlanarDistance = true; } if (strchr(nn_alg_options,'c')) { useNodeWithNearestDistance = true; } } /* * INITIALIZE SYSTEM */ if (recordingStatsRound == 0) { recordingStats = true; } fprintf (stderr, "starting initialization\n"); if (debug) printf ("pickDstNodes\n"); pickDstNodes (); if (debug) printf ("readRTTmatrix\n"); readRTTmatrix (rttFilename); if (debug) printf ("initNodes\n"); initNodes (coordsFilename); if (debug) printf ("assignCoords\n"); assignCoords(nodes); if (debug) printf ("initRankMap\n"); initRankMap (); if (nnComparison) { performNNcomparison (); exit (0); } else { if (!verifyRTTmatrix ()) { fprintf (stderr, "RTT matrix is not complete"); exit (-1); } } switch (routingStrategyChar) { case 'g': strategy = SimpleGreedy; printUsage ("not implemented"); nnAlg = new NNSmallWorld(5, 0); break; case 's': strategy = SmallWorld; printUsage ("not implemented"); nnAlg = new NNSmallWorld(4, 1); break; case 't': strategy = Theta; if (numLevels == 0) numLevels = 8; if (numSectors == 0) numSectors = 1; // This is what theta means ASSERT (numLevels == 1); nnAlg = new NNTheta(numSectors, numLevels, 1); break; case 'h': strategy = ScaledTheta; if (numLevels == 0) numLevels = 8; if (numSectors == 0) numSectors = 4; nnAlg = new NNTheta(numSectors, numLevels, ringBase); break; case 'c': strategy = CAN; printUsage ("not implemented"); nnAlg = new NNTheta(4, 1, 1); break; /* case 'a': strategy = Compact; nnAlg = new NNCompact(); break; */ default: printUsage ("Unknown routing strategy"); break; } // Initialise the routing tables according to the algorithm used if (!useChurn) { if (debug) printf ("initPerfectRoutingTables\n"); bool wasDebug = debug; debug = false; for (int i = 0; i < nodeCount; i++) { nnAlg->initPerfectRoutingTables(nodes[i]); } debug = wasDebug; vector<int> rt; //nnAlg->printState (nodes[0], rt); } nodeUp = nodeCount; vector<int> allNodes; for (int i = 0; i < nodeCount; i++) { allNodes.push_back(i); } if (useChurn) { // stir and shake for (int i = 0; i < nodeCount; i++) { int targetLifetime = 10*meanLifetime; int myRound = 0; bool alive = true; while (myRound < targetLifetime) { alive = alive ? false : true; myRound += poisson(meanLifetime); } if (alive) { nodes[i].deathTime = myRound - targetLifetime; nodes[i].alive = true; if (debug) printf ("start alive %d DT %d\n", i, nodes[i].deathTime); } else { nodes[i].birthTime = myRound - targetLifetime; nodes[i].alive = false; if (debug) printf ("start dead %d BT %d\n", i, nodes[i].birthTime); nodeUp--; } } vector<int> aliveNodes; vector<int> aliveNodesShuffle; for (int i = 0; i < nodeCount; i++) { if (nodes[i].alive) { aliveNodes.push_back(i); aliveNodesShuffle.push_back(i); } } const int initialNodeKnowledge = 5; ASSERT (aliveNodes.size() >= initialNodeKnowledge); for (int i = 0; i < aliveNodes.size(); i++) { random_shuffle (aliveNodesShuffle.begin(),aliveNodesShuffle.end()); for (int n = 0; n < initialNodeKnowledge; n++) { nnAlg->addNeighbour(nodes[aliveNodes[i]],nodes[aliveNodesShuffle[n]]); } } } Statistics *sumStats = new Statistics (); Statistics *interimStats = new Statistics (); keyDist = distFactory->newIntegerDistribution (keyDistStr); if (keyDist == NULL) printUsage ("Problem with key distribution"); cRound = 0; // very detailed per query stats go here openOutputFile (runLogFP, outputPrefix, ".run"); // other logging info goes here openOutputFile (traceFP, outputPrefix, ".trace"); // hop distances if (recordDelayStretch) { openOutputFile (hopFP, outputPrefix, ".hop"); } printf ("end of initialization\n"); for (cRound = 0; cRound < rounds; ) { // Start recording stats if (!recordingStats && cRound == recordingStatsRound) { recordingStats = true; // Don't need to do this because we aren't adding to them below //sumStats->clear(); fprintf (traceFP, "R %d Recording stats.\n", cRound); } DEBUG_P (("ROUND %d\n", cRound)); /* * PER ROUND BIRTH AND DEATH */ if (useChurn) { random_shuffle (allNodes.begin(),allNodes.end()); for (int a = 0; a < nodeCount; a++) { int i = allNodes[a]; if (nodes[i].birthTime == cRound) { ASSERT (!nodes[i].alive); nodeUp++; nodes[i].alive = true; nodes[i].deathTime = cRound + poisson(meanLifetime) + 1; nnAlg->clearRoutingTables(nodes[i]); if (debug) cout << cRound << " node "<< i << " born, dT " << nodes[i].deathTime << endl; // join procedure for bootstrapping routing tables if (gossipOnJoin) { // pick random alive node int bootstrapNodeId = i; while (bootstrapNodeId == i || !nodes[bootstrapNodeId].alive) { bootstrapNodeId = unifRand (0, nodeCount); } // do query for self int bootResultNodeId; deque<int> bootNodeIds; double bootDelayStretch = 0.; vector<double> bootHopDistance; //debug = true; if (debug) printf ("R %d node %d starting query for self from node %d\n", cRound, i, bootstrapNodeId); //nnAlg->printState(); nnAlg->route(nodes[bootstrapNodeId], i, bootResultNodeId, bootNodeIds, bootHopDistance, bootDelayStretch); // route() pops this off bootNodeIds.push_front(bootstrapNodeId); // add everyone seen on the path to our RT for (deque<int>::const_iterator bootIter = bootNodeIds.begin(); bootIter != bootNodeIds.end(); bootIter++) { if (debug) printf ("R %d node %d learned about node %d from query for self\n", cRound, i, *bootIter); nnAlg->gossipPair(nodes[i],nodes[*bootIter]); if (debug) { vector<int> rt; nnAlg->printState(nodes[i],rt); } //debug = false; } } else { // gossip once with somebody to bootstrap our RT nnAlg->gossip(nodes[i]); } double gossipSize, angleTableSize, pctNearbyKnown; nnAlg->state (nodes[i], gossipSize, angleTableSize, pctNearbyKnown); if (debug) printf ("join %d gS %.f aT %.f lK %.2f\n", i, gossipSize, angleTableSize, pctNearbyKnown); const double ALPHA = 0.05; lKatJoin = (ALPHA*pctNearbyKnown)+((1.-ALPHA)*lKatJoin); } else if (nodes[i].deathTime == cRound) { ASSERT (nodes[i].alive); nodeUp--; nodes[i].alive = false; nodes[i].birthTime = cRound + poisson(meanLifetime) + 1; nnAlg->clearRoutingTables(nodes[i]); if (debug) cout << cRound << " node "<< i << " died, dT " << nodes[i].birthTime << endl; } } } if (debug) printf ("upFrac %.3f\n", nodeUp/(double)nodeCount); ASSERT (nodeUp > 1); /* * PER ROUND GOSSIP */ if (useChurn) { DEBUG_P (("\nGOSSIP: %d\n", cRound)); // shuffle order of nodes gossipping vector<int> aliveNodes; for (int i = 0; i < nodeCount; i++) { if (nodes[i].isAlive() && nodes[i].takeTurn()) { aliveNodes.push_back(i); } } random_shuffle (aliveNodes.begin(),aliveNodes.end()); for (int i = 0; i < aliveNodes.size(); i++) { //if (aliveNodes[i] == 0) debug = true; nnAlg->gossip(nodes[aliveNodes[i]]); //debug = false; } } /* * PER ROUND QUERIES */ if (recordingStats) { DEBUG_P (("QUERIES\n")); int queryCount = (int)(ceil(nodeUp * queriesPerRound)); if (debug) { printf ("nodeUp %d: ", nodeUp); for (int i = 0; i < nodeCount; i++) { if (nodes[i].alive) { printf ("%d ",i); } } printf ("\n"); } // figure out the source of this round's queries vector<int> srcNodeIds; srcNodeIds.reserve (queryCount); vector<int> dstNodeIds; dstNodeIds.reserve (queryCount); for (int i = 0; i < queryCount; i++) { int dstNodeId = -1; while (dstNodeId < 0 || !nodes[dstNodeId].alive) if (dstNodeCount == 0) { dstNodeId = keyDist->next(); } else { dstNodeId = keyDist->next() + nodeCount; } int srcNodeId = dstNodeId; while (srcNodeId == dstNodeId || !nodes[srcNodeId].alive) srcNodeId = unifRand (0, nodeCount); // make num of target nodes zero + querysize = node count -K U/100 // -n 100 -t 0 -S 1 -R 10 -O foo -K U/100 -m h ASSERT (srcNodeId >= 0 && srcNodeId < nodeCount); srcNodeIds.push_back (srcNodeId); dstNodeIds.push_back (dstNodeId); } ASSERT (dstNodeIds.size() == queryCount); ASSERT (srcNodeIds.size() == queryCount); int queryIndex = -1; int querySuccessCount = 0; for (int queryIndex = 0; queryIndex < queryCount; queryIndex++) { int dstNodeId = dstNodeIds[queryIndex]; int srcNodeId = srcNodeIds[queryIndex]; ASSERT (dstNodeId >= 0 && dstNodeId < systemNodeCount); ASSERT (srcNodeId >= 0 && srcNodeId < nodeCount); DEBUG_P (("Starting query from %d->%d\n", srcNodeId, dstNodeId)); int resultNodeId; deque<int> hopNodeIds; double delayStretch = 0.; vector<double> hopDistance; //if (cRound == 500) debug = true; nnAlg->route(nodes[srcNodeId], dstNodeId, resultNodeId, hopNodeIds, hopDistance, delayStretch); //if (cRound == 500) exit (0); int nearestNodeId; int ncRank, latRank; double glRelLatPenalty, glAbsLatPenalty, ncRelLatPenalty, ncAbsLatPenalty; nnQueryOptimal (dstNodeId, resultNodeId, nearestNodeId, latRank, glRelLatPenalty, glAbsLatPenalty, ncRank, ncRelLatPenalty, ncAbsLatPenalty); // with euclidean distances we should always find the nearest // er..., maybe not if (ncRank != 0 && !useChurn && rttFilename == NULL) { //if (glRelLatPenalty > 26) { //(srcNodeId == 89 && dstNodeId == 91)){ debug = true; nnAlg->route(nodes[srcNodeId], dstNodeId, resultNodeId, hopNodeIds, hopDistance, delayStretch); nnQueryOptimal (dstNodeId, resultNodeId, nearestNodeId, latRank, glRelLatPenalty, glAbsLatPenalty, ncRank, ncRelLatPenalty, ncAbsLatPenalty); debug = false; printf ("quitting because rank was %d src %d dst %d res %d", ncRank, srcNodeId, dstNodeId, resultNodeId); exit (0); } interimStats->nnQuery (ncRank, glRelLatPenalty, glAbsLatPenalty, ncRelLatPenalty, ncAbsLatPenalty, hopNodeIds.size(), hopDistance, delayStretch); if (perQueryOutput) { fprintf (runLogFP, "src %d dst %d res %d near %d rank %d grlp %.2f galp %.2f nrlp %.2f nalp %.2f hS %d delay %.3f\n", srcNodeId, dstNodeId, resultNodeId, nearestNodeId, ncRank, glRelLatPenalty, glAbsLatPenalty, ncRelLatPenalty, ncAbsLatPenalty, hopNodeIds.size(), delayStretch); } if (debug) { printf ("src %d dst %d res %d near %d rank %d grlp %.2f galp %.2f nrlp %.2f nalp %.2f hS %d delay %.3f\n", srcNodeId, dstNodeId, resultNodeId, nearestNodeId, ncRank, glRelLatPenalty, glAbsLatPenalty, ncRelLatPenalty, ncAbsLatPenalty, hopNodeIds.size(), delayStretch); } } } /* * RECORD END OF ROUND */ interimStats->nodesUp (nodeUp); cRound++; if (cRound % summaryFrequency == 0) { nnAlg->printState (); double gossipSize, angleTableSize, pctNearbyKnown; nnAlg->state(gossipSize, angleTableSize, pctNearbyKnown); interimStats->gossipState(gossipSize, angleTableSize, pctNearbyKnown); if (recordingStats) sumStats->add (interimStats); fprintf (runLogFP, "R %d ", cRound); fprintf (stdout, "R %d ", cRound); fprintf (stdout, "R %d lKatJoin %.2f\n", cRound, lKatJoin); fprintf (runLogFP, "R %d lKatJoin %.2f\n", cRound, lKatJoin); interimStats->print (runLogFP); interimStats->print (stdout); interimStats->clear (); } } // END OF ROUNDS /* * PRINT STATS */ double gossipSize, angleTableSize, pctNearbyKnown; nnAlg->state(gossipSize, angleTableSize, pctNearbyKnown); interimStats->gossipState(gossipSize, angleTableSize, pctNearbyKnown); sumStats->add (interimStats); openOutputFile (summaryFP, outputPrefix, ".sum"); // print maxNeighbors /* fprintf (summaryFP, "dst_dist %s q_per_r %d rtts %s dim %d node_count %d dst_count %d seed %d prefix %s\n", keyDistStr, queriesPerRound, rttFilename, DIMENSIONS, nodeCount, dstNodeCount, seed, outputPrefix); */ sumStats->print (summaryFP); sumStats->print (stdout); if (recordDelayStretch) sumStats->printHops (hopFP); // destroy nodes and route tables printf ("Shutting down.\n"); delete nnAlg; deleteNodes (); delete keyDist; delete interimStats; delete sumStats; delete distFactory; } void nnQueryOptimal (int targetNodeId, int resultNodeId, int &nearestNodeId, int &latRank, double &glRelLatPenalty, double &glAbsLatPenalty, int &ncRank, double &ncRelLatPenalty, double &ncAbsLatPenalty) { ASSERT (resultNodeId >= 0 && resultNodeId < nodeCount); map<int,vector<int> >::const_iterator targetLatIter = targetId2rankLat2nodeId.find (targetNodeId); //ASSERT (targetIter != targetId2rankLat2nodeId.end()); //if (debug) printf ("nnQueryOptimal target %d\n", targetNodeId); if (targetLatIter == targetId2rankLat2nodeId.end()) { ASSERT (targetLatIter != targetId2rankLat2nodeId.end()); } map<int,vector<int> >::const_iterator targetDistIter = targetId2rankDist2nodeId.find (targetNodeId); if (targetDistIter == targetId2rankDist2nodeId.end()) { ASSERT (targetDistIter != targetId2rankDist2nodeId.end()); } vector<int> rankLat2nodeId = targetLatIter->second; vector<int> rankDist2nodeId = targetDistIter->second; latRank = -1; for (int i = 0; i < rankLat2nodeId.size(); i++) { if (rankLat2nodeId[i] == resultNodeId) { latRank = i; break; } } if (latRank < 0) { printf ("target %d res %d size %d\n", targetNodeId, resultNodeId, rankLat2nodeId.size()); ASSERT (latRank >= 0); } ncRank = -1; for (int i = 0; i < rankDist2nodeId.size(); i++) { if (rankDist2nodeId[i] == resultNodeId) { ncRank = i; break; } } if (ncRank < 0) { printf ("target %d res %d size %d\n", targetNodeId, resultNodeId, rankDist2nodeId.size()); ASSERT (ncRank >= 0); } // find the nearest alive node to the target int nearestLatNodeId = -1; for (int i = 0; i < rankLat2nodeId.size(); i++) { if (nodes[rankLat2nodeId[i]].alive) { nearestLatNodeId = rankLat2nodeId[i]; break; } else { if (debug) printf ("skipping node w rankLat %d\n", i); } } ASSERT (nearestLatNodeId >= 0 && nearestLatNodeId < nodeCount); int nearestDistNodeId = -1; for (int i = 0; i < rankDist2nodeId.size(); i++) { if (nodes[rankDist2nodeId[i]].alive) { nearestDistNodeId = rankDist2nodeId[i]; break; } else { if (debug) printf ("skipping node w rankDist %d\n", i); } } ASSERT (nearestDistNodeId >= 0 && nearestDistNodeId < nodeCount); double resultLat = getLatency(targetNodeId,resultNodeId); double nearestLatLat = getLatency(targetNodeId,nearestLatNodeId); // dstNodeCount == 0 we are not doing NN ASSERT ((dstNodeCount == 0 && resultLat >= 0) || (resultLat > 0)); ASSERT ((dstNodeCount == 0 && nearestLatLat >= 0) || (nearestLatLat > 0)); if (nearestLatLat > resultLat) { ASSERT (nearestLatLat <= resultLat); } double nearestDistLat = getLatency(targetNodeId,nearestDistNodeId); ASSERT ((dstNodeCount == 0 && nearestDistLat >= 0) || (nearestDistLat > 0)); if (nearestLatLat > nearestDistLat) { ASSERT (nearestLatLat <= nearestDistLat); } glAbsLatPenalty = resultLat - nearestLatLat; glRelLatPenalty = 0; if (nearestLatLat > 0) glRelLatPenalty = glAbsLatPenalty / nearestLatLat; ncAbsLatPenalty = resultLat - nearestDistLat; ncRelLatPenalty = 0; if (nearestDistLat > 0) ncRelLatPenalty = ncAbsLatPenalty / nearestDistLat; if (debug) { cout << "target "<< targetNodeId << " nearestLat "<< nearestLatNodeId << " " << nodes[nearestLatNodeId].vec << " distance=" << getDistance (nodes[nearestLatNodeId],nodes[targetNodeId]) << " latency= " << nearestLatLat << " nearestDist "<< nearestDistNodeId << " " << nodes[nearestDistNodeId].vec << " distance=" << getDistance (nodes[nearestDistNodeId],nodes[targetNodeId]) << " latency= " << nearestDistLat << " result "<< resultNodeId << " " << nodes[resultNodeId].vec << " distance=" << getDistance(nodes[resultNodeId],nodes[targetNodeId]) << " latency= " << resultLat << endl; } } void performNNcomparison () { // for each node, walk through the list of coordinates in order of distance // and output: // - absolute latency penalty from the top 1,3,5,7,15 coordinates if (dstNodeCount != 0) { fprintf (stderr, "use -T 0 for full matrix\n"); exit (-1); } vector<int> range; for (int p = 0; p <= 4; p++) { int rMax = (int)(pow(2,p)); range.push_back(rMax); } for (map<int,vector<int> >::const_iterator targetDistIter = targetId2rankDist2nodeId.begin (); targetDistIter != targetId2rankDist2nodeId.end (); targetDistIter++) { // who are we considering int targetNodeId = targetDistIter->first; // what is the latency of his nearest latency neighbour map<int,vector<int> >::const_iterator targetLatIter = targetId2rankLat2nodeId.find (targetNodeId); ASSERT (targetLatIter != targetId2rankLat2nodeId.end()); vector<int> rankLat2nodeId = targetLatIter->second; if (rankLat2nodeId[0] != targetNodeId) { printf ("target %d rank0 %d rank1 %d rank2 %df\n", targetNodeId, rankLat2nodeId[0], rankLat2nodeId[1], rankLat2nodeId[2]); ASSERT (rankLat2nodeId[0] == targetNodeId); } int nearestLatNodeId = rankLat2nodeId[1]; ASSERT (nearestLatNodeId >= 0 && nearestLatNodeId < nodeCount); double nearestLatency = getLatency(nearestLatNodeId,targetNodeId); if (nearestLatency <= 0) { printf ("target %d nearest %d nearestLat %.3f\n", targetNodeId, nearestLatNodeId, nearestLatency); ASSERT (nearestLatency > 0); } // Repeatedly walk the list of nodes that are sorted // by coordinate distance to the target. // Pick the one whose latency to the target is lowest // and compare that with the true lowest latency. vector<int> rankDist2nodeId = targetDistIter->second; printf ("%d", targetNodeId); for (int r = 0; r < range.size(); r++) { double minLatency = -1; int rStep = 0; // skip the first one, its the guy itself vector<int>::const_iterator nodeIter = rankDist2nodeId.begin(); nodeIter++; for (; rStep < range[r] && nodeIter != rankDist2nodeId.end(); nodeIter++) { int nodeId = *nodeIter; ASSERT (nodeId != targetNodeId); if (nodeId < 0 || nodeId >= nodeCount) { printf ("r %d rStep %d target %d nodeId %d\n", r, rStep, targetNodeId, nodeId); ASSERT (nodeId >= 0 && nodeId < nodeCount); } ASSERT (nodeId >= 0 && nodeId < nodeCount); if (debug) printf ("r %d rStep %d nodeId %d dist %.2f lat %.2f target %d\n", r, rStep, nodeId, nodes[nodeId].vec->getEuclideanDistance(nodes[targetNodeId].vec), getLatency (nodeId, targetNodeId), targetNodeId); //if (nodeId == targetNodeId) { //exit (-1); ASSERT (nodeId != targetNodeId); //} double nodeLatency = getLatency (nodeId, targetNodeId); ASSERT (nodeLatency != 0); // It can happen that we have a close distance to a guy // but his distance isn't in the latency matrix if (nodeLatency > 0) { if (minLatency == -1 || nodeLatency < minLatency) { minLatency = nodeLatency; } rStep++; } } ASSERT (minLatency > 0); ASSERT (minLatency >= nearestLatency); double absLatencyPenalty = minLatency - nearestLatency; printf (" r%d %.2f", range[r], absLatencyPenalty); } printf ("\n"); } } --- NEW FILE: error.h --- /* $Id: error.h,v 1.1 2007/03/15 12:20:49 ledlie Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2005. All rights reserved. */ #ifndef ERROR_H #define ERROR_H #include <stdio.h> #include <stdlib.h> // Comment out to remove all debugging paths #define DEBUG 1 #ifdef DEBUG extern bool debug; #define DEBUG_P(c) if (debug) printf c; #define IF_DEBUG(c) if (debug) c; #else #define DEBUG_P(c) #define IF_DEBUG(c) #endif #define ASSERT(c) { \ if (!(c)) { \ fprintf (stderr, \ "ASSERTION FAILURE: %s:%d\n", __FILE__, __LINE__); \ fprintf (stderr, "\tfailed condition: %s\n", #c); \ exit (-1); \ } \ } //#define ASSERT(c) #endif --- NEW FILE: math_util.h --- /* $Id: math_util.h,v 1.1 2007/03/15 12:20:49 ledlie Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2005. All rights reserved. */ #ifndef MATH_UTIL_H #define MATH_UTIL_H //#ifndef LINUX //#include <sunmath.h> //#endif #include <vector> #include <algorithm> #include <math.h> #include <iostream> using namespace::std; #define Long long long #define Rand() drand48() #define SRand(c) srand48(c) #define ABS(x) ((x > 0) ? x : -1*x) double randPct (); int poisson (int mean); double poisson (double mean); int unifRand (int a, int b); vector<int> unifRands (int count, int a, int b); double mean (vector<double> v); double mean (vector<int> v); double stddev (vector<double> v, double mean); double percentile (vector<double> v, double percentile); int percentile (vector<int> v, double percentile); double square (double x); double log16 (double x); double log8 (double x); #endif --- NEW FILE: histogram.h --- /* $Id: histogram.h,v 1.1 2007/03/15 12:20:49 ledlie Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2006. All rights reserved. */ #ifndef HISTOGRAM_H #define HISTOGRAM_H #include <math.h> #include <iostream> #include <vector> #include <algorithm> #include <map> #include "error.h" using namespace::std; class Histogram { friend ostream& operator << (ostream& os, Histogram* h); private: int size; double sum; // TODO some kind of sorted list would be better vector<double> values; map<double,int> value2count; void add (double value, int count, bool doCoerce); double findBucket (double value); public: const double bucketWidth; Histogram (double bw) : bucketWidth(bw) { size = 0; sum = 0;} void add (Histogram *); void add (double value, int count) { add (value, count, true); } void add (double value) { add (value, 1); } void add (int value) { add ((double)value,1); } void add (int value, int count) { add ((double)value,count); } void clear () { value2count.clear(); size = 0; values.clear(); } double mean (); double percentile (double pct); }; #endif --- NEW FILE: Makefile --- # $Id: Makefile,v 1.1 2007/03/15 12:20:49 ledlie Exp $ #PROGRAMS = triangle #PROGRAMS = triangleRPL #PROGRAMS = gossip #PROGRAMS = coord2nn vivaldi PROGRAMS = rs #PROGRAMS = nn #PROGRAMS = dist_driver #PROGRAMS = triangle genPerfectCoords rs vivaldi #PROGRAMS = genPerfectCoords #PROGRAMS = vivaldiChurn #PROGRAMS = histogram #PROGRAMS = zone #PROGRAMS = vivaldi LD = ld OPT = -O2 #OPT = -O0 #CXX = CC #CXX = c++ CXX = g++ #CXX = purify CC #CXX = quantify CC #CXX = cc #SYMBOLS = SYMBOLS = -g #SYMBOLS = -Wall -g3 -O0 #SYMBOLS = -Wall #GPROF = -pg #LDFLAGS = -static -lm LDFLAGS = -lm #LDFLAGS = -lsunmath -lm #LDFLAGS = -lm -lstlport -static #LDFLAGS = -lm -lstlport -lpthread #LDFLAGS = -lm -lstlport -lpthread -static #LDFLAGS = -lm -lstlport_gcc #INC = -I/deas/software/include #INC = -I/usr/include/stlport #LIBS = -L/deas/software/lib #LIBS = -L/usr/lib #INC = -I/usr/include/stlport CXXFLAGS = $(SYMBOLS) $(GPROF) $(OPT) $(STLPORT_FLAGS) $(INC) $(GPROF) $(LIBS) CFLAGS = $(SYMBOLS) $(GPROF) $(OPT) $(INC) $(GPROF) $(LIBS) MAKEFILE = Makefile GOSSIP_OBJ = gossip.o NN_OBJ = math_util.o point.o node.o samples.o nn.o TRIANGLE_OBJ = triangle.o TRIANGLE_RPL_OBJ = triangleRPL.o SIM_OBJ = math_util.o point.o node.o samples.o sim_aux.o histogram.o distributions.o HISTOGRAM_OBJ = histogram.o VIVALDI_OBJ = $(SIM_OBJ) vivaldi.o vs.o RS_OBJ = $(SIM_OBJ) rs_stat.o rs_aux.o rs_alg_greedy.o rs.o DIST_DRIVER_OBJ = math_util.o distributions.o dist_driver.o ZONE_OBJ = point.o math_util.o zoneTest.o GENPERFECTCOORDS_OBJ = math_util.o sim_aux.o point.o genPerfectCoords.o COORD2NN_OBJ = math_util.o sim_aux.o point.o node.o samples.o coord2nn.o VIVALDI_SRC = error.h distributions.h histogram.h math_util.h node.h point.h samples.h sim.h vivaldi.h math_util.cc point.cc node.cc samples.cc sim_aux.cc histogram.cc distributions.cc vivaldi.cc vs.cc Makefile all: $(PROGRAMS) vivaldiChurn: $(VIVALDI_OBJ) $(CXX) -o $@ $(VIVALDI_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) vivaldi: $(VIVALDI_OBJ) $(CXX) -o $@ $(VIVALDI_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) nn: $(NN_OBJ) $(CXX) -o $@ $(NN_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) gossip: $(GOSSIP_OBJ) $(CXX) -o $@ $(GOSSIP_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) # keep rs obj around for other simulations that are currently using it rs: $(RS_OBJ) $(CXX) -o $@ $(RS_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) histogram: $(HISTOGRAM_OBJ) $(CXX) -o $@ $(HISTOGRAM_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) dist_driver: $(DIST_DRIVER_OBJ) $(CXX) -o $@ $(DIST_DRIVER_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) genPerfectCoords: $(GENPERFECTCOORDS_OBJ) $(CXX) -o $@ $(GENPERFECTCOORDS_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) coord2nn: $(COORD2NN_OBJ) $(CXX) -o $@ $(COORD2NN_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) zone: $(ZONE_OBJ) $(CXX) -o $@ $(ZONE_OBJ) $(LDFLAGS) $(LIBS) $(GPROF) # GEODATA->/local/data/nc/geo runVS: vivaldi ./vivaldi -n 2500 -h 0 -g sSAnR -k 0 -m e -t 64 -w 64 -l /wild/geo/meridian/meridian.rtt -r 5000000 -I 10000 -s 2 -O /tmp/4dh -x 4 -z runRS: all # ./rs -c $(GEODATA)/perfect/x2.n10.coord -x 2 -w 1 -r $(GEODATA)/perfect/x2.n10.rtt -n 8 -t 2 -S 1 -R 10 -O foo -K U/2 -D -m t # ./rs -c x2/x2.n10.coord -x 2 -w 1 -r x2/x2.n10.rtt -n 8 -t 2 -S 1 -R 10 -O foo -K U/2 -m g # ./rs -c /wild/geo/perfect/x2.n100.coord -x 2 -w 1 -n 90 -t 10 -S 1 -R 1000000 -O /tmp/p -K U/10 -m h -l 3 -s 8 -C 100000 -g jn -V r -b 8 # ./rs -c /wild/geo/perfect/x2.n100.coord -x 2 -w 1 -n 90 -t 10 -S 1 -R 10000 -O /tmp/p -K U/10 -m h -l 3 -s 8 -b 8 -C 500 -g jn -P 5000 # ./rs -c /wild/geo/perfect/x2.n2048.coord -x 2 -w 1 -n 2048 -t 0 -S 23326 -R 1 -O /tmp/p -K U/2048 -m h -l 4 -s 13 # ./rs -c x2.n100.v3.coord -x 2 -w 100 -n 90 -t 10 -S 1 -R 1 -O /tmp/p -K U/10 -m h -s 4 -l 10 -b 8 # ./rs -c /wild/geo/mit/MIT.n100.x2.wH.appcoord -x 2 -w 100 -n 90 -t 10 -S 1 -R 1 -O /tmp/p -K U/10 -m h -s 4 -l 10 -b 8 -z -r /wild/geo/mit/MIT.n100.rtt # ./rs -c x3.n1024.coord -x 3 -w 10 -n 900 -t 124 -S 1 -R 1 -O /tmp/p -K U/124 -m h -s 4 -l 10 -b 8 ./rs -c x2.n1024.coord -x 2 -w 10 -n 900 -t 124 -S 1 -R 1 -O /tmp/p -K U/124 -m h -s 4 -l 10 -b 8 tarball: tar cf vivaldi-sim.tar $(VIVALDI_SRC) gzip -f vivaldi-sim.tar .cc.o: $(CXX) $(CXXFLAGS) -c $< -o $@ .c.o: $(C) $(CFLAGS) -c $< -o $@ clean: rm -f core* *~ *.o $(PROGRAMS) *.o --- NEW FILE: energy.cc --- #include "vivaldi.h" #include "node.h" bool debug = false; void addToWindow (Point *p, deque<Point*> &initialDist, deque<Point*> ¤tDist, int windowSize) { if (A.size() < windowSize) { A.push_back (p); } else { B.push_back (p); if (B.size() > windowSize) { cout << "need to drop" << endl; B.pop_front (); } } if (A.size() >= windowSize && B.size() >= windowSize) { double dist = compareDistributions (A, B); cout << "dist = " << dist << endl; } } double findEnergyDistance (const deque<Point*> &A, const deque<Point*> &B) { double sum = 0., abSum = 0., aSum = 0., bSum = 0.; if (debug) { cout << "A size " << A.size() << " B size " << B.size() << endl; cout << "A: " << endl; for (int i = 0; i < A.size(); i++) { cout << i << ": " << *A[i] << endl; } cout << "B: " << endl; for (int i = 0; i < B.size(); i++) { cout << i << ": " << *B[i] << endl; } } for (int i = 0; i < A.size(); i++) { for (int j = 0; j < B.size(); j++) { abSum += A[i]->getEuclideanDistance (B[j]); } } abSum *= 2./(A.size()*B.size()); if (debug) cout << "abSum = " << abSum << endl; for (int i = 0; i < A.size(); i++) { for (int j = 0; j < A.size(); j++) { aSum += A[i]->getEuclideanDistance (A[j]); } } aSum *= 1./(A.size()*A.size()); if (debug) cout << "aSum = " << aSum << endl; for (int i = 0; i < B.size(); i++) { for (int j = 0; j < B.size(); j++) { bSum += B[i]->getEuclideanDistance (B[j]); } } bSum *= 1./(B.size()*B.size()); if (debug) cout << "bSum = " << bSum << endl; sum = abSum - aSum - bSum; if (debug) cout << "psum = " << sum << endl; sum *= (A.size()*B.size())/(A.size()+B.size()); return sum; } char *usage = \ "energy\n" \ " -f sample file (3-d)\n" \ " -d debug\n" \ " -w window size\n"; int main (int argc, char **argv) { char c = 0; FILE *fp; char *sampleFile = NULL; int windowSize = 0; deque<Point*> A, B; while ((c = getopt(argc,argv,"w:f:d")) >= 0) { switch (c) { case 'f': sampleFile = optarg; break; case 'w': windowSize = atoi(optarg); break; case 'd': debug = true; break; default: printf (usage); exit (-1); break; } } if (sampleFile == NULL || windowSize <= 0) { printf (usage); exit (-1); } if ((fp = fopen (sampleFile, "r")) == NULL) { printf ("Cannot open file %s", sampleFile); exit (-1); } if (DIMENSIONS != 3) { printf ("Bad number of dimenions\n"); exit (-1); } float x, y, z; double *v = new double[DIMENSIONS]; while (fscanf (fp, "%f %f %f\n", &x, &y, &z) > 0) { //while (fscanf (fp, "%f %f\n", &x, &y, &z) > 0) { //printf ("x %f y %f\n", x, y); printf ("x %f y %f z %f\n", x, y, z); v[0] = x; v[1] = y; v[2] = z; Point *p = new Point (v); cout << "new point " << *p << endl; addToWindow (p, initialDistSmall, currentDistSmall, smallWindowSize); if (A.size() < windowSize) { A.push_back (p); } else { B.push_back (p); if (B.size() > windowSize) { cout << "need to drop" << endl; B.pop_front (); } } if (A.size() >= windowSize && B.size() >= windowSize) { double dist = compareDistributions (A, B); cout << "dist = " << dist << endl; } } fclose (fp); return 0; } --- NEW FILE: samples.cc --- /* $Id: samples.cc,v 1.1 2007/03/15 12:20:50 ledlie Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2005. All rights reserved. */ #include "sim.h" #include "samples.h" int PING_HISTORY_COUNT = 4; double PING_SAMPLE_PERCENTILE = .25; int MIN_HISTORY_COUNT = 0; Samples::Samples() { ewma = 0; jitterCount = 0; weightedError = 0; vec = new Point (); appVector = new Point (); } Samples::~Samples() { delete vec; delete appVector; } void Samples::addSample (double sample, int myId, int yourId, Point *yourCoord, double yourWeightedError, Point *yourAppCoord, int timestamp) { stamp = timestamp; if (PING_HISTORY_COUNT == -1) { ewma = PING_SAMPLE_PERCENTILE * sample + (1.-PING_SAMPLE_PERCENTILE) + ewma; sample = ewma; } weightedError = yourWeightedError; vec->assign (yourCoord); appVector->assign (yourAppCoord); // toss the sample from the front if (samples.size() > PING_HISTORY_COUNT) samples.pop_front (); // add this guy to the back samples.push_back (sample); } double Samples::getSample () { if (samples.size() > MIN_HISTORY_COUNT) { // sort em deque<double> sortedSamples (samples); sort (sortedSamples.begin(), sortedSamples.end()); int percentile = (int)(samples.size() * PING_SAMPLE_PERCENTILE); double sample_at_percentile = sortedSamples[percentile]; return sample_at_percentile; } else { return -1; } } void Samples::print () { printf ("sample size %d\n", samples.size()); for (int i = 0; i < samples.size(); i++) { printf ("sample %d %f\n", i, samples[i]); } } ostream& operator << (ostream& os, Samples *s) { os << "[sC " << s->vec << " aC " << s->appVector << " wE " << s->weightedError << " s "; for (int i = 0; i < s->samples.size(); i++) { os << s->samples[i] << " "; } os << "]"; return os; } --- NEW FILE: genPerfectCoords.cc --- /* $Id: genPerfectCoords.cc,v 1.1 2007/03/15 12:20:49 ledlie Exp $ */ #include "sim.h" #include "node.h" void printUsage (char* problem) { cout << "Usage: genPerfectCoords\n" <<" -x dimensions\n" <<" -s random seed\n" <<" -n node count\n" <<" -S side length\n" <<" -O output file prefix\n" <<" -g output format\n" <<" m: matrix\n" <<" c: coordinates\n" <<" r: rtt file\n" <<"\n"; if (problem) { cout << problem << endl; } exit (-1); } int main (int argc, char **argv) { char *outputPrefix = NULL; char *outputFormat = NULL; char c = 0; int seed = getpid(); int nodeCount = 0; double sideLength = 10.; double sum = 0.; USE_HEIGHT = false; while ( (c = getopt(argc,argv,"s:S:x:O:n:g:")) >= 0) { switch (c) { case 'g': outputFormat = optarg; break; case 'n': nodeCount = atoi (optarg); break; case 'x': DIMENSIONS = atoi (optarg); break; case 's': seed = atoi (optarg); break; case 'S': sideLength = atof (optarg); break; case 'O': outputPrefix = optarg; break; default: printUsage ("Undefined option"); break; } } //printf ("seed %d\n", seed); SRand (seed); srandom (seed); if (outputPrefix == NULL) printUsage("Output file prefix is required."); if (DIMENSIONS <= 0) printUsage("Dimensions must be greater than 0"); if (outputFormat == NULL) printUsage("Output format required."); FILE *coordOutputFP, *rttOutputFP, *matrixOutputFP; Point **points = new Point* [nodeCount]; for (int i = 0; i < nodeCount; i++) { points[i] = Point::getRandomPoint (sideLength); } if (strchr(outputFormat,'c') != NULL) { openOutputFile (coordOutputFP, outputPrefix, ".coord"); for (int i = 0; i < nodeCount; i++) { fprintf (coordOutputFP, "%d ", i); points[i]->print (coordOutputFP); fprintf (coordOutputFP, "\n"); } closeOutputFile (coordOutputFP); } int pointCount = 0; double avg = 0.; if (strchr(outputFormat,'r') != NULL) { openOutputFile (rttOutputFP, outputPrefix, ".rtt"); for (int src = 0; src < nodeCount; src++) { for (int dst = 0; dst < nodeCount; dst++) { if (src != dst) { double dist = points[src]->getEuclideanDistance(points[dst]); //dist = dist * dist; sum += dist; pointCount++; ASSERT (dist > 0); fprintf (rttOutputFP, "%d %d %f\n", src, dst, dist); } } } closeOutputFile (rttOutputFP); if (pointCount > 0) avg = sum / (double)pointCount; fprintf (stderr, "avg dist between points= %f\n", avg); } if (strchr(outputFormat,'m') != NULL) { openOutputFile (matrixOutputFP, outputPrefix, ".matrix"); for (int src = 0; src < nodeCount; src++) { for (int dst = 0; dst < nodeCount; dst++) { double dist = points[src]->getEuclideanDistance(points[dst]); ASSERT (dist >= 0.); if (dst > 0) fprintf (matrixOutputFP," "); fprintf (matrixOutputFP, "%f", dist); } fprintf (matrixOutputFP,"\n"); } closeOutputFile (matrixOutputFP); } } --- NEW FILE: point.h --- /* $Id: point.h,v 1.1 2007/03/15 12:20:49 ledlie Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2006. All rights reserved. */ #ifndef POINT_H #define POINT_H class Point { friend ostream& operator << (ostream& os, const Point *p); public: double *v; double height; int stamp; Point (); Point (int stamp); Point (const Point *v); Point (const double *vec, double h); ~Point (); void clear (); void scale (double s); double length (); double lengthWithoutHeight (); void bump (); void minibump (); void add (const Point *adjustment); bool isInInitialState (); void checkHeight (); double getAbsoluteDistance (const Point *b) const; double getEuclideanDistance (const Point *b) const; double getPlanarDistance (const Point *b) const; void assign (const Point *vec); Point* getDirection (const Point *p) const; Point* getForce (const Point *p); bool operator<(const Point *rhs) const; bool operator<(int rhs); static Point* getRandomPoint (double sideLength); static Point* getRandomUnitVector (); void print (FILE *fp) const; }; #endif --- NEW FILE: rs_alg_simple.cc --- /* $Id: rs_alg_simple.cc,v 1.1 2007/03/15 12:20:50 ledlie Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2005. All rights reserved. */ #include "sim.h" #include "node.h" #include "rs.h" #include "rs_alg_simple.h" NNSimple::NNSimple(int nodeCount, int maxNeigbours) : maxNeighbours(maxNeighbours) { neighbours = new set<int>[nodeCount]; } void NNSimple::initPerfectRoutingTables(Node& node) { // would be nice if the number of neighbors known in each case was the same // and were log(n) // or 4 x dim if (options && strchr(options, 'n') != NULL) { // nearest-only } else { // random for (int i = 0; i < maxNeighbors; i++) { int yourId = node.id; // isNeighbor(myId,yourId)) { while (yourId == node.id || rtts[node.id][yourId] <= 0. || contains(neighbours[node.id], yourId)) { yourId = unifRand (0, nodeCount); } neighbours[node.id].insert (yourId); } } } void NNSimple::printState(Node& node) { } void NNSimple::route(Node& srcNode, int targetNodeId, int &resultNodeId, deque<int> &hopNodeIds, double &delay) { // TODO problem with this is we are assuming we know the coord // for the targetNodeId, i.e. that it has been computed via // SBON's spring-relaxation or via proxy coords. // So, if we add coord computation and update to the sim // then these coords of destination nodes // are going to need to evolve along with it // TODO look at SBON code // add simple greedy search first // two choices?? // Note: assumes current knowledge of all of our neighbors coordinates // This is fine if they aren't changing Point *target = nodes[targetNodeId].vec; // could create nnQuery object like in Java set<int> waiting; set<int> completed; // add ourselves to kick off the query waiting.insert (srcNode.id); if (debug) { cout << "starting query for target "<< target << endl; } while (waiting.size() > 0) { set<int>::iterator waitingIter = waiting.begin(); int currentHop = *waitingIter; hopNodeIds.push_back (currentHop); waiting.erase (waitingIter); set<int> suggestedNodeIds; if (debug) { cout << "using node "<< currentHop << endl; } findNNQueryHops(nodes[currentHop], target, *neighbours, suggestedNodeIds); completed.insert(currentHop); for (set<int>::const_iterator suggestedIter = suggestedNodeIds.begin(); suggestedIter != suggestedNodeIds.end(); suggestedIter++) { int suggestedNodeId = *suggestedIter; if (!contains(waiting,suggestedNodeId) && !contains(completed,suggestedNodeId)) { waiting.insert(suggestedNodeId); } } } hopNodeIds.pop_front (); map<double,int> dist2id; orderByDistance (target, completed, dist2id); map<double,int>::const_iterator dist2idIter = dist2id.begin(); resultNodeId = dist2idIter->second; } void nnQueryOptimal (int targetNodeId, int resultNodeId, int &nearestNodeId, int &rankOfResult, double &relLatPenalty, double &absLatPenalty) { map<int,vector<int> >::const_iterator targetIter = targetId2rank2nodeId.find (targetNodeId); ASSERT (targetIter != targetId2rank2nodeId.end()); vector<int> rank2nodeId = targetIter->second; bool found = false; for (int i = 0; i < rank2nodeId.size(); i++) { //printf ("i %d n %d res %d\n", i, rank2nodeId[i], resultNodeId); if (rank2nodeId[i] == resultNodeId) { rankOfResult = i; found = true; break; } } ASSERT (found); //vector<int>::const_iterator nearestIter = nodeId2rank.begin(); //nearestNodeId = nearestIter->second; nearestNodeId = rank2nodeId[0]; ASSERT (nearestNodeId >= 0 && nearestNodeId < nodeCount); double resultLat = rtts[targetNodeId][resultNodeId]; double nearestLat = rtts[targetNodeId][nearestNodeId]; ASSERT (resultLat > 0); ASSERT (nearestLat > 0); ASSERT (nearestLat <= resultLat); absLatPenalty = resultLat - nearestLat; relLatPenalty = absLatPenalty / nearestLat; } // returns number of messages used in maintenance int Node::takeTurn () { return 0; //DEBUG_P (("R %d NODE %d taking turn\n", cRound, id)); /* if (noChurn) { } else { // maintain routing tables // ping neighbors ASSERT (false); } */ } void Node::assignCoords () { map<int,Point*>::const_iterator iter = nodeId2precoord.find(id); ASSERT (iter != nodeId2precoord.end()); vec->assign (iter->second); } void Node::birth () { ASSERT (!alive); nodeUp++; alive = true; birthTime = cRound; deathTime = -1; DEBUG_P (("R %d NODE %d starting birth\n", cRound, id)); //if (noChurn) { // set our own pre-computed coord assignCoords (); // TODO FIXME: initialise the routing tables //nnInit(); assert (0); /* } else { // learn about five nodes that are up // setNextRepairRoutesTime (); ASSERT (false); } */ } void Node::death () { ASSERT (alive); DEBUG_P (("R %d NODE %d death\n", cRound, id)); nodeUp--; alive = false; deathTime = cRound; } bool Node::isAlive () { return alive; } /* void Node::setNextRepairRoutesTime () { nextRepairRoutesTime = cRound + (int)(poisson ((double)repairRoutesActionInterval)); } */ --- NEW FILE: rs_alg_greedy.cc --- /* $Id: rs_alg_greedy.cc,v 1.1 2007/03/15 12:20:49 ledlie Exp $ * Jonathan Ledlie, Harvard University. * Copyright 2005. All rights reserved. */ #include "sim.h" #include "node.h" #include "rs.h" #include "rs_alg.h" GossipStrategy gossipStrategy = None; // This method initialises the routing tables // by offering to add all nodes to each node's routing table void NNGreedy::initPerfectRoutingTables(Node& node) { DEBUG_P(("initPerfectRoutingTable, nodeCount=%d\n", nodeCount)); // necessary for initial zone [...1319 lines suppressed...] ASSERT (angle >= -M_PI && angle <= M_PI); for (double ray = -M_PI; ray <= M_PI; ray += sectorIncrement) { if (angle >= ray && angle < ray+sectorIncrement) { break; } sectorIndex++; } // happens if angle is PI if (sectorIndex == numSectors) sectorIndex--; //if (sectorIndex < 0 || sectorIndex >= numSectors) ASSERT (sectorIndex >= 0 && sectorIndex < numSectors); delete p; //if (debug) printf ("me %d S %d\n", me.id, sectorIndex); return sectorIndex; } --- NEW FILE: rs_stat.cc --- /* $Id: rs_stat.cc,v 1.1 2007/03/15 12:20:50 ledlie Exp $ */ #include "rs.h" void Statistics::clear () { startTime = cRound; upNodeCount = 0; birthCount = 0; deathCount = 0; queryCount = 0; //queryMsgCount = 0; maintMsgCount = 0; queryRank.clear(); queryGlRelLatPenalty.clear(); queryGlAbsLatPenalty.clear(); queryNcRelLatPenalty.clear(); queryNcAbsLatPenalty.clear(); queryHopCount.clear(); queryDelay.clear(); for (int i =0; i < MAX_HOPS; i++) { hopCount[i] = 0; for (int j =0; j < MAX_HOPS; j++) { hopDistance[i][j] = 0.; } } gossipSize = 0.; angleTableSize = 0.; pctNearbyKnown = 0.; gossipStatCount = 0; } void Statistics::gossipState(double gS, double aTS, double pNK) { gossipStatCount++; gossipSize += gS; angleTableSize += aTS; pctNearbyKnown += pNK; } void Statistics::add (Statistics *s) { upNodeCount += s->upNodeCount; birthCount += s->birthCount; deathCount += s->deathCount; queryCount += s->queryCount; maintMsgCount += s->maintMsgCount; gossipStatCount += s->gossipStatCount; gossipSize += s->gossipSize; angleTableSize += s->angleTableSize; pctNearbyKnown += s->pctNearbyKnown; for (int i = 0; i < s->queryCount; i++) { queryRank.push_back (s->queryRank[i]); queryGlRelLatPenalty.push_back (s->queryGlRelLatPenalty[i]); queryGlAbsLatPenalty.push_back (s->queryGlAbsLatPenalty[i]); queryNcRelLatPenalty.push_back (s->queryNcRelLatPenalty[i]); queryNcAbsLatPenalty.push_back (s->queryNcAbsLatPenalty[i]); queryHopCount.push_back (s->queryHopCount[i]); if (recordDelayStretch) queryDelay.push_back (s->queryDelay[i]); } if (recordDelayStretch) { for (int i =0; i < MAX_HOPS; i++) { hopCount[i] += s->hopCount[i]; for (int j =0; j < MAX_HOPS; j++) { hopDistance[i][j] += s->hopDistance[i][j]; } } } } void Statistics::nodesUp (int count) { upNodeCount = count; } void Statistics::printHops (FILE *fp) { int medianHopCount = percentile (queryHopCount,.5); // gives the pct covered * median distance // i.e. pct of each hop such that total is medianHopCount for (int i = 0; i < medianHopCount; i++) { fprintf (fp, "%d %.4f\n", i, hopDistance[medianHopCount][i]/(double)hopCount[medianHopCount]*(double)medianHopCount); } } void Statistics::print (FILE *fp) { double diff = cRound - startTime; ASSERT (diff >= 0.); if (diff < 1.) diff = 1.; fprintf (fp, "up %d queries %d ", upNodeCount, queryCount); printf ("size %d\n", queryRank.size()); fprintf (fp, "rk %.2f rk50 %4d rk95 %4d ", mean (queryRank), percentile (queryRank, .5), percentile (queryRank,.95)); fprintf (fp, "grlp %.2f grlp50 %.2f grlp80 %.2f grlp95 %.2f ", mean (queryGlRelLatPenalty), percentile (queryGlRelLatPenalty,.5), percentile (queryGlRelLatPenalty,.8), percentile (queryGlRelLatPenalty,.95)); fprintf (fp, "galp %.2f galp50 %.2f galp80 %.2f galp95 %.2f ", mean (queryGlAbsLatPenalty), percentile (queryGlAbsLatPenalty,.5), percentile (queryGlAbsLatPenalty,.8), percentile (queryGlAbsLatPenalty,.95)); fprintf (fp, "nrlp %.2f nrlp50 %.2f nrlp80 %.2f nrlp95 %.2f ", mean (queryNcRelLatPenalty), percentile (queryNcRelLatPenalty,.5), percentile (queryNcRelLatPenalty,.8), percentile (queryNcRelLatPenalty,.95)); fprintf (fp, "nalp %.2f nalp50 %.2f nalp80 %.2f nalp95 %.2f ", mean (queryNcAbsLatPenalty), percentile (queryNcAbsLatPenalty,.5), percentile (queryNcAbsLatPenalty,.8), percentile (queryNcAbsLatPenalty,.95)); fprintf (fp, "hc %.2f hc50 %4d hc95 %4d ", mean (queryHopCount), percentile (queryHopCount,.5), percentile (queryHopCount, .95)); fprintf (fp, "de %.2f de50 %.2f de95 %.2f ", mean (queryDelay), percentile (queryDelay,.5), percentile (queryDelay,.95)); fprintf (fp, "g %.2f at %.2f lk %.4f", gossipSize/gossipStatCount, angleTableSize/gossipStatCount, pctNearbyKnown/gossipStatCount); fprintf (fp, "\n"); } Statistics::Statistics () { /* queryRank = new Histogram (1.); queryGlRelLatPenalty = new Hist... [truncated message content] |
|
From: Jonathan L. <le...@us...> - 2007-03-15 12:20:11
|
Update of /cvsroot/pyxida/Pyxida/sim In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15818/sim Log Message: Directory /cvsroot/pyxida/Pyxida/sim added to the repository |
|
From: Jonathan L. <le...@us...> - 2007-03-14 18:12:32
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13535/src/edu/harvard/syrah/pyxida/knn Modified Files: Zone.java KnnSim.java HyperCubeZoneManager.java Log Message: Works for a small number of nodes. Reconsidering eval strategy. Index: Zone.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/Zone.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Zone.java 14 Mar 2007 16:38:00 -0000 1.2 --- Zone.java 14 Mar 2007 18:12:26 -0000 1.3 *************** *** 88,92 **** if (distance > 0) { distance2nearbyNodes.put(distance, nearbyNode); ! slog.info ("probe adding "+nearbyNode.id+ " dist="+distance); } } --- 88,92 ---- if (distance > 0) { distance2nearbyNodes.put(distance, nearbyNode); ! //slog.info ("probe adding "+nearbyNode.id+ " dist="+distance); } } Index: HyperCubeZoneManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/HyperCubeZoneManager.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** HyperCubeZoneManager.java 14 Mar 2007 16:38:00 -0000 1.3 --- HyperCubeZoneManager.java 14 Mar 2007 18:12:26 -0000 1.4 *************** *** 61,65 **** z.add(stamp, node); ! slog.info ("added "+node.id+" to zone "+zoneId); } --- 61,65 ---- z.add(stamp, node); ! //slog.info ("added "+node.id+" to zone "+zoneId); } *************** *** 76,80 **** } ! slog.info ("added "+distance2nearbyNodes.size()+" from our zone "+zoneId); if (useAdjacentZones && distance2nearbyNodes.size() < maxReturnSize) { --- 76,80 ---- } ! //slog.info ("added "+distance2nearbyNodes.size()+" from our zone "+zoneId); if (useAdjacentZones && distance2nearbyNodes.size() < maxReturnSize) { *************** *** 90,94 **** adjacentZone.probe(probeSrc, distance2nearbyNodes,maxReturnSize); } ! slog.info ("total "+distance2nearbyNodes.size()+" from zone "+adjacentZoneId); if (distance2nearbyNodes.size() >= maxReturnSize) { --- 90,94 ---- adjacentZone.probe(probeSrc, distance2nearbyNodes,maxReturnSize); } ! //slog.info ("total "+distance2nearbyNodes.size()+" from zone "+adjacentZoneId); if (distance2nearbyNodes.size() >= maxReturnSize) { Index: KnnSim.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/KnnSim.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** KnnSim.java 14 Mar 2007 16:38:00 -0000 1.3 --- KnnSim.java 14 Mar 2007 18:12:26 -0000 1.4 *************** *** 11,14 **** --- 11,15 ---- import java.io.FileReader; import java.io.IOException; + import java.text.NumberFormat; import java.util.HashMap; import java.util.HashSet; *************** *** 22,25 **** --- 23,27 ---- import edu.harvard.syrah.pyxida.nc.lib.Coordinate; import edu.harvard.syrah.pyxida.nc.lib.NCClient; + import gnu.getopt.Getopt; /* *************** *** 37,42 **** new HashMap<NodeDesc,SortedMap<Double,NodeDesc>>(); ! final int dimensions = 2; ! final int dimsPlusHeight; ZoneManager zm = null; --- 39,44 ---- new HashMap<NodeDesc,SortedMap<Double,NodeDesc>>(); ! int dimensions = 4; ! int dimsPlusHeight; ZoneManager zm = null; *************** *** 45,70 **** // We will see how many of the true NN of the same size we find. int returnSetSize = 50; ! public static final String usage = ! "java KnnSim coord-file"; public static void main(String[] args) { - if (args.length <= 0) { - System.err.println (usage); - System.exit (-1); - } KnnSim sim = new KnnSim (args); } public KnnSim (String[] args) { ! NCClient.USE_HEIGHT = false; dimsPlusHeight = NCClient.USE_HEIGHT?(dimensions+1):dimensions; - //dimsPlusHeight = dimensions+1; - slog.info("dims="+dimensions+" height="+NCClient.USE_HEIGHT); ! String coordFilename = args[0]; ! // TODO make into variables ! returnSetSize = 50; ! slog.info ("reading coordinate file "+coordFilename); readCoordFile (coordFilename); --- 47,133 ---- // We will see how many of the true NN of the same size we find. int returnSetSize = 50; + String coordFilename = null; + boolean useAdjacentZones = true; + double dimensionSideLength = 10000; + int zonesPerDimension = 2; + + final static protected int NFDigits = 3; ! final static protected NumberFormat nf = NumberFormat.getInstance(); ! static { ! if (nf.getMaximumFractionDigits() > NFDigits) { ! nf.setMaximumFractionDigits(NFDigits); ! } ! if (nf.getMinimumFractionDigits() > NFDigits) { ! nf.setMinimumFractionDigits(NFDigits); ! } ! nf.setGroupingUsed(false); ! } public static void main(String[] args) { KnnSim sim = new KnnSim (args); } + public void printUsage (String problem) { + System.err.println (problem); + System.err.println + ("java KnnSim\n"+ + " -d dimensions ("+dimensions+")\n"+ + " -h toggle height use ("+NCClient.USE_HEIGHT+")\n"+ + " -s dimension side length ("+dimensionSideLength+")\n"+ + " -a toggle adjacent zone use ("+useAdjacentZones+")\n"+ + " -r return set size ("+returnSetSize+")\n"+ + " -c coordinate file name ("+coordFilename+")\n"); + System.exit (-1); + } + public KnnSim (String[] args) { ! int c; ! Getopt g = new Getopt ("KnnSim", args, "d:hz:s:ar:c:"); ! ! while ((c = g.getopt()) != -1) { ! switch (c) { ! case 'd': ! dimensions = Integer.parseInt(g.getOptarg()); ! break; ! case 'h': ! NCClient.USE_HEIGHT = !NCClient.USE_HEIGHT; ! break; ! case 'z': ! zonesPerDimension = Integer.parseInt(g.getOptarg()); ! break; ! case 's': ! dimensionSideLength = Double.parseDouble(g.getOptarg()); ! break; ! case 'a': ! useAdjacentZones = !useAdjacentZones; ! break; ! case 'r': ! returnSetSize = Integer.parseInt(g.getOptarg()); ! break; ! case 'c': ! coordFilename = g.getOptarg(); ! break; ! default: ! printUsage("Invalid argument"); ! } ! } ! ! if (coordFilename == null) printUsage ("coordinate file required"); ! if (dimensions <= 0) printUsage ("invalid number of dimensions"); ! if (zonesPerDimension <= 1) printUsage ("zones per dimension invalid"); ! if (dimensionSideLength < 1.) printUsage ("dimension side length invalid"); ! if (returnSetSize < 1) printUsage ("return set size invalid"); ! dimsPlusHeight = NCClient.USE_HEIGHT?(dimensions+1):dimensions; ! slog.info("PARAMS dims="+dimensions+ ! " height="+NCClient.USE_HEIGHT+ ! " dimensionSideLength="+dimensionSideLength+ ! " zonesPerDimension="+zonesPerDimension+ ! " useAdjacentZones="+useAdjacentZones+ ! " returnSetSize="+returnSetSize+ ! " coordFile="+coordFilename); ! slog.info ("reading coordinate file "+coordFilename); readCoordFile (coordFilename); *************** *** 72,79 **** assignTrueNN (); ! final double dimensionSideLength = 2; ! //final int zonesPerDimension = 1000; ! final int zonesPerDimension = 2; ! final boolean useAdjacentZones = true; zm = new HyperCubeZoneManager (dimensions, dimensionSideLength, zonesPerDimension, useAdjacentZones); --- 135,139 ---- assignTrueNN (); ! zm = new HyperCubeZoneManager (dimensions, dimensionSideLength, zonesPerDimension, useAdjacentZones); *************** *** 104,113 **** zm.add (stamp, node); } ! slog.info (zm.toString()); } public void evaluateZoneAssignment () { for (NodeDesc node : nodes) { ! slog.info ("Finding nodes nearby "+node.id); SortedMap<Double,NodeDesc> distance2nearbyNodes = new TreeMap<Double,NodeDesc>(); --- 164,173 ---- zm.add (stamp, node); } ! //slog.info (zm.toString()); } public void evaluateZoneAssignment () { for (NodeDesc node : nodes) { ! //slog.info ("Finding nodes nearby "+node.id); SortedMap<Double,NodeDesc> distance2nearbyNodes = new TreeMap<Double,NodeDesc>(); *************** *** 120,132 **** int unionSize = 0; - for (NodeDesc foundNode : distance2nearbyNodes.values()) { - slog.info (node.id+" union "+foundNode.id); - if (tnnSet.contains(foundNode)) { - unionSize++; - } - } ! // TODO want pct ! slog.info (node.id+" unionSize "+unionSize); // TODO Could also eval mapping with abs(rank difference) --- 180,202 ---- int unionSize = 0; ! /* ! slog.info (node.id+" true nearest neighbors:"); ! for (NodeDesc tnn : tnnSet) { ! slog.info (""+tnn.id); ! } ! */ ! ! for (NodeDesc foundNode : distance2nearbyNodes.values()) { ! //slog.info (node.id+" union "+foundNode.id); ! if (tnnSet.contains(foundNode)) { ! unionSize++; ! } ! } ! ! double pctOverlap = (double)unionSize / tnnSet.size(); ! ! //slog.info (node.id+" unionSize "+unionSize + " pct="+nf.format(pctOverlap)); ! slog.info (node.id+" pct="+nf.format(pctOverlap)); // TODO Could also eval mapping with abs(rank difference) |
|
From: Jonathan L. <le...@us...> - 2007-03-14 16:38:01
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23918/src/edu/harvard/syrah/pyxida/knn Modified Files: Zone.java KnnSim.java ZoneManager.java HyperCubeZoneManager.java Log Message: Finds nodes in adjacent zones. Sorts result by distance to target. Index: HyperCubeZoneManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/HyperCubeZoneManager.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** HyperCubeZoneManager.java 14 Mar 2007 02:42:57 -0000 1.2 --- HyperCubeZoneManager.java 14 Mar 2007 16:38:00 -0000 1.3 *************** *** 6,14 **** package edu.harvard.syrah.pyxida.knn; import java.util.HashMap; import java.util.Map; import java.util.SortedMap; - import java.util.HashSet; - import java.util.Set; public class HyperCubeZoneManager implements ZoneManager { --- 6,14 ---- package edu.harvard.syrah.pyxida.knn; + import java.util.ArrayList; import java.util.HashMap; + import java.util.List; import java.util.Map; import java.util.SortedMap; public class HyperCubeZoneManager implements ZoneManager { *************** *** 21,40 **** final double zoneEdgeLength; final double dimensionSideLength; ! final int zonesPerDimension; final Map<Long,Zone> zoneMap; ! public HyperCubeZoneManager (int _dimensions, double _dimensionSideLength, int _zonesPerDimension) { dimensions = _dimensions; dimensionSideLength = _dimensionSideLength; zonesPerDimension = _zonesPerDimension; zoneEdgeLength = _dimensionSideLength / _zonesPerDimension; zoneMap = new HashMap<Long,Zone> (); } public void add(long stamp, NodeDesc node) { // determine his zone ! long zoneId = findZone(node); Zone z = zoneMap.get(zoneId); --- 21,50 ---- final double zoneEdgeLength; final double dimensionSideLength; ! final double halfDimensionSideLength; ! final int zonesPerDimension; ! final boolean useAdjacentZones; final Map<Long,Zone> zoneMap; + + // note that a particular adjacent zone may not have been materialized, + // so we just store its id + final Map<Long,List<Long>> zone2adjacentZones; ! public HyperCubeZoneManager (int _dimensions, double _dimensionSideLength, int _zonesPerDimension, boolean _useAdjacentZones) { dimensions = _dimensions; dimensionSideLength = _dimensionSideLength; + halfDimensionSideLength = dimensionSideLength / 2.; zonesPerDimension = _zonesPerDimension; zoneEdgeLength = _dimensionSideLength / _zonesPerDimension; + useAdjacentZones = _useAdjacentZones; zoneMap = new HashMap<Long,Zone> (); + zone2adjacentZones = new HashMap<Long,List<Long>>(); } public void add(long stamp, NodeDesc node) { + double vec[] = node.coord.asVectorFromZero(false).getComponents(); // determine his zone ! long zoneId = findZone(vec); Zone z = zoneMap.get(zoneId); *************** *** 42,77 **** z = new Zone (zoneId); zoneMap.put (zoneId,z); } z.add(stamp, node); - // TODO also create Zone->nearby Zone mapping and add nearby zones during query? slog.info ("added "+node.id+" to zone "+zoneId); } ! public void query(NodeDesc node, Set<NodeDesc> nearbyNodes, int maxReturnSize) { ! // determine his zone ! long zoneId = findZone(node); Zone z = zoneMap.get(zoneId); ! if (z != null) { ! z.probe(nearbyNodes,maxReturnSize); ! } } ! long findZone(NodeDesc node) { long zoneId = 0; - double vec[] = node.coord.asVectorFromZero(false).getComponents(); for (int i = 0; i < dimensions; i++) { ! final double halfDimensionSideLength = dimensionSideLength / 2.; ! // normalize coordinate s.t. all coords are >0 int zoneIndex = (int)(Math.floor((vec[i]+halfDimensionSideLength) / zoneEdgeLength)); zoneId += Math.pow(zonesPerDimension, i) * zoneIndex; ! //slog.info (i+" c"+vec[i]+" -> "+zoneIndex+ " id "+zoneId); } ! return zoneId; ! } } --- 52,156 ---- z = new Zone (zoneId); zoneMap.put (zoneId,z); + + if (useAdjacentZones) { + if (!zone2adjacentZones.containsKey(zoneId)) { + zone2adjacentZones.put(zoneId,findAdjacentZones (vec)); + } + } } z.add(stamp, node); slog.info ("added "+node.id+" to zone "+zoneId); } ! public void query(NodeDesc probeSrc, SortedMap<Double, NodeDesc> distance2nearbyNodes, int maxReturnSize) { ! double vec[] = probeSrc.coord.asVectorFromZero(false).getComponents(); ! // determine his zone ! long zoneId = findZone(vec); Zone z = zoneMap.get(zoneId); ! if (z != null) { ! z.probe(probeSrc, distance2nearbyNodes,maxReturnSize); ! } ! ! slog.info ("added "+distance2nearbyNodes.size()+" from our zone "+zoneId); ! ! if (useAdjacentZones && distance2nearbyNodes.size() < maxReturnSize) { ! List<Long> adjacentZones = zone2adjacentZones.get(zoneId); ! // compute our adjacent zones in case ours is empty ! if (adjacentZones == null) { ! adjacentZones = findAdjacentZones (vec); ! zone2adjacentZones.put(zoneId,adjacentZones); ! } ! for (Long adjacentZoneId : adjacentZones) { ! Zone adjacentZone = zoneMap.get(adjacentZoneId); ! if (adjacentZone != null) { ! adjacentZone.probe(probeSrc, distance2nearbyNodes,maxReturnSize); ! } ! slog.info ("total "+distance2nearbyNodes.size()+" from zone "+adjacentZoneId); ! ! if (distance2nearbyNodes.size() >= maxReturnSize) { ! return; ! } ! } ! } ! } ! long findZone(double vec[]) { long zoneId = 0; for (int i = 0; i < dimensions; i++) { ! // normalize coordinate s.t. all coords are >0 int zoneIndex = (int)(Math.floor((vec[i]+halfDimensionSideLength) / zoneEdgeLength)); zoneId += Math.pow(zonesPerDimension, i) * zoneIndex; ! //slog.info (i+" c"+vec[i]+" -> "+zoneIndex+ " id "+zoneId); } ! return zoneId; ! } ! ! List<Long> findAdjacentZones (double vec[]) { ! List<Long> adjacentZones = new ArrayList<Long>(); ! ! int zoneIndex[] = new int[dimensions]; ! for (int i = 0; i < dimensions; i++) { ! zoneIndex[i] = (int)(Math.floor((vec[i]+halfDimensionSideLength) / zoneEdgeLength)); ! } ! ! for (int i = 0; i < dimensions; i++) { ! ! if (zoneIndex[i] > 0) { ! zoneIndex[i]--; ! adjacentZones.add(findZone(zoneIndex)); ! zoneIndex[i]++; ! } ! if (zoneIndex[i] < zonesPerDimension - 1) { ! zoneIndex[i]++; ! adjacentZones.add(findZone(zoneIndex)); ! zoneIndex[i]--; ! } ! } ! ! return adjacentZones; ! } + long findZone(int zoneIndex[]) { + long zoneId = 0; + + for (int i = 0; i < dimensions; i++) { + zoneId += Math.pow(zonesPerDimension, i) * zoneIndex[i]; + } + return zoneId; + } + + public String toString () { + StringBuffer sb = new StringBuffer (); + for (Map.Entry<Long, Zone> zoneEntry : zoneMap.entrySet()) { + sb.append("\n"+zoneEntry.getValue()); + } + return new String (sb); + } + } Index: Zone.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/Zone.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Zone.java 13 Mar 2007 21:48:08 -0000 1.1 --- Zone.java 14 Mar 2007 16:38:00 -0000 1.2 *************** *** 7,25 **** import java.util.ArrayList; - import java.util.HashSet; import java.util.List; ! import java.util.Set; import java.util.Vector; public class Zone { final long id; ! // rotate at once per minute at most public static final long rotateSetInterval = 60 * 1000; // remember this many slots of nodes public static final int intervalCount = 10; final Vector<List<NodeDesc>> intervalSet; --- 7,45 ---- import java.util.ArrayList; import java.util.List; ! import java.util.Map; ! import java.util.SortedMap; ! import java.util.TreeMap; import java.util.Vector; + /* + * Implements circular list of collections of nodes. + * We move to the next "interval" when either + * (a) we are storing too many nodes in the current one + * (b) enough time has passed. + * + * This way each zone will only take up a limited amount of storage, + * and will only return fresh results. + */ public class Zone { + protected static edu.harvard.syrah.prp.Log slog = + new edu.harvard.syrah.prp.Log(Zone.class); + final long id; ! // rotate at once per minute public static final long rotateSetInterval = 60 * 1000; + // max guys per interval + public static final int maxNodesPerInterval = 10; + // remember this many slots of nodes public static final int intervalCount = 10; + + // total storage per zone is: + // maxNodesPerInterval x intervalCount pointers to NodeDescs + final Vector<List<NodeDesc>> intervalSet; *************** *** 41,45 **** long intervalFloor = stamp / rotateSetInterval; ! if (intervalFloor > currentIntervalFloor) { currentInterval++; if (currentInterval == intervalCount) currentInterval = 0; --- 61,67 ---- long intervalFloor = stamp / rotateSetInterval; ! if (intervalFloor > currentIntervalFloor || ! intervalSet.get(currentInterval).size() >= maxNodesPerInterval) { ! // rotate to next interval currentInterval++; if (currentInterval == intervalCount) currentInterval = 0; *************** *** 53,63 **** } ! public void probe (Set<NodeDesc> nearbyNodes, int maxNearbyNodes) { ! if (nearbyNodes == null) return; int interval = currentInterval; int intervalsPassed = 0; ! while (nearbyNodes.size() < maxNearbyNodes && intervalsPassed < intervalCount) { ! nearbyNodes.addAll(intervalSet.get(interval)); interval--; if (interval == -1) interval = intervalCount-1; --- 75,95 ---- } ! public void probe (NodeDesc probeSrc, SortedMap<Double,NodeDesc> distance2nearbyNodes, int maxNearbyNodes) { ! if (distance2nearbyNodes == null) return; int interval = currentInterval; int intervalsPassed = 0; ! while (distance2nearbyNodes.size() < maxNearbyNodes && intervalsPassed < intervalCount) { ! for (NodeDesc nearbyNode : intervalSet.get(interval)) { ! if (!probeSrc.equals(nearbyNode) && probeSrc.coord != null && nearbyNode.coord != null) { ! // TODO might want to use planar distance ! // so that we are perhaps more likely to land in same ISP ! double distance = probeSrc.coord.distanceTo(nearbyNode.coord); ! if (distance > 0) { ! distance2nearbyNodes.put(distance, nearbyNode); ! slog.info ("probe adding "+nearbyNode.id+ " dist="+distance); ! } ! } ! } interval--; if (interval == -1) interval = intervalCount-1; *************** *** 107,116 **** System.out.println(z); ! Set<NodeDesc> nearbyNodes = new HashSet<NodeDesc>(); ! z.probe(nearbyNodes, 2); System.out.println ("nearbyNodes: "); ! for (NodeDesc node : nearbyNodes) { ! System.out.println(node.id+" "); } --- 139,148 ---- System.out.println(z); ! SortedMap<Double,NodeDesc> distance2nearbyNodes = new TreeMap<Double,NodeDesc>(); ! z.probe(n0,distance2nearbyNodes, 2); System.out.println ("nearbyNodes: "); ! for (Map.Entry<Double,NodeDesc> distance2node : distance2nearbyNodes.entrySet()) { ! System.out.println(distance2node.getKey()+" "+distance2node.getValue()); } *************** *** 120,128 **** System.out.println(z); ! nearbyNodes.clear(); ! z.probe(nearbyNodes, 2); System.out.println ("nearbyNodes: "); ! for (NodeDesc node : nearbyNodes) { ! System.out.println(node.id+" "); } --- 152,160 ---- System.out.println(z); ! distance2nearbyNodes.clear(); ! z.probe(n1,distance2nearbyNodes, 2); System.out.println ("nearbyNodes: "); ! for (Map.Entry<Double,NodeDesc> distance2node : distance2nearbyNodes.entrySet()) { ! System.out.println(distance2node.getKey()+" "+distance2node.getValue()); } Index: ZoneManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/ZoneManager.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ZoneManager.java 14 Mar 2007 02:42:57 -0000 1.2 --- ZoneManager.java 14 Mar 2007 16:38:00 -0000 1.3 *************** *** 8,12 **** import java.util.SortedMap; import java.util.HashSet; - import java.util.Set; public interface ZoneManager { --- 8,11 ---- *************** *** 14,18 **** void add(long stamp, NodeDesc node); ! void query(NodeDesc node, Set<NodeDesc> nearbyNodes, int maxReturnSize); } --- 13,19 ---- void add(long stamp, NodeDesc node); ! void query(NodeDesc probeSrc, SortedMap<Double, NodeDesc> distance2nearbyNodes, int maxReturnSize); + String toString (); + } Index: KnnSim.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/KnnSim.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** KnnSim.java 14 Mar 2007 02:42:57 -0000 1.2 --- KnnSim.java 14 Mar 2007 16:38:00 -0000 1.3 *************** *** 21,24 **** --- 21,31 ---- import edu.harvard.syrah.pyxida.nc.lib.Coordinate; + import edu.harvard.syrah.pyxida.nc.lib.NCClient; + + /* + * Driver for testing Zone assignment algorithms. + * + * Make sure that input coordinates are not spaced at regular intervals. + */ public class KnnSim { *************** *** 30,36 **** new HashMap<NodeDesc,SortedMap<Double,NodeDesc>>(); ! final int dimensions = 4; ! final boolean height = true; ! int dimsPlusHeight = height?dimensions:(dimensions+1); ZoneManager zm = null; --- 37,43 ---- new HashMap<NodeDesc,SortedMap<Double,NodeDesc>>(); ! final int dimensions = 2; ! final int dimsPlusHeight; ! ZoneManager zm = null; *************** *** 51,54 **** --- 58,66 ---- public KnnSim (String[] args) { + NCClient.USE_HEIGHT = false; + dimsPlusHeight = NCClient.USE_HEIGHT?(dimensions+1):dimensions; + //dimsPlusHeight = dimensions+1; + slog.info("dims="+dimensions+" height="+NCClient.USE_HEIGHT); + String coordFilename = args[0]; // TODO make into variables *************** *** 60,67 **** assignTrueNN (); ! final double dimensionSideLength = 20000; //final int zonesPerDimension = 1000; final int zonesPerDimension = 2; ! zm = new HyperCubeZoneManager (dimensions, dimensionSideLength, zonesPerDimension); slog.info ("adding nodes to zones"); --- 72,80 ---- assignTrueNN (); ! final double dimensionSideLength = 2; //final int zonesPerDimension = 1000; final int zonesPerDimension = 2; ! final boolean useAdjacentZones = true; ! zm = new HyperCubeZoneManager (dimensions, dimensionSideLength, zonesPerDimension, useAdjacentZones); slog.info ("adding nodes to zones"); *************** *** 91,101 **** zm.add (stamp, node); } } public void evaluateZoneAssignment () { for (NodeDesc node : nodes) { ! //SortedMap<Double,NodeDesc> distance2node = new TreeMap<Double,NodeDesc>(); ! Set<NodeDesc> foundSet = new HashSet<NodeDesc> (); ! zm.query(node,foundSet,returnSetSize); // foundSet is who we would be returning to the client --- 104,117 ---- zm.add (stamp, node); } + slog.info (zm.toString()); } public void evaluateZoneAssignment () { for (NodeDesc node : nodes) { ! slog.info ("Finding nodes nearby "+node.id); ! ! SortedMap<Double,NodeDesc> distance2nearbyNodes = new TreeMap<Double,NodeDesc>(); ! ! zm.query(node,distance2nearbyNodes,returnSetSize); // foundSet is who we would be returning to the client *************** *** 104,108 **** int unionSize = 0; ! for (NodeDesc foundNode : foundSet) { if (tnnSet.contains(foundNode)) { unionSize++; --- 120,125 ---- int unionSize = 0; ! for (NodeDesc foundNode : distance2nearbyNodes.values()) { ! slog.info (node.id+" union "+foundNode.id); if (tnnSet.contains(foundNode)) { unionSize++; *************** *** 111,115 **** // TODO want pct ! slog.info (node.id+" union "+unionSize); // TODO Could also eval mapping with abs(rank difference) --- 128,132 ---- // TODO want pct ! slog.info (node.id+" unionSize "+unionSize); // TODO Could also eval mapping with abs(rank difference) *************** *** 118,122 **** // Or something that actually has to do with distance // as opposed to just rank ! } } --- 135,139 ---- // Or something that actually has to do with distance // as opposed to just rank ! //System.exit(0); } } |
|
From: Jonathan L. <le...@us...> - 2007-03-14 02:43:02
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28977 Modified Files: HyperCubeZoneManager.java KnnSim.java ZoneManager.java Log Message: hypercube division of space works with small set of test coords Index: HyperCubeZoneManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/HyperCubeZoneManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** HyperCubeZoneManager.java 13 Mar 2007 21:48:08 -0000 1.1 --- HyperCubeZoneManager.java 14 Mar 2007 02:42:57 -0000 1.2 *************** *** 9,22 **** import java.util.Map; import java.util.SortedMap; ! public class HyperCubeZoneManager implements ZoneManager { final int dimensions; final double zoneEdgeLength; final Map<Long,Zone> zoneMap; public HyperCubeZoneManager (int _dimensions, double _dimensionSideLength, int _zonesPerDimension) { dimensions = _dimensions; zoneEdgeLength = _dimensionSideLength / _zonesPerDimension; zoneMap = new HashMap<Long,Zone> (); --- 9,31 ---- import java.util.Map; import java.util.SortedMap; ! import java.util.HashSet; ! import java.util.Set; public class HyperCubeZoneManager implements ZoneManager { + protected static edu.harvard.syrah.prp.Log slog = + new edu.harvard.syrah.prp.Log(HyperCubeZoneManager.class); + + final int dimensions; final double zoneEdgeLength; + final double dimensionSideLength; + final int zonesPerDimension; final Map<Long,Zone> zoneMap; public HyperCubeZoneManager (int _dimensions, double _dimensionSideLength, int _zonesPerDimension) { dimensions = _dimensions; + dimensionSideLength = _dimensionSideLength; + zonesPerDimension = _zonesPerDimension; zoneEdgeLength = _dimensionSideLength / _zonesPerDimension; zoneMap = new HashMap<Long,Zone> (); *************** *** 26,39 **** public void add(long stamp, NodeDesc node) { - // TODO UNTESTED - // determine his zone ! long zoneId = 0; ! double vec[] = node.coord.asVectorFromZero(false).getComponents(); ! ! for (int i = 0; i < dimensions; i++) { ! int zoneIndex = (int)(Math.floor(vec[i] / zoneEdgeLength)); ! zoneId += Math.pow(zoneIndex, i+1); ! } Zone z = zoneMap.get(zoneId); --- 35,40 ---- public void add(long stamp, NodeDesc node) { // determine his zone ! long zoneId = findZone(node); Zone z = zoneMap.get(zoneId); *************** *** 45,55 **** // TODO also create Zone->nearby Zone mapping and add nearby zones during query? } ! public void query(NodeDesc node, SortedMap<Double, NodeDesc> distance2node) { ! } } --- 46,77 ---- // TODO also create Zone->nearby Zone mapping and add nearby zones during query? + slog.info ("added "+node.id+" to zone "+zoneId); } ! public void query(NodeDesc node, Set<NodeDesc> nearbyNodes, int maxReturnSize) { + // determine his zone + long zoneId = findZone(node); + + Zone z = zoneMap.get(zoneId); + if (z != null) { + z.probe(nearbyNodes,maxReturnSize); + } } + long findZone(NodeDesc node) { + long zoneId = 0; + double vec[] = node.coord.asVectorFromZero(false).getComponents(); + + for (int i = 0; i < dimensions; i++) { + final double halfDimensionSideLength = dimensionSideLength / 2.; + // normalize coordinate s.t. all coords are >0 + int zoneIndex = (int)(Math.floor((vec[i]+halfDimensionSideLength) / zoneEdgeLength)); + zoneId += Math.pow(zonesPerDimension, i) * zoneIndex; + //slog.info (i+" c"+vec[i]+" -> "+zoneIndex+ " id "+zoneId); + } + return zoneId; + } + } Index: ZoneManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/ZoneManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ZoneManager.java 13 Mar 2007 21:48:08 -0000 1.1 --- ZoneManager.java 14 Mar 2007 02:42:57 -0000 1.2 *************** *** 7,11 **** import java.util.SortedMap; ! public interface ZoneManager { --- 7,12 ---- import java.util.SortedMap; ! import java.util.HashSet; ! import java.util.Set; public interface ZoneManager { *************** *** 13,17 **** void add(long stamp, NodeDesc node); ! void query(NodeDesc node, SortedMap<Double, NodeDesc> distance2node); } --- 14,18 ---- void add(long stamp, NodeDesc node); ! void query(NodeDesc node, Set<NodeDesc> nearbyNodes, int maxReturnSize); } Index: KnnSim.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn/KnnSim.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** KnnSim.java 13 Mar 2007 21:48:08 -0000 1.1 --- KnnSim.java 14 Mar 2007 02:42:57 -0000 1.2 *************** *** 15,18 **** --- 15,19 ---- import java.util.Map; import java.util.Set; + import java.util.Iterator; import java.util.SortedMap; import java.util.StringTokenizer; *************** *** 21,32 **** import edu.harvard.syrah.pyxida.nc.lib.Coordinate; - public class KnnSim { protected static edu.harvard.syrah.prp.Log slog = new edu.harvard.syrah.prp.Log(KnnSim.class); - - /** - * @param args - */ Set<NodeDesc> nodes = new HashSet<NodeDesc>(); --- 22,28 ---- *************** *** 37,43 **** final boolean height = true; int dimsPlusHeight = height?dimensions:(dimensions+1); ! ZoneManager zm; public static void main(String[] args) { KnnSim sim = new KnnSim (args); } --- 33,50 ---- final boolean height = true; int dimsPlusHeight = height?dimensions:(dimensions+1); ! ZoneManager zm = null; ! ! // Number of guys we would be returning to client. ! // We will see how many of the true NN of the same size we find. ! int returnSetSize = 50; ! ! public static final String usage = ! "java KnnSim coord-file"; public static void main(String[] args) { + if (args.length <= 0) { + System.err.println (usage); + System.exit (-1); + } KnnSim sim = new KnnSim (args); } *************** *** 45,48 **** --- 52,57 ---- public KnnSim (String[] args) { String coordFilename = args[0]; + // TODO make into variables + returnSetSize = 50; slog.info ("reading coordinate file "+coordFilename); *************** *** 52,56 **** final double dimensionSideLength = 20000; ! final int zonesPerDimension = 1000; zm = new HyperCubeZoneManager (dimensions, dimensionSideLength, zonesPerDimension); --- 61,66 ---- final double dimensionSideLength = 20000; ! //final int zonesPerDimension = 1000; ! final int zonesPerDimension = 2; zm = new HyperCubeZoneManager (dimensions, dimensionSideLength, zonesPerDimension); *************** *** 85,103 **** public void evaluateZoneAssignment () { for (NodeDesc node : nodes) { ! SortedMap<Double,NodeDesc> distance2node = new TreeMap<Double,NodeDesc>(); ! zm.query(node,distance2node); ! ! /* ! * TODO Do something smart here to evaluate the mapping. ! * ! SortedMap<Double,NodeDesc> trueDistance2node = node2distance2node.get(node); ! StringBuffer sb = new StringBuffer ("truth "); ! for (Map.Entry<Double, NodeDesc>) entry : trueDistance2node) { ! ! } ! */ ! ! } ! } void readCoordFile (String coordFilename) { --- 95,133 ---- public void evaluateZoneAssignment () { for (NodeDesc node : nodes) { ! //SortedMap<Double,NodeDesc> distance2node = new TreeMap<Double,NodeDesc>(); ! Set<NodeDesc> foundSet = new HashSet<NodeDesc> (); ! zm.query(node,foundSet,returnSetSize); ! ! // foundSet is who we would be returning to the client ! //Set<NodeDesc> foundSet = getSetHead (distance2node, returnSetSize); ! Set<NodeDesc> tnnSet = getSetHead (node2distance2node.get(node), returnSetSize); ! ! int unionSize = 0; ! for (NodeDesc foundNode : foundSet) { ! if (tnnSet.contains(foundNode)) { ! unionSize++; ! } ! } ! ! // TODO want pct ! slog.info (node.id+" union "+unionSize); ! ! // TODO Could also eval mapping with abs(rank difference) ! // exponentially weighted by tnn rank ! ! // Or something that actually has to do with distance ! // as opposed to just rank ! ! } ! } ! ! Set<NodeDesc> getSetHead (SortedMap<Double,NodeDesc> theMap, int maxSize) { ! Set<NodeDesc> foundSet = new HashSet<NodeDesc>(); ! for (Map.Entry<Double,NodeDesc> entry : theMap.entrySet()) { ! foundSet.add (entry.getValue()); ! if (foundSet.size() == returnSetSize) break; ! } ! return foundSet; ! } void readCoordFile (String coordFilename) { |
|
From: Jonathan L. <le...@us...> - 2007-03-13 21:48:09
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12847/src/edu/harvard/syrah/pyxida/knn Added Files: Zone.java KnnSim.java ZoneManager.java HyperCubeZoneManager.java NodeDesc.java Log Message: First crack at continuous k-nearest neighbor --- NEW FILE: HyperCubeZoneManager.java --- /* * @author Last modified by $Author: ledlie $ * @version $Revision: 1.1 $ on $Date: 2007/03/13 21:48:08 $ * @since Mar 13, 2007 */ package edu.harvard.syrah.pyxida.knn; import java.util.HashMap; import java.util.Map; import java.util.SortedMap; public class HyperCubeZoneManager implements ZoneManager { final int dimensions; final double zoneEdgeLength; final Map<Long,Zone> zoneMap; public HyperCubeZoneManager (int _dimensions, double _dimensionSideLength, int _zonesPerDimension) { dimensions = _dimensions; zoneEdgeLength = _dimensionSideLength / _zonesPerDimension; zoneMap = new HashMap<Long,Zone> (); } public void add(long stamp, NodeDesc node) { // TODO UNTESTED // determine his zone long zoneId = 0; double vec[] = node.coord.asVectorFromZero(false).getComponents(); for (int i = 0; i < dimensions; i++) { int zoneIndex = (int)(Math.floor(vec[i] / zoneEdgeLength)); zoneId += Math.pow(zoneIndex, i+1); } Zone z = zoneMap.get(zoneId); if (z == null) { z = new Zone (zoneId); zoneMap.put (zoneId,z); } z.add(stamp, node); // TODO also create Zone->nearby Zone mapping and add nearby zones during query? } public void query(NodeDesc node, SortedMap<Double, NodeDesc> distance2node) { } } --- NEW FILE: Zone.java --- /* * @author Last modified by $Author: ledlie $ * @version $Revision: 1.1 $ on $Date: 2007/03/13 21:48:08 $ * @since Mar 13, 2007 */ package edu.harvard.syrah.pyxida.knn; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.Vector; public class Zone { final long id; // rotate at once per minute at most public static final long rotateSetInterval = 60 * 1000; // remember this many slots of nodes public static final int intervalCount = 10; final Vector<List<NodeDesc>> intervalSet; int currentInterval = 0; long currentIntervalFloor = 0; int nodeCount = 0; public Zone (long _id) { id = _id; intervalSet = new Vector<List<NodeDesc>> (); for (int i = 0; i < intervalCount; i++) { intervalSet.add(new ArrayList<NodeDesc>()); } } public void add (long stamp, NodeDesc node) { if (node == null) return; long intervalFloor = stamp / rotateSetInterval; if (intervalFloor > currentIntervalFloor) { currentInterval++; if (currentInterval == intervalCount) currentInterval = 0; nodeCount -= intervalSet.get(currentInterval).size(); intervalSet.get(currentInterval).clear(); currentIntervalFloor = intervalFloor; } intervalSet.get(currentInterval).add(node); nodeCount++; } public void probe (Set<NodeDesc> nearbyNodes, int maxNearbyNodes) { if (nearbyNodes == null) return; int interval = currentInterval; int intervalsPassed = 0; while (nearbyNodes.size() < maxNearbyNodes && intervalsPassed < intervalCount) { nearbyNodes.addAll(intervalSet.get(interval)); interval--; if (interval == -1) interval = intervalCount-1; intervalsPassed++; } } public long getId() { return id; } public int getNodeCount () { return nodeCount; } public String toString () { StringBuffer sb = new StringBuffer ("id="+id+" size="+nodeCount); for (int i = 0; i < intervalCount; i++) { sb.append(" "); if (i == currentInterval) sb.append("*"); sb.append (i+"->[ "); for (NodeDesc node : intervalSet.get(i)) { sb.append(node.id+" "); } sb.append("]"); } return new String(sb); } public static void main (String argv[]) { NodeDesc n0 = new NodeDesc (0,null); NodeDesc n1 = new NodeDesc (1,null); NodeDesc n2 = new NodeDesc (2,null); NodeDesc n3 = new NodeDesc (3,null); Zone z = new Zone (0); z.add (0,n0); System.out.println(z); z.add (1,n0); z.add (1,n1); z.add (1,n2); z.add (2,n1); z.add (Zone.rotateSetInterval*2,n0); System.out.println(z); Set<NodeDesc> nearbyNodes = new HashSet<NodeDesc>(); z.probe(nearbyNodes, 2); System.out.println ("nearbyNodes: "); for (NodeDesc node : nearbyNodes) { System.out.println(node.id+" "); } for (int i = 0; i < Zone.intervalCount*2; i++) { z.add(i*Zone.rotateSetInterval, n3); } System.out.println(z); nearbyNodes.clear(); z.probe(nearbyNodes, 2); System.out.println ("nearbyNodes: "); for (NodeDesc node : nearbyNodes) { System.out.println(node.id+" "); } } } --- NEW FILE: ZoneManager.java --- /* * @author Last modified by $Author: ledlie $ * @version $Revision: 1.1 $ on $Date: 2007/03/13 21:48:08 $ * @since Mar 13, 2007 */ package edu.harvard.syrah.pyxida.knn; import java.util.SortedMap; public interface ZoneManager { void add(long stamp, NodeDesc node); void query(NodeDesc node, SortedMap<Double, NodeDesc> distance2node); } --- NEW FILE: KnnSim.java --- /* * @author Last modified by $Author: ledlie $ * @version $Revision: 1.1 $ on $Date: 2007/03/13 21:48:08 $ * @since Mar 13, 2007 */ package edu.harvard.syrah.pyxida.knn; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.StringTokenizer; import java.util.TreeMap; import edu.harvard.syrah.pyxida.nc.lib.Coordinate; public class KnnSim { protected static edu.harvard.syrah.prp.Log slog = new edu.harvard.syrah.prp.Log(KnnSim.class); /** * @param args */ Set<NodeDesc> nodes = new HashSet<NodeDesc>(); Map<NodeDesc,SortedMap<Double,NodeDesc>> node2distance2node = new HashMap<NodeDesc,SortedMap<Double,NodeDesc>>(); final int dimensions = 4; final boolean height = true; int dimsPlusHeight = height?dimensions:(dimensions+1); ZoneManager zm; public static void main(String[] args) { KnnSim sim = new KnnSim (args); } public KnnSim (String[] args) { String coordFilename = args[0]; slog.info ("reading coordinate file "+coordFilename); readCoordFile (coordFilename); slog.info ("assigning true NN"); assignTrueNN (); final double dimensionSideLength = 20000; final int zonesPerDimension = 1000; zm = new HyperCubeZoneManager (dimensions, dimensionSideLength, zonesPerDimension); slog.info ("adding nodes to zones"); addNodesToZones (); slog.info ("eval zone assignment"); evaluateZoneAssignment (); } void assignTrueNN () { for (NodeDesc me : nodes) { SortedMap<Double,NodeDesc> distance2node = new TreeMap<Double,NodeDesc>(); for (NodeDesc node : nodes) { if (me != node) { double distance = me.coord.distanceTo(node.coord); distance2node.put(distance, node); } } node2distance2node.put(me, distance2node); } } public void addNodesToZones () { // for now, assume time is not a factor final long stamp = 0; for (NodeDesc node : nodes) { zm.add (stamp, node); } } public void evaluateZoneAssignment () { for (NodeDesc node : nodes) { SortedMap<Double,NodeDesc> distance2node = new TreeMap<Double,NodeDesc>(); zm.query(node,distance2node); /* * TODO Do something smart here to evaluate the mapping. * SortedMap<Double,NodeDesc> trueDistance2node = node2distance2node.get(node); StringBuffer sb = new StringBuffer ("truth "); for (Map.Entry<Double, NodeDesc>) entry : trueDistance2node) { } */ } } void readCoordFile (String coordFilename) { BufferedReader coordReader = null; try { coordReader = new BufferedReader (new FileReader (new File (coordFilename))); }catch (FileNotFoundException ex) { System.err.println ("Cannot find coord file "+coordFilename); System.exit (-1); } int idCounter = 0; try { String coordLine = coordReader.readLine(); while (coordLine != null) { StringTokenizer coordTokenizer = new StringTokenizer (coordLine); float v[] = new float[dimsPlusHeight]; for (int i = 0; i < dimsPlusHeight; i++) { v[i] = Float.parseFloat((String)(coordTokenizer.nextElement())); } NodeDesc node = new NodeDesc(idCounter++,new Coordinate(v)); nodes.add(node); coordLine = coordReader.readLine(); } } catch (IOException ex) { System.err.println("Error reading coord file: "+ex); System.exit (-1); } } } --- NEW FILE: NodeDesc.java --- /* * @author Last modified by $Author: ledlie $ * @version $Revision: 1.1 $ on $Date: 2007/03/13 21:48:08 $ * @since Mar 13, 2007 */ package edu.harvard.syrah.pyxida.knn; import edu.harvard.syrah.pyxida.nc.lib.Coordinate; public class NodeDesc { public final int id; public final Coordinate coord; public NodeDesc (int _id, Coordinate _coord) { id = _id; coord = _coord; } // used when adding to Set b/c one guy can be in the lists several times public boolean equals (NodeDesc _other) { if (id == _other.id) return true; return false; } } |
|
From: Jonathan L. <le...@us...> - 2007-03-13 21:48:07
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12558/src/edu/harvard/syrah/pyxida/knn Log Message: Directory /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/knn added to the repository |
|
From: Jonathan L. <le...@us...> - 2007-03-05 19:58:35
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18093/src/edu/harvard/syrah/pyxida Modified Files: LogServer.java Log Message: Had extra zero at end of log file names. Index: LogServer.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/LogServer.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** LogServer.java 5 Mar 2007 16:57:49 -0000 1.7 --- LogServer.java 5 Mar 2007 19:58:29 -0000 1.8 *************** *** 60,64 **** public LogServer () { ! dateFormat = new SimpleDateFormat("yyyyMMdd-HHm0"); dumpCoordsCB = new CB0() { protected void cb(CBResult result) { --- 60,64 ---- public LogServer () { ! dateFormat = new SimpleDateFormat("yyyyMMdd-HHmm"); dumpCoordsCB = new CB0() { protected void cb(CBResult result) { |
|
From: Jonathan L. <le...@us...> - 2007-03-05 16:58:28
|
Update of /cvsroot/pyxida/Pyxida/web In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10440 Modified Files: index.html Log Message: coords dir on hg Index: index.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/index.html,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** index.html 21 Feb 2007 15:35:14 -0000 1.19 --- index.html 5 Mar 2007 16:58:23 -0000 1.20 *************** *** 38,41 **** --- 38,46 ---- <a href="#logs">Logs</a><br/> <font size="-1"><a href="http://hourglass.eecs.harvard.edu/video">Videos</a></font><br/> + <font size="-1"><a + href="http://hourglass.eecs.harvard.edu/coords">Coordinates</a></font><br/> + <font size="-1"><a + href="http://hourglass.eecs.harvard.edu/coords/current.coords">Current + Coordinates</a></font><br/> <br /> <a href="http://www.eecs.harvard.edu/~syrah/nc">Research</a><br/> *************** *** 282,286 **** <p>You can find a directory with <a href="http://hourglass.eecs.harvard.edu/video">videos</a> that ! show the dynamic behaviour of network coordinates on PlanetLab.</a <h4>Log Files</h4> --- 287,299 ---- <p>You can find a directory with <a href="http://hourglass.eecs.harvard.edu/video">videos</a> that ! show the dynamic behaviour of network coordinates on PlanetLab. ! ! <h4>Time-sliced Coordinates</h4> ! ! <p>You can find a directory with ! <a href="http://hourglass.eecs.harvard.edu/coords">coordinates ! over time</a> that ! show which nodes were running and what their coordinates were, sliced ! into ten-minute intervals. Data taken from PlanetLab. <h4>Log Files</h4> *************** *** 356,360 **** <ul> <li>web query and status tool</li> ! <li>proxy coordinates (targeted for v0.2): create a coordinate for a non-overlay node.</li> <li>add application-level coordinates for improved stability --- 369,373 ---- <ul> <li>web query and status tool</li> ! <li>proxy coordinates: create a coordinate for a non-overlay node.</li> <li>add application-level coordinates for improved stability |
|
From: Jonathan L. <le...@us...> - 2007-03-05 16:57:54
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10074/src/edu/harvard/syrah/pyxida Modified Files: LogServer.java Log Message: Write duplicate output to current.coords file for quick reference Index: LogServer.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/LogServer.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** LogServer.java 5 Mar 2007 16:23:43 -0000 1.6 --- LogServer.java 5 Mar 2007 16:57:49 -0000 1.7 *************** *** 188,191 **** --- 188,192 ---- String file = DUMP_COORD_PATH+"/"+dateFormat.format(new Date())+".coords"; + String currentFile = DUMP_COORD_PATH+"/current.coords"; log.info ("Dumping coords to file "+file); *************** *** 193,203 **** try { PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file))); for (Map.Entry<AddressIF,CoordDesc> entry : addr2coords.entrySet()) { ! out.write (entry.getKey()+ " "+entry.getValue()+"\n"); } out.flush(); out.close(); log.info("wrote to file "+file); } catch (Exception ex) { --- 194,209 ---- try { PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file))); + PrintWriter currentOut = new PrintWriter(new BufferedWriter(new FileWriter(currentFile))); for (Map.Entry<AddressIF,CoordDesc> entry : addr2coords.entrySet()) { ! String line = entry.getKey()+ " "+entry.getValue()+"\n"; ! out.write (line); ! currentOut.write (line); } out.flush(); out.close(); + currentOut.flush(); + currentOut.close(); log.info("wrote to file "+file); } catch (Exception ex) { |
|
From: Jonathan L. <le...@us...> - 2007-03-05 16:23:50
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29200/src/edu/harvard/syrah/pyxida Modified Files: LogServer.java Log Message: Added error and seconary coordinate to logserver 10 minute output (and msg to it) Index: LogServer.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/LogServer.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** LogServer.java 2 Mar 2007 22:52:30 -0000 1.5 --- LogServer.java 5 Mar 2007 16:23:43 -0000 1.6 *************** *** 60,64 **** public LogServer () { ! dateFormat = new SimpleDateFormat("yyyyMMdd-HHmm"); dumpCoordsCB = new CB0() { protected void cb(CBResult result) { --- 60,64 ---- public LogServer () { ! dateFormat = new SimpleDateFormat("yyyyMMdd-HHm0"); dumpCoordsCB = new CB0() { protected void cb(CBResult result) { *************** *** 152,158 **** --- 152,160 ---- class CoordDesc { public final Coordinate primarySysCoord; + public final double primarySysCoordError; public final Coordinate primaryAppCoord; public final Coordinate secondarySysCoord; + public final double secondarySysCoordError; public final Coordinate secondaryAppCoord; *************** *** 166,178 **** public CoordDesc (ReportCoordReqMsg msg) { primarySysCoord = msg.primarySysCoord; primaryAppCoord = msg.primaryAppCoord; secondarySysCoord = msg.secondarySysCoord; secondaryAppCoord = msg.secondaryAppCoord; - //timestamp = } public String toString () { ! return (primaryAppCoord.toString()); //return (" sc1=" + primarySysCoord + " ac1=" + primaryAppCoord + " sc2=" + secondarySysCoord + " ac2=" + secondaryAppCoord); --- 168,182 ---- public CoordDesc (ReportCoordReqMsg msg) { primarySysCoord = msg.primarySysCoord; + primarySysCoordError = msg.primarySysCoordError; primaryAppCoord = msg.primaryAppCoord; secondarySysCoord = msg.secondarySysCoord; + secondarySysCoordError = msg.secondarySysCoordError; secondaryAppCoord = msg.secondaryAppCoord; } public String toString () { ! return (primaryAppCoord.toString()+" erP="+primarySysCoordError+ ! secondaryAppCoord.toString()+" erS="+secondarySysCoordError); //return (" sc1=" + primarySysCoord + " ac1=" + primaryAppCoord + " sc2=" + secondarySysCoord + " ac2=" + secondaryAppCoord); |
|
From: Jonathan L. <le...@us...> - 2007-03-05 16:23:44
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/log In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29200/src/edu/harvard/syrah/pyxida/log Modified Files: ReportCoordReqMsg.java LogManager.java Log Message: Added error and seconary coordinate to logserver 10 minute output (and msg to it) Index: LogManager.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/log/LogManager.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** LogManager.java 21 Feb 2007 13:10:29 -0000 1.4 --- LogManager.java 5 Mar 2007 16:23:42 -0000 1.5 *************** *** 91,98 **** ReportCoordReqMsg reqMsg = new ReportCoordReqMsg(); reqMsg.primarySysCoord = ncManager.getLocalCoord(); reqMsg.primaryAppCoord = ncManager.getStableCoord(); - reqMsg.secondarySysCoord = ncManager.getLocalSecondaryCoord(); ! reqMsg.secondaryAppCoord = ncManager.getStableSecondaryCoord(); log.debug("Reporting c1=" + reqMsg.primarySysCoord + " c2=" + reqMsg.secondarySysCoord + " to logserver"); --- 91,99 ---- ReportCoordReqMsg reqMsg = new ReportCoordReqMsg(); reqMsg.primarySysCoord = ncManager.getLocalCoord(); + reqMsg.primarySysCoordError = ncManager.getLocalError(); reqMsg.primaryAppCoord = ncManager.getStableCoord(); reqMsg.secondarySysCoord = ncManager.getLocalSecondaryCoord(); ! reqMsg.secondarySysCoordError = ncManager.getLocalSecondaryError(); ! reqMsg.secondaryAppCoord = ncManager.getStableSecondaryCoord(); log.debug("Reporting c1=" + reqMsg.primarySysCoord + " c2=" + reqMsg.secondarySysCoord + " to logserver"); Index: ReportCoordReqMsg.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/log/ReportCoordReqMsg.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ReportCoordReqMsg.java 15 Feb 2007 18:01:26 -0000 1.3 --- ReportCoordReqMsg.java 5 Mar 2007 16:23:42 -0000 1.4 *************** *** 6,15 **** public class ReportCoordReqMsg extends ObjMessage { ! private static final long serialVersionUID = 3L; ! public Coordinate primarySysCoord; public Coordinate primaryAppCoord; public Coordinate secondarySysCoord; public Coordinate secondaryAppCoord; --- 6,17 ---- public class ReportCoordReqMsg extends ObjMessage { ! private static final long serialVersionUID = 4L; ! public Coordinate primarySysCoord; ! public double primarySysCoordError; public Coordinate primaryAppCoord; public Coordinate secondarySysCoord; + public double secondarySysCoordError; public Coordinate secondaryAppCoord; |
|
From: Jonathan L. <le...@us...> - 2007-03-02 22:52:35
|
Update of /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18862/src/edu/harvard/syrah/pyxida Modified Files: LogServer.java Log Message: LogServer writes per 10minute summary of nodes' coordinates. Index: LogServer.java =================================================================== RCS file: /cvsroot/pyxida/Pyxida/src/edu/harvard/syrah/pyxida/LogServer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** LogServer.java 15 Feb 2007 18:01:26 -0000 1.4 --- LogServer.java 2 Mar 2007 22:52:30 -0000 1.5 *************** *** 1,9 **** package edu.harvard.syrah.pyxida; import edu.harvard.syrah.prp.ANSI; import edu.harvard.syrah.prp.Log; import edu.harvard.syrah.pyxida.log.ReportCoordReplyMsg; import edu.harvard.syrah.pyxida.log.ReportCoordReqMsg; ! import edu.harvard.syrah.sbon.async.*; import edu.harvard.syrah.sbon.async.CBResult.CBState; import edu.harvard.syrah.sbon.async.CallbacksIF.CB0; --- 1,21 ---- package edu.harvard.syrah.pyxida; + import java.io.BufferedWriter; + import java.io.File; + import java.io.FileWriter; + import java.io.PrintWriter; + import java.text.SimpleDateFormat; + import java.util.Date; + import java.util.HashMap; + import java.util.Map; + import edu.harvard.syrah.prp.ANSI; import edu.harvard.syrah.prp.Log; import edu.harvard.syrah.pyxida.log.ReportCoordReplyMsg; import edu.harvard.syrah.pyxida.log.ReportCoordReqMsg; ! import edu.harvard.syrah.pyxida.nc.lib.Coordinate; ! import edu.harvard.syrah.sbon.async.CBResult; ! import edu.harvard.syrah.sbon.async.Config; ! import edu.harvard.syrah.sbon.async.EventLoop; import edu.harvard.syrah.sbon.async.CBResult.CBState; import edu.harvard.syrah.sbon.async.CallbacksIF.CB0; *************** *** 11,15 **** import edu.harvard.syrah.sbon.comm.AddressFactory; import edu.harvard.syrah.sbon.comm.AddressIF; ! import edu.harvard.syrah.sbon.comm.obj.*; public class LogServer { --- 23,29 ---- import edu.harvard.syrah.sbon.comm.AddressFactory; import edu.harvard.syrah.sbon.comm.AddressIF; ! import edu.harvard.syrah.sbon.comm.obj.ObjComm; ! import edu.harvard.syrah.sbon.comm.obj.ObjCommCB; ! import edu.harvard.syrah.sbon.comm.obj.ObjCommIF; public class LogServer { *************** *** 29,39 **** public static final int COMM_PORT = Integer.parseInt(Config.getConfigProps().getProperty("pyxida.port", "55504")); ! // By default tell nodes to report their coords every 10 seconds ! private static final long LOG_INTERVAL = Long.valueOf(Config.getConfigProps().getProperty("pyxida.logserver.log_interval", "10000")); private static LogServer logServer = null; ObjCommIF comm; ! private void init(final CB0 cbDone) { // Initiliase the ObjComm communication module --- 43,72 ---- public static final int COMM_PORT = Integer.parseInt(Config.getConfigProps().getProperty("pyxida.port", "55504")); ! // By default tell nodes to report their coords every 10 seconds ! private static final long LOG_INTERVAL = Long.valueOf(Config.getConfigProps().getProperty("pyxida.logserver.log_interval", "10000")); + // Output a summary of nodes we have heard from recently at this rate (10 minutes) + private static final long DUMP_COORD_INTERVAL = Long.valueOf(Config.getConfigProps().getProperty("pyxida.logserver.dump_coord_interval", "600000")); + //private static final long DUMP_COORD_INTERVAL = Long.valueOf(Config.getConfigProps().getProperty("pyxida.logserver.dump_coord_interval", "20000")); + private static final String DUMP_COORD_PATH = String.valueOf(Config.getConfigProps().getProperty("pyxida.logserver.dump_coord_path", "/nc/log-pyxida-coords")); + + private static LogServer logServer = null; ObjCommIF comm; ! final CB0 dumpCoordsCB; ! final SimpleDateFormat dateFormat; ! Map<AddressIF,CoordDesc> addr2coords = new HashMap<AddressIF,CoordDesc>(); ! ! public LogServer () { ! dateFormat = new SimpleDateFormat("yyyyMMdd-HHmm"); ! dumpCoordsCB = new CB0() { ! protected void cb(CBResult result) { ! dumpCoords(); ! registerDumpCoordsTimer(); ! } ! }; ! } ! private void init(final CB0 cbDone) { // Initiliase the ObjComm communication module *************** *** 49,58 **** --- 82,97 ---- } }); + registerDumpCoordsTimer (); } + void registerDumpCoordsTimer () { + EventLoop.get().registerTimerCB(DUMP_COORD_INTERVAL, dumpCoordsCB); + } + /** * @param args */ public static void main(String[] args) { + log.main("Pyxida Log Server Version 0.1 starting..."); *************** *** 110,114 **** System.exit(0); } ! class ReportCoordMsgHandler extends ObjCommCB<ReportCoordReqMsg> { private final Log log = new Log(ReportCoordMsgHandler.class); --- 149,208 ---- System.exit(0); } ! ! class CoordDesc { ! public final Coordinate primarySysCoord; ! public final Coordinate primaryAppCoord; ! ! public final Coordinate secondarySysCoord; ! public final Coordinate secondaryAppCoord; ! ! // could be used to preserve coords longer than window ! //public final long timestamp; ! ! // could add counter to tell number of updates from a node ! ! // not doing clone -- problem? ! ! public CoordDesc (ReportCoordReqMsg msg) { ! primarySysCoord = msg.primarySysCoord; ! primaryAppCoord = msg.primaryAppCoord; ! ! secondarySysCoord = msg.secondarySysCoord; ! secondaryAppCoord = msg.secondaryAppCoord; ! //timestamp = ! } ! ! public String toString () { ! return (primaryAppCoord.toString()); ! //return (" sc1=" + primarySysCoord + " ac1=" + primaryAppCoord + " sc2=" + secondarySysCoord + " ac2=" + secondaryAppCoord); ! ! } ! ! } ! ! void dumpCoords () { ! ! String file = DUMP_COORD_PATH+"/"+dateFormat.format(new Date())+".coords"; ! log.info ("Dumping coords to file "+file); ! ! File coordFile = new File(file); ! try { ! PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file))); ! ! for (Map.Entry<AddressIF,CoordDesc> entry : addr2coords.entrySet()) { ! out.write (entry.getKey()+ " "+entry.getValue()+"\n"); ! } ! ! out.flush(); ! out.close(); ! log.info("wrote to file "+file); ! } catch (Exception ex) { ! System.err.println("writing "+file+" failed. Exiting"); ! } ! ! ! addr2coords.clear(); ! } ! class ReportCoordMsgHandler extends ObjCommCB<ReportCoordReqMsg> { private final Log log = new Log(ReportCoordMsgHandler.class); *************** *** 118,123 **** switch (result.state) { case OK: { ! log.info("a=" + remoteAddr + " sc1=" + reqMsg.primarySysCoord + " ac1=" + reqMsg.primaryAppCoord + " sc2=" + reqMsg.secondarySysCoord + " ac2=" + reqMsg.secondaryAppCoord); ReportCoordReplyMsg replyMsg = new ReportCoordReplyMsg(); replyMsg.interval = LOG_INTERVAL; --- 212,220 ---- switch (result.state) { case OK: { ! log.info("a=" + remoteAddr + " sc1=" + reqMsg.primarySysCoord + " ac1=" + reqMsg.primaryAppCoord + " sc2=" + reqMsg.secondarySysCoord + " ac2=" + reqMsg.secondaryAppCoord); + // just scribble over old version if there is one + addr2coords.put(remoteAddr,new CoordDesc(reqMsg)); + ReportCoordReplyMsg replyMsg = new ReportCoordReplyMsg(); replyMsg.interval = LOG_INTERVAL; |
|
From: Peter P. <pr...@us...> - 2007-03-02 12:07:37
|
Update of /cvsroot/pyxida/Pyxida/web In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8146/web Modified Files: rsync.pl Log Message: Updated rsync script to fix permissions Index: rsync.pl =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/rsync.pl,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** rsync.pl 4 Dec 2006 13:14:19 -0000 1.3 --- rsync.pl 2 Mar 2007 12:07:36 -0000 1.4 *************** *** 24,28 **** print "$cmd"; ! exec ($cmd); --- 24,34 ---- print "$cmd"; ! system ($cmd); ! ! print "Fixing ownerships and permissions...\n"; ! ! system "ssh $USER\@shell.sourceforge.net chown -v -R $USER:pyxida /home/groups/p/py/pyxida/htdocs"; ! ! system "ssh $USER\@shell.sourceforge.net chmod -v -R g+w /home/groups/p/py/pyxida/htdocs"; |
|
From: Peter P. <pr...@us...> - 2007-02-21 15:41:19
|
Update of /cvsroot/pyxida/Pyxida/web/javadoc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7508/web/javadoc Modified Files: package-list index.html overview-summary.html Added Files: tree.html about.html serialized-form.html deprecated.html gjdoc.properties alphaindex.html all-classes.html all-packages.html Log Message: Made a new Pyxida release 0.1.4 --- NEW FILE: gjdoc.properties --- #GNU Gjdoc API Documentation Set Descriptor #Wed Feb 21 15:38:52 GMT 2007 gjdoc.version=0.7.7 gjdoc.compat=true Index: index.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/index.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** index.html 6 Feb 2007 17:54:04 -0000 1.7 --- index.html 21 Feb 2007 15:40:48 -0000 1.8 *************** *** 1,37 **** ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> ! <!--NewPage--> ! <HTML> ! <HEAD> ! <!-- Generated by javadoc on Wed Jan 03 11:53:50 EST 2007--> ! <TITLE> ! Generated Documentation (Untitled) ! </TITLE> ! <SCRIPT type="text/javascript"> ! targetPage = "" + window.location.search; ! if (targetPage != "" && targetPage != "undefined") ! targetPage = targetPage.substring(1); ! function loadFrames() { ! if (targetPage != "" && targetPage != "undefined") ! top.classFrame.location = top.targetPage; ! } ! </SCRIPT> ! <NOSCRIPT> ! </NOSCRIPT> ! </HEAD> ! <FRAMESET cols="20%,80%" title="" onLoad="top.loadFrames()"> ! <FRAMESET rows="30%,70%" title="" onLoad="top.loadFrames()"> ! <FRAME src="overview-frame.html" name="packageListFrame" title="All Packages"> ! <FRAME src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)"> ! </FRAMESET> ! <FRAME src="overview-summary.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes"> ! <NOFRAMES> ! <H2> ! Frame Alert</H2> ! ! <P> ! This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. ! <BR> ! Link to<A HREF="overview-summary.html">Non-frame version.</A> ! </NOFRAMES> ! </FRAMESET> ! </HTML> --- 1,2 ---- ! <?xml version="1.0" encoding="UTF-8"?> ! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Generated API Documentation</title><script src="./resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><frameset cols="20%,80%"><frameset rows="25%,75%"><frame src="all-packages.html" name="packages"/><frame src="all-classes.html" name="classes"/></frameset><frame src="overview-summary.html" name="content"/></frameset></html> \ No newline at end of file Index: overview-summary.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/overview-summary.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** overview-summary.html 6 Feb 2007 17:54:04 -0000 1.7 --- overview-summary.html 21 Feb 2007 15:40:48 -0000 1.8 *************** *** 1,162 **** ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ! <!--NewPage--> ! <HTML> ! <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Jan 03 11:53:50 EST 2007 --> ! <TITLE> ! Overview ! </TITLE> ! ! <META NAME="keywords" CONTENT="Overview"> ! ! <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"> ! ! <SCRIPT type="text/javascript"> ! function windowTitle() ! { ! parent.document.title="Overview"; ! } ! </SCRIPT> ! <NOSCRIPT> ! </NOSCRIPT> ! ! </HEAD> ! ! <BODY BGCOLOR="white" onload="windowTitle();"> ! ! ! <!-- ========= START OF TOP NAVBAR ======= --> ! <A NAME="navbar_top"><!-- --></A> ! <A HREF="#skip-navbar_top" title="Skip navigation links"></A> ! <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> ! <TR> ! <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> ! <A NAME="navbar_top_firstrow"><!-- --></A> ! <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> ! <TR ALIGN="center" VALIGN="top"> ! <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Overview</B></FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Package</FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> ! </TR> ! </TABLE> ! </TD> ! <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> ! </EM> ! </TD> ! </TR> ! ! <TR> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! PREV ! NEXT</FONT></TD> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! <A HREF="index.html?overview-summary.html" target="_top"><B>FRAMES</B></A> ! <A HREF="overview-summary.html" target="_top"><B>NO FRAMES</B></A> ! <SCRIPT type="text/javascript"> ! <!-- ! if(window==top) { ! document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>'); ! } ! //--> ! </SCRIPT> ! <NOSCRIPT> ! <A HREF="allclasses-noframe.html"><B>All Classes</B></A> ! </NOSCRIPT> ! ! ! </FONT></TD> ! </TR> ! </TABLE> ! <A NAME="skip-navbar_top"></A> ! <!-- ========= END OF TOP NAVBAR ========= --> ! ! <HR> ! ! <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> ! <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> ! <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> ! <B>Packages</B></FONT></TH> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD WIDTH="20%"><B><A HREF="edu/harvard/syrah/pyxida/package-summary.html">edu.harvard.syrah.pyxida</A></B></TD> ! <TD> </TD> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD WIDTH="20%"><B><A HREF="edu/harvard/syrah/pyxida/api/package-summary.html">edu.harvard.syrah.pyxida.api</A></B></TD> ! <TD> </TD> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD WIDTH="20%"><B><A HREF="edu/harvard/syrah/pyxida/nc/package-summary.html">edu.harvard.syrah.pyxida.nc</A></B></TD> ! <TD> </TD> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD WIDTH="20%"><B><A HREF="edu/harvard/syrah/pyxida/nc/lib/package-summary.html">edu.harvard.syrah.pyxida.nc.lib</A></B></TD> ! <TD> </TD> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD WIDTH="20%"><B><A HREF="edu/harvard/syrah/pyxida/ping/package-summary.html">edu.harvard.syrah.pyxida.ping</A></B></TD> ! <TD> </TD> ! </TR> ! </TABLE> ! ! <P> ! <HR> ! ! ! <!-- ======= START OF BOTTOM NAVBAR ====== --> ! <A NAME="navbar_bottom"><!-- --></A> ! <A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> ! <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> ! <TR> ! <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> ! <A NAME="navbar_bottom_firstrow"><!-- --></A> ! <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> ! <TR ALIGN="center" VALIGN="top"> ! <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Overview</B></FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Package</FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> ! </TR> ! </TABLE> ! </TD> ! <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> ! </EM> ! </TD> ! </TR> ! ! <TR> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! PREV ! NEXT</FONT></TD> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! <A HREF="index.html?overview-summary.html" target="_top"><B>FRAMES</B></A> ! <A HREF="overview-summary.html" target="_top"><B>NO FRAMES</B></A> ! <SCRIPT type="text/javascript"> ! <!-- ! if(window==top) { ! document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>'); ! } ! //--> ! </SCRIPT> ! <NOSCRIPT> ! <A HREF="allclasses-noframe.html"><B>All Classes</B></A> ! </NOSCRIPT> ! ! ! </FONT></TD> ! </TR> ! </TABLE> ! <A NAME="skip-navbar_bottom"></A> ! <!-- ======== END OF BOTTOM NAVBAR ======= --> ! ! <HR> ! ! </BODY> ! </HTML> --- 1,2 ---- ! <?xml version="1.0" encoding="UTF-8"?> ! <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "./resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Generated API Documentation</title><script src="./resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content overview" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item active">Overview</span> <span class="navbar item disabled">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="./alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="./deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="./about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="./index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="overview-summary.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><div class="overview description top"></div><dl class="table container"><dd><table class="overview summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">All Packages</h2></td></tr><tr><td class="left"><a href="edu/harvard/syrah/pyxida/package-summary.html">edu.harvard.syrah.pyxida</a></td><td class="right"></td></tr><tr><td class="left"><a href="edu/harvard/syrah/pyxida/api/package-summary.html">edu.harvard.syrah.pyxida.api</a></td><td class="right"></td></tr><tr><td class="left"><a href="edu/harvard/syrah/pyxida/log/package-summary.html">edu.harvard.syrah.pyxida.log</a></td><td class="right"></td></tr><tr><td class="left"><a href="edu/harvard/syrah/pyxida/nc/package-summary.html">edu.harvard.syrah.pyxida.nc</a></td><td class="right"></td></tr><tr><td class="left"><a href="edu/harvard/syrah/pyxida/nc/lib/package-summary.html">edu.harvard.syrah.pyxida.nc.lib</a></td><td class="right"></td></tr><tr><td class="left"><a href="edu/harvard/syrah/pyxida/ping/package-summary.html">edu.harvard.syrah.pyxida.ping</a></td><td class="right"></td></tr></table></dd></dl><a name="description" id="description"/><div class="overview description full"></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item active">Overview</span> <span class="navbar item disabled">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="./alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="./deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="./about.html">About</a></span></div></td></tr></table></body></html> \ No newline at end of file --- NEW FILE: alphaindex.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "./resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Alphabetical Index</title><script src="./resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="./resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content index" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="./overview-summary.html">Overview</a></span> <span class="navbar item disabled">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item active">Index</span> <span class="navbar item enabled"><a href="./deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="./about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="./index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="alphaindex.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="index title">Alphabetical Index</h1><div class="index letters"><span class="index letter"><a href="#A">A</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#B">B</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#C">C</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#D">D</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#E">E</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#G">G</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#H">H</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#I">I</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#J">J</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#K">K</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#L">L</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#M">M</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#N">N</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#O">O</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#P">P</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#R">R</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#S">S</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#T">T</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#U">U</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#V">V</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#W">W</a></span><span class="index letter spacer"> </span><span class="index letter"><a href="#X">X</a></span><span class="index letter spacer"> </span></div><a name="A" id="A"/><h2 class="index category header">A</h2><div class="index category"><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/ObserverList.html#add(ApplicationObserver)">add(ApplicationObserver)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/ObserverList.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">ObserverList</a></div><div class="description"> Adds the given observer to the list of observers.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html#add(double)">add(double)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">EWMAStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html#add(double)">add(double)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">WindowStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#add(Vec)">add(Vec)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html#add(Vec)">add(Vec)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Vec</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#addHost(T)">addHost(T)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"> Notifies this <code>VivaldiClient</code> object that a host that supports Vivaldi has joined the system.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#addHost(T,Coordinate,double,long,boolean)">addHost(T,Coordinate,double,long,boolean)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"> Notifies this <code>VivaldiClient</code> object that a host that supports Vivaldi and has the provided coordinates and error has joined the system.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/ping/JpcapPinger.html#addJpcapRequest(AddressIF,CB1<Double>)">addJpcapRequest(AddressIF,CB1<Double>)</a> - method in class edu.harvard.syrah.pyxida.ping.<a href="./edu/harvard/syrah/pyxida/ping/JpcapPinger.html" title="Class in edu.harvard.syrah.pyxida.ping">JpcapPinger</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#addNeighbor(RemoteState<T>)">addNeighbor(RemoteState<T>)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/ping/PingManager.html#addPingRequest(AddressIF,AddressIF,CB1<Float>)">addPingRequest(AddressIF,AddressIF,CB1<Float>)</a> - method in class edu.harvard.syrah.pyxida.ping.<a href="./edu/harvard/syrah/pyxida/ping/PingManager.html" title="Class in edu.harvard.syrah.pyxida.ping">PingManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/ping/PingManager.html#addPingRequest(AddressIF,CB1<Double>)">addPingRequest(AddressIF,CB1<Double>)</a> - method in class edu.harvard.syrah.pyxida.ping.<a href="./edu/harvard/syrah/pyxida/ping/PingManager.html" title="Class in edu.harvard.syrah.pyxida.ping">PingManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html#addr">addr</a> - field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">RemoteState<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/ping/JpcapPinger.html#addRequest(edu.harvard.syrah.pyxida.ping.JpcapPinger.JpcapPingData)">addRequest(edu.harvard.syrah.pyxida.ping.JpcapPinger.JpcapPingData)</a> - method in class edu.harvard.syrah.pyxida.ping.<a href="./edu/harvard/syrah/pyxida/ping/JpcapPinger.html" title="Class in edu.harvard.syrah.pyxida.ping">JpcapPinger</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html#addSample(double,long,Coordinate,double,long)">addSample(double,long,Coordinate,double,long)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">RemoteState<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="edu/harvard/syrah/pyxida/api/APIInstanceIF.html">APIInstanceIF</a> - interface edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/APIInstanceIF.html" title="Interface in edu.harvard.syrah.pyxida.api">APIInstanceIF</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="edu/harvard/syrah/pyxida/api/APIManager.html">APIManager</a> - class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/APIManager.html" title="Class in edu.harvard.syrah.pyxida.api">APIManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/APIManager.html#APIManager(NCManager)">APIManager(NCManager)</a> - constructor for class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/APIManager.html" title="Class in edu.harvard.syrah.pyxida.api">APIManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#app_coord">app_coord</a> - field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#APP_UPDATE_THRESHOLD">APP_UPDATE_THRESHOLD</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="edu/harvard/syrah/pyxida/nc/lib/ApplicationObserver.html">ApplicationObserver</a> - interface edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/ApplicationObserver.html" title="Interface in edu.harvard.syrah.pyxida.nc.lib">ApplicationObserver</a></div><div class="description"> An observer to be notified when the application coordinates change.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html#asCoordinateFromZero(boolean)">asCoordinateFromZero(boolean)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Vec</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#assign(Coordinate)">assign(Coordinate)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html#assign(Coordinate,double,long)">assign(Coordinate,double,long)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">RemoteState<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#asVectorFromZero(boolean)">asVectorFromZero(boolean)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#atOrigin()">atOrigin()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div></div><a name="B" id="B"/><h2 class="index category header">B</h2><div class="index category"><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#bump()">bump()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div></div><a name="C" id="C"/><h2 class="index category header">C</h2><div class="index category"><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html#calcPercentile(double)">calcPercentile(double)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">WindowStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/ping/JpcapPinger.html#cbTimeout">cbTimeout</a> - field in class edu.harvard.syrah.pyxida.ping.<a href="./edu/harvard/syrah/pyxida/ping/JpcapPinger.html" title="Class in edu.harvard.syrah.pyxida.ping">JpcapPinger</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#checkHeight()">checkHeight()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#CLASS_HASH">CLASS_HASH</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html#CLASS_HASH">CLASS_HASH</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Vec</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/ObserverList.html#clear()">clear()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/ObserverList.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">ObserverList</a></div><div class="description"> Removes all the observers from the list.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html#clear()">clear()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">WindowStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/LogServer.html#COMM_PORT">COMM_PORT</a> - static field in class edu.harvard.syrah.pyxida.<a href="./edu/harvard/syrah/pyxida/LogServer.html" title="Class in edu.harvard.syrah.pyxida">LogServer</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/Pyxida.html#COMM_PORT">COMM_PORT</a> - static field in class edu.harvard.syrah.pyxida.<a href="./edu/harvard/syrah/pyxida/Pyxida.html" title="Class in edu.harvard.syrah.pyxida">Pyxida</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#computeApplicationStatistics()">computeApplicationStatistics()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/ObserverList.html#contains(ApplicationObserver)">contains(ApplicationObserver)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/ObserverList.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">ObserverList</a></div><div class="description"> Returns whether the list contains the given observer.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#containsHost(T)">containsHost(T)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"> Returns whether the given host has been registered with this <code>VivaldiClient</code> object.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#COORD_CONTROL">COORD_CONTROL</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#COORD_ERROR">COORD_ERROR</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="edu/harvard/syrah/pyxida/nc/lib/Coordinate.html">Coordinate</a> - class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"> A coordinate in the Euclidian space.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#Coordinate(Coordinate)">Coordinate(Coordinate)</a> - constructor for class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#Coordinate(double[],boolean)">Coordinate(double[],boolean)</a> - constructor for class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"> Creates a new coordinate having a position specified by the array <code>init_coords</code>.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#Coordinate(float[])">Coordinate(float[])</a> - constructor for class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"> Creates a new coordinate having a position specified by the array <code>init_coords</code>.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#Coordinate(int)">Coordinate(int)</a> - constructor for class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"> Creates a new coordinate having a position at the origin.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#Coordinate(int,DataInputStream)">Coordinate(int,DataInputStream)</a> - constructor for class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/ApplicationObserver.html#coordinatesUpdated(Coordinate)">coordinatesUpdated(Coordinate)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/ApplicationObserver.html" title="Interface in edu.harvard.syrah.pyxida.nc.lib">ApplicationObserver</a></div><div class="description"> This method is invoked when the application-level coordinates are updated.</div></div><div class="index entry"><div class="key"><a href="edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html">CoordRequestMsg</a> - class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html" title="Class in edu.harvard.syrah.pyxida.nc">CoordRequestMsg</a></div><div class="description"> Requests the receiving node's current coordinate, confidence and last update time.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html#CoordRequestMsg()">CoordRequestMsg()</a> - constructor for class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html" title="Class in edu.harvard.syrah.pyxida.nc">CoordRequestMsg</a></div><div class="description"> Creates a CoordRequestMsg </div></div><div class="index entry"><div class="key"><a href="edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html">CoordResponseMsg</a> - class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html" title="Class in edu.harvard.syrah.pyxida.nc">CoordResponseMsg</a></div><div class="description"> Response to GossipRequestMsg.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html#CoordResponseMsg(Coordinate,double,long)">CoordResponseMsg(Coordinate,double,long)</a> - constructor for class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html" title="Class in edu.harvard.syrah.pyxida.nc">CoordResponseMsg</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#coords">coords</a> - field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#crawler_log">crawler_log</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#createProxyCoord(AddressIF,long)">createProxyCoord(AddressIF,long)</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html#createProxyCoord(String,int,CB1<String>)">createProxyCoord(String,int,CB1<String>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html" title="Class in edu.harvard.syrah.pyxida.api">ExternalAPI</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html#createProxyCoord(String,int,CB1<String>)">createProxyCoord(String,int,CB1<String>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html" title="Interface in edu.harvard.syrah.pyxida.api">ExternalAPIIF</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#current_coords">current_coords</a> - field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#CURRENT_VERSION">CURRENT_VERSION</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div></div><a name="D" id="D"/><h2 class="index category header">D</h2><div class="index category"><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#debug">debug</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html#debug">debug</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">WindowStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#debugCrawler">debugCrawler</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#debugGood">debugGood</a> - static field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#DEFAULT_PROXY_LEASE">DEFAULT_PROXY_LEASE</a> - static field in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"> Default lifetime that proxy coordinates are managed for.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/ping/Pinger.html#defaultPingAddr">defaultPingAddr</a> - field in class edu.harvard.syrah.pyxida.ping.<a href="./edu/harvard/syrah/pyxida/ping/Pinger.html" title="Class in edu.harvard.syrah.pyxida.ping">Pinger</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#destroyProxyCoord(AddressIF)">destroyProxyCoord(AddressIF)</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html#destroyProxyCoord(String,CB1<String>)">destroyProxyCoord(String,CB1<String>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html" title="Class in edu.harvard.syrah.pyxida.api">ExternalAPI</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html#destroyProxyCoord(String,CB1<String>)">destroyProxyCoord(String,CB1<String>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html" title="Interface in edu.harvard.syrah.pyxida.api">ExternalAPIIF</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/ping/JpcapPinger.html#device">device</a> - static field in class edu.harvard.syrah.pyxida.ping.<a href="./edu/harvard/syrah/pyxida/ping/JpcapPinger.html" title="Class in edu.harvard.syrah.pyxida.ping">JpcapPinger</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html#direction">direction</a> - field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Vec</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html#dirty">dirty</a> - field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">WindowStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#distanceTo(Coordinate)">distanceTo(Coordinate)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#distanceToNonOriginCoord(Coordinate)">distanceToNonOriginCoord(Coordinate)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"> Returns the Euclidian distance to the given coordinate parameter.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#Double> getStatistics()">Double> getStatistics()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div></div><a name="E" id="E"/><h2 class="index category header">E</h2><div class="index category"><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#equals(Object)">equals(Object)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html#equals(Object)">equals(Object)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Vec</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#error">error</a> - field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#estimateRTT(AddressIF,AddressIF,CB1<Double>)">estimateRTT(AddressIF,AddressIF,CB1<Double>)</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"> Fetches coordinates from two nodes and returns the distance between them.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html#estimateRTT(String,String,CB1<Double>)">estimateRTT(String,String,CB1<Double>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html" title="Class in edu.harvard.syrah.pyxida.api">ExternalAPI</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html#estimateRTT(String,String,CB1<Double>)">estimateRTT(String,String,CB1<Double>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html" title="Interface in edu.harvard.syrah.pyxida.api">ExternalAPIIF</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html">EWMAStatistic</a> - class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">EWMAStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html#EWMAStatistic()">EWMAStatistic()</a> - constructor for class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">EWMAStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html#EWMAStatistic(double)">EWMAStatistic(double)</a> - constructor for class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">EWMAStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="edu/harvard/syrah/pyxida/api/ExternalAPI.html">ExternalAPI</a> - class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html" title="Class in edu.harvard.syrah.pyxida.api">ExternalAPI</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html#ExternalAPI(NCManager)">ExternalAPI(NCManager)</a> - constructor for class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html" title="Class in edu.harvard.syrah.pyxida.api">ExternalAPI</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="edu/harvard/syrah/pyxida/api/ExternalAPIIF.html">ExternalAPIIF</a> - interface edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html" title="Interface in edu.harvard.syrah.pyxida.api">ExternalAPIIF</a></div><div class="description"></div></div></div><a name="G" id="G"/><h2 class="index category header">G</h2><div class="index category"><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html#gain">gain</a> - field in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">EWMAStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html#get()">get()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">EWMAStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html#getAddress()">getAddress()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">RemoteState<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#getAge(long)">getAge(long)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"> Returns the age of our coordinate Note that this does not require clock-synchronization because it is relative to our coordinate </div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#getApplicationCoords()">getApplicationCoords()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"> Returns the application-level Vivaldi coordinates.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html#getComponents()">getComponents()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Vec</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#getDirection(Coordinate)">getDirection(Coordinate)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#getDownNeighbours()">getDownNeighbours()</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#getHosts()">getHosts()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"> Returns all hosts that support Vivaldi and have been registered with this <code>VivaldiClient</code> object.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html#getLastCoordinate()">getLastCoordinate()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">RemoteState<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html#getLastError()">getLastError()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">RemoteState<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html#getLastUpdateTime()">getLastUpdateTime()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/RemoteState.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">RemoteState<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html#getLength()">getLength()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Vec</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#getLocalCoord()">getLocalCoord()</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html#getLocalCoord(CB1<Vector<Double>>)">getLocalCoord(CB1<Vector<Double>>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html" title="Class in edu.harvard.syrah.pyxida.api">ExternalAPI</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html#getLocalCoord(CB1<Vector<Double>>)">getLocalCoord(CB1<Vector<Double>>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html" title="Interface in edu.harvard.syrah.pyxida.api">ExternalAPIIF</a></div><div class="description"> Returns a coordinate of either a substrate node or a local proxy node </div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#getLocalError()">getLocalError()</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html#getLocalError(CB1<Double>)">getLocalError(CB1<Double>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPI.html" title="Class in edu.harvard.syrah.pyxida.api">ExternalAPI</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html#getLocalError(CB1<Double>)">getLocalError(CB1<Double>)</a> - method in class edu.harvard.syrah.pyxida.api.<a href="./edu/harvard/syrah/pyxida/api/ExternalAPIIF.html" title="Interface in edu.harvard.syrah.pyxida.api">ExternalAPIIF</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#getLocalSecondaryCoord()">getLocalSecondaryCoord()</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#getLocalSecondaryError()">getLocalSecondaryError()</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html#getMean()">getMean()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">WindowStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#getNeighborToPing(long)">getNeighborToPing(long)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html#getNumDimensions()">getNumDimensions()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Coordinate.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Coordinate</a></div><div class="description"> Returns the number of dimensions this coordinate has.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#getNumDimensions()">getNumDimensions()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"> Returns the dimension of the Euclidian space coordinates are embedded in.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html#getNumDimensions()">getNumDimensions()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/Vec.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">Vec</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html#getObserverList()">getObserverList()</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/NCClient.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">NCClient<T></a></div><div class="description"> Returns the list of observers, to which observers for the application-level coordinate can be added, removed, and so forth.</div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#getPendingNeighbours()">getPendingNeighbours()</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html#getPercentile(double)">getPercentile(double)</a> - method in class edu.harvard.syrah.pyxida.nc.lib.<a href="./edu/harvard/syrah/pyxida/nc/lib/WindowStatistic.html" title="Class in edu.harvard.syrah.pyxida.nc.lib">WindowStatistic</a></div><div class="description"></div></div><div class="index entry"><div class="key"><a href="./edu/harvard/syrah/pyxida/nc/NCManager.html#getProxyCoord(AddressIF)">getProxyCoord(AddressIF)</a> - method in class edu.harvard.syrah.pyxida.nc.<a href="./edu... [truncated message content] |
|
From: Peter P. <pr...@us...> - 2007-02-21 15:41:19
|
Update of /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7508/web/javadoc/edu/harvard/syrah/pyxida Modified Files: Pyxida.html package-summary.html Added Files: classes.html tree.html LogServer.html Log Message: Made a new Pyxida release 0.1.4 Index: package-summary.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/package-summary.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** package-summary.html 6 Feb 2007 17:54:04 -0000 1.7 --- package-summary.html 21 Feb 2007 15:40:47 -0000 1.8 *************** *** 1,152 **** ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ! <!--NewPage--> ! <HTML> ! <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Jan 03 11:53:50 EST 2007 --> ! <TITLE> ! edu.harvard.syrah.pyxida ! </TITLE> ! ! <META NAME="keywords" CONTENT="edu.harvard.syrah.pyxida package"> ! ! <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> ! ! <SCRIPT type="text/javascript"> ! function windowTitle() ! { ! parent.document.title="edu.harvard.syrah.pyxida"; ! } ! </SCRIPT> ! <NOSCRIPT> ! </NOSCRIPT> ! ! </HEAD> ! ! <BODY BGCOLOR="white" onload="windowTitle();"> ! ! ! <!-- ========= START OF TOP NAVBAR ======= --> ! <A NAME="navbar_top"><!-- --></A> ! <A HREF="#skip-navbar_top" title="Skip navigation links"></A> ! <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> ! <TR> ! <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> ! <A NAME="navbar_top_firstrow"><!-- --></A> ! <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> ! <TR ALIGN="center" VALIGN="top"> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> ! <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> ! </TR> ! </TABLE> ! </TD> ! <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> ! </EM> ! </TD> ! </TR> ! ! <TR> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! PREV PACKAGE ! <A HREF="../../../../edu/harvard/syrah/pyxida/api/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! <A HREF="../../../../index.html?edu/harvard/syrah/pyxida/package-summary.html" target="_top"><B>FRAMES</B></A> ! <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A> ! <SCRIPT type="text/javascript"> ! <!-- ! if(window==top) { ! document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); ! } ! //--> ! </SCRIPT> ! <NOSCRIPT> ! <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> ! </NOSCRIPT> ! ! ! </FONT></TD> ! </TR> ! </TABLE> ! <A NAME="skip-navbar_top"></A> ! <!-- ========= END OF TOP NAVBAR ========= --> ! ! <HR> ! <H2> ! Package edu.harvard.syrah.pyxida ! </H2> ! ! <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> ! <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> ! <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> ! <B>Class Summary</B></FONT></TH> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD WIDTH="15%"><B><A HREF="../../../../edu/harvard/syrah/pyxida/Pyxida.html" title="class in edu.harvard.syrah.pyxida">Pyxida</A></B></TD> ! <TD> </TD> ! </TR> ! </TABLE> ! ! ! <P> ! <DL> ! </DL> ! <HR> ! ! ! <!-- ======= START OF BOTTOM NAVBAR ====== --> ! <A NAME="navbar_bottom"><!-- --></A> ! <A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> ! <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> ! <TR> ! <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> ! <A NAME="navbar_bottom_firstrow"><!-- --></A> ! <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> ! <TR ALIGN="center" VALIGN="top"> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> ! <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> ! </TR> ! </TABLE> ! </TD> ! <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> ! </EM> ! </TD> ! </TR> ! ! <TR> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! PREV PACKAGE ! <A HREF="../../../../edu/harvard/syrah/pyxida/api/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! <A HREF="../../../../index.html?edu/harvard/syrah/pyxida/package-summary.html" target="_top"><B>FRAMES</B></A> ! <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A> ! <SCRIPT type="text/javascript"> ! <!-- ! if(window==top) { ! document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); ! } ! //--> ! </SCRIPT> ! <NOSCRIPT> ! <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> ! </NOSCRIPT> ! ! ! </FONT></TD> ! </TR> ! </TABLE> ! <A NAME="skip-navbar_bottom"></A> ! <!-- ======== END OF BOTTOM NAVBAR ======= --> ! ! <HR> ! ! </BODY> ! </HTML> --- 1,3 ---- ! <?xml version="1.0" encoding="UTF-8"?> ! <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida</title><script src="../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida packages"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content package" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../overview-summary.html">Overview</a></span> <span class="navbar item active">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../about.html">About</a></span></div></td></tr><tr><td class="navi">Prev Package | <a href="../../../../edu/harvard/syrah/pyxida/api/package-summary.html">Next Package</a></td><td class="navi"><a href="../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="package-summary.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="package title">Package edu.harvard.syrah.pyxida</h1><div class="package description top"></div><dl class="table container"><dd><table class="package summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Class Summary</h2></td></tr><tr><td class="left"><a href="../../../../edu/harvard/syrah/pyxida/LogServer.html" title="Class in edu.harvard.syrah.pyxida">LogServer</a></td><td class="right"></td></tr><tr><td class="left"><a href="../../../../edu/harvard/syrah/pyxida/Pyxida.html" title="Class in edu.harvard.syrah.pyxida">Pyxida</a></td><td class="right"></td></tr></table></dd></dl> ! <a name="description" id="description"/><div class="package description full"></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../overview-summary.html">Overview</a></span> <span class="navbar item active">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../about.html">About</a></span></div></td></tr></table></body></html> \ No newline at end of file --- NEW FILE: LogServer.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>LogServer</title><script src="../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.LogServer class"/><meta name="keywords" content="COMM_PORT"/><meta name="keywords" content="main()"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../about.html">About</a></span></div></td></tr><tr><td class="navi">Prev Class | <a href="../../../../edu/harvard/syrah/pyxida/Pyxida.html">Next Class</a></td><td class="navi"><a href="../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="LogServer.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | <a href="#summary-methods">Method</a> | Constr</td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | <a href="#detail-methods">Method</a> | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida</h3><h1 class="class title-class">Class LogServer</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.LogServer</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">LogServer</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#COMM_PORT">COMM_PORT</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#main(String[])">main</a>(String[] args)</code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="COMM_PORT" id="COMM_PORT"/><div class="member detail outer"><h3 class="member detail name">COMM_PORT</h3><pre class="member detail synopsis">public static final int COMM_PORT</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="main(String[])" id="main(String[])"/><div class="member detail outer"><h3 class="member detail name">main</h3><pre class="member detail synopsis">public static void main(String[] args)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">args</code><span class="separator"> - </span><span class="description"></span></dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: tree.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida Hierarchy</title><script src="../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content packagetree" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="tree.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="package tree title">Hierarchy for Package edu.harvard.syrah.pyxida</h1><h2 class="package tree section title">Class Hierarchy</h2><ul class="tree"><li class="node"><div>java.lang.Object</div></li><li class="level"><ul><li class="node"><div>edu.harvard.syrah.pyxida.<b class="tree link"><a href="../../../../edu/harvard/syrah/pyxida/LogServer.html" title="Class in edu.harvard.syrah.pyxida">LogServer</a></b></div></li><li class="node"><div>edu.harvard.syrah.pyxida.<b class="tree link"><a href="../../../../edu/harvard/syrah/pyxida/Pyxida.html" title="Class in edu.harvard.syrah.pyxida">Pyxida</a></b></div></li></ul></li></ul><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: classes.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida Class Menu</title><script src="../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="menu classes" onload="if(parent.contentPageLoaded)parent.contentPageLoaded()"><h4 class="classes menu-title"><a href="package-summary.html" title="" target="content">edu.harvard.syrah.pyxida</a></h4><div class="classes menu-list"><p class="classes menu-subtitle">Classes</p><span class="classes menu-entry class"><a href="../../../../edu/harvard/syrah/pyxida/LogServer.html" title="edu.harvard.syrah.pyxida.LogServer" target="content">LogServer</a></span><br/><span class="classes menu-entry class"><a href="../../../../edu/harvard/syrah/pyxida/Pyxida.html" title="edu.harvard.syrah.pyxida.Pyxida" target="content">Pyxida</a></span><br/></div></body></html> Index: Pyxida.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/Pyxida.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Pyxida.html 6 Feb 2007 17:54:04 -0000 1.7 --- Pyxida.html 21 Feb 2007 15:40:47 -0000 1.8 *************** *** 1,304 **** ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ! <!--NewPage--> ! <HTML> ! <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Jan 03 11:53:49 EST 2007 --> ! <TITLE> ! Pyxida ! </TITLE> ! ! <META NAME="keywords" CONTENT="edu.harvard.syrah.pyxida.Pyxida class"> ! ! <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> ! ! <SCRIPT type="text/javascript"> ! function windowTitle() ! { ! parent.document.title="Pyxida"; ! } ! </SCRIPT> ! <NOSCRIPT> ! </NOSCRIPT> ! ! </HEAD> ! ! <BODY BGCOLOR="white" onload="windowTitle();"> ! ! ! <!-- ========= START OF TOP NAVBAR ======= --> ! <A NAME="navbar_top"><!-- --></A> ! <A HREF="#skip-navbar_top" title="Skip navigation links"></A> ! <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> ! <TR> ! <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> ! <A NAME="navbar_top_firstrow"><!-- --></A> ! <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> ! <TR ALIGN="center" VALIGN="top"> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> ! <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> ! </TR> ! </TABLE> ! </TD> ! <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> ! </EM> ! </TD> ! </TR> ! ! <TR> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! PREV CLASS ! NEXT CLASS</FONT></TD> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! <A HREF="../../../../index.html?edu/harvard/syrah/pyxida/Pyxida.html" target="_top"><B>FRAMES</B></A> ! <A HREF="Pyxida.html" target="_top"><B>NO FRAMES</B></A> ! <SCRIPT type="text/javascript"> ! <!-- ! if(window==top) { ! document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); ! } ! //--> ! </SCRIPT> ! <NOSCRIPT> ! <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> ! </NOSCRIPT> ! ! ! </FONT></TD> ! </TR> ! <TR> ! <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> ! SUMMARY: NESTED | <A HREF="#field_summary">FIELD</A> | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> ! <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> ! DETAIL: <A HREF="#field_detail">FIELD</A> | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> ! </TR> ! </TABLE> ! <A NAME="skip-navbar_top"></A> ! <!-- ========= END OF TOP NAVBAR ========= --> ! ! <HR> ! <!-- ======== START OF CLASS DATA ======== --> ! <H2> ! <FONT SIZE="-1"> ! edu.harvard.syrah.pyxida</FONT> ! <BR> ! Class Pyxida</H2> ! <PRE> ! java.lang.Object ! <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>edu.harvard.syrah.pyxida.Pyxida</B> ! </PRE> ! <HR> ! <DL> ! <DT><PRE>public class <B>Pyxida</B><DT>extends java.lang.Object</DL> ! </PRE> ! ! <P> ! <HR> ! ! <P> ! <!-- =========== FIELD SUMMARY =========== --> ! ! <A NAME="field_summary"><!-- --></A> ! <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> ! <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> ! <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> ! <B>Field Summary</B></FONT></TH> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> ! <CODE>static int</CODE></FONT></TD> ! <TD><CODE><B><A HREF="../../../../edu/harvard/syrah/pyxida/Pyxida.html#COMM_PORT">COMM_PORT</A></B></CODE> ! ! <BR> ! </TD> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> ! <CODE>static java.util.Random</CODE></FONT></TD> ! <TD><CODE><B><A HREF="../../../../edu/harvard/syrah/pyxida/Pyxida.html#random">random</A></B></CODE> ! ! <BR> ! </TD> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> ! <CODE>static long</CODE></FONT></TD> ! <TD><CODE><B><A HREF="../../../../edu/harvard/syrah/pyxida/Pyxida.html#STATS_PERIOD">STATS_PERIOD</A></B></CODE> ! ! <BR> ! </TD> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> ! <CODE>static boolean</CODE></FONT></TD> ! <TD><CODE><B><A HREF="../../../../edu/harvard/syrah/pyxida/Pyxida.html#USE_ICMP">USE_ICMP</A></B></CODE> ! ! <BR> ! </TD> ! </TR> ! </TABLE> ! ! <!-- ========== METHOD SUMMARY =========== --> ! ! <A NAME="method_summary"><!-- --></A> ! <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> ! <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> ! <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> ! <B>Method Summary</B></FONT></TH> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> ! <CODE>static void</CODE></FONT></TD> ! <TD><CODE><B><A HREF="../../../../edu/harvard/syrah/pyxida/Pyxida.html#main(java.lang.String[])">main</A></B>(java.lang.String[] args)</CODE> ! ! <BR> ! </TD> ! </TR> ! </TABLE> ! <A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A> ! <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> ! <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor"> ! <TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH> ! </TR> ! <TR BGCOLOR="white" CLASS="TableRowColor"> ! <TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD> ! </TR> ! </TABLE> ! ! <P> ! ! <!-- ============ FIELD DETAIL =========== --> ! ! <A NAME="field_detail"><!-- --></A> ! <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> ! <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> ! <TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2"> ! <B>Field Detail</B></FONT></TH> ! </TR> ! </TABLE> ! ! <A NAME="COMM_PORT"><!-- --></A><H3> ! COMM_PORT</H3> ! <PRE> ! public static final int <B>COMM_PORT</B></PRE> ! <DL> ! <DL> ! </DL> ! </DL> ! <HR> ! ! <A NAME="USE_ICMP"><!-- --></A><H3> ! USE_ICMP</H3> ! <PRE> ! public static final boolean <B>USE_ICMP</B></PRE> ! <DL> ! <DL> ! </DL> ! </DL> ! <HR> ! ! <A NAME="STATS_PERIOD"><!-- --></A><H3> ! STATS_PERIOD</H3> ! <PRE> ! public static final long <B>STATS_PERIOD</B></PRE> ! <DL> ! <DL> ! </DL> ! </DL> ! <HR> ! ! <A NAME="random"><!-- --></A><H3> ! random</H3> ! <PRE> ! public static java.util.Random <B>random</B></PRE> ! <DL> ! <DL> ! </DL> ! </DL> ! ! <!-- ============ METHOD DETAIL ========== --> ! ! <A NAME="method_detail"><!-- --></A> ! <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> ! <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> ! <TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2"> ! <B>Method Detail</B></FONT></TH> ! </TR> ! </TABLE> ! ! <A NAME="main(java.lang.String[])"><!-- --></A><H3> ! main</H3> ! <PRE> ! public static void <B>main</B>(java.lang.String[] args)</PRE> ! <DL> ! <DD><DL> ! <DT><B>Parameters:</B><DD><CODE>args</CODE> - </DL> ! </DD> ! </DL> ! <!-- ========= END OF CLASS DATA ========= --> ! <HR> ! ! ! <!-- ======= START OF BOTTOM NAVBAR ====== --> ! <A NAME="navbar_bottom"><!-- --></A> ! <A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> ! <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> ! <TR> ! <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> ! <A NAME="navbar_bottom_firstrow"><!-- --></A> ! <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> ! <TR ALIGN="center" VALIGN="top"> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> ! <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> ! </TR> ! </TABLE> ! </TD> ! <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> ! </EM> ! </TD> ! </TR> ! ! <TR> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! PREV CLASS ! NEXT CLASS</FONT></TD> ! <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> ! <A HREF="../../../../index.html?edu/harvard/syrah/pyxida/Pyxida.html" target="_top"><B>FRAMES</B></A> ! <A HREF="Pyxida.html" target="_top"><B>NO FRAMES</B></A> ! <SCRIPT type="text/javascript"> ! <!-- ! if(window==top) { ! document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); ! } ! //--> ! </SCRIPT> ! <NOSCRIPT> ! <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> ! </NOSCRIPT> ! ! ! </FONT></TD> ! </TR> ! <TR> ! <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> ! SUMMARY: NESTED | <A HREF="#field_summary">FIELD</A> | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> ! <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> ! DETAIL: <A HREF="#field_detail">FIELD</A> | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> ! </TR> ! </TABLE> ! <A NAME="skip-navbar_bottom"></A> ! <!-- ======== END OF BOTTOM NAVBAR ======= --> ! ! <HR> ! ! </BODY> ! </HTML> --- 1,2 ---- ! <?xml version="1.0" encoding="UTF-8"?> ! <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Pyxida</title><script src="../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.Pyxida class"/><meta name="keywords" content="VERSION"/><meta name="keywords" content="COMM_PORT"/><meta name="keywords" content="USE_ICMP"/><meta name="keywords" content="random"/><meta name="keywords" content="getUptimeStr()"/><meta name="keywords" content="main()"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../edu/harvard/syrah/pyxida/LogServer.html">Prev Class</a> | Next Class</td><td class="navi"><a href="../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="Pyxida.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | <a href="#summary-methods">Method</a> | Constr</td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | <a href="#detail-methods">Method</a> | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida</h3><h1 class="class title-class">Class Pyxida</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.Pyxida</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">Pyxida</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#COMM_PORT">COMM_PORT</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#USE_ICMP">USE_ICMP</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#VERSION">VERSION</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static Random</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#random">random</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getUptimeStr()">getUptimeStr</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#main(String[])">main</a>(String[] args)</code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="COMM_PORT" id="COMM_PORT"/><div class="member detail outer"><h3 class="member detail name">COMM_PORT</h3><pre class="member detail synopsis">public static final int COMM_PORT</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="USE_ICMP" id="USE_ICMP"/><div class="member detail outer"><h3 class="member detail name">USE_ICMP</h3><pre class="member detail synopsis">public static final boolean USE_ICMP</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="VERSION" id="VERSION"/><div class="member detail outer"><h3 class="member detail name">VERSION</h3><pre class="member detail synopsis">public static final String VERSION</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="random" id="random"/><div class="member detail outer"><h3 class="member detail name">random</h3><pre class="member detail synopsis">public static Random random</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="getUptimeStr()" id="getUptimeStr()"/><div class="member detail outer"><h3 class="member detail name">getUptimeStr</h3><pre class="member detail synopsis">public static String getUptimeStr()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="main(String[])" id="main(String[])"/><div class="member detail outer"><h3 class="member detail name">main</h3><pre class="member detail synopsis">public static void main(String[] args)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt><dd class="item"><code class="name">args</code><span class="separator"> - </span><span class="description"></span></dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../about.html">About</a></span></div></td></tr></table></body></html> \ No newline at end of file |
|
From: Peter P. <pr...@us...> - 2007-02-21 15:40:58
|
Update of /cvsroot/pyxida/Pyxida/web/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7508/web/bin Added Files: proxy.pl query.pl Aux.pm animateNC.pl Log Message: Made a new Pyxida release 0.1.4 --- NEW FILE: proxy.pl --- #!/usr/bin/perl use strict; use Getopt::Std; use Frontier::Client; use Data::Dumper; my $usage = "proxy.pl [options] url\n"; $usage .= " -c remote-node -l lease: create proxy coord for remote node with lease\n"; $usage .= " -d remote-node: destroy proxy coord for remote node\n"; $usage .= " -r remote-node -l lease: renew lease for this proxy coord\n"; $usage .= "\n"; $usage .= "proxy.pl -c www.google.com -l 3600000 http://righthand.eecs.harvard.edu:55501\n"; my %para = (); getopts('c:d:r:l:', \%para); ############################################################ if ($#ARGV < 0) { die ("Missing arguments\n$usage"); } my $url = $ARGV[0]; if ($url !~ /^http:\/\/.*?:\d+$/) { die ("bad url: $url\n$usage\n"); } ############################################################ my $server = Frontier::Client->new(url=>"$url"); my $lease = 3600000; if (defined($para{'l'})) { $lease = $para{'l'}; } if (defined($para{'c'})) { my $res = $server->call("pyxida.createProxyCoord",$para{'c'},$lease); print Dumper($res); #&outputBoolean($res); } elsif (defined($para{'d'})) { my $res = $server->call("pyxida.destroyProxyCoord",$para{'d'}); print Dumper($res); #&outputBoolean($res); } elsif (defined($para{'r'})) { my $res = $server->call("pyxida.renewProxyCoord",$para{'r'},$lease); print Dumper($res); #&outputBoolean($res); } else { die ("Missing arguments\n$usage"); } ############################################################ sub outputBoolean { my ($res) = @_; #print Dumper($res); #&Aux::printHash($hash); my $success = $res->value; if ($success == 1) { print "Success\n"; } else { print "Failure\n"; } } --- NEW FILE: Aux.pm --- package Aux; use strict; # subroutine name: max # Input: number1, number2 # returns greater of 2 numbers sub max { if ($_[0]<$_[1]) {return $_[1]} else {return $_[0]}; } sub name_value_pairs { my ($line, $hash, $btw_name_value, $btw_pairs) = @_; #print "line $line\n"; my @items = split (/(\w+)=/,$line); for (my $i = 1; $i <= $#items; $i+=2) { my $value = $items[$i+1]; $value =~ s/$btw_pairs$//; #print "$items[$i] = $value\n"; $hash->{$items[$i]} = $value; } } sub slurp_map { my ($filename, $map, $column) = @_; open IN, $filename or die ("Cannot open $filename"); while (my $line = <IN>) { if ($line =~ /^(.*?)\s+(.*?)$/) { if ($column == 1) { $map->{$1} = $2; } elsif ($column == 2) { $map->{$2} = $1; } else { die ("Column must be 1 or 2"); } } else { die ("Line in $filename did not match"); } } close IN; } sub slurp_hash_pair { my ($filename, $map, $keyColumn, $valueColumn) = @_; open IN, $filename or die ("Cannot open $filename"); while (my $line = <IN>) { my (@items) = split (/\s+/,$line); my $key = $items[$keyColumn]; my $value = $items[$valueColumn]; if (defined ($key) && defined($value)) { # print "adding k $key v $value\n"; $map->{$key} = $value; } } close IN; } sub slurp_column_to_hash { my ($filename, $hash, $column) = @_; open IN, $filename or die ("Cannot open $filename"); while (my $line = <IN>) { my (@items) = split (/\s+/,$line); if (defined ($items[$column])) { $hash->{$items[$column]} = 1; } } close IN; } sub slurp_columns_to_hash_pair { my ($filename, $hash, $columnA, $columnB, $num_columns) = @_; open IN, $filename or die ("Cannot open $filename"); while (my $line = <IN>) { my (@items) = split (/\s+/,$line); my $val = ''; my $not_defined = 0; if (defined($items[$columnA])) { for (my $i = $columnB; $i <= $num_columns; $i++) { if (defined($items[$i])) { $val .= $items[$i]; if ($i != $num_columns) { $val .= ' '; } } else { $not_defined = 1; } } $hash->{$items[$columnA]} = $val; } } close IN; } sub slurp_column_to_hash_pair { my ($filename, $hash, $columnA, $columnB) = @_; open IN, $filename or die ("Cannot open $filename"); while (my $line = <IN>) { my (@items) = split (/\s+/,$line); if (defined ($items[$columnA]) && defined ($items[$columnB])) { $hash->{$items[$columnA]} = $items[$columnB]; } } close IN; } sub slurp_column_to_array { my ($filename, $array, $column) = @_; open IN, $filename or die ("Cannot open $filename"); while (my $line = <IN>) { my (@items) = split (/\s+/,$line); if (defined ($items[$column])) { $array->[$#$array+1] = $items[$column]; } } close IN; } sub slurp_array_to_hash { my ($filename, $map, $keyColumn, $firstArrayElement, $distance) = @_; # i.e. read: key [foo1a foo1b] [foo2a foo2b] # return key-> array of foo1a, foo2a # with 0, 1, 2 open IN, $filename or die ("Cannot open $filename"); while (my $line = <IN>) { my (@items) = split (/\s+/,$line); my $key = $items[$keyColumn]; my @elements = (); # read every other element, which is the feed's id for (my $i = $firstArrayElement; $i <= $#items; $i+=$distance) { $elements[$#elements+1] = $items[$i]; } $map->{$key} = \@elements; } close IN; } sub slurp_file { my ($filename, $lines) = @_; open IN, $filename or die ("Cannot open $filename"); while (my $line = <IN>) { #$line =~ s/\s//g; chop ($line); $lines->[$#$lines+1] = $line; } close IN; } sub slurp_file_to_scalar { my ($filename) = @_; my $contents = ''; open IN, $filename or die ("Cannot open $filename"); while (my $line = <IN>) { $contents .= $line; } close IN; return $contents; } sub slurp_directory { my ($dirname, $files, $regex) = @_; opendir INDIR, $dirname or die ("Cannot open $dirname"); my (@allfiles) = readdir (INDIR); closedir INDIR; #print "$dirname $#allfiles\n"; foreach my $file (@allfiles) { #print "$file\n"; if ($file =~ /$regex/) { $files->[$#$files+1] = $file; } } } my $ALPHA = 0.1; sub remember_ewma { my ($hash, $key, $val) = @_; if (!defined($hash->{$key})) { $hash->{$key} = $val; } else { my $curr = $hash->{$key}; $hash->{$key} = ($ALPHA*$val)+((1.-$ALPHA)*$curr); } } sub remember_all { my ($hash, $key, $val) = @_; if (!defined($hash->{$key})) { my @v = (); $hash->{$key} = \@v; } my $vals = $hash->{$key}; $vals->[$#$vals+1] = $val; } sub recall_all { my ($hash, $key) = @_; if (!defined($hash->{$key})) { return undef; } my $vals = $hash->{$key}; return $vals; } sub recall_all_to_string { my ($hash, $key) = @_; my $str = ''; if (!defined($hash->{$key})) { return ''; } my $vals = $hash->{$key}; for (my $i = 0; $i <= $#$vals; $i++) { $str .= $vals->[$i]; if ($i != $#$vals) { $str .= ' '; } } return $str; } sub printHash { my ($hash) = @_; foreach my $key (keys %$hash) { print "$key->".$hash->{$key}."\n"; } } 1; --- NEW FILE: animateNC.pl --- #!/usr/bin/perl -w # This script creates an animation from a Pyxida log server log. # # Todos: # # * add proper conversion routing from 4D -> 3D # * add a more intelligent range calculation when choosing what to display # use strict; use Getopt::Std; use IPC::Open2; use Statistics::Descriptive; use Aux; my $framePeriod = 120; # frame period in sec my $debug = 0; my $frameFormat = "png"; my $codec = "ffv1"; my $fps = 25; my $rangePercentile = 99; my $alpha = 0.01; my $showShadows = 0; my $zoffset = 100; ###################################################################### my %params = (); my %pos = (); getopts("f:dSAc:a:", \%params); my $coordType; $coordType = "S" if defined $params{'S'}; $coordType = "A" if defined $params{'A'}; &usage unless $coordType; sub usage() { print << "EOF"; usage: cat <pyxida-serverlog.log> | animateNC.pl [-f sec] [-d] <-S|-A> -S : Use system-level coordinates -A : Use application-level coordinates -f : Frame perdiod in seconds -d : Turn on debug mode -c : cn2rgb file -a : id2asn file EOF die; } $framePeriod = $params{'f'} if defined $params{'f'}; $debug = 1 if defined $params{'d'}; ###################################################################### # slurp color files my %cn2color = (); my %id2cn = (); my $cn2color_file = 'data/animate/cn2rgb'; if (defined($params{'c'})) { $cn2color_file = $params{'c'}; } my $id2cn_file = 'data/animate/id2asn'; if (defined($params{'a'})) { $id2cn_file = $params{'a'}; } my %noColorFound = (); &Aux::slurp_columns_to_hash_pair ($cn2color_file,\%cn2color, 0, 1, 3); # hostname -> country &Aux::slurp_column_to_hash_pair ($id2cn_file,\%id2cn, 3, 2); # ip -> country &Aux::slurp_column_to_hash_pair ($id2cn_file,\%id2cn, 4, 2); ###################################################################### my $startFrameTS; my $frameCounter = 0; my $xrange, my $yrange, my $zrange; &clearRange(); my $s_xmin = 0; my $s_xmax = 0; my $s_ymin = 0; my $s_ymax = 0; my $s_zmin = 0; my $s_zmax = 0; local (*GPIN, *GPOUT); open2(\*GPIN, \*GPOUT, "gnuplot"); #open GPOUT, ">/tmp/gp.test" or die ("Cannot open gp.test"); print STDERR "Launching gnuplot...\n" if ($debug); while (my $line = <>) { if ($line =~ m/\w\w (\d+) \S+ a=(\S+) .+ sc2=\[(.+),(.+),(.+),h(.+)\] ac2=\[(.+),(.+),(.+),h(.+)\]/) { my ($ts, $addr) = ($1 / 1000, $2); my @sc = ($3, $4, $5, $6); my @ac = ($7, $8, $9, $10); my $dateTS = localtime($ts); print STDERR $line if ($debug); print STDERR "$dateTS $ts $addr " . join(",", @sc) . " " . join (",", @ac) . "\n" if ($debug); print STDERR "\nsc=" . join(" ", @sc) . "\n" if ($debug); print STDERR "ac=" . join(" ", @ac) . "\n\n" if ($debug); my @newCoord = (); if ($coordType eq 'S') { @newCoord = @sc; } else { @newCoord = @ac; } my $coordStr = join("", @newCoord); #print STDERR "$coordStr\n"; if ($coordStr =~ m/,/) { print STDERR "Found bad coordinate. Skiping.\n" if ($debug); next; } @newCoord = &projectSimple(@newCoord); $pos{$addr} = [ @newCoord ]; print STDERR "3D: " . join(" ", @{$pos{$addr}}) . "\n" if ($debug); &updateRange($pos{$addr}); $startFrameTS = $ts unless defined $startFrameTS; if ($ts - $startFrameTS > $framePeriod) { print STDERR "Outputting frame\n" if ($debug); $frameCounter++; &outputFrame($dateTS); %pos = (); &clearRange(); $startFrameTS = $ts; print STDERR "Starting a new frame at " . $dateTS . "\n"; } } } close GPIN; close GPOUT; #warn ("Not generating animation"); #exit (0); print STDERR "Generating animation...\n"; system "mencoder \"mf:///tmp/*.png\" -mf fps=$fps -o pyxida-anim-$coordType.avi -ovc lavc -lavcopts vcodec=$codec"; print STDERR "Deleting frames...\n"; system "rm /tmp/pyxida-anim-*.$frameFormat\n"; print STDERR "Done.\n"; sub outputFrame() { my $title = shift; my $filenameCount = &fixedNum($frameCounter); print GPOUT "set terminal $frameFormat size 1024,768\n"; print GPOUT "set output \'/tmp/pyxida-anim-$filenameCount.$frameFormat\'\n"; print GPOUT "set title \'$title\'\n"; print GPOUT << "EOF"; set grid nopolar set grid xtics nomxtics ytics nomytics noztics nomztics nox2tics nomx2tics noy2tics nomy2tics nocbtics nomcbtics set grid layerdefault EOF my $xmin = $xrange->percentile(100 - $rangePercentile); $xmin = 0 unless defined $xmin; my $xmax = $xrange->percentile($rangePercentile); $xmax = 0 unless defined $xmax; my $ymin = $yrange->percentile(100 - $rangePercentile); $ymin = 0 unless defined $ymin; my $ymax = $yrange->percentile($rangePercentile); $ymax = 0 unless defined $ymax; my $zmin = $zrange->percentile(100 - $rangePercentile); $zmin = 0 unless defined $zmin; my $zmax = $zrange->percentile($rangePercentile); $zmax = 0 unless defined $zmax; $s_xmin = $xmin unless defined $s_xmin; $s_xmax = $xmax unless defined $s_xmax; $s_ymin = $ymin unless defined $s_ymin; $s_ymax = $ymax unless defined $s_ymax; $s_zmin = $zmin unless defined $s_zmin; $s_zmax = $zmax unless defined $s_zmax; $s_xmin = (1 - $alpha) * $s_xmin + ($alpha * $xmin); $s_xmax = (1 - $alpha) * $s_xmax + ($alpha * $xmax); $s_ymin = (1 - $alpha) * $s_ymin + ($alpha * $ymin); $s_ymax = (1 - $alpha) * $s_ymax + ($alpha * $ymax); $s_zmin = (1 - $alpha) * $s_zmin + ($alpha * $zmin); $s_zmax = (1 - $alpha) * $s_zmax + ($alpha * $zmax); #for (my $i = 0; $i < 100; $i++) { # print "$i " . $xrange->percentile($i) . "\n"; #} print STDERR "[$s_xmin:$s_xmax] [$s_ymin:$s_ymax] [$s_zmin:$s_zmax]\n" if ($debug); print GPOUT "set xrange [$s_xmin:$s_xmax]\n"; print GPOUT "set yrange [$s_ymin:$s_ymax]\n"; print GPOUT "set zrange [" . ($s_zmin - $zoffset) . ":$s_zmax]\n"; print GPOUT 'rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b)'."\n"; # XXX where should shadow be print GPOUT "flat(p) = ".($s_zmin - $zoffset + 10)."\n"; #print GPOUT "set pointsize 1.5\n"; #print GPOUT "splot '-' notitle\n"; # notitle? print GPOUT "splot '-' " . 'using 1:2:3:(rgb($4,$5,$6)) notitle with points pt 7 lc rgb variable'; if ($showShadows) { print GPOUT ", '-' ".'using 1:2:(flat($3)) '."notitle with points lc \"#CCCCCC\"\n"; } else { print GPOUT "\n"; } my $shadow = ''; foreach my $addr (keys %pos) { print STDERR "$addr\n" if ($debug); my $points = join(" ", @{$pos{$addr}}); $shadow .= "$points\n"; $addr =~ s/\///g; $addr =~ s/:\d*//g; $addr = lc($addr); my $color = &getColor($addr); print GPOUT "$points $color\n"; #print "$points $color\n"; } print GPOUT "e\n"; print GPOUT "$shadow"."e\n" if ($showShadows); } sub updateRange() { my $coords = shift; print STDERR "Updating range $$coords[0]\n" if ($debug); $xrange->add_data($$coords[0]); $yrange->add_data($$coords[1]); $zrange->add_data($$coords[2]); } sub clearRange() { $xrange = new Statistics::Descriptive::Full->new(); $yrange = new Statistics::Descriptive::Full->new(); $zrange = new Statistics::Descriptive::Full->new(); } sub fixedNum() { my $num = shift; my $result = sprintf("%05d", $num); return $result; } #sub projectClever4D() { # my @coord4D = @_; # print STDERR "4D: $coord4D[0] $coord4D[1] $coord4D[2] $coord4D[3]\n" if ($debug); # # # x' = k * (x / w) # # y' = k * (y / w) # # z' = k * (z / w) # # my @coord3D = (); # if ($coord4D[3] == 0) { # @coord3D = (0, 0, 0); # } else { # @coord3D = ( $k * $coord4D[0] / $coord4D[3], $k * $coord4D[1] / $coord4D[3], $k * $coord4D[2] / $coord4D[3] ); # } # return @coord3D; #} sub projectSimple() { my @coord3Dh = @_; print STDERR "3D+h: $coord3Dh[0] $coord3Dh[1] $coord3Dh[2] $coord3Dh[3]\n" if ($debug); my @coord3D = ($coord3Dh[0], $coord3Dh[1], $coord3Dh[2]); return @coord3D; } ###################################################################### sub getColor { my ($host) = @_; #print "h $host\n"; #print "id $id2cn{$host}\n"; #print "cn $cn2color{$id2cn{$host}}\n"; #exit (0); my $color = ''; # hack around unknown hosts my $cn = ''; if (defined($id2cn{$host})) { $cn = $id2cn{$host}; } else { # try to match the country if ($host =~ /\.(\w*)$/) { $cn = $1; if ($cn =~ /edu/i) { $cn = 'US'; } $cn = uc($cn); } } if (defined($cn2color{$cn})) { $color = $cn2color{$cn}; } else { if (!defined($noColorFound{$host})) { print "no color for $host\n"; $noColorFound{$host} = 1; } $color = '00 00 00'; } return $color; } --- NEW FILE: query.pl --- #!/usr/bin/perl use strict; use Getopt::Std; use Frontier::Client; use Data::Dumper; my $PORT=55504; my $API_PORT=55501; my $USE_HEIGHT = 1; my $DEBUG = 0; my $usage = "query.pl [options] url\n"; $usage .= " -l: get local coordinate of node running at url\n"; $usage .= " -s subset.dat: file containing list of remote nodes, one per line\n"; $usage .= " -r remote-node: get remote overlay node coordinate\n"; $usage .= " -p proxy-node: get proxy coord that is stored on contacted node\n"; $usage .= " -a nodeA -b nodeB: estimate latency btw overlay nodes A and B\n"; $usage .= " -d debug\n"; $usage .= "\n"; $usage .= "query.pl -l http://righthand.eecs.harvard.edu\n"; $usage .= "query.pl -a sb02.eecs.harvard.edu -b sb03.eecs.harvard.edu http://sb01.eecs.harvard.edu\n"; $usage .= "Default port numbers can be overridden with \":port\" syntax\n"; my %para = (); getopts('lr:a:b:s:d', \%para); ############################################################ if (defined($para{'d'})) { $DEBUG = 1; } if ($#ARGV < 0) { die ("Missing arguments\n$usage"); } my $url = $ARGV[0]; if ($url !~ /^http:\/\//) { $url = 'http://'.$url; } if ($url =~ /^http:\/\/[\w+\.-]+$/) { $url .= ":$API_PORT/xmlrpc" } if ($url =~ /^http:\/\/[\w+\.-]+:\d+$/) { $url .= "/xmlrpc"; } if ($url !~ /^http:\/\/[\w+\.-]+:\d+\/xmlrpc$/) { die ("word: $url\n$usage\n"); } ############################################################ #warn "url $url\n"; my $server = Frontier::Client->new(url => "$url", debug => $DEBUG); if (defined($para{'l'})) { my $coordArray = $server->call("pyxida.getLocalCoord"); if ($DEBUG) { print Dumper($coordArray); } my $coord = &parse_coord ($coordArray); print "$coord\n"; } elsif (defined($para{'s'})) { my %remoteNodes = (); open IN, "$para{'s'}" or die ("Cannot open file $para{'s'}\n"); while (my $line = <IN>) { $line =~ s/\s//g; next if ($line =~ /\#/); if ($line =~ /\w+/) { my $node = &addPort ($line,$PORT); $remoteNodes{$node} = 1; } } close IN; my $node2coord = $server->call("pyxida.getRemoteCoords", \%remoteNodes); if ($DEBUG) { print Dumper($node2coord); } foreach my $node (keys %$node2coord) { my $coordArray = $node2coord->{$node}; if ($node ne 'result') { my $coord = &parse_coord ($coordArray); print "$node $coord\n"; } } if ((defined($node2coord->{'result'})) && ($node2coord->{'result'} ne 'Success')) { warn "$node2coord->{'result'}\n"; } } elsif (defined($para{'r'})) { my $remoteNode = &addPort ($para{'r'},$PORT); my $resHash = $server->call("pyxida.getRemoteCoord", $remoteNode); if ($DEBUG) { print Dumper($resHash); } if (defined($resHash->{'result'})) { if (($resHash->{'result'} eq 'Success') && (defined($resHash->{'coord'}))) { my $coord = &parse_coord ($resHash->{'coord'}); print "$coord\n"; } else { warn "Failure: $resHash->{'result'}\n"; } } else { warn "Failure: cause unknown\n"; } } elsif (defined($para{'a'}) && defined($para{'b'})) { my $nodeA = &addPort($para{'a'},$PORT); my $nodeB = &addPort($para{'b'},$PORT); my $distance = $server->call("pyxida.estimateRTT", $nodeA, $nodeB); if ($DEBUG) { print Dumper($distance); } if (defined($distance)) { $distance = sprintf ("%.3f", $distance); print "$distance\n"; } } else { die ("Missing arguments\n$usage"); } sub parse_coord { my ($coord) = @_; my $out = '['; for (my $i = 0; $i <= $#$coord; $i++) { my $element = sprintf ("%.3f", $coord->[$i]); if ($i == $#$coord && $USE_HEIGHT) { $out .= 'h'; } $out .= $element; if ($i != $#$coord) { $out .= ' '; } } $out .= ']'; return $out; } sub addPort { my ($host,$port) = @_; if ($host !~ /[\w]+:\d+/) { $host .= ":$port"; } return $host; } |
|
From: Peter P. <pr...@us...> - 2007-02-21 15:40:56
|
Update of /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/ping In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7508/web/javadoc/edu/harvard/syrah/pyxida/ping Added Files: classes.html package-summary.html tree.html PingManager.html Log Message: Made a new Pyxida release 0.1.4 --- NEW FILE: package-summary.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida.ping</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.ping packages"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content package" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item active">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../edu/harvard/syrah/pyxida/nc/lib/package-summary.html">Prev Package</a> | Next Package</td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="package-summary.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="package title">Package edu.harvard.syrah.pyxida.ping</h1><div class="package description top"></div><dl class="table container"><dd><table class="package summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Class Summary</h2></td></tr><tr><td class="left"><a href="../../../../../edu/harvard/syrah/pyxida/ping/PingManager.html" title="Class in edu.harvard.syrah.pyxida.ping">PingManager</a></td><td class="right"></td></tr></table></dd></dl> <a name="description" id="description"/><div class="package description full"></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item active">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: PingManager.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>PingManager</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.ping.PingManager class"/><meta name="keywords" content="init()"/><meta name="keywords" content="printStats()"/><meta name="keywords" content="addPingRequest()"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi">Prev Class | Next Class</td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="PingManager.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | <a href="#summary-methods">Method</a> | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | Field | <a href="#detail-methods">Method</a> | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.ping</h3><h1 class="class title-class">Class PingManager</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.ping.PingManager</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">PingManager</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#PingManager()">PingManager</a>()</code></dt></dl></td></tr></table></dd></dl><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#addPingRequest(AddressIF,AddressIF,CB1<Float>)">addPingRequest</a>(AddressIF nodeA, AddressIF nodeB, CB1<Float> cbMeasurement)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#addPingRequest(AddressIF,CB1<Double>)">addPingRequest</a>(AddressIF remoteNode, CB1<Double> cbMeasurement)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#init(CB0)">init</a>(CB0 cbDone)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#printStats()">printStats</a>()</code></dt></dl></td></tr></table></dd></dl><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="PingManager()" id="PingManager()"/><div class="member detail outer"><h3 class="member detail name">PingManager</h3><pre class="member detail synopsis">public PingManager()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="addPingRequest(AddressIF,AddressIF,CB1<Float>)" id="addPingRequest(AddressIF,AddressIF,CB1<Float>)"/><div class="member detail outer"><h3 class="member detail name">addPingRequest</h3><pre class="member detail synopsis">public void addPingRequest(AddressIF nodeA, AddressIF nodeB, CB1<Float> cbMeasurement)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="addPingRequest(AddressIF,CB1<Double>)" id="addPingRequest(AddressIF,CB1<Double>)"/><div class="member detail outer"><h3 class="member detail name">addPingRequest</h3><pre class="member detail synopsis">public void addPingRequest(AddressIF remoteNode, CB1<Double> cbMeasurement)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="init(CB0)" id="init(CB0)"/><div class="member detail outer"><h3 class="member detail name">init</h3><pre class="member detail synopsis">public void init(CB0 cbDone)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="printStats()" id="printStats()"/><div class="member detail outer"><h3 class="member detail name">printStats</h3><pre class="member detail synopsis">public void printStats()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: tree.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida.ping Hierarchy</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content packagetree" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="tree.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="package tree title">Hierarchy for Package edu.harvard.syrah.pyxida.ping</h1><h2 class="package tree section title">Class Hierarchy</h2><ul class="tree"><li class="node"><div>java.lang.Object</div></li><li class="level"><ul><li class="node"><div>edu.harvard.syrah.pyxida.ping.<b class="tree link"><a href="../../../../../edu/harvard/syrah/pyxida/ping/PingManager.html" title="Class in edu.harvard.syrah.pyxida.ping">PingManager</a></b></div></li></ul></li></ul><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: classes.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida.ping Class Menu</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="menu classes" onload="if(parent.contentPageLoaded)parent.contentPageLoaded()"><h4 class="classes menu-title"><a href="package-summary.html" title="" target="content">edu.harvard.syrah.pyxida.ping</a></h4><div class="classes menu-list"><p class="classes menu-subtitle">Classes</p><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/ping/PingManager.html" title="edu.harvard.syrah.pyxida.ping.PingManager" target="content">PingManager</a></span><br/></div></body></html> |
|
From: Peter P. <pr...@us...> - 2007-02-21 15:40:56
|
Update of /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/nc/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7508/web/javadoc/edu/harvard/syrah/pyxida/nc/lib Added Files: WindowStatistic.html Coordinate.html ObserverList.html tree.html NCClient.html Vec.html ApplicationObserver.html EWMAStatistic.html classes.html NCClientIF.html RemoteState.html package-summary.html Log Message: Made a new Pyxida release 0.1.4 --- NEW FILE: EWMAStatistic.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>EWMAStatistic</title><script src="../../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.nc.lib.EWMAStatistic class"/><meta name="keywords" content="GAIN"/><meta name="keywords" content="gain"/><meta name="keywords" content="value"/><meta name="keywords" content="add()"/><meta name="keywords" content="get()"/><link rel="stylesheet" type="text/css" href="../../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../../edu/harvard/syrah/pyxida/nc/lib/Coordinate.html">Prev Class</a> | <a href="../../../../../../edu/harvard/syrah/pyxida/nc/lib/NCClient.html">Next Class</a></td><td class="navi"><a href="../../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="EWMAStatistic.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | <a href="#summary-methods">Method</a> | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | <a href="#detail-methods">Method</a> | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.nc.lib</h3><h1 class="class title-class">Class EWMAStatistic</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.nc.lib.EWMAStatistic</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">EWMAStatistic</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#GAIN">GAIN</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#gain">gain</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#value">value</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#EWMAStatistic()">EWMAStatistic</a>()</code></dt></dl></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#EWMAStatistic(double)">EWMAStatistic</a>(double g)</code></dt></dl></td></tr></table></dd></dl><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#add(double)">add</a>(double item)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#get()">get</a>()</code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="GAIN" id="GAIN"/><div class="member detail outer"><h3 class="member detail name">GAIN</h3><pre class="member detail synopsis">public static final double GAIN</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">0.0</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="gain" id="gain"/><div class="member detail outer"><h3 class="member detail name">gain</h3><pre class="member detail synopsis">protected final double gain</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="value" id="value"/><div class="member detail outer"><h3 class="member detail name">value</h3><pre class="member detail synopsis">protected double value</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="EWMAStatistic()" id="EWMAStatistic()"/><div class="member detail outer"><h3 class="member detail name">EWMAStatistic</h3><pre class="member detail synopsis">public EWMAStatistic()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="EWMAStatistic(double)" id="EWMAStatistic(double)"/><div class="member detail outer"><h3 class="member detail name">EWMAStatistic</h3><pre class="member detail synopsis">public EWMAStatistic(double g)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="add(double)" id="add(double)"/><div class="member detail outer"><h3 class="member detail name">add</h3><pre class="member detail synopsis">public void add(double item)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="get()" id="get()"/><div class="member detail outer"><h3 class="member detail name">get</h3><pre class="member detail synopsis">public double get()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: NCClient.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>NCClient</title><script src="../../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.nc.lib.NCClient class"/><meta name="keywords" content="crawler_log"/><meta name="keywords" content="SIMULATION"/><meta name="keywords" content="debug"/><meta name="keywords" content="debugCrawler"/><meta name="keywords" content="debugGood"/><meta name="keywords" content="VERSION_02"/><meta name="keywords" content="VERSION_03"/><meta name="keywords" content="VERSION_04"/><meta name="keywords" content="CURRENT_VERSION"/><meta name="keywords" content="COORD_ERROR"/><meta name="keywords" content="COORD_CONTROL"/><meta name="keywords" content="USE_HEIGHT"/><meta name="keywords" content="MAX_NEIGHBORS"/><meta name="keywords" content="WINDOW_SIZE"/><meta name="keywords" content="RS_EXPIRATION"/><meta name="keywords" content="MAINTENANCE_PERIOD"/><meta name="keywords" content="MAX_RS_MAP_SIZE"/><meta name="keywords" content="random"/><meta name="keywords" content="APP_UPDATE_THRESHOLD"/><meta name="keywords" content="OUTRAGEOUSLY_LARGE_RTT"/><meta name="keywords" content="GRAVITY_DIAMETER"/><meta name="keywords" content="MAX_DIST_FROM_ORIGIN"/><meta name="keywords" content="nf"/><meta name="keywords" content="NFDigits"/><meta name="keywords" content="num_dims"/><meta name="keywords" content="app_coord"/><meta name="keywords" content="sys_coord"/><meta name="keywords" content="error"/><meta name="keywords" content="MAX_ERROR"/><meta name="keywords" content="keepStatistics"/><meta name="keywords" content="RUNNING_STAT_HISTORY"/><meta name="keywords" content="running_sys_error"/><meta name="keywords" content="running_app_error"/><meta name="keywords" content="running_sys_dd"/><meta name="keywords" content="running_app_dd"/><meta name="keywords" content="running_neighbors_used"/><meta name="keywords" content="running_relative_diff"/><meta name="keywords" content="running_sys_update_frequency"/><meta name="keywords" content="running_app_update_frequency"/><meta name="keywords" content="running_age"/><meta name="keywords" content="running_gravity"/><meta name="keywords" content="time_of_last_app_update"/><meta name="keywords" content="neighbors"/><meta name="keywords" content="time_of_last_sys_update"/><meta name="keywords" content="obs_list"/><meta name="keywords" content="RemoteState<T>>rs_map"/><meta name="keywords" content="hosts"/><meta name="keywords" content="start_centroid"/><meta name="keywords" content="updated_app_coord_at_least_once"/><meta name="keywords" content="start_coords"/><meta name="keywords" content="current_coords"/><meta name="keywords" content="nearest_neighbor"/><meta name="keywords" content="local_addr"/><meta name="keywords" content="setLocalID()"/><meta name="keywords" content="computeApplicationStatistics()"/><meta name="keywords" content="toString()"/><meta name="keywords" content="Double> getStatistics()"/><meta name="keywords" content="reset()"/><meta name="keywords" content="updatedYet()"/><meta name="keywords" content="getNumDimensions()"/><meta name="keywords" content="getApplicationCoords()"/><meta name="keywords" content="getSystemCoords()"/><meta name="keywords" content="getSystemError()"/><meta name="keywords" content="getAge()"/><meta name="keywords" content="getObserverList()"/><meta name="keywords" content="addHost()"/><meta name="keywords" content="removeHost()"/><meta name="keywords" content="containsHost()"/><meta name="keywords" content="getHosts()"/><meta name="keywords" content="processSample()"/><meta name="keywords" content="updateError()"/><meta name="keywords" content="addNeighbor()"/><meta name="keywords" content="removeNeighbor()"/><meta name="keywords" content="getNeighborToPing()"/><meta name="keywords" content="updateSystemCoordinate()"/><meta name="keywords" content="performMaintenance()"/><meta name="keywords" content="tryUpdateAppCoordinate()"/><meta name="keywords" content="setRandomSeed()"/><meta name="keywords" content="startUp()"/><meta name="keywords" content="shutDown()"/><link rel="stylesheet" type="text/css" href="../../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../../edu/harvard/syrah/pyxida/nc/lib/EWMAStatistic.html">Prev Class</a> | <a href="../../../../../../edu/harvard/syrah/pyxida/nc/lib/NCClientIF.html">Next Class</a></td><td class="navi"><a href="../../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="NCClient.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | <a href="#summary-methods">Method</a> | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | <a href="#detail-methods">Method</a> | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.nc.lib</h3><h1 class="class title-class">Class NCClient<T></h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.nc.lib.NCClient<T></code></li><li></li></ul></li></ul></div><dl class="class knownimplementing"><dt class="header"><b>Implemented Interfaces:</b></dt><dd class="item">NCClientIF</dd></dl><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">NCClient<T></b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div><div class="class synopsis implements"><code>implements NCClientIF</code></div></div><hr/><div class="class description"> A class that is responsible for updating the local Vivaldi coordinates, both at the system and application level, and also maintaining the state of remote hosts that support Vivaldi. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#APP_UPDATE_THRESHOLD">APP_UPDATE_THRESHOLD</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#COORD_CONTROL">COORD_CONTROL</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#COORD_ERROR">COORD_ERROR</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static byte</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#CURRENT_VERSION">CURRENT_VERSION</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#GRAVITY_DIAMETER">GRAVITY_DIAMETER</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static long</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#MAINTENANCE_PERIOD">MAINTENANCE_PERIOD</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#MAX_DIST_FROM_ORIGIN">MAX_DIST_FROM_ORIGIN</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#MAX_ERROR">MAX_ERROR</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#MAX_NEIGHBORS">MAX_NEIGHBORS</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#MAX_RS_MAP_SIZE">MAX_RS_MAP_SIZE</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#NFDigits">NFDigits</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#OUTRAGEOUSLY_LARGE_RTT">OUTRAGEOUSLY_LARGE_RTT</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static long</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#RS_EXPIRATION">RS_EXPIRATION</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#RUNNING_STAT_HISTORY">RUNNING_STAT_HISTORY</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected HashMap<T,</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#RemoteState<T>>rs_map">RemoteState<T>>rs_map</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#SIMULATION">SIMULATION</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#USE_HEIGHT">USE_HEIGHT</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static byte</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#VERSION_02">VERSION_02</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static byte</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#VERSION_03">VERSION_03</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static byte</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#VERSION_04">VERSION_04</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#WINDOW_SIZE">WINDOW_SIZE</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#app_coord">app_coord</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected static Logger</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#crawler_log">crawler_log</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected List<Coordinate></code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#current_coords">current_coords</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#debug">debug</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#debugCrawler">debugCrawler</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#debugGood">debugGood</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#error">error</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected Set<T></code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#hosts">hosts</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#keepStatistics">keepStatistics</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected T</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#local_addr">local_addr</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#nearest_neighbor">nearest_neighbor</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected List<RemoteState<T>></code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#neighbors">neighbors</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected static NumberFormat</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#nf">nf</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#num_dims">num_dims</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected ObserverList</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#obs_list">obs_list</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static Random</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#random">random</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected EWMAStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_age">running_age</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected EWMAStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_app_dd">running_app_dd</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected WindowStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_app_error">running_app_error</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected EWMAStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_app_update_frequency">running_app_update_frequency</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected EWMAStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_gravity">running_gravity</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected EWMAStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_neighbors_used">running_neighbors_used</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected EWMAStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_relative_diff">running_relative_diff</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected EWMAStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_sys_dd">running_sys_dd</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected WindowStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_sys_error">running_sys_error</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected EWMAStatistic</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#running_sys_update_frequency">running_sys_update_frequency</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#start_centroid">start_centroid</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected List<Coordinate></code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#start_coords">start_coords</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#sys_coord">sys_coord</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected long</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#time_of_last_app_update">time_of_last_app_update</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected long</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#time_of_last_sys_update">time_of_last_sys_update</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#updated_app_coord_at_least_once">updated_app_coord_at_least_once</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#NCClient(int)">NCClient</a>(int _num_dims)</code></dt><dd class="description"> Creates a new instance.</dd></dl></td></tr></table></dd></dl><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Hashtable<String,</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#Double> getStatistics()">Double> getStatistics</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#addHost(T)">addHost</a>(T addr)</code></dt><dd class="description"> Notifies this <code>VivaldiClient</code> object that a host that supports Vivaldi has joined the system.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#addHost(T,Coordinate,double,long,boolean)">addHost</a>(T addr, Coordinate _r_coord, double r_error, long curr_time, boolean can_update)</code></dt><dd class="description"> Notifies this <code>VivaldiClient</code> object that a host that supports Vivaldi and has the provided coordinates and error has joined the system.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#addNeighbor(RemoteState<T>)">addNeighbor</a>(RemoteState<T> guy)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected edu.harvard.syrah.pyxida.nc.lib.NCClient.ApplicationStatistics</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#computeApplicationStatistics()">computeApplicationStatistics</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#containsHost(T)">containsHost</a>(T addr)</code></dt><dd class="description"> Returns whether the given host has been registered with this <code>VivaldiClient</code> object.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> long</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getAge(long)">getAge</a>(long curr_time)</code></dt><dd class="description"> Returns the age of our coordinate Note that this does not require clock-synchronization because it is relative to our coordinate </dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getApplicationCoords()">getApplicationCoords</a>()</code></dt><dd class="description"> Returns the application-level Vivaldi coordinates.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Set<T></code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getHosts()">getHosts</a>()</code></dt><dd class="description"> Returns all hosts that support Vivaldi and have been registered with this <code>VivaldiClient</code> object.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> T</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getNeighborToPing(long)">getNeighborToPing</a>(long curr_time)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getNumDimensions()">getNumDimensions</a>()</code></dt><dd class="description"> Returns the dimension of the Euclidian space coordinates are embedded in.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> ObserverList</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getObserverList()">getObserverList</a>()</code></dt><dd class="description"> Returns the list of observers, to which observers for the application-level coordinate can be added, removed, and so forth.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getSystemCoords()">getSystemCoords</a>()</code></dt><dd class="description"> Returns the system-level Vivaldi coordinates.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getSystemError()">getSystemError</a>()</code></dt><dd class="description"> Returns the system-level error, which denotes the accuracy of the system-level coordinates.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#performMaintenance(long)">performMaintenance</a>(long curr_time)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#processSample(T,Coordinate,double,double,long,long,boolean)">processSample</a>(T addr, Coordinate _r_coord, double r_error, double sample_rtt, long sample_age, long curr_time, boolean can_add)</code></dt><dd class="description"> This method is invoked when a new RTT sample is made to a host that supports Vivaldi.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#removeHost(T)">removeHost</a>(T addr)</code></dt><dd class="description"> Notifies this <code>VivaldiClient</code> object that a host that supports Vivaldi has left the system.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#removeNeighbor(RemoteState<T>)">removeNeighbor</a>(RemoteState<T> guy)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#reset()">reset</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#setLocalID(T)">setLocalID</a>(T _local_addr)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#setRandomSeed(long)">setRandomSeed</a>(long seed)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#shutDown(DataOutputStream)">shutDown</a>(DataOutputStream os)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#startUp(DataInputStream)">startUp</a>(DataInputStream is)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#toString()">toString</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#tryUpdateAppCoordinate(long)">tryUpdateAppCoordinate</a>(long curr_time)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#updateError(T,Coordinate,double,double,double,long,int,long)">updateError</a>(T addr, Coordinate r_coord, double r_error, double smoothed_rtt, double sample_rtt, long sample_age, int sample_size, long curr_time)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">protected void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#updateSystemCoordinate(long)">updateSystemCoordinate</a>(long curr_time)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#updatedYet()">updatedYet</a>()</code></dt><dd class="description"> Returns whether the application level coordinates have been updated at least once.</dd></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="APP_UPDATE_THRESHOLD" id="APP_UPDATE_THRESHOLD"/><div class="member detail outer"><h3 class="member detail name">APP_UPDATE_THRESHOLD</h3><pre class="member detail synopsis">public static final double APP_UPDATE_THRESHOLD</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">0.0</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="COORD_CONTROL" id="COORD_CONTROL"/><div class="member detail outer"><h3 class="member detail name">COORD_CONTROL</h3><pre class="member detail synopsis">public static double COORD_CONTROL</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="COORD_ERROR" id="COORD_ERROR"/><div class="member detail outer"><h3 class="member detail name">COORD_ERROR</h3><pre class="member detail synopsis">public static double COORD_ERROR</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="CURRENT_VERSION" id="CURRENT_VERSION"/><div class="member detail outer"><h3 class="member detail name">CURRENT_VERSION</h3><pre class="member detail synopsis">public static final byte CURRENT_VERSION</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">4</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="GRAVITY_DIAMETER" id="GRAVITY_DIAMETER"/><div class="member detail outer"><h3 class="member detail name">GRAVITY_DIAMETER</h3><pre class="member detail synopsis">public static double GRAVITY_DIAMETER</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="MAINTENANCE_PERIOD" id="MAINTENANCE_PERIOD"/><div class="member detail outer"><h3 class="member detail name">MAINTENANCE_PERIOD</h3><pre class="member detail synopsis">public static final long MAINTENANCE_PERIOD</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">600000L</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="MAX_DIST_FROM_ORIGIN" id="MAX_DIST_FROM_ORIGIN"/><div class="member detail outer"><h3 class="member detail name">MAX_DIST_FROM_ORIGIN</h3><pre class="member detail synopsis">public static double MAX_DIST_FROM_ORIGIN</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="MAX_ERROR" id="MAX_ERROR"/><div class="member detail outer"><h3 class="member detail name">MAX_ERROR</h3><pre class="member detail synopsis">public static final double MAX_ERROR</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">1.0</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="MAX_NEIGHBORS" id="MAX_NEIGHBORS"/><div class="member detail outer"><h3 class="member detail name">MAX_NEIGHBORS</h3><pre class="member detail synopsis">public static final int MAX_NEIGHBORS</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">512</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="MAX_RS_MAP_SIZE" id="MAX_RS_MAP_SIZE"/><div class="member detail outer"><h3 class="member detail name">MAX_RS_MAP_SIZE</h3><pre class="member detail synopsis">public static final int MAX_RS_MAP_SIZE</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">32768</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="NFDigits" id="NFDigits"/><div class="member detail outer"><h3 class="member detail name">NFDigits</h3><pre class="member detail synopsis">protected static final int NFDigits</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">2</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="OUTRAGEOUSLY_LARGE_RTT" id="OUTRAGEOUSLY_LARGE_RTT"/><div class="member detail outer"><h3 class="member detail name">OUTRAGEOUSLY_LARGE_RTT</h3><pre class="member detail synopsis">public static final double OUTRAGEOUSLY_LARGE_RTT</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">20000.0</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="RS_EXPIRATION" id="RS_EXPIRATION"/><div class="member detail outer"><h3 class="member detail name">RS_EXPIRATION</h3><pre class="member detail synopsis">public static long RS_EXPIRATION</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="RUNNING_STAT_HISTORY" id="RUNNING_STAT_HISTORY"/><div class="member detail outer"><h3 class="member detail name">RUNNING_STAT_HISTORY</h3><pre class="member detail synopsis">public static final int RUNNING_STAT_HISTORY</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">1024</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="RemoteState<T>>rs_map" id="RemoteState<T>>rs_map"/><div class="member detail outer"><h3 class="member detail name">RemoteState<T>>rs_map</h3><pre class="member detail synopsis">protected final HashMap<T, RemoteState<T>>rs_map</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="SIMULATION" id="SIMULATION"/><div class="member detail outer"><h3 class="member detail name">SIMULATION</h3><pre class="member detail synopsis">public static final boolean SIMULATION</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">false</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="USE_HEIGHT" id="USE_HEIGHT"/><div class="member detail outer"><h3 class="member detail name">USE_HEIGHT</h3><pre class="member detail synopsis">public static boolean USE_HEIGHT</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="VERSION_02" id="VERSION_02"/><div class="member detail outer"><h3 class="member detail name">VERSION_02</h3><pre class="member detail synopsis">public static final byte VERSION_02</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">2</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="VERSION_03" id="VERSION_03"/><div class="member detail outer"><h3 class="member detail name">VERSION_03</h3><pre class="member detail synopsis">public static final byte VERSION_03</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">3</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="VERSION_04" id="VERSION_04"/><div class="member detail outer"><h3 class="member detail name">VERSION_04</h3><pre class="member detail synopsis">public static final byte VERSION_04</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">4</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="WINDOW_SIZE" id="WINDOW_SIZE"/><div class="member detail outer"><h3 class="member detail name">WINDOW_SIZE</h3><pre class="member detail synopsis">protected static final int WINDOW_SIZE</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">64</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="app_coord" id="app_coord"/><div class="member detail outer"><h3 class="member detail name">app_coord</h3><pre class="member detail synopsis">protected Coordinate app_coord</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="crawler_log" id="crawler_log"/><div class="member detail outer"><h3 class="member detail name">crawler_log</h3><pre class="member detail synopsis">protected static Logger crawler_log</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="current_coords" id="current_coords"/><div class="member detail outer"><h3 class="member detail name">current_coords</h3><pre class="member detail synopsis">protected final List<Coordinate> current_coords</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="debug" id="debug"/><div class="member detail outer"><h3 class="member detail name">debug</h3><pre class="member detail synopsis">public static boolean debug</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="debugCrawler" id="debugCrawler"/><div class="member detail outer"><h3 class="member detail name">debugCrawler</h3><pre class="member detail synopsis">public static boolean debugCrawler</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="debugGood" id="debugGood"/><div class="member detail outer"><h3 class="member detail name">debugGood</h3><pre class="member detail synopsis">public static boolean debugGood</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="error" id="error"/><div class="member detail outer"><h3 class="member detail name">error</h3><pre class="member detail synopsis">protected double error</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="hosts" id="hosts"/><div class="member detail outer"><h3 class="member detail name">hosts</h3><pre class="member detail synopsis">protected final Set<T> hosts</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="keepStatistics" id="keepStatistics"/><div class="member detail outer"><h3 class="member detail name">keepStatistics</h3><pre class="member detail synopsis">public static boolean keepStatistics</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="local_addr" id="local_addr"/><div class="member detail outer"><h3 class="member detail name">local_addr</h3><pre class="member detail synopsis">protected T local_addr</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="nearest_neighbor" id="nearest_neighbor"/><div class="member detail outer"><h3 class="member detail name">nearest_neighbor</h3><pre class="member detail synopsis">protected Coordinate nearest_neighbor</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="neighbors" id="neighbors"/><div class="member detail outer"><h3 class="member detail name">neighbors</h3><pre class="member detail synopsis">protected final List<RemoteState<T>> neighbors</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="nf" id="nf"/><div class="member detail outer"><h3 class="member detail name">nf</h3><pre class="member detail synopsis">protected static final NumberFormat nf</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="num_dims" id="num_dims"/><div class="member detail outer"><h3 class="member detail name">num_dims</h3><pre class="member detail synopsis">protected final int num_dims</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="obs_list" id="obs_list"/><div class="member detail outer"><h3 class="member detail name">obs_list</h3><pre class="member detail synopsis">protected final ObserverList obs_list</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="random" id="random"/><div class="member detail outer"><h3 class="member detail name">random</h3><pre class="member detail synopsis">public static Random random</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="running_age" id="running_age"/><div class="member detail outer"><h3 class="member detail name">running_age</h3><pre class="member detail synopsis">protected EWMAStatistic running_age</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="running_app_dd" id="running_app_dd"/><div class="member detail outer"><h3 class="member detail name">running_app_dd</h3><pre class="member detail synopsis">protected EWMAStatistic running_app_dd</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="running_app_error" id="running_app_error"/><div class="member detail outer"><h3 class="member detail name">running_app_error</h3><pre class="member detail synopsis">protected WindowStatistic running_app_error</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="running_app_update_frequency" id="running_app_update_frequency"/><div class="member detail outer"><h3 class="member detail name">running_app_update_frequency</h3><pre class="member detail synopsis">protected EWMAStatistic running_app_update_frequency</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="running_gravity" id="running_gravity"/><div class="member detail outer"><h3 class="member detail name">running_gravity</h3><pre class="member detail synopsis">protected EWMAStatistic running_gravity</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="running_neighbors_used" id="running_neighbors_used"/><div class="member detail outer"><h3 class="member detail name">running_neighbors_used</h3><pre class="member detail synopsis">protected EWMAStatistic running_neighbors_used</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="running_relative_diff" id="running_relative_diff"/><div class="member detail outer"><h3 class="member detail name">running_relative_diff</h3><pre class="member detail synopsis">protected EWMAStatistic running_relative_diff</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="running_sys_dd" id="running_sys_dd"/><div class="member detail outer"><h3 class="member detail name">running_sys_... [truncated message content] |
Update of /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/log In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7508/web/javadoc/edu/harvard/syrah/pyxida/log Added Files: LogManager.html ReportCoordReqMsg.html tree.html package-summary.html ReportCoordReplyMsg.html classes.html Log Message: Made a new Pyxida release 0.1.4 --- NEW FILE: tree.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida.log Hierarchy</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content packagetree" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="tree.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="package tree title">Hierarchy for Package edu.harvard.syrah.pyxida.log</h1><h2 class="package tree section title">Class Hierarchy</h2><ul class="tree"><li class="node"><div>java.lang.Object</div></li><li class="level"><ul><li class="node"><div>edu.harvard.syrah.pyxida.log.<b class="tree link"><a href="../../../../../edu/harvard/syrah/pyxida/log/LogManager.html" title="Class in edu.harvard.syrah.pyxida.log">LogManager</a></b></div></li></ul></li></ul><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: LogManager.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>LogManager</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.log.LogManager class"/><meta name="keywords" content="STATS_PERIOD"/><meta name="keywords" content="init()"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi">Prev Class | <a href="../../../../../edu/harvard/syrah/pyxida/log/ReportCoordReplyMsg.html">Next Class</a></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="LogManager.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | <a href="#summary-methods">Method</a> | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | <a href="#detail-methods">Method</a> | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.log</h3><h1 class="class title-class">Class LogManager</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.log.LogManager</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">LogManager</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static long</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#STATS_PERIOD">STATS_PERIOD</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#LogManager(ObjCommIF,NCManager,PingManager)">LogManager</a>(ObjCommIF objComm, NCManager ncManager, PingManager pingManager)</code></dt></dl></td></tr></table></dd></dl><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#init(CB0)">init</a>(CB0 cb0)</code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="STATS_PERIOD" id="STATS_PERIOD"/><div class="member detail outer"><h3 class="member detail name">STATS_PERIOD</h3><pre class="member detail synopsis">public static final long STATS_PERIOD</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="LogManager(ObjCommIF,NCManager,PingManager)" id="LogManager(ObjCommIF,NCManager,PingManager)"/><div class="member detail outer"><h3 class="member detail name">LogManager</h3><pre class="member detail synopsis">public LogManager(ObjCommIF objComm, NCManager ncManager, PingManager pingManager)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="init(CB0)" id="init(CB0)"/><div class="member detail outer"><h3 class="member detail name">init</h3><pre class="member detail synopsis">public void init(CB0 cb0)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: classes.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida.log Class Menu</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="menu classes" onload="if(parent.contentPageLoaded)parent.contentPageLoaded()"><h4 class="classes menu-title"><a href="package-summary.html" title="" target="content">edu.harvard.syrah.pyxida.log</a></h4><div class="classes menu-list"><p class="classes menu-subtitle">Classes</p><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/log/LogManager.html" title="edu.harvard.syrah.pyxida.log.LogManager" target="content">LogManager</a></span><br/><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/log/ReportCoordReplyMsg.html" title="edu.harvard.syrah.pyxida.log.ReportCoordReplyMsg" target="content">ReportCoordReplyMsg</a></span><br/><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/log/ReportCoordReqMsg.html" title="edu.harvard.syrah.pyxida.log.ReportCoordReqMsg" target="content">ReportCoordReqMsg</a></span><br/></div></body></html> --- NEW FILE: package-summary.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida.log</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.log packages"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content package" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item active">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../edu/harvard/syrah/pyxida/api/package-summary.html">Prev Package</a> | <a href="../../../../../edu/harvard/syrah/pyxida/nc/package-summary.html">Next Package</a></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="package-summary.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="package title">Package edu.harvard.syrah.pyxida.log</h1><div class="package description top"></div><dl class="table container"><dd><table class="package summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Class Summary</h2></td></tr><tr><td class="left"><a href="../../../../../edu/harvard/syrah/pyxida/log/LogManager.html" title="Class in edu.harvard.syrah.pyxida.log">LogManager</a></td><td class="right"></td></tr><tr><td class="left"><a href="../../../../../edu/harvard/syrah/pyxida/log/ReportCoordReplyMsg.html" title="Class in edu.harvard.syrah.pyxida.log">ReportCoordReplyMsg</a></td><td class="right"></td></tr><tr><td class="left"><a href="../../../../../edu/harvard/syrah/pyxida/log/ReportCoordReqMsg.html" title="Class in edu.harvard.syrah.pyxida.log">ReportCoordReqMsg</a></td><td class="right"></td></tr></table></dd></dl> <a name="description" id="description"/><div class="package description full"></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item active">Package</span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: ReportCoordReqMsg.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>ReportCoordReqMsg</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.log.ReportCoordReqMsg class"/><meta name="keywords" content="primarySysCoord"/><meta name="keywords" content="primaryAppCoord"/><meta name="keywords" content="secondarySysCoord"/><meta name="keywords" content="secondaryAppCoord"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../edu/harvard/syrah/pyxida/log/ReportCoordReplyMsg.html">Prev Class</a> | Next Class</td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="ReportCoordReqMsg.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | Method | Constr</td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | Method | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.log</h3><h1 class="class title-class">Class ReportCoordReqMsg</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>ObjMessage</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.log.ReportCoordReqMsg</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">ReportCoordReqMsg</b></code></div><div class="class synopsis superclass"><code>extends ObjMessage</code></div></div><hr/><div class="class description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#primaryAppCoord">primaryAppCoord</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#primarySysCoord">primarySysCoord</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#secondaryAppCoord">secondaryAppCoord</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#secondarySysCoord">secondarySysCoord</a></code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="primaryAppCoord" id="primaryAppCoord"/><div class="member detail outer"><h3 class="member detail name">primaryAppCoord</h3><pre class="member detail synopsis">public Coordinate primaryAppCoord</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="primarySysCoord" id="primarySysCoord"/><div class="member detail outer"><h3 class="member detail name">primarySysCoord</h3><pre class="member detail synopsis">public Coordinate primarySysCoord</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="secondaryAppCoord" id="secondaryAppCoord"/><div class="member detail outer"><h3 class="member detail name">secondaryAppCoord</h3><pre class="member detail synopsis">public Coordinate secondaryAppCoord</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="secondarySysCoord" id="secondarySysCoord"/><div class="member detail outer"><h3 class="member detail name">secondarySysCoord</h3><pre class="member detail synopsis">public Coordinate secondarySysCoord</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: ReportCoordReplyMsg.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>ReportCoordReplyMsg</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.log.ReportCoordReplyMsg class"/><meta name="keywords" content="interval"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../edu/harvard/syrah/pyxida/log/LogManager.html">Prev Class</a> | <a href="../../../../../edu/harvard/syrah/pyxida/log/ReportCoordReqMsg.html">Next Class</a></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="ReportCoordReplyMsg.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | Method | Constr</td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | Method | Constr</td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.log</h3><h1 class="class title-class">Class ReportCoordReplyMsg</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>ObjMessage</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.log.ReportCoordReplyMsg</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">ReportCoordReplyMsg</b></code></div><div class="class synopsis superclass"><code>extends ObjMessage</code></div></div><hr/><div class="class description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis"> long</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#interval">interval</a></code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="interval" id="interval"/><div class="member detail outer"><h3 class="member detail name">interval</h3><pre class="member detail synopsis">public long interval</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> |
|
From: Peter P. <pr...@us...> - 2007-02-21 15:40:56
|
Update of /cvsroot/pyxida/Pyxida/web/dist In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7508/web/dist Added Files: pyxida-0.1.4.jar Log Message: Made a new Pyxida release 0.1.4 --- NEW FILE: pyxida-0.1.4.jar --- (This appears to be a binary file; contents omitted.) |
|
From: Peter P. <pr...@us...> - 2007-02-21 15:40:56
|
Update of /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/nc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7508/web/javadoc/edu/harvard/syrah/pyxida/nc Modified Files: package-summary.html Added Files: GossipResponseMsg.html ProxyPingRequestMsg.html classes.html tree.html NCManager.html CoordRequestMsg.html CoordResponseMsg.html GossipRequestMsg.html ProxyPingResponseMsg.html Log Message: Made a new Pyxida release 0.1.4 --- NEW FILE: CoordResponseMsg.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>CoordResponseMsg</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.nc.CoordResponseMsg class"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html">Prev Class</a> | <a href="../../../../../edu/harvard/syrah/pyxida/nc/GossipRequestMsg.html">Next Class</a></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="CoordResponseMsg.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | Method | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | Field | Method | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.nc</h3><h1 class="class title-class">Class CoordResponseMsg</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>ObjMessage</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.nc.CoordResponseMsg</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">CoordResponseMsg</b></code></div><div class="class synopsis superclass"><code>extends ObjMessage</code></div></div><hr/><div class="class description"> Response to GossipRequestMsg. Responds with the receiving node's current coordinate, confidence and last update time. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#CoordResponseMsg(Coordinate,double,long)">CoordResponseMsg</a>(Coordinate _remoteCoordinate, double _remoteError, long _remoteAge)</code></dt></dl></td></tr></table></dd></dl><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="CoordResponseMsg(Coordinate,double,long)" id="CoordResponseMsg(Coordinate,double,long)"/><div class="member detail outer"><h3 class="member detail name">CoordResponseMsg</h3><pre class="member detail synopsis">public CoordResponseMsg(Coordinate _remoteCoordinate, double _remoteError, long _remoteAge)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: ProxyPingResponseMsg.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>ProxyPingResponseMsg</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.nc.ProxyPingResponseMsg class"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../edu/harvard/syrah/pyxida/nc/ProxyPingRequestMsg.html">Prev Class</a> | Next Class</td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="ProxyPingResponseMsg.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | Method | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | Field | Method | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.nc</h3><h1 class="class title-class">Class ProxyPingResponseMsg</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>ObjMessage</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.nc.ProxyPingResponseMsg</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">ProxyPingResponseMsg</b></code></div><div class="class synopsis superclass"><code>extends ObjMessage</code></div></div><hr/><div class="class description"> Response to ProxyPingRequestMsg. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#ProxyPingResponseMsg(Coordinate,double,long,double)">ProxyPingResponseMsg</a>(Coordinate _remoteCoordinate, double _remoteError, long _remoteAge, double _latency)</code></dt></dl></td></tr></table></dd></dl><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="ProxyPingResponseMsg(Coordinate,double,long,double)" id="ProxyPingResponseMsg(Coordinate,double,long,double)"/><div class="member detail outer"><h3 class="member detail name">ProxyPingResponseMsg</h3><pre class="member detail synopsis">public ProxyPingResponseMsg(Coordinate _remoteCoordinate, double _remoteError, long _remoteAge, double _latency)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: GossipResponseMsg.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>GossipResponseMsg</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.nc.GossipResponseMsg class"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../edu/harvard/syrah/pyxida/nc/GossipRequestMsg.html">Prev Class</a> | <a href="../../../../../edu/harvard/syrah/pyxida/nc/NCManager.html">Next Class</a></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="GossipResponseMsg.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | Method | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | Field | Method | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.nc</h3><h1 class="class title-class">Class GossipResponseMsg</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>ObjMessage</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.nc.GossipResponseMsg</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">GossipResponseMsg</b></code></div><div class="class synopsis superclass"><code>extends ObjMessage</code></div></div><hr/><div class="class description"> Response to GossipRequestMsg. Responds with the receiving node's current coordinate, confidence and last update time. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#GossipResponseMsg(Coordinate,double,long,Coordinate,double,long,Set<AddressIF>)">GossipResponseMsg</a>(Coordinate _remotePrimaryCoord, double _remotePrimaryError, long _remotePrimaryAge, Coordinate _remoteSecondaryCoord, double _remoteSecondaryError, long _remoteSecondaryAge, Set<AddressIF> _nodes)</code></dt></dl></td></tr></table></dd></dl><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="GossipResponseMsg(Coordinate,double,long,Coordinate,double,long,Set<AddressIF>)" id="GossipResponseMsg(Coordinate,double,long,Coordinate,double,long,Set<AddressIF>)"/><div class="member detail outer"><h3 class="member detail name">GossipResponseMsg</h3><pre class="member detail synopsis">public GossipResponseMsg(Coordinate _remotePrimaryCoord, double _remotePrimaryError, long _remotePrimaryAge, Coordinate _remoteSecondaryCoord, double _remoteSecondaryError, long _remoteSecondaryAge, Set<AddressIF> _nodes)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: tree.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida.nc Hierarchy</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content packagetree" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="tree.html" title="Show without frames" target="_top">No Frames</a> </td></tr></table><h1 class="package tree title">Hierarchy for Package edu.harvard.syrah.pyxida.nc</h1><h2 class="package tree section title">Class Hierarchy</h2><ul class="tree"><li class="node"><div>java.lang.Object</div></li><li class="level"><ul><li class="node"><div>edu.harvard.syrah.pyxida.nc.<b class="tree link"><a href="../../../../../edu/harvard/syrah/pyxida/nc/NCManager.html" title="Class in edu.harvard.syrah.pyxida.nc">NCManager</a></b></div></li></ul></li></ul><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item active">Tree</span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: NCManager.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>NCManager</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.nc.NCManager class"/><meta name="keywords" content="NC_NUM_DIMS"/><meta name="keywords" content="SECONDARY_NC_NUM_DIMS"/><meta name="keywords" content="WATCH_NEIGHBORS"/><meta name="keywords" content="UPDATE_DELAY"/><meta name="keywords" content="DEFAULT_PROXY_LEASE"/><meta name="keywords" content="init()"/><meta name="keywords" content="printStats()"/><meta name="keywords" content="createProxyCoord()"/><meta name="keywords" content="renewLeaseOnProxyCoord()"/><meta name="keywords" content="getProxyCoord()"/><meta name="keywords" content="destroyProxyCoord()"/><meta name="keywords" content="getLocalCoord()"/><meta name="keywords" content="getStableCoord()"/><meta name="keywords" content="getLocalError()"/><meta name="keywords" content="getLocalSecondaryCoord()"/><meta name="keywords" content="getStableSecondaryCoord()"/><meta name="keywords" content="getLocalSecondaryError()"/><meta name="keywords" content="getRemoteCoord()"/><meta name="keywords" content="getRemoteCoords()"/><meta name="keywords" content="estimateRTT()"/><meta name="keywords" content="getPendingNeighbours()"/><meta name="keywords" content="getUpNeighbours()"/><meta name="keywords" content="getDownNeighbours()"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../edu/harvard/syrah/pyxida/nc/GossipResponseMsg.html">Prev Class</a> | <a href="../../../../../edu/harvard/syrah/pyxida/nc/ProxyPingRequestMsg.html">Next Class</a></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="NCManager.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | <a href="#summary-fields">Field</a> | <a href="#summary-methods">Method</a> | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | <a href="#detail-fields">Field</a> | <a href="#detail-methods">Method</a> | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.nc</h3><h1 class="class title-class">Class NCManager</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>java.lang.Object</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.nc.NCManager</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">NCManager</b></code></div><div class="class synopsis superclass"><code>extends java.lang.Object</code></div></div><hr/><div class="class description"> Manages the local and proxy coordinates. Initiates gossip to other overlay nodes. Receives and responds to gossip messages. Manages gossip set, e.g. set of overlay nodes that the coordinates might use as neighbors </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-fields" id="summary-fields"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Field Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis">static long</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#DEFAULT_PROXY_LEASE">DEFAULT_PROXY_LEASE</a></code></dt><dd class="description"> Default lifetime that proxy coordinates are managed for.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#NC_NUM_DIMS">NC_NUM_DIMS</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static int</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#SECONDARY_NC_NUM_DIMS">SECONDARY_NC_NUM_DIMS</a></code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static long</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#UPDATE_DELAY">UPDATE_DELAY</a></code></dt><dd class="description"> Time between gossip messages to coordinate neighbors.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis">static boolean</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#WATCH_NEIGHBORS">WATCH_NEIGHBORS</a></code></dt></dl></td></tr></table></dd></dl><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#NCManager(ObjCommIF,PingManager)">NCManager</a>(ObjCommIF _comm, PingManager pingManager)</code></dt><dd class="description"> Create a coordinate manager.</dd></dl></td></tr></table></dd></dl><a name="summary-methods" id="summary-methods"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Method Summary</h2></td></tr><tr><td class="left" valign="top"><code class="synopsis"> String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#createProxyCoord(AddressIF,long)">createProxyCoord</a>(AddressIF remoteNode, long lease)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#destroyProxyCoord(AddressIF)">destroyProxyCoord</a>(AddressIF remoteNode)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#estimateRTT(AddressIF,AddressIF,CB1<Double>)">estimateRTT</a>(AddressIF nodeA, AddressIF nodeB, CB1<Double> cbDistance)</code></dt><dd class="description"> Fetches coordinates from two nodes and returns the distance between them.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Set<AddressIF></code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getDownNeighbours()">getDownNeighbours</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getLocalCoord()">getLocalCoord</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getLocalError()">getLocalError</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getLocalSecondaryCoord()">getLocalSecondaryCoord</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> double</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getLocalSecondaryError()">getLocalSecondaryError</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Set<AddressIF></code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getPendingNeighbours()">getPendingNeighbours</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getProxyCoord(AddressIF)">getProxyCoord</a>(AddressIF remoteNode)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getRemoteCoord(AddressIF,CB1<Coordinate>)">getRemoteCoord</a>(AddressIF remoteNode, CB1<Coordinate> cbCoord)</code></dt><dd class="description"> Fetch coordinate from remote node.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getRemoteCoords(List<AddressIF>,final,Coordinate>,String>)">getRemoteCoords</a>(List<AddressIF> nodes, final CB2<Map<AddressIF, Coordinate> , String> cbCoords)</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getStableCoord()">getStableCoord</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Coordinate</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getStableSecondaryCoord()">getStableSecondaryCoord</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> Set<AddressIF></code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#getUpNeighbours()">getUpNeighbours</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#init(CB0)">init</a>(CB0 cbDone)</code></dt><dd class="description"> Asynchronous initialization of coordinate manager.</dd></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> void</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#printStats()">printStats</a>()</code></dt></dl></td></tr><tr><td class="left" valign="top"><code class="synopsis"> String</code></td><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#renewLeaseOnProxyCoord(AddressIF,long)">renewLeaseOnProxyCoord</a>(AddressIF remoteNode, long lease)</code></dt></dl></td></tr></table></dd></dl><a name="detail-fields" id="detail-fields"/><h2 class="section header">Field Details</h2><div class="section"><a name="DEFAULT_PROXY_LEASE" id="DEFAULT_PROXY_LEASE"/><div class="member detail outer"><h3 class="member detail name">DEFAULT_PROXY_LEASE</h3><pre class="member detail synopsis">public static final long DEFAULT_PROXY_LEASE</pre><blockquote class="member detail name"><div class="member detail description"> Default lifetime that proxy coordinates are managed for. Set to one hour. </div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">3600000L</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="NC_NUM_DIMS" id="NC_NUM_DIMS"/><div class="member detail outer"><h3 class="member detail name">NC_NUM_DIMS</h3><pre class="member detail synopsis">public static final int NC_NUM_DIMS</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="SECONDARY_NC_NUM_DIMS" id="SECONDARY_NC_NUM_DIMS"/><div class="member detail outer"><h3 class="member detail name">SECONDARY_NC_NUM_DIMS</h3><pre class="member detail synopsis">public static final int SECONDARY_NC_NUM_DIMS</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="UPDATE_DELAY" id="UPDATE_DELAY"/><div class="member detail outer"><h3 class="member detail name">UPDATE_DELAY</h3><pre class="member detail synopsis">public static final long UPDATE_DELAY</pre><blockquote class="member detail name"><div class="member detail description"> Time between gossip messages to coordinate neighbors. Default is 10 seconds. </div><div class="member detail thrown list"><dl><dt class="member detail thrown header"><b>Field Value:</b></dt><dd class="member detail thrown item">10000L</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="WATCH_NEIGHBORS" id="WATCH_NEIGHBORS"/><div class="member detail outer"><h3 class="member detail name">WATCH_NEIGHBORS</h3><pre class="member detail synopsis">public static final boolean WATCH_NEIGHBORS</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="NCManager(ObjCommIF,PingManager)" id="NCManager(ObjCommIF,PingManager)"/><div class="member detail outer"><h3 class="member detail name">NCManager</h3><pre class="member detail synopsis">public NCManager(ObjCommIF _comm, PingManager pingManager)</pre><blockquote class="member detail name"><div class="member detail description"> Create a coordinate manager. Does not block. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><a name="detail-methods" id="detail-methods"/><h2 class="section header">Method Details</h2><div class="section"><a name="createProxyCoord(AddressIF,long)" id="createProxyCoord(AddressIF,long)"/><div class="member detail outer"><h3 class="member detail name">createProxyCoord</h3><pre class="member detail synopsis">public String createProxyCoord(AddressIF remoteNode, long lease)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="destroyProxyCoord(AddressIF)" id="destroyProxyCoord(AddressIF)"/><div class="member detail outer"><h3 class="member detail name">destroyProxyCoord</h3><pre class="member detail synopsis">public String destroyProxyCoord(AddressIF remoteNode)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">result of proxy coordinate removal</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="estimateRTT(AddressIF,AddressIF,CB1<Double>)" id="estimateRTT(AddressIF,AddressIF,CB1<Double>)"/><div class="member detail outer"><h3 class="member detail name">estimateRTT</h3><pre class="member detail synopsis">public void estimateRTT(AddressIF nodeA, AddressIF nodeB, CB1<Double> cbDistance)</pre><blockquote class="member detail name"><div class="member detail description"> Fetches coordinates from two nodes and returns the distance between them. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getDownNeighbours()" id="getDownNeighbours()"/><div class="member detail outer"><h3 class="member detail name">getDownNeighbours</h3><pre class="member detail synopsis">public Set<AddressIF> getDownNeighbours()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getLocalCoord()" id="getLocalCoord()"/><div class="member detail outer"><h3 class="member detail name">getLocalCoord</h3><pre class="member detail synopsis">public Coordinate getLocalCoord()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">local coordinate</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getLocalError()" id="getLocalError()"/><div class="member detail outer"><h3 class="member detail name">getLocalError</h3><pre class="member detail synopsis">public double getLocalError()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">local error</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getLocalSecondaryCoord()" id="getLocalSecondaryCoord()"/><div class="member detail outer"><h3 class="member detail name">getLocalSecondaryCoord</h3><pre class="member detail synopsis">public Coordinate getLocalSecondaryCoord()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getLocalSecondaryError()" id="getLocalSecondaryError()"/><div class="member detail outer"><h3 class="member detail name">getLocalSecondaryError</h3><pre class="member detail synopsis">public double getLocalSecondaryError()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">local error</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getPendingNeighbours()" id="getPendingNeighbours()"/><div class="member detail outer"><h3 class="member detail name">getPendingNeighbours</h3><pre class="member detail synopsis">public Set<AddressIF> getPendingNeighbours()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getProxyCoord(AddressIF)" id="getProxyCoord(AddressIF)"/><div class="member detail outer"><h3 class="member detail name">getProxyCoord</h3><pre class="member detail synopsis">public Coordinate getProxyCoord(AddressIF remoteNode)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">Coordinate for this remoteNode if we are storing one.</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getRemoteCoord(AddressIF,CB1<Coordinate>)" id="getRemoteCoord(AddressIF,CB1<Coordinate>)"/><div class="member detail outer"><h3 class="member detail name">getRemoteCoord</h3><pre class="member detail synopsis">public void getRemoteCoord(AddressIF remoteNode, CB1<Coordinate> cbCoord)</pre><blockquote class="member detail name"><div class="member detail description"> Fetch coordinate from remote node. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getRemoteCoords(List<AddressIF>,final,Coordinate>,String>)" id="getRemoteCoords(List<AddressIF>,final,Coordinate>,String>)"/><div class="member detail outer"><h3 class="member detail name">getRemoteCoords</h3><pre class="member detail synopsis">public void getRemoteCoords(List<AddressIF> nodes, final CB2<Map<AddressIF, Coordinate> , String> cbCoords)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getStableCoord()" id="getStableCoord()"/><div class="member detail outer"><h3 class="member detail name">getStableCoord</h3><pre class="member detail synopsis">public Coordinate getStableCoord()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">local coordinate</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getStableSecondaryCoord()" id="getStableSecondaryCoord()"/><div class="member detail outer"><h3 class="member detail name">getStableSecondaryCoord</h3><pre class="member detail synopsis">public Coordinate getStableSecondaryCoord()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="member detail return list"><dl><dt class="member detail return header"><b>Returns:</b></dt><dd class="member detail return item">local coordinate</dd></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="getUpNeighbours()" id="getUpNeighbours()"/><div class="member detail outer"><h3 class="member detail name">getUpNeighbours</h3><pre class="member detail synopsis">public Set<AddressIF> getUpNeighbours()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="init(CB0)" id="init(CB0)"/><div class="member detail outer"><h3 class="member detail name">init</h3><pre class="member detail synopsis">public void init(CB0 cbDone)</pre><blockquote class="member detail name"><div class="member detail description"> Asynchronous initialization of coordinate manager. Resolves bootstrap neighbors and starts gossip for local coordinate. Starts listening for gossip messages. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="printStats()" id="printStats()"/><div class="member detail outer"><h3 class="member detail name">printStats</h3><pre class="member detail synopsis">public void printStats()</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div><hr/><a name="renewLeaseOnProxyCoord(AddressIF,long)" id="renewLeaseOnProxyCoord(AddressIF,long)"/><div class="member detail outer"><h3 class="member detail name">renewLeaseOnProxyCoord</h3><pre class="member detail synopsis">public String renewLeaseOnProxyCoord(AddressIF remoteNode, long lease)</pre><blockquote class="member detail name"><div class="member detail description"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: classes.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>edu.harvard.syrah.pyxida.nc Class Menu</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="menu classes" onload="if(parent.contentPageLoaded)parent.contentPageLoaded()"><h4 class="classes menu-title"><a href="package-summary.html" title="" target="content">edu.harvard.syrah.pyxida.nc</a></h4><div class="classes menu-list"><p class="classes menu-subtitle">Classes</p><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/nc/CoordRequestMsg.html" title="edu.harvard.syrah.pyxida.nc.CoordRequestMsg" target="content">CoordRequestMsg</a></span><br/><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html" title="edu.harvard.syrah.pyxida.nc.CoordResponseMsg" target="content">CoordResponseMsg</a></span><br/><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/nc/GossipRequestMsg.html" title="edu.harvard.syrah.pyxida.nc.GossipRequestMsg" target="content">GossipRequestMsg</a></span><br/><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/nc/GossipResponseMsg.html" title="edu.harvard.syrah.pyxida.nc.GossipResponseMsg" target="content">GossipResponseMsg</a></span><br/><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/nc/NCManager.html" title="edu.harvard.syrah.pyxida.nc.NCManager" target="content">NCManager</a></span><br/><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/nc/ProxyPingRequestMsg.html" title="edu.harvard.syrah.pyxida.nc.ProxyPingRequestMsg" target="content">ProxyPingRequestMsg</a></span><br/><span class="classes menu-entry class"><a href="../../../../../edu/harvard/syrah/pyxida/nc/ProxyPingResponseMsg.html" title="edu.harvard.syrah.pyxida.nc.ProxyPingResponseMsg" target="content">ProxyPingResponseMsg</a></span><br/></div></body></html> --- NEW FILE: CoordRequestMsg.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>CoordRequestMsg</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.nc.CoordRequestMsg class"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi">Prev Class | <a href="../../../../../edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html">Next Class</a></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="CoordRequestMsg.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | Method | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | Field | Method | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.nc</h3><h1 class="class title-class">Class CoordRequestMsg</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>ObjMessage</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.nc.CoordRequestMsg</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">CoordRequestMsg</b></code></div><div class="class synopsis superclass"><code>extends ObjMessage</code></div></div><hr/><div class="class description"> Requests the receiving node's current coordinate, confidence and last update time. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#CoordRequestMsg()">CoordRequestMsg</a>()</code></dt><dd class="description"> Creates a CoordRequestMsg </dd></dl></td></tr></table></dd></dl><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="CoordRequestMsg()" id="CoordRequestMsg()"/><div class="member detail outer"><h3 class="member detail name">CoordRequestMsg</h3><pre class="member detail synopsis">public CoordRequestMsg()</pre><blockquote class="member detail name"><div class="member detail description"> Creates a CoordRequestMsg </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> --- NEW FILE: GossipRequestMsg.html --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//gnu.org///DTD XHTML 1.1 plus Target 1.0//EN" "../../../../../resources/xhtml11-target10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>GossipRequestMsg</title><script src="../../../../../resources/gjdoc.js" type="text/javascript"><!-- this comment required for konqueror 3.2.2 --></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta name="generator" content="GNU Gjdoc Standard Doclet"/><meta name="keywords" content="edu.harvard.syrah.pyxida.nc.GossipRequestMsg class"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-layout.css" title="GNU Clean"/><link rel="stylesheet" type="text/css" href="../../../../../resources/gjdochtml-clean-color1.css" title="GNU Clean"/></head><body class="content class" onload="if(parent.contentPageLoaded)parent.contentPageLoaded(document.title)"><table class="navbar div top"><tr><td class="navbar div top"><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr><tr><td class="navi"><a href="../../../../../edu/harvard/syrah/pyxida/nc/CoordResponseMsg.html">Prev Class</a> | <a href="../../../../../edu/harvard/syrah/pyxida/nc/GossipResponseMsg.html">Next Class</a></td><td class="navi"><a href="../../../../../index.html" title="Show in a frameset" target="_top">Frames</a> | <a href="GossipRequestMsg.html" title="Show without frames" target="_top">No Frames</a> </td></tr><tr><td class="navi">Summary: Nested | Field | Method | <a href="#summary-constructors">Constr</a></td><td class="navi">Detail: Nested | Field | Method | <a href="#detail-constructors">Constr</a></td></tr></table><div class="class title outer"><h3 class="class title-package">edu.harvard.syrah.pyxida.nc</h3><h1 class="class title-class">Class GossipRequestMsg</h1></div><div class="class inheritance-tree"><ul class="inheritance 0"><li class="inheritance 0"><code>ObjMessage</code></li><li><ul class="inheritance 1"><li class="inheritance 1"><code>edu.harvard.syrah.pyxida.nc.GossipRequestMsg</code></li><li></li></ul></li></ul></div><hr/><div class="class synopsis outer"><div class="class synopsis declaration"><code>public class <b class="class synopsis name">GossipRequestMsg</b></code></div><div class="class synopsis superclass"><code>extends ObjMessage</code></div></div><hr/><div class="class description"> Requests the receiving node's current coordinate, confidence and last update time. </div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><a name="summary-constructors" id="summary-constructors"/><dl class="table container"><dd><table class="class summary" border="1" width="100%"><tr class="table header"><td colspan="2"><h2 class="table header">Constructor Summary</h2></td></tr><tr><td class="right"><dl class="list"><dt class="synopsis"><code><a href="#GossipRequestMsg(Coordinate,Coordinate,Set<AddressIF>)">GossipRequestMsg</a>(Coordinate _primaryCoord, Coordinate _secondaryCoord, Set<AddressIF> _nodes)</code></dt><dd class="description"> Creates a GossipRequestMsg </dd></dl></td></tr></table></dd></dl><a name="detail-constructors" id="detail-constructors"/><h2 class="section header">Constructor Details</h2><div class="section"><a name="GossipRequestMsg(Coordinate,Coordinate,Set<AddressIF>)" id="GossipRequestMsg(Coordinate,Coordinate,Set<AddressIF>)"/><div class="member detail outer"><h3 class="member detail name">GossipRequestMsg</h3><pre class="member detail synopsis">public GossipRequestMsg(Coordinate _primaryCoord, Coordinate _secondaryCoord, Set<AddressIF> _nodes)</pre><blockquote class="member detail name"><div class="member detail description"> Creates a GossipRequestMsg </div><div class="parameter"><dl><dt class="header"><b>Parameters:</b></dt></dl></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div><div class="taglet"></div></blockquote></div></div><p class="navbar bottom spacer"> </p><table class="navbar div bottom"><tr><td><div class="navbar div top"><span class="navbar item enabled"><a href="../../../../../overview-summary.html">Overview</a></span> <span class="navbar item enabled"><a href="package-summary.html">Package</a></span> <span class="navbar item enabled"><a href="tree.html">Tree</a></span> <span class="navbar item enabled"><a href="../../../../../alphaindex.html">Index</a></span> <span class="navbar item enabled"><a href="../../../../../deprecated.html">Deprecated</a></span> <span class="navbar item enabled"><a href="../../../../../about.html">About</a></span></div></td></tr></table></body></html> Index: package-summary.html =================================================================== RCS file: /cvsroot/pyxida/Pyxida/web/javadoc/edu/harvard/syrah/pyxida/nc/package-summary.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** package-summary.html 6 Feb 2007 17:54:04 -0000 1.7 --- package-summary.html 21 Feb 2007 15:40:49 -0000 1.8 *************** *** 1,179 **** ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ! <!--NewPage--> ! <HTML> ! <HEAD> ! <!-- Generated by javadoc (build 1.5.0_07) on Wed Jan 03 11:53:50 EST 2007 --> ! <TITLE> ! edu.harvard.syrah.pyxida.nc ! </TITLE> ! ! <META NAME="keywords" CONTENT="edu.harvard.syrah.pyxida.nc package"> ! ! <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style"> ! ! <SCRIPT type="text/javascript"> ! function windowTitle() ! { ! parent.document.title="edu.harvard.syrah.pyxida.nc"; ! } ! </SCRIPT> ! <NOSCRIPT> ! </NOSCRIPT> ! ! </HEAD> ! ! <BODY BGCOLOR="white" onload="windowTitle();"> ! ! ! <!-- ========= START OF TOP NAVBAR ======= --> ! <A NAME="navbar_top"><!-- --></A> ! <A HREF="#skip-navbar_top" title="Skip navigation links"></A> ! <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> ! <TR> ! <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> ! <A NAME="navbar_top_firstrow"><!-- --></A> ! <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> ! <TR ALIGN="center" VALIGN="top"> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> ! <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> ! <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../.... [truncated message content] |
|
From: Peter P. <pr...@us...> - 2007-02-21 15:40:51
|
Update of /cvsroot/pyxida/Pyxida/web/javadoc/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7508/web/javadoc/resources Added Files: xhtml11-target10.dtd gjdochtml-clean-color1.css gjdochtml-clean-layout.css gjdoc.js inherit.png Log Message: Made a new Pyxida release 0.1.4 --- NEW FILE: xhtml11-target10.dtd --- <!-- xhtml11-strict-target10.dtd Copyright (C) 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath 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, or (at your option) any later version. GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. --> <!-- XHTML 1.1 plus Target 1.0 DTD ................................ --> <!-- File: xhtml11-target10.dtd XHTML 1.1 DTD which loads the optional Target 1.0 Module. This file is based on a DTD by Jacques Distler. See http://golem.ph.utexas.edu/~distler/blog/files/zeldman.html Public and System Identifiers: PUBLIC "-//gnu.org//DTD XHTML 1.1 plus Target 1.0//EN" SYSTEM "http://gnu.org/DTD/xhtml11-target10.dtd" The corresponding DOCTYPE declaration: <!DOCTYPE html PUBLIC "-//gnu.org//DTD XHTML 1.1 plus Target 1.0//EN" "http://gnu.org/DTD/xhtml11-target10.dtd"> Original idea: Dave H <dm...@dm...> http://www.dmh.org.uk/ --> <!ENTITY % XHTML.version "-//gnu.org//DTD XHTML 1.1 plus Target 1.0//EN" > <!ENTITY % xhtml11.mod PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" > %xhtml11.mod; <!ENTITY % xhtml-target.mod PUBLIC "-//W3C//ELEMENTS XHTML Target 1.0//EN" "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-target-1.mod" > %xhtml-target.mod; --- NEW FILE: gjdochtml-clean-layout.css --- /* gjdochtml-clean-layout.css Copyright (C) 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath 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, or (at your option) any later version. GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* --- GNU Clean Style: Layout --- */ body { background: white; color: black; } body.content { margin-left: 1.3em; margin-right: 1.3em; margin-top: 0.9em; margin-bottom: 1.3em; } div[class="class title outer"] { margin: 0em; margin-bottom: 1em; border: 1px solid; padding: 10pt; } [class="class title-package"] { margin: 0em; padding: 0em; } [class="class title-class"] { margin: 0em; margin-top: 0.2em; padding: 0em; } [class="table header"], [class="table sub header"] { margin: 0em; padding: 0.25em; } [class="section header"] { margin: 0em; padding: 0.25em; border: 1px solid; } .serialized.package.header { margin: 0em; padding: 0.25em; border: 1px solid; margin-bottom: 1em; } .serialized.class.header { margin: 0em; padding: 0.25em; padding-left: 3.25em; border: 1px solid; text-indent: -3em; font-weight: normal; font-size: 1.2em; } .serialized.section.header { font-size: 1.15em; } div.serialized.section { padding-left: 1em; } .summary td, .summary .inherited { padding: 0.25em; } table[border] { border-spacing: 0em; border-collapse: collapse; } table[border] td { border-spacing: 0em; border-collapse: collapse; } hr { border-top: 1px solid; border-bottom: 0px; border-left: 0px; border-right: 0px; } .class.summary .left { width: 10%; } .class.summary td.left { text-align: right; } .class.summary .left .synopsis { font-size: small; } [class="package summary left"] { width: 20%; } ul.inheritance { margin-left: 1.8em; padding-left: 0em; marker-offset: 0em !important; list-style-type: none; list-style-image: none; } li.inheritance { margin: 0em !important; margin-top: 0.1em !important; padding: 0em !important; marker-offset: 0em !important; } ul.inheritance > li.inheritance:before { display: marker; width: 12px; margin: 0em !important; padding: 0em !important; marker-offset: 0em !important; content: url(inherit.png); vertical-align: center !important; } [class="inheritance 0"] > li.inheritance:before { display: none; } ul [class="inheritance 0"] { margin-left: 12px !important; padding-left: 0em; list-style-type: none !important; list-style-image: none !important; } .inheritance-tree { position: relative; left: -24px; } .synopsis.outer { padding: 0em; margin-bottom: 0.3em; } .synopsis.outer > * { margin: 0em; padding: 0em; line-height: 1.0em; } div.navbar.div { padding: 0em; margin: 0em; position: relative; left: -0.2em; } .navbar.div, .navbar.div tr, .navbar.div td { margin: 0em; padding: 0em; border-spacing: 0em; border-collapse: collapse; } table.navbar.div { width: 100%; } table.navbar.div td { line-height: 1.9em; text-align: top; } .navbar.item { /* float: left; */ border: 1px solid; /* width: 7.5em; */ text-align: center; margin: 0.05em; padding-top: 0.2em; padding-bottom: 0.3em; padding-left: 0.5em; padding-right: 0.5em; font-size: 0.75em; margin-bottom: 0.5em; } .navbar.item.active { /* font-weight: bold; */ border: 1px solid; } [class~="title"] { border: 1px solid; padding: 0.3em; margin-top: 0em; } .table.container, .table.container dd { padding: 0em; margin: 0em; } .overview.summary { padding: 0em; margin: 0em; } .summary { margin-bottom: 1.2em; } table.navbar.top { margin-bottom: 1em !important; } .package.description { margin-top: 0.0em; margin-bottom: 1.0em; } .class.description { margin-top: 1em; margin-bottom: 0.8em; } [class="overview description top"] { margin-top: 0.0em; margin-bottom: 1.0em; } [class="overview description full"] { margin-top: 1.0em; margin-bottom: 0.0em; } .class.summary .right .list { margin: 0em; padding: 0em; } .class.summary .right .list .synopsis { margin: 0em; padding: 0em; } .classes .menu-subtitle { padding: 0em; margin-top: 0.5em; margin-bottom: 0em; } .menu-title { padding: 0em; margin-top: 0.8em; margin-bottom: 0.2em; } .menu-entry { font-size: 0.8em; } .class.summary .right { vertical-align: top; } .class.summary .right .list { vertical-align: top; } .navi { padding-top: 0.5em; font-size: x-small; } .navbar .header { vertical-align: top; } .navbar .header span { border: none; white-space: nowrap; padding-top: 0.2em; padding-bottom: 0.3em; padding-left: 0.5em; } .navbar .header a { font-weight: bold; font-size: 11pt; } h1 { font-size: 1.5em; } h2 { font-size: 1.3em; } h3 { font-size: 1.1em; } .summary .right .synopsis { padding-left: 5.25em !important; text-indent: -5em !important; } .summary .right .description { text-indent: 1em !important; padding-top: 0.25em !important; padding-bottom: 0.1em !important; padding-left: 0.25em !important; } td.usage.summary { vertical-align: top; } .index .entry .description { padding-left: 3em; } .index .entry .key { padding-left: 5.25em; text-indent: -5em; } .dep-list .summary .description { padding-top: 0.1em; padding-left: 3em; } .dep-toc .header { padding-bottom: 0em; margin-bottom: 0.2em; } .dep-toc .list { margin-top: 0em; margin-bottom: 1.5em; padding-top: 0em; padding-bottom: 0em; padding-left: 2em; } ul.tree li.node { list-style-type: disc; } ul.tree ul { margin-left: 0em; padding-left: 1.8em; } li.level { list-style-type: none; } --- NEW FILE: gjdochtml-clean-color1.css --- /* gjdochtml-clean-layout.css Copyright (C) 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath 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, or (at your option) any later version. GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* --- GNU Clean Style: Color Scheme #1 --- */ [class~="title"], [class="table header"], [class="table sub header"], [class="section header"], [class="serialized package header"], [class="serialized class header"] { background-color: #E8EAFF; } [class~="navbar"][class~="item"] { border-color: #000000; color: #000000; } [class~="navbar"][class~="item"][class~="disabled"] { border-color: #aaaaaa; color: #aaaaaa; } [class~="navbar"][class~="item"][class~="active"] { color: #000000; background-color: #E8EAFF; } [class~="navbar"][class~="item"][class~="active"] { border-color: #222222; } .navbar .header a { color: #777777; } a[href] { color: #141EB8; } a[href]:visited { color: #0C126E; } /* ---- source highlighting ---- */ .comment { color: #777777; } .tag { color: #444444; } .keyword { color: #B36B00; } .header.type { color: #00248F; } .type { color: #0033CC; } .literal { color: #809FFF; } .variable { color: #007D48; } .method { color: #B32400; } .line-number { color: #AAAAAA; } --- NEW FILE: inherit.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: gjdoc.js --- /* gjdoc.js Copyright (C) 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath 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, or (at your option) any later version. GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /** * Sets a new stylesheet for a single frame. */ function setStyleSheetForFrame(title, frame_name) { var i, num, a, main; f = eval("top.frames." + frame_name); for(i=0; (a = f.document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; a.disabled = (a.getAttribute("title") != title); } } } /** * Sets a new stylesheet for a single document. */ function setStyleSheetForDocument(title) { var i, num, a, main; for(i=0; (a = top.document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; a.disabled = (a.getAttribute("title") != title); } } } /** * Sets a new stylesheets for all frames. */ function setStyleSheet(title) { var i, num, a, main; num = top.frames.length; if (num > 0) { for (i=0; i<num; i++) { setStyleSheetForFrame(title, top.frames[i].name); } } else { setStyleSheetForDocument(title); } top.selectedSheet = title; return false; } /** * Returns the title of the set of stylesheets that is active in the * given frame. */ function getActiveStylesheetTitle(frame) { for(i=0; (a = frame.document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { if (!a.disabled) { return a.getAttribute("title"); } } } return ""; } /** * Invoked when a page in the main content frame has been loaded. */ function contentPageLoaded(title) { if (title) { top.document.title = title; } /** 20050204: removed since there is only one stylesheet at the time if (top.frames.length > 0) { setStyleSheet(getActiveStylesheetTitle(top.frames.packages), "content"); } else if (top.selectedSheet) { setStyleSheet(top.selectedSheet, "content"); } **/ } /** * Invoked when a page in one of the two frames on the left hand has * been loaded. */ function secondaryPageLoaded(frame_name) { /** 20050204: removed since there is only one stylesheet at the time setStyleSheet(getActiveStylesheetTitle(top.frames.packages), frame_name); **/ } |