Skip to content
Snippets Groups Projects
Select Git revision
  • 4f6263b63b3be96b9ed1fd7d05797b336a1f395c
  • master default protected
2 results

DstoreConnection.java

Blame
  • 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) {