Browse Source

Merge pull request #573 from dora-rs/c_timestamp

C timestamp
tags/v0.3.5
Haixuan Xavier Tao GitHub 1 year ago
parent
commit
30de4ccc38
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 2 deletions
  1. +1
    -1
      apis/c/node/node_api.h
  2. +14
    -0
      apis/c/node/src/lib.rs
  3. +2
    -1
      binaries/cli/src/template/c/listener/listener-template.c

+ 1
- 1
apis/c/node/node_api.h View File

@@ -18,5 +18,5 @@ enum DoraEventType read_dora_event_type(void *dora_event);

void read_dora_input_id(void *dora_event, char **out_ptr, size_t *out_len);
void read_dora_input_data(void *dora_event, char **out_ptr, size_t *out_len);
unsigned long long read_dora_input_timestamp(void *dora_event);
int dora_send_output(void *dora_context, char *id_ptr, size_t id_len, char *data_ptr, size_t data_len);

+ 14
- 0
apis/c/node/src/lib.rs View File

@@ -195,6 +195,20 @@ pub unsafe extern "C" fn read_dora_input_data(
}
}

/// Reads out the timestamp of the given input event from metadata.
///
/// ## Safety
///
/// Return `0` if the given event is not an input event.
#[no_mangle]
pub unsafe extern "C" fn read_dora_input_timestamp(event: *const ()) -> core::ffi::c_ulonglong {
let event: &Event = unsafe { &*event.cast() };
match event {
Event::Input { metadata, .. } => metadata.timestamp().get_time().as_u64(),
_ => 0,
}
}

/// Frees the given dora event.
///
/// ## Safety


+ 2
- 1
binaries/cli/src/template/c/listener/listener-template.c View File

@@ -42,7 +42,8 @@ int main()
size_t data_len;
read_dora_input_data(event, &data_ptr, &data_len);

printf("I heard %s from %s\n", data_ptr, id_ptr);
unsigned long long timestamp = read_dora_input_timestamp(event);
printf("I heard %s from %s at %llu\n", data_ptr, id_ptr, timestamp);
}
else if (ty == DoraEventType_Stop)
{


Loading…
Cancel
Save