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); }
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); }
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); }
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); }