public Droplet Encode() { Droplet encodingBlock = null; int d=0, neighbourOffset; d = _dist.Degree (); encodingBlock = new Droplet(d, BlockSize); for (int numNeighbours=1; numNeighbours<=d; numNeighbours++) { // Get a block offset do { neighbourOffset = _neighbourSelector.Next (K); // Loop until we generate a neighbour that isn't already in the list } while (encodingBlock.Neighbours.Contains (neighbourOffset) == true); encodingBlock.AddNeighbour(neighbourOffset); if (numNeighbours == 1) { encodingBlock.Data = _data[neighbourOffset]; } else { XorInto (encodingBlock.Data, _data [neighbourOffset]); } } return (encodingBlock); }
public Droplet Encode() { Droplet encodingBlock = null; int d = 0; int[] generatedNeighbours; int currentNeighbour; _trackingDist.Generate (); d = _trackingDist.Degree (); generatedNeighbours = _trackingDist.Neighbours (); encodingBlock = new Droplet(d, BlockSize); for (int numNeighbours=0; numNeighbours<d; numNeighbours++) { currentNeighbour = generatedNeighbours [numNeighbours]; encodingBlock.AddNeighbour(currentNeighbour); if (numNeighbours == 0) { encodingBlock.Data = _data[currentNeighbour]; } else { XorInto (encodingBlock.Data, _data [currentNeighbour]); } } return (encodingBlock); }