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"
55 mutable wpi::mutex m_mutex;
57 typedef std::pair<ITableListener*, NT_EntryListener> Listener;
58 std::vector<Listener> m_listeners;
60 static std::vector<std::string> s_ip_addresses;
61 static std::string s_persistent_filename;
63 static bool s_enable_ds;
64 static bool s_running;
65 static unsigned int s_port;
67 struct private_init {};
97 bool withLeadingSlash =
true);
101 bool withLeadingSlash =
true);
136 "use NetworkTableInstance::StartServer() or "
137 "NetworkTableInstance::StartClient() instead")
138 static
void Initialize();
146 static
void Shutdown();
172 static
void SetTeam(
int team);
181 static
void SetIPAddress(
StringRef address);
190 static
void SetIPAddress(
ArrayRef<
std::
string> addresses);
203 static
void SetPort(
unsigned int port);
213 static
void SetDSClientEnabled(
bool enabled);
224 static
void SetPersistentFilename(
StringRef filename);
278 std::function<
void(
size_t line, const
char* msg)> warn);
310 unsigned int flags) const;
322 unsigned int flags) const;
341 bool localNotify = false) const;
353 void AddTableListener(ITableListener* listener) override;
357 "NT_NOTIFY_UPDATE | NT_NOTIFY_IMMEDIATE")
358 void AddTableListener(ITableListener* listener,
359 bool immediateNotify) override;
362 void AddTableListenerEx(ITableListener* listener,
363 unsigned int flags) override;
366 void AddTableListener(
StringRef key, ITableListener* listener,
367 bool immediateNotify) override;
370 void AddTableListenerEx(
StringRef key, ITableListener* listener,
371 unsigned int flags) override;
415 std::vector<
std::
string>
GetKeys(
int types = 0) const override;
587 ArrayRef<
int> defaultValue) override;
606 ArrayRef<
int> defaultValue) const override;
625 ArrayRef<
double> defaultValue) override;
725 std::shared_ptr<
Value> defaultValue) override;
761 const
Twine& filename,
762 std::function<
void(
size_t line, const
char* msg)> warn);
766 #pragma GCC diagnostic pop
772 #ifndef NAMESPACED_NT
776 #endif // NTCORE_NETWORKTABLES_NETWORKTABLE_H_
bool SetDefaultNumber(StringRef key, double defaultValue) override
Gets the current value in the table, setting it if it does not exist.
bool PutBoolean(StringRef key, bool value) override
Put a boolean in the table.
std::shared_ptr< NetworkTable > GetSubTable(const Twine &key) const override
Returns the table at the specified key.
std::string GetString(StringRef key, StringRef defaultValue) const override
Gets the string associated with the given name.
void ClearPersistent(StringRef key) override
Stop making a key's value persistent through program restarts.
std::vector< std::string > GetStringArray(StringRef key, ArrayRef< std::string > defaultValue) const override
Returns the string array the key maps to.
double GetNumber(StringRef key, double defaultValue) const override
Gets the number associated with the given name.
static StringRef BasenameKey(StringRef key)
Gets the "base name" of a key.
void RemoveEntryListener(NT_EntryListener listener) const
Remove an entry listener.
bool SetDefaultStringArray(StringRef key, ArrayRef< std::string > defaultValue) override
Gets the current value in the table, setting it if it does not exist.
bool PutBooleanArray(StringRef key, ArrayRef< int > value) override
Put a boolean array in the table.
static void SetNetworkIdentity(StringRef name)
Sets the network identity.
static const char PATH_SEPARATOR_CHAR
The path separator for sub-tables and keys.
Definition: NetworkTable.h:130
void RemoveTableListener(NT_EntryListener listener) const
Remove a sub-table listener.
const char * SaveEntries(const Twine &filename) const
Save table values to a file.
void SetPersistent(StringRef key) override
Makes a key's value persistent through program restarts.
void SetServer(const char *server_name, unsigned int port)
Sets server address and port for client (without restarting client).
Definition: SmallVector.h:946
StringRef GetPath() const override
Gets the full path of this table.
bool ContainsKey(const Twine &key) const override
Determines whether the given key is in this table.
bool PutRaw(StringRef key, StringRef value) override
Put a raw value (byte array) in the table.
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.
const char * LoadEntries(const Twine &filename, std::function< void(size_t line, const char *msg)> warn)
Load table values from a file.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Definition: ArrayRef.h:41
void StartDSClient(unsigned int port)
Starts requesting server address from Driver Station.
std::vector< int > GetBooleanArray(StringRef key, ArrayRef< int > defaultValue) const override
Returns the boolean array the key maps to.
bool PutNumber(StringRef key, double value) override
Put a number in the table.
std::string GetRaw(StringRef key, StringRef defaultValue) const override
Returns the raw value (byte array) the key maps to.
NetworkTables Instance.
Definition: NetworkTableInstance.h:53
static std::vector< std::string > GetHierarchy(const Twine &key)
Gets a list of the names of all the super tables of a given key.
void StartServer(StringRef persist_filename, const char *listen_address, unsigned int port)
Starts a server using the specified filename, listening address, and port.
std::shared_ptr< Value > GetValue(const Twine &key) const override
Gets the value associated with a key as an object.
bool ContainsSubTable(const Twine &key) const override
Determines whether there exists a non-empty subtable for this key in this table.
void StopServer()
Stops the server if it is running.
std::vector< std::string > GetKeys(int types=0) const override
Gets all keys in the table (not including sub-tables).
NT_EntryListener AddSubTableListener(TableListener listener, bool localNotify=false) const
Listen for sub-table creation.
NT_Entry GetEntry(NT_Inst inst, const Twine &name)
Get Entry Handle.
bool SetDefaultBoolean(StringRef key, bool defaultValue) override
Gets the current value in the table, setting it if it does not exist.
bool IsPersistent(StringRef key) const override
Returns whether the value is persistent through program restarts.
static void Flush()
Flushes all updated values immediately to the network.
NetworkTables (ntcore) namespace.
Definition: ITable.h:21
void StopClient()
Stops the client if it is running.
void DeleteAllEntries()
Delete All Entries.
bool PutString(StringRef key, StringRef value) override
Put a string in the table.
bool GetBoolean(StringRef key, bool defaultValue) const override
Gets the boolean associated with the given name.
static const char * SavePersistent(StringRef filename)
Saves persistent keys to a file.
bool PutStringArray(StringRef key, ArrayRef< std::string > value) override
Put a string array in the table.
void ClearFlags(StringRef key, unsigned int flags) override
Clears flags on the specified key in this table.
void StartClient()
Starts a client.
std::function< void(NetworkTable *table, StringRef name, NetworkTableEntry entry, std::shared_ptr< Value > value, int flags)> TableEntryListener
A listener that listens to changes in values in a NetworkTable.
Definition: TableEntryListener.h:41
NetworkTable(NT_Inst inst, const Twine &path, const private_init &)
Constructor.
NetworkTableInstance GetInstance() const
Gets the instance for the table.
static void SetClientMode()
set that network tables should be a client This must be called before initialize or GetTable ...
std::vector< std::string > GetSubTables() const override
Gets the names of all subtables in the table.
bool SetDefaultRaw(StringRef key, StringRef defaultValue) override
Gets the current value in the table, setting it if it does not exist.
void StartClientTeam(NT_Inst inst, unsigned int team, unsigned int port)
Starts a client using commonly known robot addresses for the specified team.
WPI_DEPRECATED("use NetworkTableInstance::StartServer() or ""NetworkTableInstance::StartClient() instead") static void Initialize()
Initializes network tables.
void SetServerTeam(NT_Inst inst, unsigned int team, unsigned int port)
Sets server addresses and port for client (without restarting client).
bool SetDefaultNumberArray(StringRef key, ArrayRef< double > defaultValue) override
Gets the current value in the table, setting it if it does not exist.
static void SetServerMode()
set that network tables should be a server This must be called before initialize or GetTable ...
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:49
static const char * LoadPersistent(StringRef filename, std::function< void(size_t line, const char *msg)> warn)
Loads persistent keys from a file.
static void SetUpdateRate(double interval)
Set the periodic update rate.
bool SetDefaultString(StringRef key, StringRef defaultValue) override
Gets the current value in the table, setting it if it does not exist.
NetworkTables Entry.
Definition: NetworkTableEntry.h:38
void SetFlags(StringRef key, unsigned int flags) override
Sets flags on the specified key in this table.
std::vector< double > GetNumberArray(StringRef key, ArrayRef< double > defaultValue) const override
Returns the number array the key maps to.
std::function< void(NetworkTable *parent, StringRef name, NetworkTable *table)> TableListener
A listener that listens to new sub-tables in a NetworkTable.
Definition: TableListener.h:35
NT_EntryListener AddEntryListener(TableEntryListener listener, unsigned int flags) const
Listen to keys only within this table.
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...
bool PutNumberArray(StringRef key, ArrayRef< double > value) override
Put a number array in the table.
A network table entry value.
Definition: NetworkTableValue.h:36
A network table that knows its subtable path.
Definition: NetworkTable.h:51
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Definition: Twine.h:79
bool SetDefaultBooleanArray(StringRef key, ArrayRef< int > defaultValue) override
Gets the current value in the table, setting it if it does not exist.
bool PutValue(const Twine &key, std::shared_ptr< Value > value) override
Put a value in the table.
void StopDSClient()
Stops requesting server address from Driver Station.
static void GlobalDeleteAll()
Deletes ALL keys in ALL subtables.
void Delete(const Twine &key) override
Deletes the specified key in this table.
unsigned int GetFlags(StringRef key) const override
Returns the flags for the specified key.