Example #1
0
 static void DumpError(MdsState state, Exception ex)
 {
     var strb = new StringBuilder();
     strb.AppendLine("{0}, {1}Z, {2}Z, {3}secs, {4}", state.TableName, state.From.ToString("s"), state.To.ToString("s"), state.EllapsedSecs, ex);
     strb.AppendLine();
     WriteLine(state, strb);
 }
Example #2
0
 static void DumpRecords(MdsState state, IEnumerable<GenericLogicEntity> records)
 {
     var strb = new StringBuilder();
     strb.AppendLine("{0}, {1}Z, {2}Z, {3}secs, {4} records", state.TableName, state.From.ToString("s"), state.To.ToString("s"), state.EllapsedSecs, records.Count());
     foreach (var record in records.Select(r => r.ToDictionary()))
     {
         strb.Append(state.TableName);
         if (_columnNames.Length == 0)
         {
             foreach (var pair in record)
             {
                 strb.AppendFormat(", {0}", pair.Value);
             }
         }
         else
         {
             foreach (var key in _columnNames)
             {
                 strb.AppendFormat(", {0}", FieldToString(record[key]));
             }
         }
         strb.AppendLine();
     }
     strb.AppendLine();
     WriteLine(state, strb);
 }
Example #3
0
 static void WriteLine(MdsState state, StringBuilder strb)
 {
     lock (_thisLock)
     {
         File.AppendAllLines(String.Format(@"c:\temp\MDS_{0}_{1}.log", state.TableName, _suffix), new[] { strb.ToString() });
         Console.WriteLine(strb.ToString());
     }
 }
Example #4
0
        static void Run()
        {
            _client = new MdsDataAccessClient(_mdsUri);

            var tableNames = new List<string>();
            foreach (var tableName in _tableNames)
            {
                if (tableName.Contains("*"))
                {
                    tableNames.AddRange(_client.GetTables(tableName.Replace(".*", "*").Replace("*", ".*").Replace(".?", "?").Replace("?", ".?")));
                }
                else
                {
                    tableNames.Add(tableName);
                }
            }

            for (var current = _from; current < _to; current += _interval)
            {
                foreach (var tableName in tableNames)
                {
                    Interlocked.Increment(ref _pendings);

                    var state = new MdsState
                    {
                        TableName = tableName,
                        From = current,
                        To = current + _interval,
                        StartTime = DateTime.UtcNow
                    };
                    _semaphore.Wait();
                    try
                    {
                        var ar = _client.BeginGetTabularData(
                            state.TableName,
                            state.From,
                            state.To,
                            _query,
                            false,
                            null,
                            OnGetTabularData,
                            state);
                        if (ar.CompletedSynchronously)
                        {
                            HandleResult(ar);
                        }
                    }
                    catch (Exception ex)
                    {
                        DumpError(state, ex);
                        Release();
                    }
                }
            }

            _completed.WaitOne();
        }