Example #1
0
        public static object PushHdd(bufferType buftype, IEnumerable <byte[]> data, string filename)
        {
            //log.Debug($"Push buftype {buftype}");

            List <Task> TaskList = new List <Task>();
            object      arg      = new TaskHddArgs()
            {
                filename = filename,
                buftype  = buftype,
                data     = data
            };

            TaskHDDJob(arg);

            return(null);
        }
Example #2
0
        private static int TaskTCPJob(object args)
        {
            TaskTcpArgs          arg     = (TaskTcpArgs)args;
            int                  port    = arg.port;
            bufferType           buftype = arg.buftype;
            IEnumerable <byte[]> data    = arg.data;

            try
            {
                using (var client = new TcpClient())
                {
                    client.Client.Connect(IPAddress.Parse(Configuration.GetKres()), port);

                    var messageType = (int)buftype;

                    //+ 8 bytes (= last crc64 bytes)
                    var header = BitConverter.GetBytes(messageType)             // 4 bytes -> message type
                                 .Concat(BitConverter.GetBytes(data.Count()));  // 4 bytes -> how many buffers

                    var headerCrc = Crc64.Compute(0, header.ToArray());
                    header = header.Concat(BitConverter.GetBytes(headerCrc));   // 8 byte -> crc of this header

                    //log.Debug($"Get stream");
                    using (var stream = client.GetStream())
                    {
                        if (SendHeader(stream, header))
                        {
                            SendBuffers(stream, data);
                        }

                        //log.Debug($"Closing ip stream.");
                        stream.Flush();
                        stream.Close();
                    }
                    client.Close();

                    log.Debug($"Kres {port} job {buftype} updated");
                }
            }
            catch (Exception ex)
            {
                log.Error($"Unable to connect to kres on port {port}, ex: {ex.Message}");
            }

            return(0);
        }
Example #3
0
        private static int TaskHDDJob(object args)
        {
            TaskHddArgs          arg      = (TaskHddArgs)args;
            string               filename = arg.filename;
            bufferType           buftype  = arg.buftype;
            IEnumerable <byte[]> data     = arg.data;

            try
            {
                using (var stream = new FileStream(filename, FileMode.Append, FileAccess.Write, FileShare.None))
                {
                    var messageType = (int)buftype;

                    //+ 8 bytes (= last crc64 bytes)
                    var header = BitConverter.GetBytes(messageType)             // 4 bytes -> message type
                                 .Concat(BitConverter.GetBytes(data.Count()));  // 4 bytes -> how many buffers

                    var headerCrc = Crc64.Compute(0, header.ToArray());
                    header = header.Concat(BitConverter.GetBytes(headerCrc));   // 8 byte -> crc of this header

                    //log.Debug($"Get stream");
                    //using (var stream = client.GetStream())
                    {
                        if (SendHeader(stream, header))
                        {
                            SendBuffers(stream, data);
                        }

                        //log.Debug($"Closing ip stream.");
                        stream.Flush();
                        stream.Close();
                    }
                    //client.Close();

                    log.Debug($"File {filename} was updated.");
                }
            }
            catch (Exception ex)
            {
                log.Error($"Unable to write to {filename}. Ex: {ex}");
            }

            return(0);
        }
Example #4
0
        public static object PushTcp(bufferType buftype, IEnumerable <byte[]> data)
        {
            log.Debug($"Push buftype {buftype}");

            List <Task> TaskList = new List <Task>();

            for (var port = Configuration.GetMinPort(); port < Configuration.GetMaxPort(); port++)
            {
                object arg = new TaskTcpArgs()
                {
                    port    = port,
                    buftype = buftype,
                    data    = data
                };
                TaskList.Add(new TaskFactory().StartNew(new Action <object>((args) =>
                {
                    TaskTCPJob(args);
                }), arg));
            }

            Task.WaitAll(TaskList.ToArray());

            return(null);
        }