u32 activeLeftCount, u32 laggedRoseCount,
u32 floatingStreamStateRequired, u32 historyRequired,
RoseStateOffsets *so) {
- /* runtime state (including role state) first and needs to be u32-aligned */
- u32 curr_offset = sizeof(RoseRuntimeState)
- + mmbit_size(rolesWithStateCount);
+ u32 curr_offset = 0;
+
+ // First, runtime state (stores per-stream state, like whether we need a
+ // delay rebuild or have been told to halt matching.)
+ curr_offset += sizeof(RoseRuntimeState);
+
+ // Role state storage.
+ curr_offset += mmbit_size(rolesWithStateCount);
so->activeLeafArray = curr_offset; /* TODO: limit size of array */
curr_offset += mmbit_size(activeArrayCount);
struct scatter_full_plan state_init;
};
-#if defined(_WIN32)
-#pragma pack(push, 1)
-#endif
// Rose runtime state
struct RoseRuntimeState {
u8 flags; /* high bit true if delay rebuild needed */
u8 broken; /* user has requested that we stop matching */
-#if defined(_WIN32)
};
-#pragma pack(pop)
-#else
-} __attribute__((packed));
-#endif
struct ALIGN_CL_DIRECTIVE anchored_matcher_info {
u32 next_offset; /* relative to this, 0 for end */