1/*2Maddy Mail Server - Composable all-in-one email server.3Copyright © 2019-2020 Max Mazurov <fox.cpp@disroot.org>, Maddy Mail Server contributors45This program is free software: you can redistribute it and/or modify6it under the terms of the GNU General Public License as published by7the Free Software Foundation, either version 3 of the License, or8(at your option) any later version.910This program is distributed in the hope that it will be useful,11but WITHOUT ANY WARRANTY; without even the implied warranty of12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the13GNU General Public License for more details.1415You should have received a copy of the GNU General Public License16along with this program. If not, see <https://www.gnu.org/licenses/>.17*/1819package updatepipe2021type BackendMode int2223const (24 // ModeReplicate configures backend to both send and receive updates over25 // the pipe.26 ModeReplicate BackendMode = iota2728 // ModePush configures backend to send updates over the pipe only.29 //30 // If EnableUpdatePipe(ModePush) is called for backend, its Updates()31 // channel will never receive any updates.32 ModePush BackendMode = iota33)3435// The Backend interface is implemented by storage backends that support both36// updates serialization using the internal updatepipe.P implementation.37// To activate this implementation, EnableUpdatePipe should be called.38type Backend interface {39 // EnableUpdatePipe enables the internal update pipe implementation.40 // The mode argument selects the pipe behavior. EnableUpdatePipe must be41 // called before the first call to the Updates() method.42 //43 // This method is idempotent. All calls after a successful one do nothing.44 EnableUpdatePipe(mode BackendMode) error45}