blob: 79620e16e6d1c8a3a0b35d5a8b488471b17dc6fe [file] [log] [blame]
khenaidoobf6e7bb2018-08-14 22:27:29 -04001/*
2 * Copyright 2018-present Open Networking Foundation
3
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7
8 * http://www.apache.org/licenses/LICENSE-2.0
9
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Stephane Barbarie4a2564d2018-07-26 11:02:58 -040016package model
17
Stephane Barbarieec0919b2018-09-05 14:14:29 -040018type Revision interface {
Stephane Barbarie1ab43272018-12-08 21:42:13 -050019 Finalize(bool)
Stephane Barbarie40fd3b22019-04-23 21:50:47 -040020 IsDiscarded() bool
Stephane Barbarieec0919b2018-09-05 14:14:29 -040021 SetConfig(revision *DataRevision)
22 GetConfig() *DataRevision
Stephane Barbarie88fbe7f2018-09-25 12:25:23 -040023 Drop(txid string, includeConfig bool)
Stephane Barbarief7fc1782019-03-28 22:33:41 -040024 StorageDrop(txid string, includeConfig bool)
Stephane Barbarie40fd3b22019-04-23 21:50:47 -040025 ChildDrop(childType string, childHash string)
Stephane Barbarie3cb01222019-01-16 17:15:56 -050026 SetChildren(name string, children []Revision)
27 GetChildren(name string) []Revision
28 SetAllChildren(children map[string][]Revision)
29 GetAllChildren() map[string][]Revision
Stephane Barbarieec0919b2018-09-05 14:14:29 -040030 SetHash(hash string)
31 GetHash() string
32 ClearHash()
Stephane Barbariee0a4c792019-01-16 11:26:29 -050033 SetupWatch(key string)
Stephane Barbarief7fc1782019-03-28 22:33:41 -040034 SetName(name string)
35 GetName() string
Stephane Barbarieec0919b2018-09-05 14:14:29 -040036 SetBranch(branch *Branch)
37 GetBranch() *Branch
38 Get(int) interface{}
39 GetData() interface{}
Stephane Barbarie06c4a742018-10-01 11:09:32 -040040 GetNode() *node
Stephane Barbarie1ab43272018-12-08 21:42:13 -050041 LoadFromPersistence(path string, txid string) []Revision
Stephane Barbarieec0919b2018-09-05 14:14:29 -040042 UpdateData(data interface{}, branch *Branch) Revision
43 UpdateChildren(name string, children []Revision, branch *Branch) Revision
44 UpdateAllChildren(children map[string][]Revision, branch *Branch) Revision
Stephane Barbarie4a2564d2018-07-26 11:02:58 -040045}