mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-27 02:01:42 +00:00
Add immediate_notify and is_new to entry listener.
On the callback function, is_new indicates the value is newly added. On adding a callback function, immediate_notify indicates the callback should be called once (with is_new=true) for each matching entry that already exists.
This commit is contained in:
@@ -237,14 +237,15 @@ void NT_Flush(void);
|
||||
|
||||
typedef void (*NT_EntryListenerCallback)(
|
||||
unsigned int uid, void *data, const char *name, size_t name_len,
|
||||
const struct NT_Value *value);
|
||||
const struct NT_Value *value, int is_new);
|
||||
|
||||
typedef void (*NT_ConnectionListenerCallback)(
|
||||
unsigned int uid, void *data, int connected,
|
||||
const struct NT_ConnectionInfo *conn);
|
||||
|
||||
unsigned int NT_AddEntryListener(const char *prefix, size_t prefix_len,
|
||||
void *data, NT_EntryListenerCallback callback);
|
||||
void *data, NT_EntryListenerCallback callback,
|
||||
int immediate_notify);
|
||||
void NT_RemoveEntryListener(unsigned int entry_listener_uid);
|
||||
unsigned int NT_AddConnectionListener(void *data,
|
||||
NT_ConnectionListenerCallback callback);
|
||||
|
||||
@@ -166,13 +166,15 @@ void Flush();
|
||||
*/
|
||||
|
||||
typedef std::function<void(unsigned int uid, StringRef name,
|
||||
std::shared_ptr<Value> value)> EntryListenerCallback;
|
||||
std::shared_ptr<Value> value, bool is_new)>
|
||||
EntryListenerCallback;
|
||||
|
||||
typedef std::function<void(unsigned int uid, int connected,
|
||||
const ConnectionInfo& conn)>
|
||||
ConnectionListenerCallback;
|
||||
|
||||
unsigned int AddEntryListener(StringRef prefix, EntryListenerCallback callback);
|
||||
unsigned int AddEntryListener(StringRef prefix, EntryListenerCallback callback,
|
||||
bool immediate_notify);
|
||||
void RemoveEntryListener(unsigned int entry_listener_uid);
|
||||
unsigned int AddConnectionListener(ConnectionListenerCallback callback);
|
||||
void RemoveConnectionListener(unsigned int conn_listener_uid);
|
||||
|
||||
@@ -130,12 +130,15 @@ void NT_Flush(void) { nt::Flush(); }
|
||||
|
||||
unsigned int NT_AddEntryListener(const char *prefix, size_t prefix_len,
|
||||
void *data,
|
||||
NT_EntryListenerCallback callback) {
|
||||
NT_EntryListenerCallback callback,
|
||||
int immediate_notify) {
|
||||
return nt::AddEntryListener(
|
||||
StringRef(prefix, prefix_len),
|
||||
[=](unsigned int uid, StringRef name, std::shared_ptr<Value> value) {
|
||||
callback(uid, data, name.data(), name.size(), &value->value());
|
||||
});
|
||||
[=](unsigned int uid, StringRef name, std::shared_ptr<Value> value,
|
||||
bool is_new) {
|
||||
callback(uid, data, name.data(), name.size(), &value->value(), is_new);
|
||||
},
|
||||
immediate_notify != 0);
|
||||
}
|
||||
|
||||
void NT_RemoveEntryListener(unsigned int entry_listener_uid) {
|
||||
|
||||
@@ -61,8 +61,8 @@ void Flush() {
|
||||
* Callback Creation Functions
|
||||
*/
|
||||
|
||||
unsigned int AddEntryListener(StringRef prefix,
|
||||
EntryListenerCallback callback) {
|
||||
unsigned int AddEntryListener(StringRef prefix, EntryListenerCallback callback,
|
||||
bool immediate_notify) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user