package com.workshare.msnos.core.protocols.ip.www; import java.io.IOException; import java.io.InputStream; import java.util.Queue; import com.workshare.msnos.core.Message; import com.workshare.msnos.core.serializers.WireSerializer; class MessagesInputSream extends InputStream { private Queue<Message> messages; private String current; private int charIndex; private WireSerializer serializer; public MessagesInputSream(WireSerializer serializer, Queue<Message> messages) { this.serializer = serializer; this.messages = messages; loadNextMessage(); } private boolean loadNextMessage() { Message message = messages.poll(); if (message == null) return false; current = serializer.toText(message); charIndex = 0; return true; } @Override public int read() throws IOException { if (messages == null) return -1; else if (charIndex == current.length()) { if (!loadNextMessage()) messages = null; return (int) '\n'; } else return (int)current.charAt(charIndex++); } }