func (s *invokeFlowSynchronizationImpl) AwaitAgentsReady() error {
	return s.agentReadyGate.AwaitGateCondition()
}
AwaitAgentReady awaits for registered extensions to report ready
package core
type InitFlowSynchronization interface {
	SetExternalAgentsRegisterCount(uint16) error
	SetAgentsReadyCount(uint16) error
	ExternalAgentRegistered() error
	AwaitExternalAgentsRegistered() error
	RuntimeReady() error
	AwaitRuntimeReady() error
	AgentReady() error
	AwaitAgentsReady() error
	CancelWithError(error)
	Clear()
}
type initFlowSynchronizationImpl struct {
	externalAgentsRegisteredGate Gate
	runtimeReadyGate             Gate
	agentReadyGate               Gate
}
func (s *initFlowSynchronizationImpl) SetExternalAgentsRegisterCount(externalAgentsNumber uint16) error {
	return s.externalAgentsRegisteredGate.SetCount(externalAgentsNumber)
}
func (s *initFlowSynchronizationImpl) SetAgentsReadyCount(agentCount uint16) error {
	return s.agentReadyGate.SetCount(agentCount)
}
func (s *initFlowSynchronizationImpl) AwaitRuntimeReady() error {
	return s.runtimeReadyGate.AwaitGateCondition()
}
func (s *initFlowSynchronizationImpl) AwaitExternalAgentsRegistered() error {
	return s.externalAgentsRegisteredGate.AwaitGateCondition()
}
func (s *initFlowSynchronizationImpl) AwaitAgentsReady() error {
	return s.agentReadyGate.AwaitGateCondition()
}
func (s *initFlowSynchronizationImpl) RuntimeReady() error {
	return s.runtimeReadyGate.WalkThrough()
}
func (s *initFlowSynchronizationImpl) AgentReady() error {
	return s.agentReadyGate.WalkThrough()
}
func (s *initFlowSynchronizationImpl) ExternalAgentRegistered() error {
	return s.externalAgentsRegisteredGate.WalkThrough()
}
func (s *initFlowSynchronizationImpl) CancelWithError(err error) {
	s.externalAgentsRegisteredGate.CancelWithError(err)
	s.runtimeReadyGate.CancelWithError(err)
	s.agentReadyGate.CancelWithError(err)
}
func (s *initFlowSynchronizationImpl) Clear() {
	s.externalAgentsRegisteredGate.Clear()
	s.runtimeReadyGate.Clear()
	s.agentReadyGate.Clear()
}
func NewInitFlowSynchronization() InitFlowSynchronization {
	initFlow := &initFlowSynchronizationImpl{
		runtimeReadyGate:             NewGate(1),
		externalAgentsRegisteredGate: NewGate(0),
		agentReadyGate:               NewGate(maxAgentsLimit),
	}
	return initFlow
}
type InvokeFlowSynchronization interface {
	InitializeBarriers() error
	AwaitRuntimeResponse() error
	AwaitRuntimeReady() error
	RuntimeResponse(runtime *Runtime) error
	RuntimeReady(runtime *Runtime) error
	SetAgentsReadyCount(agentCount uint16) error
	AgentReady() error
	AwaitAgentsReady() error
	CancelWithError(error)
	Clear()
}
type invokeFlowSynchronizationImpl struct {
	runtimeReadyGate    Gate
	runtimeResponseGate Gate
	agentReadyGate      Gate
}
func (s *invokeFlowSynchronizationImpl) InitializeBarriers() error {
	s.runtimeReadyGate.Reset()
	s.runtimeResponseGate.Reset()
	s.agentReadyGate.Reset()
	return nil
}
func (s *invokeFlowSynchronizationImpl) Clear() {
	s.runtimeReadyGate.Clear()
	s.runtimeResponseGate.Clear()
	s.agentReadyGate.Clear()
}
func (s *invokeFlowSynchronizationImpl) AwaitRuntimeResponse() error {
	return s.runtimeResponseGate.AwaitGateCondition()
}
func (s *invokeFlowSynchronizationImpl) AwaitRuntimeReady() error {
	return s.runtimeReadyGate.AwaitGateCondition()
}
func (s *invokeFlowSynchronizationImpl) RuntimeResponse(a *Runtime) error {
	return s.runtimeResponseGate.WalkThrough()
}
func (s *invokeFlowSynchronizationImpl) RuntimeReady(a *Runtime) error {
	return s.runtimeReadyGate.WalkThrough()
}
func (s *invokeFlowSynchronizationImpl) CancelWithError(err error) {
	s.runtimeResponseGate.CancelWithError(err)
	s.runtimeReadyGate.CancelWithError(err)
	s.agentReadyGate.CancelWithError(err)
}
func (s *invokeFlowSynchronizationImpl) SetAgentsReadyCount(agentCount uint16) error {
	return s.agentReadyGate.SetCount(agentCount)
}
func (s *invokeFlowSynchronizationImpl) AgentReady() error {
	return s.agentReadyGate.WalkThrough()
}