package loadroute import ( loadcontroller "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/services/container/announcement/load/controller" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container" ) // Builder groups methods to route values in the network. type Builder interface { // NextStage must return next group of route points for the value a // based on the passed route. // // Empty passed list means being at the starting point of the route. // // Must return empty list and no error if the endpoint of the route is reached. // If there are more than one point to go and the last passed point is included // in that list (means that point is the last point in one of the route groups), // returned route must contain nil point that should be interpreted as signal to, // among sending to other route points, save the announcement in that point. NextStage(a container.SizeEstimation, passed []loadcontroller.ServerInfo) ([]loadcontroller.ServerInfo, error) } // RemoteWriterProvider describes the component // for sending values to a fixed route point. type RemoteWriterProvider interface { // InitRemote must return WriterProvider to the route point // corresponding to info. // // Nil info matches the end of the route. InitRemote(info loadcontroller.ServerInfo) (loadcontroller.WriterProvider, error) }