Mercurial > hg > RemoteEditor > REPSessionManager
changeset 370:46c95d8885ad
fix put_ack in single server test.
author | kono |
---|---|
date | Tue, 21 Oct 2008 22:40:30 +0900 |
parents | 7d21eb209e27 |
children | 97aa54c9afe6 |
files | Todo rep/SessionManager.java |
diffstat | 2 files changed, 30 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/Todo Tue Oct 21 20:37:05 2008 +0900 +++ b/Todo Tue Oct 21 22:40:30 2008 +0900 @@ -1,6 +1,24 @@ +Mon Oct 20 16:38:39 JST 2008 + +Todo: (kono) +routing で put の時には、上に上がるだけで良いのだが、下に行くときには、 +routing table を持って行く必要がある。ということは、session list を +つける必要があるということだね。でも、tree だから、 + + 自分の直下んあるもの以外は、上に送る + +で良いのか... + +Todo: (kono) +put/put_ack は、udpateを兼ねる必要があるらしい。そうでないと、session list +が広まらない。 + +session list 中のlocalでないeditorをselectするした場合は、sessionManager +の方に再送してやれば良い。 + Mon Oct 20 10:22:02 JST 2008 -Tdo: (kono) +Todo: (kono) Inter-session での、editor の削除、master でないeditorのclose/quit。 Sun Oct 19 21:23:27 JST 2008
--- a/rep/SessionManager.java Tue Oct 21 20:37:05 2008 +0900 +++ b/rep/SessionManager.java Tue Oct 21 22:40:30 2008 +0900 @@ -408,7 +408,6 @@ session.addForwarder(editor); sendUpdate(session.getSID()); sendCommand.setCMD(REP.SMCMD_JOIN_ACK); - return; } else { // We have a session, but joined editor is on the other sm. // SELECT_ACK is sent to the session ring to @@ -421,12 +420,11 @@ f.setHost(myHost); f.setSID(sid); session.addForwarder(f); // f.next is set up here. - sendCommand.setSID(sid); - sendCommand.string = session.getName(); - sendCommand.setEID(eid); - editor.send(sendCommand); - return; } + sendCommand.setSID(sid); + sendCommand.string = session.getName(); + sendCommand.setEID(eid); + editor.send(sendCommand); }else { Forwarder next; if (editor.channel==null) { @@ -617,17 +615,17 @@ { // first connection or forwarded command routingTable.add(forwarder,getSMID(command.eid)); - if(isMaster()) { - command.setCMD(REP.SMCMD_PUT_ACK); - command.string = command.string; - command.setEID(command.eid); - command.setSID(command.sid); - smList.sendToSlaves(command); - registEditor(forwarder,command); + REPCommand ack = new REPCommand(command); ack.setCMD(REP.SMCMD_PUT_ACK); + if(isMaster()) { + smList.sendToSlaves(ack); + registEditor(forwarder,ack); } else { smList.sendToMaster(command); // registEditor will be done by SMCMD_PUT_ACK } + if (forwarder.isDirect()) { + forwarder.send(ack); + } updateGUI(); }