public void Visit(Stream stream)
        {
            var rowColumn = default(string[]);
            var row       = default(string);
            var e         = new OnDataReceiveEventArgs();

            using (var streamReader = new StreamReader(stream, System.Text.Encoding.UTF8))
            {
                while ((row = streamReader.ReadLine()) != default(string))
                {
                    rowColumn = row.Split(separatorChar);
                    e.Init(rowColumn[0], rowColumn[1], rowColumn[2]);
                    NotifySubscribers(e);
                }
            }
        }
        public void ProductReciveHandler(object sender, OnDataReceiveEventArgs e)
        {
            var bucketIndex = GetBucketIndex(e.Price);

            bucketsMap[bucketIndex].Add(new Product(e.Order, e.Name, e.Price));
        }
 protected void NotifySubscribers(OnDataReceiveEventArgs e)
 {
     e.Raise(this, ref ReadProductHandlerSubscribers);
 }