Select Git revision
DstoreConnection.java
DstoreConnection.java 3.89 KiB
import java.io.*;
import java.net.*;
import java.util.concurrent.*;
import java.lang.Runnable;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.Arrays;
public class DstoreConnection {
protected final int MAX_QUEUE_SIZE = 20;
protected Socket socket;
protected int port;
protected BufferedReader reader;
protected PrintWriter writer;
protected boolean available;
protected List<Message> queue;
protected int timeout;
protected StoreRemover remover;
public DstoreConnection(Socket socket, int port, int timeout, StoreRemover remover) {
this.socket = socket;
this.port = port;
this.timeout = timeout;
this.remover = remover;
try {
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
available = true;
queue = new ArrayList<Message>();
new Thread(new Receiver()).start();
}
catch(IOException e) {
e.printStackTrace();
available = false;
}
catch(NullPointerException e) {
System.out.println("Dstore disconnected");
available = false;
}
}
protected class Message {
public boolean taken = false;
public String string;
public Message(String string) {
this.string = string;
}
}
public int getPort() {
return port;
}
public Socket getSocket() {
return socket;
}
public void checkAvailable() throws DeadStoreException {
if(!available) {
throw new DeadStoreException(this);
}
}
protected void enqueue(String message) {