예제 #1
0
        private void WriteIdx()
        {
            // Write index
            HelperTools.Int32Bytes(idxBuffer, 0, secTime);
            HelperTools.Long2Bytes(idxBuffer, 4, file.Position);

            idxFile.Write(idxBuffer, 0, HelperTools.idxIndexSize);
        }
예제 #2
0
        private void FillHeader(long _time, string _ID, int _size, byte[] _buffer, ushort[] ipChunks, int _port)
        {
            // Time 8
            HelperTools.Long2Bytes(_buffer, 0, _time);
            // Hashed ID 4
            HelperTools.Int32Bytes(_buffer, 8, HelperTools.GetDeterministicHashCode(_ID));
            // IP 4
            for (int i = 0; i < 4; i++)
            {
                _buffer[12 + i] = (byte)ipChunks[i];
            }

            // Port 4
            HelperTools.Int32Bytes(_buffer, 16, _port);
            // Size 4
            HelperTools.Int32Bytes(_buffer, 20, _size);
        }
예제 #3
0
        private void FillIDXHeader(FileStream _idxFile)
        {
            byte[] idxHeader = new byte[4096];
            int    i         = 0;

            // Write idx Header
            // Time of recording
            i += HelperTools.Long2Bytes(idxHeader, i, HelperTools.millisFromEpochNow());
            // Interval
            i += HelperTools.Int32Bytes(idxHeader, i, secsIdxInterval);
            // Number of peers
            i += HelperTools.Int32Bytes(idxHeader, i, udpListeners.Count);
            foreach (RecPeerInfo p in udpListeners.Values)
            {
                i += HelperTools.StringWithLength2Bytes(idxHeader, i, p.ID);
                i += HelperTools.StringWithLength2Bytes(idxHeader, i, p.IP);
                i += HelperTools.Int32Bytes(idxHeader, i, p.Port);
            }

            idxFile.Write(idxHeader, 0, i);
        }