OnixS C++ B3 Binary UMDF Market Data Handler  1.6.3
API documentation
Replay.h
Go to the documentation of this file.
1 // Copyright 2005-2012 Onix Solutions Limited [OnixS]. All rights reserved.
2 //
3 // This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
4 // and international copyright treaties.
5 //
6 // Access to and use of the software is governed by the terms of the applicable ONIXS Software
7 // Services Agreement (the Agreement) and Customer end user license agreements granting
8 // a non-assignable, non-transferable and non-exclusive license to use the software
9 // for it's own data processing purposes under the terms defined in the Agreement.
10 //
11 // Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
12 // of this source code or associated reference material to any other location for further reproduction
13 // or redistribution, and any amendments to this copyright notice, are expressly prohibited.
14 //
15 // Any reproduction or redistribution for sale or hiring of the Software not in accordance with
16 // the terms of the Agreement is a violation of copyright law.
17 //
18 #pragma once
19 
21 
22 #include <vector>
23 #include <string>
24 
25 namespace OnixS
26 {
27  namespace B3
28  {
29  namespace MarketData
30  {
31  namespace UMDF
32  {
33  /// Ordered list of logs to be replayed.
34  typedef std::vector<std::string> HandlerLogs;
35 
36  /// Read-write iterator over ordered list of logs to be replayed.
37  typedef std::vector<std::string>::iterator HandlerLogsEntry;
38 
39  /// Listening interface for log replay-related events.
40  class ONIXS_B3_UMDF_MD_API ReplayListener
41  {
42  public:
43  /// Is called once error occurs while replaying logs.
44  virtual void onReplayError (const std::string& errorDescription) = 0;
45 
46  /// Is called once all the logs are replayed.
47  virtual void onReplayFinished() = 0;
48 
49  protected:
50  /// Deletion is not supposed
51  /// through interface of this class.
52  virtual ~ReplayListener();
53  };
54 
55  /// Logging options.
56  struct ONIXS_B3_UMDF_MD_API ReplayMode
57  {
58  enum Enum
59  {
60  /// The packets are replayed with constant delay, defined by ReplayOptions::packetReplayDelay
61  /// Timestamps from the replayed file are ignored
62  /// ReplayOptions::playSpeedMultiplier is ignored
63  ConstantPacketReplayDelay = 1,
64 
65  /// The packets are replayed with delays as it come from the replayed file.
66  /// FinalDelay = LogFileDelay * ReplayOptions::playSpeedMultiplier + ReplayOptions::packetReplayDelay
67  NaturalPacketReplayDelay = 2
68  };
69  };
70 
71 
72  /// @typedef FilesList
73  /// Ordered list of files to be replayed.
74  typedef std::vector<std::string> FilesList;
75 
76  /// Gathers files which are stored in a given folder.
77  void ONIXS_B3_UMDF_MD_API gatherFiles(FilesList* gatheredFiles, const std::string& root, const std::string& extension);
78 
79  /// Gathers log files which are stored in a given folder.
80  inline
81  void gatherLogs(FilesList* gatheredLogs, const std::string& root)
82  {
83  gatherFiles(gatheredLogs, root, ".log");
84  }
85 
86  /// Defines params which affect replay.
88  {
89  /// List of files to be replayed.
90  /// Must be stored in 'oldest to recent' order.
91  FilesList files;
92 
93  /// Instance to notify about replay events.
95 
96  /// Specifies the time delay (milliseconds) between replayed packets.
97  ///
98  /// @note Ability to control replay rate.
99  unsigned int packetReplayDelay = 0;
100 
101  /// Replay multiplier. Used only in ReplayMode::NaturalPacketReplayDelay
102  float playSpeedMultiplier = 0.0f;
103 
104  /// Replay mode.
106 
107  /// Initializes instance with default values.
109  : listener(defaultReplayListener())
110  {
111  }
112 
113  /// Initializes with all the files which are available and stored in a given folder.
114  explicit
115  ReplayOptions (const std::string& filesRoot, const std::string& extension = ".log")
116  : listener(defaultReplayListener())
117  {
118  gatherFiles(&files, filesRoot, extension);
119  }
120 
121  private:
122  ONIXS_B3_UMDF_MD_API static ReplayListener* defaultReplayListener();
123  };
124  }
125  }
126  }
127 }
ReplayOptions(const std::string &filesRoot, const std::string &extension=".log")
Initializes with all the files which are available and stored in a given folder.
Definition: Replay.h:115
ReplayOptions()
Initializes instance with default values.
Definition: Replay.h:108
void gatherLogs(FilesList *gatheredLogs, const std::string &root)
Gathers log files which are stored in a given folder.
Definition: Replay.h:81
Listening interface for log replay-related events.
Definition: Replay.h:40
std::vector< std::string > HandlerLogs
Ordered list of logs to be replayed.
Definition: Replay.h:34
Definition: Handler.h:31
void ONIXS_B3_UMDF_MD_API gatherFiles(FilesList *gatheredFiles, const std::string &root, const std::string &extension)
Gathers files which are stored in a given folder.
The packets are replayed with constant delay, defined by ReplayOptions::packetReplayDelay Timestamps ...
Definition: Replay.h:63
std::vector< std::string >::iterator HandlerLogsEntry
Read-write iterator over ordered list of logs to be replayed.
Definition: Replay.h:37
Defines params which affect replay.
Definition: Replay.h:87
std::vector< std::string > FilesList
Ordered list of files to be replayed.
Definition: Replay.h:74
FilesList files
List of files to be replayed.
Definition: Replay.h:91
ReplayListener * listener
Instance to notify about replay events.
Definition: Replay.h:94