Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }