Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/memory/OnMemoryMonotonicTree.java @ 16:bb9760760744
commit
author | shoshi |
---|---|
date | Sat, 21 May 2011 04:46:00 +0900 |
parents | 22cd920986c5 |
children | 168deb591f21 |
line wrap: on
line source
package treecms.memory; import treecms.api.MonotonicTree; import treecms.api.MonotonicTreeNode; import treecms.api.Tree; import treecms.merger.Merger; import treecms.merger.ReplaceMerger; public class OnMemoryMonotonicTree implements MonotonicTree { private volatile OnMemoryTree m_tree; private OnMemoryNode m_old; private OnMemoryMonotonicTreeNode m_root; public OnMemoryMonotonicTree(OnMemoryTree _tree) { m_tree = _tree; m_old = (OnMemoryNode)m_tree.getRoot().getNode(); m_root = new OnMemoryMonotonicTreeNode((OnMemoryNode)m_old,this); } @Override public boolean commit(boolean _force) { return m_tree.compareAndSwapRootNode(m_old,(OnMemoryNode)m_root.getNode(),_force); } @Override public boolean pull() { m_old = (OnMemoryNode)m_tree.getRoot().getNode(); return true; } @Override public boolean check() { return m_tree.compareAndSwapRootNode(m_old,m_old,false); } @Override public void merge() { //merge here } @Override public MonotonicTreeNode getRoot() { return this.m_root; } @Override public Tree getTree() { return (Tree)m_tree; } }