8 #ifndef NTCORE_NETWORKTABLES_NETWORKTABLE_H_ 9 #define NTCORE_NETWORKTABLES_NETWORKTABLE_H_ 17 #include <wpi/ArrayRef.h> 18 #include <wpi/StringMap.h> 19 #include <wpi/Twine.h> 20 #include <wpi/mutex.h> 22 #include "networktables/NetworkTableEntry.h" 23 #include "networktables/TableEntryListener.h" 24 #include "networktables/TableListener.h" 26 #include "tables/ITable.h" 34 class NetworkTableInstance;
37 #pragma GCC diagnostic push 38 #pragma GCC diagnostic ignored "-Wdeprecated-declarations" 48 mutable wpi::mutex m_mutex;
50 typedef std::pair<ITableListener*, NT_EntryListener> Listener;
51 std::vector<Listener> m_listeners;
53 static std::vector<std::string> s_ip_addresses;
54 static std::string s_persistent_filename;
56 static bool s_enable_ds;
57 static bool s_running;
58 static unsigned int s_port;
60 struct private_init {};
89 bool withLeadingSlash =
true);
93 bool withLeadingSlash =
true);
126 "use NetworkTableInstance::StartServer() or " 127 "NetworkTableInstance::StartClient() instead")
128 static
void Initialize();
136 static
void Shutdown();
161 static
void SetTeam(
int team);
170 static
void SetIPAddress(
StringRef address);
179 static
void SetIPAddress(
ArrayRef<
std::
string> addresses);
191 static
void SetPort(
unsigned int port);
200 static
void SetDSClientEnabled(
bool enabled);
210 static
void SetPersistentFilename(
StringRef filename);
263 std::function<
void(
size_t line, const
char* msg)> warn);
293 unsigned int flags) const;
303 TableEntryListener listener,
304 unsigned int flags) const;
321 bool localNotify = false) const;
332 void AddTableListener(ITableListener* listener) override;
336 "NT_NOTIFY_UPDATE | NT_NOTIFY_IMMEDIATE")
337 void AddTableListener(ITableListener* listener,
338 bool immediateNotify) override;
341 void AddTableListenerEx(ITableListener* listener,
342 unsigned int flags) override;
345 void AddTableListener(
StringRef key, ITableListener* listener,
346 bool immediateNotify) override;
349 void AddTableListenerEx(
StringRef key, ITableListener* listener,
350 unsigned int flags) override;
393 std::vector<
std::
string>
GetKeys(
int types = 0) const override;
559 ArrayRef<
int> defaultValue) override;
577 ArrayRef<
int> defaultValue) const override;
594 ArrayRef<
double> defaultValue) override;
686 std::shared_ptr<
Value> defaultValue) override;
719 const
Twine& filename,
720 std::function<
void(
size_t line, const
char* msg)> warn);
724 #pragma GCC diagnostic pop 730 #ifndef NAMESPACED_NT 734 #endif // NTCORE_NETWORKTABLES_NETWORKTABLE_H_ void RemoveEntryListener(NT_EntryListener listener) const
Remove an entry listener.
Definition: NetworkTable.cpp:242
bool PutNumberArray(StringRef key, ArrayRef< double > value) override
Put a number array in the table.
Definition: NetworkTable.cpp:463
std::vector< double > GetNumberArray(StringRef key, ArrayRef< double > defaultValue) const override
Returns the number array the key maps to.
Definition: NetworkTable.cpp:472
void SetServer(const char *server_name, unsigned int port)
Sets server address and port for client (without restarting client).
Definition: ntcore_cpp.cpp:823
bool SetDefaultString(StringRef key, StringRef defaultValue) override
Gets the current value in the table, setting it if it does not exist.
Definition: NetworkTable.cpp:428
bool ContainsKey(const Twine &key) const override
Determines whether the given key is in this table.
Definition: NetworkTable.cpp:344
std::shared_ptr< Value > GetValue(const Twine &key) const override
Gets the value associated with a key as an object.
Definition: NetworkTable.cpp:512
static void SetServerMode()
set that network tables should be a server This must be called before initialize or GetTable ...
Definition: NetworkTable.cpp:114
static void SetNetworkIdentity(StringRef name)
Sets the network identity.
Definition: NetworkTable.cpp:163
void SetPersistent(StringRef key) override
Makes a key's value persistent through program restarts.
Definition: NetworkTable.cpp:386
double GetNumber(StringRef key, double defaultValue) const override
Gets the number associated with the given name.
Definition: NetworkTable.cpp:420
void RemoveTableListener(NT_EntryListener listener) const
Remove a sub-table listener.
bool PutRaw(StringRef key, StringRef value) override
Put a raw value (byte array) in the table.
Definition: NetworkTable.cpp:491
Definition: SmallVector.h:946
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Definition: ArrayRef.h:41
static void SetUpdateRate(double interval)
Set the periodic update rate.
Definition: NetworkTable.cpp:173
bool SetDefaultNumberArray(StringRef key, ArrayRef< double > defaultValue) override
Gets the current value in the table, setting it if it does not exist.
Definition: NetworkTable.cpp:467
bool PutString(StringRef key, StringRef value) override
Put a string in the table.
Definition: NetworkTable.cpp:424
static void Flush()
Flushes all updated values immediately to the network.
Definition: NetworkTable.cpp:171
const char * LoadEntries(const Twine &filename, std::function< void(size_t line, const char *msg)> warn)
Load table values from a file.
Definition: NetworkTable.cpp:522
static const char PATH_SEPARATOR_CHAR
The path separator for sub-tables and keys.
Definition: NetworkTable.h:120
std::string GetString(StringRef key, StringRef defaultValue) const override
Gets the string associated with the given name.
Definition: NetworkTable.cpp:432
NetworkTableInstance GetInstance() const
Gets the instance for the table.
Definition: NetworkTable.cpp:199
NetworkTables Instance.
Definition: NetworkTableInstance.h:50
NT_Entry GetEntry(NT_Inst inst, const Twine &name)
Get Entry Handle.
Definition: ntcore_cpp.cpp:56
bool SetDefaultBoolean(StringRef key, bool defaultValue) override
Gets the current value in the table, setting it if it does not exist.
Definition: NetworkTable.cpp:441
NT_EntryListener AddSubTableListener(TableListener listener, bool localNotify=false) const
Listen for sub-table creation.
static void GlobalDeleteAll()
Deletes ALL keys in ALL subtables.
Definition: NetworkTable.cpp:167
void ClearPersistent(StringRef key) override
Stop making a key's value persistent through program restarts.
Definition: NetworkTable.cpp:390
std::vector< int > GetBooleanArray(StringRef key, ArrayRef< int > defaultValue) const override
Returns the boolean array the key maps to.
Definition: NetworkTable.cpp:458
const char * SaveEntries(const Twine &filename) const
Save table values to a file.
Definition: NetworkTable.cpp:518
void StopServer()
Stops the server if it is running.
Definition: ntcore_cpp.cpp:759
static void SetClientMode()
set that network tables should be a client This must be called before initialize or GetTable ...
Definition: NetworkTable.cpp:112
void StartDSClient(unsigned int port)
Starts requesting server address from Driver Station.
Definition: ntcore_cpp.cpp:853
void StopDSClient()
Stops requesting server address from Driver Station.
Definition: ntcore_cpp.cpp:864
std::vector< std::string > GetStringArray(StringRef key, ArrayRef< std::string > defaultValue) const override
Returns the string array the key maps to.
Definition: NetworkTable.cpp:486
NetworkTable(NT_Inst inst, const Twine &path, const private_init &)
Constructor.
Definition: NetworkTable.cpp:192
Definition: IStorage.h:21
NT_EntryListener AddEntryListener(TableEntryListener listener, unsigned int flags) const
Listen to keys only within this table.
Definition: NetworkTable.cpp:214
std::shared_ptr< NetworkTable > GetSubTable(const Twine &key) const override
Returns the table at the specified key.
Definition: NetworkTable.cpp:338
unsigned int GetFlags(StringRef key) const override
Returns the flags for the specified key.
Definition: NetworkTable.cpp:406
bool PutStringArray(StringRef key, ArrayRef< std::string > value) override
Put a string array in the table.
Definition: NetworkTable.cpp:477
bool SetDefaultValue(const Twine &key, std::shared_ptr< Value > defaultValue) override
Gets the current value in the table, setting it if it does not exist.
Definition: NetworkTable.cpp:507
StringRef GetPath() const override
Gets the full path of this table.
Definition: NetworkTable.cpp:516
std::vector< std::string > GetSubTables() const override
Gets the names of all subtables in the table.
Definition: NetworkTable.cpp:373
void SetServerTeam(NT_Inst inst, unsigned int team, unsigned int port)
Sets server addresses and port for client (without restarting client).
Definition: ntcore_cpp.cpp:846
void StartServer(StringRef persist_filename, const char *listen_address, unsigned int port)
Starts a server using the specified filename, listening address, and port.
Definition: ntcore_cpp.cpp:745
bool SetDefaultRaw(StringRef key, StringRef defaultValue) override
Gets the current value in the table, setting it if it does not exist.
Definition: NetworkTable.cpp:495
static const char * SavePersistent(StringRef filename)
Saves persistent keys to a file.
Definition: NetworkTable.cpp:177
WPI_DEPRECATED("use NetworkTableInstance::StartServer() or ""NetworkTableInstance::StartClient() instead") static void Initialize()
Initializes network tables.
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
static StringRef BasenameKey(StringRef key)
Gets the "base name" of a key.
Definition: NetworkTable.cpp:33
void DeleteAllEntries()
Delete All Entries.
Definition: ntcore_cpp.cpp:196
bool PutBooleanArray(StringRef key, ArrayRef< int > value) override
Put a boolean array in the table.
Definition: NetworkTable.cpp:449
bool GetBoolean(StringRef key, bool defaultValue) const override
Gets the boolean associated with the given name.
Definition: NetworkTable.cpp:445
static std::string NormalizeKey(const Twine &key, bool withLeadingSlash=true)
Normalizes an network table key to contain no consecutive slashes and optionally start with a leading...
Definition: NetworkTable.cpp:39
bool IsPersistent(StringRef key) const override
Returns whether the value is persistent through program restarts.
Definition: NetworkTable.cpp:394
std::string GetRaw(StringRef key, StringRef defaultValue) const override
Returns the raw value (byte array) the key maps to.
Definition: NetworkTable.cpp:499
bool SetDefaultNumber(StringRef key, double defaultValue) override
Gets the current value in the table, setting it if it does not exist.
Definition: NetworkTable.cpp:416
bool ContainsSubTable(const Twine &key) const override
Determines whether there exists a non-empty subtable for this key in this table.
Definition: NetworkTable.cpp:351
NetworkTables Entry.
Definition: NetworkTableEntry.h:35
std::vector< std::string > GetKeys(int types=0) const override
Gets all keys in the table (not including sub-tables).
Definition: NetworkTable.cpp:359
void ClearFlags(StringRef key, unsigned int flags) override
Clears flags on the specified key in this table.
Definition: NetworkTable.cpp:402
static const char * LoadPersistent(StringRef filename, std::function< void(size_t line, const char *msg)> warn)
Loads persistent keys from a file.
Definition: NetworkTable.cpp:181
bool PutNumber(StringRef key, double value) override
Put a number in the table.
Definition: NetworkTable.cpp:412
static std::vector< std::string > GetHierarchy(const Twine &key)
Gets a list of the names of all the super tables of a given key.
Definition: NetworkTable.cpp:64
bool SetDefaultBooleanArray(StringRef key, ArrayRef< int > defaultValue) override
Gets the current value in the table, setting it if it does not exist.
Definition: NetworkTable.cpp:453
void SetFlags(StringRef key, unsigned int flags) override
Sets flags on the specified key in this table.
Definition: NetworkTable.cpp:398
A network table entry value.
Definition: NetworkTableValue.h:35
A network table that knows its subtable path.
Definition: NetworkTable.h:44
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Definition: Twine.h:79
void Delete(const Twine &key) override
Deletes the specified key in this table.
Definition: NetworkTable.cpp:410
bool PutBoolean(StringRef key, bool value) override
Put a boolean in the table.
Definition: NetworkTable.cpp:437
bool SetDefaultStringArray(StringRef key, ArrayRef< std::string > defaultValue) override
Gets the current value in the table, setting it if it does not exist.
Definition: NetworkTable.cpp:481
void StopClient()
Stops the client if it is running.
Definition: ntcore_cpp.cpp:814
void StartClient()
Starts a client.
Definition: ntcore_cpp.cpp:768
void StartClientTeam(NT_Inst inst, unsigned int team, unsigned int port)
Starts a client using commonly known robot addresses for the specified team.
Definition: ntcore_cpp.cpp:806
bool PutValue(const Twine &key, std::shared_ptr< Value > value) override
Put a value in the table.
Definition: NetworkTable.cpp:503