OnixS C++ B3 Binary UMDF Market Data Handler  1.4.2
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. The default value is 0 milliseconds.
99  unsigned int packetReplayDelay;
100 
101  /// Replay multiplier. Used only in ReplayMode::NaturalPacketReplayDelay
102  /// The default value is 1
104 
105  /// Replay mode. The default value is ReplayMode::ConstantPacketReplayDelay
107 
108  /// Initializes instance with default values.
110  : listener(defaultReplayListener())
111  , packetReplayDelay(0)
112  , playSpeedMultiplier(1)
113  , replayMode(ReplayMode::ConstantPacketReplayDelay)
114  {
115  }
116 
117  /// Initializes with all the files which are available and stored in a given folder.
118  explicit
119  ReplayOptions (const std::string& filesRoot, const std::string& extension = ".log")
120  : listener(defaultReplayListener())
121  , packetReplayDelay(0)
122  , playSpeedMultiplier(1)
123  , replayMode(ReplayMode::ConstantPacketReplayDelay)
124  {
125  gatherFiles(&files, filesRoot, extension);
126  }
127 
128  private:
129  ONIXS_B3_UMDF_MD_API static ReplayListener* defaultReplayListener();
130  };
131  }
132  }
133  }
134 }
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:119
ReplayOptions()
Initializes instance with default values.
Definition: Replay.h:109
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
ReplayMode::Enum replayMode
Replay mode. The default value is ReplayMode::ConstantPacketReplayDelay.
Definition: Replay.h:106
float playSpeedMultiplier
Replay multiplier.
Definition: Replay.h:103
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.
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
unsigned int packetReplayDelay
Specifies the time delay (milliseconds) between replayed packets.
Definition: Replay.h:99