Mercurial > hg > RemoteEditor > REPSessionManager
view rep/Editor.java @ 142:abaf502e6d8f
*** empty log message ***
author | pin |
---|---|
date | Wed, 27 Aug 2008 21:31:21 +0900 |
parents | 70fc1e70652c |
children | 2ce1a378da85 |
line wrap: on
line source
package rep; import java.io.IOException; import java.nio.ByteBuffer; import java.util.LinkedList; import java.util.List; import rep.channel.REPSocketChannel; import rep.translater.TranslaterImp1; public class Editor { private int eid; private REPSocketChannel<REPCommand> myChannel; private String host; private String port; private String file; private TranslaterImp1 translater; private List<REPCommand> sentList; public Editor(int editorNo, REPSocketChannel<REPCommand> channel){ this.eid = editorNo; this.myChannel = channel; translater = new TranslaterImp1(eid); sentList = new LinkedList<REPCommand>(); } public Editor(REPSocketChannel<REPCommand> channel) { this.myChannel = channel; setHostAndPort(myChannel); } public LinkedList<REPCommand> translate(REPCommand command){ LinkedList<REPCommand> list = new LinkedList<REPCommand>(); if(command.eid == eid){ if(checkReturnedCommand(command)){ REPCommand[] cmds = translater.catchOwnCommand(command); sendMergedCommand(cmds); return null; }else{ sentList.add(command); translater.transSendCmd(command); list.add(command); } }else{ REPCommand[] cmds = translater.transReceiveCmd(command); for(REPCommand cmd : cmds){ list.add(cmd); } } return list; } private void sendMergedCommand(REPCommand[] cmds) { for(int i = 0; i < cmds.length; i++){ try { myChannel.write(pack(cmds[i])); } catch (IOException e) { e.printStackTrace(); } } } private boolean checkReturnedCommand(REPCommand command) { if(sentList.size() > 0){ if(sentList.get(0).seq == command.seq){ sentList.remove(0); return true; }else{ System.out.println("error:Editor.checkReturnedCommand()"); } } return false; } private void setHostAndPort(REPSocketChannel<REPCommand> myChannel2) { String socketString = myChannel2.socket().getRemoteSocketAddress().toString(); String[] split = socketString.split("/"); int length = split.length; String hostAndPort = split[length-1]; split = hostAndPort.split(":"); host = split[0]; port = split[1]; } public REPSocketChannel<REPCommand> getChannel() { return myChannel; } public void setHost(String host){ this.host = host; } public void setPort(String port){ this.port = port; } public String getHost(){ return host; } public String getPort(){ return port; } public int getEID() { return eid; } public void setEID(int eid) { this.eid = eid; } public String toString(){ return (host + ":" + port + ":" + file); //return ("eid:" + eid + ":" + myChannel.socket().getLocalSocketAddress().toString()); } public String getName() { return file; } public void setName(String string) { file = string; } public void send(REPCommand repCmd) { try { myChannel.write(pack(repCmd)); } catch (IOException e) { e.printStackTrace(); } } private ByteBuffer pack(REPCommand repCmd) { // TODO Auto-generated method stub return null; } public void setChannel(REPSocketChannel channel) { myChannel = channel; } }