view src/main/java/alice/jungle/persistent/PersistentChangeListReader.java @ 116:895ab2907db3

Modified pom.xml
author one
date Fri, 20 Dec 2013 20:47:35 +0900
parents f42f2e6b31de
children f64ff5bd66f5
line wrap: on
line source

package alice.jungle.persistent;

import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;

import org.msgpack.MessagePack;

import alice.jungle.operations.NetworkTreeOperationLog;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader;

public class PersistentChangeListReader  implements ChangeListReader {
	
	private InputStream in;
	MessagePack msgpack = PersistentJournal.getMsgPackInstance();

	public PersistentChangeListReader() {
		in = null;
	}
	
	public PersistentChangeListReader(InputStream _in) {
		in = _in;
	}
 	
	@Override
	public ChangeListReader newReader()
	{
		return new PersistentChangeListReader();
	}
	
	@Override 
	public ChangeList read()
	{
		try {
			final NetworkTreeOperationLog readLog = msgpack.read(in, NetworkTreeOperationLog.class);
			PersistentChangeList cl = new PersistentChangeList(readLog); 
			return cl;
		} catch (EOFException e){

		} catch (IOException e) {
		}
		return null;
	}

	@Override
	public Iterator<ChangeList> iterator() {
		return new Iterator<ChangeList>() {

			@Override
			public boolean hasNext() {
				try {
					return in.available() != 0;
				} catch (IOException e) {
					return false;
				}
			}

			@Override
			public ChangeList next() {
				return read();
			}

			@Override
			public void remove() {
				
			}
		};
	}
}