1 #ifndef __FECONSUMER_H__
2 #define __FECONSUMER_H__
8 #include "LogMessage.h"
9 #include "MD/MD_mInt.h"
13 struct FEConsumerImpl;
22 typedef int SocketType;
24 typedef SOCKET SocketType;
37 typedef void (*MessageCallback)(
const std::string& topic,
49 typedef void (*EventCallback)(
const Event& e,
void* closure);
59 typedef void(*LoggingCallback)(
const LogMessage *messages,
size_t count);
63 const static int NO_TIMEOUT = 0;
68 const static int HWM_UNLIMITED = 0;
103 static Error log_open(
const std::string& filename,
bool append);
107 static void log_close();
111 static void enable_verbose_logging();
115 static void disable_verbose_logging();
121 static void set_logging_callback(LoggingCallback callback);
134 bool connected()
const;
142 bool authenticated()
const;
150 bool logged_in()
const;
159 bool is_subscribed(
const std::string& topic)
const;
166 unsigned int timeout_sec()
const;
173 unsigned int snapshot_timeout_sec()
const;
180 unsigned int heartbeat_timeout_sec()
const;
186 unsigned int heartbeat_interval_sec()
const;
193 unsigned int max_snapshot_queue_size()
const;
202 void event_cb(EventCallback callback);
209 void event_cb(EventCallback callback,
void* closure);
218 void timeout_sec(
unsigned int seconds);
225 void snapshot_timeout_sec(
unsigned int seconds);
232 void heartbeat_timeout_sec(
unsigned int seconds);
238 void heartbeat_interval_sec(
unsigned int seconds);
248 void max_snapshot_queue_size(
unsigned int size);
281 void enable_latency_tracking(
unsigned int bucket_interval_sec);
287 void disable_latency_tracking();
312 Error register_callback(
const std::string& topic_prefix,
317 Error register_callback(
const std::string& topic_prefix,
329 Error unregister_callback(
const std::string& topic_prefix);
330 Error unregister_callback(
const std::string& topic_prefix,
338 Error unregister_callback(SocketType fd);
352 Error get_notify_socket(
const std::string& topic_prefix,
355 Error get_notify_socket(
const std::string& topic_prefix,
371 Error dispatch(
long timeout_ms);
384 Error dispatch_fd(SocketType fd);
396 void set_notify_queue_message_limit(
size_t limit);
404 size_t get_notify_queue_message_limit();
414 void set_notify_queue_time_limit_ms(
int limit);
422 int get_notify_queue_time_limit_ms();
451 FEConsumer(
int sub_count,
int worker_count,
int high_watermark);
500 Error authenticate(
const std::string& host,
501 const std::string& user,
502 const std::string& serial,
503 const std::string& key_id,
504 const std::string& key,
505 const std::string& counter,
506 const std::string& path,
524 Error authenticate(
const std::string& host,
525 const std::string& user,
526 const std::string& key_id,
527 const std::string& key,
528 const std::string& counter,
529 const std::string& path,
557 Error log_in(
bool request_files =
true);
586 Error subscribe(
const std::string& topic,
587 SnapshotMode snapshot_mode,
597 Error unsubscribe(
const std::string& topic);
606 Error request_file(
const std::string& filename, std::string& contents_out);
608 Error recover(
const std::string& topic,
633 void authenticate_async(
const std::string& host,
634 const std::string& user,
635 const std::string& serial,
636 const std::string& key_id,
637 const std::string& key,
638 const std::string& counter,
639 const std::string& path,
646 void authenticate_async(
const std::string& host,
647 const std::string& user,
648 const std::string& key_id,
649 const std::string& key,
650 const std::string& counter,
651 const std::string& path,
656 void connect_async();
660 void disconnect_async();
664 void log_in_async(
bool request_files =
true);
668 void subscribe_async(
const std::string& topic,
669 SnapshotMode snapshot_mode,
674 void unsubscribe_async(
const std::string& topic);
678 void request_file_async(
const std::string& filename);
680 void recover_async(
const std::string& topic,
690 friend struct FEConsumerImpl;
691 FEConsumerImpl* m_impl;
No snapshots will be requested.
Definition: FEConsumer.h:74
DataSource
Set of possible data sources when registering callbacks.
Definition: FEConsumer.h:89
MD::MD_Message MsgType
Operating system file descriptor type.
Definition: FEConsumer.h:28
void(* MessageCallback)(const std::string &topic, MsgType &msg, void *closure)
Callback signature for receiving market data messages.
Definition: FEConsumer.h:37
DataMode
Set of possible data modes when subscribing.
Definition: FEConsumer.h:80
Market data from subscribe.
Definition: FEConsumer.h:90
Delayed market data will be requested.
Definition: FEConsumer.h:83
SnapshotMode
Set of possible snapshot modes when subscribing.
Definition: FEConsumer.h:72
Live realtime market data will be requested.
Definition: FEConsumer.h:82
Definition: LogMessage.h:11
Recovery data from recover.
Definition: FEConsumer.h:91
FEConsumer is a class which serves as the primary interface for interacting with the broadcast server...
Definition: FEConsumer.h:18