private void LoadFile(string fileName) { CultureInfo.InvariantCulture.DoInCulture(() => { if (!File.Exists(fileName)) { return; } var name = Path.GetFileNameWithoutExtension(fileName); var pairs = new List <Tuple <SecurityId, object> >(); using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { var reader = new FastCsvReader(stream, Encoding.UTF8); reader.NextLine(); reader.Skip(2); var type1 = reader.ReadString().To <Type>(); var type2 = reader.ReadString().To <Type>(); var isTuple = type2 != null; while (reader.NextLine()) { var securityId = new SecurityId { SecurityCode = reader.ReadString(), BoardCode = reader.ReadString() }; var nativeId = reader.ReadString().To(type1); if (isTuple) { var nativeId2 = reader.ReadString().To(type2); nativeId = typeof(Tuple <,>).MakeGenericType(type1, type2).CreateInstance(new[] { nativeId, nativeId2 }); } pairs.Add(Tuple.Create(securityId, nativeId)); } } lock (_sync) { var nativeIds = _nativeIds.SafeAdd(name); foreach (var tuple in pairs) { nativeIds.Add(tuple.Item1, tuple.Item2); } } }); }
public void Init() { if (!File.Exists(_fileName)) { return; } CultureInfo.InvariantCulture.DoInCulture(() => { using (var stream = new FileStream(_fileName, FileMode.Open, FileAccess.Read)) { var reader = new FastCsvReader(stream, Encoding.UTF8); reader.NextLine(); reader.Skip(); var fields = new string[reader.ColumnCount - 1]; for (var i = 0; i < reader.ColumnCount - 1; i++) { fields[i] = reader.ReadString(); } reader.NextLine(); reader.Skip(); var types = new Type[reader.ColumnCount - 1]; for (var i = 0; i < reader.ColumnCount - 1; i++) { types[i] = reader.ReadString().To <Type>(); _fieldTypes.Add(fields[i], types[i]); } var idGenerator = new SecurityIdGenerator(); while (reader.NextLine()) { var secId = idGenerator.Split(reader.ReadString()); var values = new Dictionary <object, object>(); for (var i = 0; i < fields.Length; i++) { values[fields[i]] = reader.ReadString().To(types[i]); } _cache.Add(secId, values); } } }); }
public override void Read(Stream stream) { CultureInfo.InvariantCulture.DoInCulture(() => { var count = 0; var firstTimeRead = false; var reader = new FastCsvReader(stream, _encoding); while (reader.NextLine()) { var message = _serializer.Read(reader, this); var openTime = message.OpenTime.UtcDateTime; _items.Add(openTime, message); if (!firstTimeRead) { FirstTime = openTime; firstTimeRead = true; } LastTime = openTime; count++; } Count = count; stream.Position = 0; }); }
public override bool MoveNext() { var retVal = _reader.NextLine(); if (retVal) { Current = _serializer.Read(_reader, _metaInfo.Date); } return(retVal); }
internal void ReadItems(List <Exception> errors) { if (errors == null) { throw new ArgumentNullException(nameof(errors)); } if (!File.Exists(_fileName)) { return; } CultureInfo.InvariantCulture.DoInCulture(() => { using (var stream = new FileStream(_fileName, FileMode.OpenOrCreate)) { var reader = new FastCsvReader(stream, Registry.Encoding); while (reader.NextLine()) { try { var item = Read(reader); var key = GetNormalizedKey(item); lock (SyncRoot) { InnerCollection.Add(item); AddCache(item); _items.Add(key, item); } } catch (Exception ex) { if (errors.Count < 10) { errors.Add(ex); } else { break; } } } } }); InnerCollection.ForEach(OnAdded); }
private void ReadItems() { CultureInfo.InvariantCulture.DoInCulture(() => { using (var stream = new FileStream(_fileName, FileMode.OpenOrCreate)) { var reader = new FastCsvReader(stream, _encoding); while (reader.NextLine()) { var item = Read(reader); var key = GetKey(item); _items.Add(key, item); Add(item); } } }); }
public override void Read(Stream stream) { CultureInfo.InvariantCulture.DoInCulture(() => { var count = 0; var firstTimeRead = false; string lastLine = null; var reader = new FastCsvReader(stream, _encoding); while (reader.NextLine()) { lastLine = reader.CurrentLine; if (!firstTimeRead) { FirstTime = reader.ReadTime(Date).UtcDateTime; firstTimeRead = true; } count++; } Count = count; if (lastLine != null) { reader = new FastCsvReader(lastLine); if (!reader.NextLine()) { throw new InvalidOperationException(); } LastTime = reader.ReadTime(Date).UtcDateTime; _lastId = _readId?.Invoke(reader); } stream.Position = 0; }); }
internal void ReadItems(List <Exception> errors) { if (!File.Exists(_fileName)) { return; } CultureInfo.InvariantCulture.DoInCulture(() => { using (var stream = new FileStream(_fileName, FileMode.OpenOrCreate)) { var reader = new FastCsvReader(stream, Registry.Encoding); while (reader.NextLine()) { try { var item = Read(reader); var key = GetKey(item); _items.Add(key, item); Add(item); } catch (Exception ex) { if (errors.Count < 10) { errors.Add(ex); } else { break; } } } } }); }
public void Init() { if (File.Exists(_fileName)) { CultureInfo.InvariantCulture.DoInCulture(() => { using (var stream = new FileStream(_fileName, FileMode.Open, FileAccess.Read)) { var reader = new FastCsvReader(stream, Encoding.UTF8); reader.NextLine(); reader.Skip(); var fields = new string[reader.ColumnCount - 1]; for (var i = 0; i < fields.Length; i++) { fields[i] = reader.ReadString(); } reader.NextLine(); reader.Skip(); var types = new Type[reader.ColumnCount - 1]; for (var i = 0; i < types.Length; i++) { types[i] = reader.ReadString().To <Type>(); //_fieldTypes.Add(fields[i], types[i]); } if (_fields == null) { if (fields.Length != types.Length) { throw new InvalidOperationException($"{fields.Length} != {types.Length}"); } _fields = fields.Select((f, i) => Tuple.Create(f, types[i])).ToArray(); } while (reader.NextLine()) { var secId = reader.ReadString().ToSecurityId(); var values = new Dictionary <string, object>(); for (var i = 0; i < fields.Length; i++) { values[fields[i]] = reader.ReadString().To(types[i]); } _cache.Add(secId, values); } } }); } else { if (_fields == null) { throw new InvalidOperationException(); } Write(Enumerable.Empty <Tuple <SecurityId, IDictionary <string, object> > >()); } }