| // Copyright 2015 The etcd Authors |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package store |
| |
| const ( |
| Get = "get" |
| Create = "create" |
| Set = "set" |
| Update = "update" |
| Delete = "delete" |
| CompareAndSwap = "compareAndSwap" |
| CompareAndDelete = "compareAndDelete" |
| Expire = "expire" |
| ) |
| |
| type Event struct { |
| Action string `json:"action"` |
| Node *NodeExtern `json:"node,omitempty"` |
| PrevNode *NodeExtern `json:"prevNode,omitempty"` |
| EtcdIndex uint64 `json:"-"` |
| Refresh bool `json:"refresh,omitempty"` |
| } |
| |
| func newEvent(action string, key string, modifiedIndex, createdIndex uint64) *Event { |
| n := &NodeExtern{ |
| Key: key, |
| ModifiedIndex: modifiedIndex, |
| CreatedIndex: createdIndex, |
| } |
| |
| return &Event{ |
| Action: action, |
| Node: n, |
| } |
| } |
| |
| func (e *Event) IsCreated() bool { |
| if e.Action == Create { |
| return true |
| } |
| return e.Action == Set && e.PrevNode == nil |
| } |
| |
| func (e *Event) Index() uint64 { |
| return e.Node.ModifiedIndex |
| } |
| |
| func (e *Event) Clone() *Event { |
| return &Event{ |
| Action: e.Action, |
| EtcdIndex: e.EtcdIndex, |
| Node: e.Node.Clone(), |
| PrevNode: e.PrevNode.Clone(), |
| } |
| } |
| |
| func (e *Event) SetRefresh() { |
| e.Refresh = true |
| } |