OnixS C++ B3 BOE Binary Order Entry  1.2.0
API Documentation
SessionStorage.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*
4 * Copyright Onix Solutions Limited [OnixS]. All rights reserved.
5 *
6 * This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
7 * and international copyright treaties.
8 *
9 * Access to and use of the software is governed by the terms of the applicable OnixS Software
10 * Services Agreement (the Agreement) and Customer end user license agreements granting
11 * a non-assignable, non-transferable and non-exclusive license to use the software
12 * for it's own data processing purposes under the terms defined in the Agreement.
13 *
14 * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
15 * of this source code or associated reference material to any other location for further reproduction
16 * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
17 *
18 * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
19 * the terms of the Agreement is a violation of copyright law.
20 */
21 
22 #include <OnixS/B3/BOE/ABI.h>
23 #include <OnixS/B3/BOE/Messaging.h>
27 
28 #include <string>
29 #include <vector>
30 
31 namespace OnixS {
32 namespace B3 {
33 namespace BOE {
34 
35 using namespace OnixS::B3::BOE::Messaging;
36 
37 /// Session Storage Type.
39 {
40  enum Enum
41  {
42  /// Undefined Session Storage.
43  Undefined = 0,
44 
45  /// File-based Session Storage.
47 
48  /// Asynchronous File-Based Session Storage.
50 
51  /// Memory-based Session Storage.
53 
54  /// Pluggable Session Storage
55  Pluggable
56  };
57 
58  ONIXS_B3_BOE_EXPORTED static Enum parse(const std::string &);
59 
60  /// \return the session storage type as a string.
61  ONIXS_B3_BOE_EXPORTED static const char * toString(SessionStorageType::Enum);
62 };
63 
64 /// Session's storage.
66 {
67 public:
68  /// Destructor.
70 
71  /// \return Storage Id.
72  virtual const std::string & id() const = 0;
73 
74  /// \return Session Version Identification (sessionVerId).
75  virtual UInt64 sessionVerId() const = 0;
76 
77  /// Sets Session Version Identification (sessionVerId).
78  virtual void sessionVerId(UInt64 value) = 0;
79 
80  /// \return the expected sequence number of the next inbound message.
81  virtual SeqNumber inSeqNum() const = 0;
82 
83  /// Sets the expected sequence number of the next inbound message.
84  virtual void inSeqNum(SeqNumber msgSeqNum) = 0;
85 
86  /// \return the sequence number of the next outgoing message.
87  virtual SeqNumber outSeqNum() const = 0;
88 
89  /// Sets the sequence number of the next outgoing message.
90  virtual void outSeqNum(SeqNumber msgSeqNum) = 0;
91 
92  /// \return `true` if the session is negotiated (the Negotiation Response message has been received in reply to the Negotiation message);
93  /// otherwise - `false`.
94  virtual bool negotiated() const = 0;
95 
96  /// Sets the "negotiated" status.
97  ///
98  /// The session is negotiated when the Negotiation Response message has been received in reply to the Negotiation message.
99  virtual void negotiated(bool negotiated) = 0;
100 
101  /// \return the session creation time.
102  virtual Timestamp sessionCreationTime() const = 0;
103 
104  /// Sets the session creation time.
105  virtual void sessionCreationTime(Timestamp) = 0;
106 
107  /// Closes the storage.
108  virtual void close(bool doBackup = false) = 0;
109 
110  /// Logs the given inbound message.
111  virtual void storeInboundMessage(const NetworkMessage& message, SeqNumber msgSeqNum, Timestamp messageReceivingUtcTimestamp = Timestamp()) = 0;
112 
113  /// Logs the given outgoing message.
114  virtual void storeOutboundMessage(const NetworkMessage& message, SeqNumber msgSeqNum, Timestamp messageSendingUtcTimestamp = Timestamp()) = 0;
115 
116  /// Flushes all internal buffers.
117  virtual void flush() = 0;
118 
119  /// Warmup the storage.
120  virtual void warmup(size_t messageSize, Timestamp ts = Timestamp()) = 0;
121 };
122 
123 }
124 }
125 }
The time point without the time-zone information.
Definition: Time.h:467
Asynchronous File-Based Session Storage.
#define ONIXS_B3_BOE_EXPORTED
Definition: Compiler.h:181
Session&#39;s storage.
Definition: Defines.h:40
Messaging::UInt32 SeqNumber
Definition: Messaging.h:52
#define ONIXS_B3_BOE_DEFAULT
Definition: Compiler.h:208