Esempio n. 1
0
        public void ReadingFile(string path)
        {
            FileInfo fi = new FileInfo(path);

            int countP;

            if ((fi.Length % 1048576) != 0)
            {
                countP = Convert.ToInt32(fi.Length / 1048576) + 1;
            }
            else
            {
                countP = Convert.ToInt32(fi.Length / 1048576);
            }

            string hash = ComputeMD5Checksum(path);

            var allBytes = File.ReadAllBytes(path);

            int part     = 1;
            int partsize = 1024 * 1024;
            int position = 0;

            for (int i = 0; i < allBytes.Length; i += partsize)
            {
                byte[] partbytes = new byte[Math.Min(partsize, allBytes.Length - i)];
                for (int j = 0; j < partbytes.Length; j++)
                {
                    partbytes[j] = allBytes[position++];
                }
                FileChunk fc = new FileChunk()
                {
                    Hash       = hash,
                    Content    = partbytes,
                    ChunkN     = part,
                    FileName   = fi.Name,
                    ChunkCount = countP
                };
                SendF(fc);
                part++;
            }
        }
Esempio n. 2
0
        static void func(FileStream fs, byte[] bytes, int partitionCount, string id)
        {
            Console.WriteLine(fs.Length);
            while (fs.Position != fs.Length)
            {
                FileChunk filechunk = new FileChunk();
                if (fs.Length - fs.Position < bytes.Length)
                {
                    Console.WriteLine("End: " + (fs.Length - fs.Position).ToString());
                    byte[] temp = new byte[fs.Length - fs.Position];
                    fs.Read(temp, 0, Convert.ToInt32(fs.Length - fs.Position));
                    partitionsCount++;

                    filechunk.FileId   = id;
                    filechunk.Content  = temp;
                    filechunk.ChunkNo  = partitionsCount;
                    filechunk.Position = fs.Position;
                }
                else
                {
                    fs.Read(bytes, 0, bytes.Length);
                    partitionsCount++;

                    filechunk.FileId   = id;
                    filechunk.Content  = bytes;
                    filechunk.ChunkNo  = partitionsCount;
                    filechunk.Position = fs.Position;
                }


                Console.WriteLine(fs.Position.ToString());

                var containerAsJson = JsonConvert.SerializeObject(filechunk);
                var body            = Encoding.UTF8.GetBytes(containerAsJson);
                channel.BasicPublish(exchange: "",
                                     routingKey: "files_to_process_queue",
                                     basicProperties: null,
                                     body: body);
            }
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            string path            = @"C:\Users\Zhanibek\Desktop\rise.mp4";
            string id              = Guid.NewGuid().ToString();
            int    partitionsCount = 0;
            var    bytes           = new byte[(1024 * 1024) * 4];



            var factory = new ConnectionFactory()
            {
                HostName = "localhost",
                UserName = "******",
                Password = "******"
            };

            using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "files_to_process_queue",
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);
                    using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
                    {
                        Console.WriteLine(fs.Length);
                        while (fs.Position != fs.Length)
                        {
                            FileChunk filechunk = new FileChunk();
                            if (fs.Length - fs.Position < bytes.Length)
                            {
                                Console.WriteLine("End: " + (fs.Length - fs.Position).ToString());
                                byte[] temp = new byte[fs.Length - fs.Position];
                                fs.Read(temp, 0, Convert.ToInt32(fs.Length - fs.Position));
                                partitionsCount++;

                                filechunk.FileId   = id;
                                filechunk.Content  = temp;
                                filechunk.ChunkNo  = partitionsCount;
                                filechunk.Position = fs.Position;
                            }
                            else
                            {
                                fs.Read(bytes, 0, bytes.Length);
                                partitionsCount++;

                                filechunk.FileId   = id;
                                filechunk.Content  = bytes;
                                filechunk.ChunkNo  = partitionsCount;
                                filechunk.Position = fs.Position;
                            }


                            Console.WriteLine(fs.Position.ToString());

                            var containerAsJson = JsonConvert.SerializeObject(filechunk);
                            var body            = Encoding.UTF8.GetBytes(containerAsJson);
                            channel.BasicPublish(exchange: "",
                                                 routingKey: "files_to_process_queue",
                                                 basicProperties: null,
                                                 body: body);
                        }
                        Console.ReadLine();
                    }
                }
        }