00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #pragma once
00022
00023 #include <Inventor/sys/port.h>
00024 #include <memory>
00025
00026 namespace RemoteViz
00027 {
00028 namespace Rendering
00029 {
00030
00031 class MonitoringImpl;
00032 class MetricsListener;
00033
00050 class RENDERSERVICE_API Monitoring
00051 {
00053 friend class ServiceSettingsImpl;
00054 friend class ConnectionImpl;
00055 friend class ServiceImpl;
00056 friend class RenderAreaImpl;
00059 public:
00063 enum MetricType
00064 {
00066 NONE = 0x00,
00068 NETWORK_LATENCY = 0x1,
00070 DECODING_TIME = 0x2,
00072 RENDERING_TIME = 0x4,
00074 ENCODING_TIME = 0x8,
00076 NUM_CLIENTS = 0x10,
00078 NUM_CONNECTIONS = 0x20,
00080 NUM_RENDERAREAS = 0x40,
00082 ALL = 0xFFFF
00083 };
00084
00090 void addListener(std::shared_ptr<MetricsListener> listener);
00091
00097 void removeListener(std::shared_ptr<MetricsListener> listener);
00098
00102 unsigned int getNumListeners() const;
00103
00111 void enableMetrics( unsigned int mask );
00112
00120 bool isMetricEnabled( MetricType metric ) const;
00121
00122 private:
00125 std::shared_ptr<MonitoringImpl> getImpl() const;
00128 private:
00130 Monitoring();
00131
00133 std::shared_ptr<MonitoringImpl> pImpl;
00134 };
00135 }
00136 }
00137