view rep/SessionList.java @ 31:593f915dd6ff JOINandPUT

for JOIN and PUT Testing
author pin
date Sat, 10 Nov 2007 12:52:24 +0900
parents 2d4c2c19d2d0
children de8638eb0edd
line wrap: on
line source

package rep;

import java.nio.channels.SocketChannel;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;

public class SessionList {
	
	//List<LinkedList<SocketChannel>> sessions = new LinkedList<LinkedList<SocketChannel>>();
	//Hashtable<Integer, LinkedList<SocketChannel>> sessions2 = new Hashtable<Integer, LinkedList<SocketChannel>>();
	Hashtable<Integer, Session> session3 = new Hashtable<Integer, Session>();
	private int sessionID = 0;
	private int editorCount = 0;

	private SocketChannel smchannel;
	private boolean channelequals = false;
	private LinkedList<Session> tmpSessionList = new LinkedList<Session>();
	
	public SessionList(){
		makeDefaultSession();
	}
	
	public void add(SocketChannel channel) {
		
	}
	
	public void makeDefaultSession(){
		session3.put(0, new Session(0, null, null));
	}

	public int getEditorNumber() {
		return 0;
		
	}

	public void add(SocketChannel channel, int sid) {
		
	}

	public int addSession(SocketChannel channel, String string) {
		sessionID++;
		//sessions2.put(sessionID, new LinkedList<SocketChannel>());
		//sessions.add(new LinkedList<SocketChannel>());
		//return sessions2.size();
		session3.put(sessionID, new Session(sessionID, string, channel));
		//addEditor(channel, sid, command);
		return sessionID; 
		
	}

	public void addEditor(SocketChannel channel, int sid, REPCommand repCmd) {
		int editorID = repCmd.eid;
		//editorCount++;
		//sessions.get(sid-1).add(channel);
		//sessions2.get(sid).add(channel);
		if(session3.get(sid) == null) System.out.println("ʂہI");
		session3.get(sid).addEditor(editorID, channel);
	}

	public int getSessionID(SocketChannel channel) {
		return 0;
	}

	public int getNumberOfEditor() {
		editorCount++;
		return editorCount;
	}
	
	public void sendCmd(SocketChannel channel2, REPCommand repCmd) {
		//int sessionID = repCmd.sid;
		//LinkedList <SocketChannel> channelList = sessions2.get(repCmd.sid);
		LinkedList <Editor> editorList = session3.get(repCmd.sid).getEditorList();
		for(Editor editor : editorList){
			SocketChannel channel = editor.getChannel();
			if(channel.equals(channel2)) {
				System.out.println("equals");
				continue;
			}
			REPPacketSend repSend = new REPPacketSend(channel);
			repSend.send(repCmd);
		}
	}
	
	public void sendCmd(SocketChannel channel, REPCommand repCmd, boolean ring){
		LinkedList <Editor> editorList = session3.get(repCmd.sid).getEditorList();
		REPPacketSend repsend = null;
		for(Editor editor : editorList){
			SocketChannel channel2 = editor.getChannel();
			if(channel.equals(channel2)){
				System.out.println("equals");
				channelequals = true;
			}else if(channelequals){
				repsend = new REPPacketSend(channel2);
				repsend.send(repCmd);
			}
		}
		//repsend.send(repCmd);
		//repCmd.setCMD(repCmd.cmd + 1);
		//repsend.send(repCmd);
	}

	public void addSessionManager(SocketChannel channel, REPCommand repCmd) {
		smchannel = channel;
		
	}

	public void sendAddedSession(REPCommand repCmd) {
		repCmd.setCMD(REP.SMCMD_SM_JOIN);
		REPPacketSend repSend = new REPPacketSend(smchannel);
		//repSend.send(repCmd);
	}

	public String getSessionList() {
		if (session3 != null) {
			System.out.println(session3.toString());
			return session3.toString();
		}
		return "{}";
	}

	public void sendToNextEditor(SocketChannel channel, REPCommand repCmd) {
		Editor editor2 = null;
		Editor editor3;
		LinkedList <Editor> editorList = session3.get(repCmd.sid).getEditorList();
		for(Editor editor : editorList){
			SocketChannel channel2 = editor.getChannel();
			if(channel.equals(channel2)){
				editor2 = editor;
			}
		}
		int size = editorList.size();
		Editor lastEditor = (Editor) editorList.getLast();
		if(size == 0){
			editor3 = null;
		}else if(editor2 == lastEditor){
			editor3 = editorList.get(0);
		}else{
			editor3 = editorList.get(editorList.indexOf(editor2)+1);
		}
		if(editor3 != null){
			REPPacketSend send = new REPPacketSend(editor3.getChannel());
			send.send(repCmd);
		}
	}

	public void addEditor(SocketChannel editorChannel, int sid, int eid) {

		session3.get(sid).addEditor(eid, editorChannel);
	}

	public void sendSelect(int sid) {
		SocketChannel channel = session3.get(sid).masterEditor.getChannel();
		REPPacketSend send = new REPPacketSend(channel);
		send.send(new REPCommand(REP.SMCMD_SELECT, sid, 0, 0, 0, 0, ""));
	}

	public void addSession(SocketChannel channel, String string, int i) {
		tmpSessionList.add(new Session(0, string, channel));
	}

}