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;
	}
}