Browse Source

Define INFO-only stream probes and provider offer snapshots

master
evgeny 5 days ago
parent
commit
9cd285ddb0
  1. 10
      src/stream/stream_network.h
  2. 7
      src/stream/stream_wire.h

10
src/stream/stream_network.h

@ -24,7 +24,17 @@ struct stream_receive_info {
struct stream_metric_snapshot metrics, supplier_metrics;
uint32_t rtt_ms;
int metrics_valid, supplier_metrics_valid, rtt_valid, close_requested;
struct stream_path path;
uint64_t first_available, last_available, info_ms, supplier_queue_bytes, progress_age_ms;
uint32_t path_rtt_ms;
uint16_t free_slots, cpu_basis_points;
uint8_t subblock;
int info_ready, probe_only, accepting, path_rtt_valid, progress_valid, cpu_valid;
};
/* INFO без выделения remote handle и без DATA; close обязателен также после detach.
* После ready можно тем же NCD-владением последовательно опросить остальные субпотоки. */
int stream_probe_open(struct STREAM_HANDLE *subscription, uint64_t peer, uint8_t subblock, struct STREAM_RECEIVE **out);
int stream_probe_next(struct STREAM_RECEIVE *probe, uint8_t subblock);
/* out заранее NULL; seq=UINT64_MAX: первая выдача с конца, остальные ждут её проверенный общий старт.
* peer должен быть онлайн-кандидатом группы. Повтор peer+stream+sub не создаёт вторую выдачу. */
int stream_receive_open(struct STREAM_HANDLE *subscription, uint64_t peer, uint8_t subblock, uint64_t seq, struct STREAM_RECEIVE **out);

7
src/stream/stream_wire.h

@ -10,14 +10,15 @@
extern "C" {
#endif
#define STREAM_WIRE_VERSION 2
#define STREAM_WIRE_VERSION 3
#define STREAM_WIRE_HEADER 52
#define STREAM_PATH_MAX 32
#define STREAM_END_SIZE 106
#define STREAM_METRIC_WIRE_SIZE 49
#define STREAM_INFO_METRIC_OFF 36
#define STREAM_INFO_PATH_OFF (STREAM_INFO_METRIC_OFF + STREAM_METRIC_WIRE_SIZE)
#define STREAM_INFO_SIZE (STREAM_INFO_PATH_OFF + 1) /* probe:8, границы/FEC:28, метрики:49, count:1 */
#define STREAM_INFO_OFFER_OFF (STREAM_INFO_METRIC_OFF + STREAM_METRIC_WIRE_SIZE)
#define STREAM_INFO_PATH_OFF (STREAM_INFO_OFFER_OFF + 25)
#define STREAM_INFO_SIZE (STREAM_INFO_PATH_OFF + 1) /* probe:8, границы/FEC:28, метрики:49, предложение:25, count:1 */
#define STREAM_OVERLOAD_MAX 64
#define STREAM_OVERLOAD_HEADER 18

Loading…
Cancel
Save