Beispiel #1
0
            public override void OnFileReport(ClientSession session, FileRequestClientContext FileRequestClientContext, FileReport report)
            {
                var context = (FileAsyncContext)FileRequestClientContext;

                context.Buffer.AddRange(report.Content);

                if (report.EndOfFile)
                {
                    context.Files.Add(context.Buffer.ToArray());
                    context.Buffer.Clear();
                    context.FileIndex++;
                    context.Tcs.SetResult(context.Files.Last());
                    if (context.FileIndex == context.Files.Count)
                    {
                        (context as BarsFileAsyncContext)?.ParentContext.Tcs.SetResult(context.Files);
                        (context as TicksFileAsyncContext)?.ParentContext.Tcs.SetResult(context.Files);
                        return;
                    }
                }

                var request = new FileRequest(0);

                request.FileId = context.FileIds[context.FileIndex];
                request.Chunk  = ++context.ChunkIndex;
                session.SendFileRequest(context, request);
            }
Beispiel #2
0
            public override void OnTicksFileReport(ClientSession session, TicksFileRequestClientContext TicksFileRequestClientContext, QueryTicksFileReport report)
            {
                var context = (QueryQuoteHistoryTicksFilesAsyncContext)TicksFileRequestClientContext;

                if (report.Files.Length > 0)
                {
                    var fileContext = new TicksFileAsyncContext(context);
                    for (int i = 0; i < report.Files.Length; i++)
                    {
                        fileContext.FileIds.Add(report.Files[i].FileId);
                    }

                    var request = new FileRequest(0);
                    request.FileId = fileContext.FileIds[0];
                    request.Chunk  = 0;
                    session.SendFileRequest(fileContext, request);
                }
                else
                {
                    context.Tcs.SetResult(new List <byte[]>());
                }
            }