Changeset 306
- Timestamp:
- 09/16/08 09:55:34 (16 years ago)
- Location:
- trunk/src/org/expeditee
- Files:
-
- 4 added
- 21 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/expeditee/actions/Actions.java
r305 r306 876 876 return _IWs.get(widgetName.toLowerCase()); 877 877 } 878 879 static List<String> getActions() { 880 List<String> actionNames = new LinkedList<String>(); 881 for (Method m : _Actions.values()) { 882 StringBuilder sb = new StringBuilder(); 883 sb.append(m.getName()); 884 for (Class c : m.getParameterTypes()) { 885 sb.append(" ").append(c.getSimpleName()); 886 } 887 actionNames.add(sb.toString()); 888 } 889 890 return actionNames; 891 } 892 893 static List<String> getAgents() { 894 List<String> agentNames = new LinkedList<String>(); 895 896 for (String s : _JAGs.values()) { 897 agentNames.add(s.substring(s.lastIndexOf('.') + 1)); 898 } 899 900 return agentNames; 901 } 878 902 } -
trunk/src/org/expeditee/actions/Mail.java
r305 r306 1 1 package org.expeditee.actions; 2 2 3 import java.awt.Color; 3 4 import java.util.Collection; 4 5 … … 11 12 import org.expeditee.gui.FrameKeyboardActions; 12 13 import org.expeditee.gui.FrameMouseActions; 14 import org.expeditee.gui.MessageBay; 13 15 import org.expeditee.items.Item; 14 16 import org.expeditee.items.Text; 17 import org.expeditee.network.FrameShare; 15 18 16 public class Mail Actions{19 public class Mail { 17 20 /** 18 21 * Attempts to connect to mail servers … … 56 59 public static Collection<Text> getUnreadMail(Item clicked, int number) { 57 60 if (clicked instanceof Text) { 58 AttributeValuePair avp = new AttributeValuePair(clicked 59 .getText());60 if (avp.hasPair()&& avp.getValue().contains(MailSession.UNREAD_MESSAGE)) {61 AttributeValuePair avp = new AttributeValuePair(clicked.getText()); 62 if (avp.hasPair() 63 && avp.getValue().contains(MailSession.UNREAD_MESSAGE)) { 61 64 avp.setValue("0" + MailSession.UNREAD_MESSAGE + "s"); 62 65 clicked.setText(avp.toString()); … … 171 174 } 172 175 176 public static void sendMessage(String peerName, String message) { 177 if (FrameShare.getInstance().sendMessage(message, peerName)) { 178 MessageBay.displayMessage("Sent message to " + peerName, 179 Color.green.darker()); 180 } else { 181 MessageBay.errorMessage("Could not find " + peerName); 182 } 183 } 173 184 } -
trunk/src/org/expeditee/actions/Navigation.java
r305 r306 16 16 * 17 17 */ 18 public class Navigation Actions{18 public class Navigation { 19 19 20 20 public static void setLastNavigationItem(Item i) { -
trunk/src/org/expeditee/actions/Simple.java
r298 r306 1287 1287 String frameName = context.getPrimitives().getStringValue( 1288 1288 frameNameVar); 1289 Navigation Actions.Goto(frameName);1289 Navigation.Goto(frameName); 1290 1290 } else if (tokens[0].startsWith("get")) { 1291 1291 if (tokens[0].startsWith("getframe")) { -
trunk/src/org/expeditee/agents/mail/MailSession.java
r305 r306 204 204 for (;;) { 205 205 try { 206 Thread.sleep( 1000);206 Thread.sleep(2000); 207 207 /* 208 208 * sleep for freq milliseconds. This is to force -
trunk/src/org/expeditee/gui/DisplayIO.java
r301 r306 69 69 * The title to display in the Title bar. 70 70 */ 71 public static final String TITLE = "Exp1 2Sep2008A";71 public static final String TITLE = "Exp15Sep2008A"; 72 72 73 73 private DisplayIO() { -
trunk/src/org/expeditee/gui/FrameIO.java
r305 r306 173 173 public static BufferedReader LoadPublicFrame(String frameName) { 174 174 String fullPath = FrameIO.getFrameFullPathName(PUBLIC_PATH, frameName); 175 175 176 176 File frameFile = new File(fullPath); 177 177 if (frameFile.exists() && frameFile.canRead()) { … … 783 783 // Save frame that is not local through the Networking classes 784 784 // TODO 785 if (!toSave.isLocal()) 786 return ""; 785 if (!toSave.isLocal()) { 786 return FrameShare.getInstance().saveFrame(toSave); 787 } 787 788 788 789 /** … … 864 865 } 865 866 // Update general stuff about frame 866 toSave.setLastModifyDate(Logger.EasyDateFormat("ddMMMyyyy:HHmm")); 867 toSave.setLastModifyUser(UserSettings.Username); 868 toSave.setVersion(toSave.getVersion() + 1); 869 Time darkTime = new Time(SessionStats.getFrameDarkTime().getTime() 870 + toSave.getDarkTime().getTime()); 871 Time activeTime = new Time(SessionStats.getFrameActiveTime() 872 .getTime() 873 + toSave.getActiveTime().getTime()); 874 toSave.setDarkTime(darkTime); 875 toSave.setActiveTime(activeTime); 867 setSavedProperties(toSave); 876 868 877 869 // int oldMode = FrameGraphics.getMode(); … … 1348 1340 } 1349 1341 1342 public static void SavePublicFrame(String peerName, String frameName, 1343 int version, BufferedReader packetContents) { 1344 // TODO handle versioning - add version to the header 1345 // Remote user uploads version based on an old version 1346 1347 // Remove it from the cache so that next time it is loaded we get the up 1348 // todate version 1349 _Cache.remove(frameName.toLowerCase()); 1350 1351 // Save to file 1352 String filename = PUBLIC_PATH + Conversion.getFramesetName(frameName) 1353 + File.separator + Conversion.getFrameNumber(frameName) 1354 + ExpReader.EXTENTION; 1355 1356 File file = new File(filename); 1357 // Ensure the file exists 1358 if (file.exists()) { 1359 // Check the versions 1360 int savedVersion = ExpReader.getVersion(filename); 1361 1362 if (savedVersion > version) { 1363 // remove this frame from the cache if it is there 1364 // This will make sure links to the original are set correctly 1365 // _Cache.remove(frameName.toLowerCase()); 1366 1367 int nextNum = 0; 1368 try { 1369 nextNum = ReadINF(PUBLIC_PATH, Conversion 1370 .getFramesetName(frameName)) + 1; 1371 } catch (IOException e) { 1372 e.printStackTrace(); 1373 } 1374 1375 String newName = Conversion.getFramesetName(frameName) 1376 + nextNum; 1377 filename = PUBLIC_PATH + Conversion.getFramesetName(frameName) 1378 + File.separator + nextNum + ExpReader.EXTENTION; 1379 1380 // Show the messages alerting the user 1381 Text originalMessage = new Text(-1); 1382 originalMessage.setColor(MessageBay.ERROR_COLOR); 1383 originalMessage.setText(frameName + " was edited by " 1384 + peerName); 1385 originalMessage.setLink(frameName); 1386 Text yourMessage = new Text(-1); 1387 yourMessage.setColor(MessageBay.ERROR_COLOR); 1388 yourMessage.setText("Their version was renamed " + newName); 1389 yourMessage.setLink(newName); 1390 MessageBay.displayMessage(originalMessage); 1391 MessageBay.displayMessage(yourMessage); 1392 1393 Frame editedFrame = FrameIO.LoadFrame(frameName); 1394 1395 FrameShare.getInstance().sendMessage( 1396 frameName + " was recently edited by " 1397 + editedFrame.getLastModifyUser(), peerName); 1398 FrameShare.getInstance().sendMessage( 1399 "Your version was renamed " + newName, peerName); 1400 } 1401 1402 // Save the new version 1403 try { 1404 FileWriter fw = new FileWriter(file); 1405 String nextLine = null; 1406 while ((nextLine = packetContents.readLine()) != null) { 1407 fw.write(nextLine + '\n'); 1408 } 1409 fw.flush(); 1410 fw.close(); 1411 MessageBay.displayMessage("Saved remote frame: " + frameName); 1412 } catch (IOException e) { 1413 e.printStackTrace(); 1414 } 1415 } else { 1416 MessageBay 1417 .errorMessage("Recieved request for unknown public frame: " 1418 + frameName); 1419 } 1420 } 1421 1422 public static void setSavedProperties(Frame toSave) { 1423 toSave.setLastModifyDate(Logger.EasyDateFormat("ddMMMyyyy:HHmm")); 1424 toSave.setLastModifyUser(UserSettings.Username); 1425 toSave.setVersion(toSave.getVersion() + 1); 1426 Time darkTime = new Time(SessionStats.getFrameDarkTime().getTime() 1427 + toSave.getDarkTime().getTime()); 1428 Time activeTime = new Time(SessionStats.getFrameActiveTime().getTime() 1429 + toSave.getActiveTime().getTime()); 1430 toSave.setDarkTime(darkTime); 1431 toSave.setActiveTime(activeTime); 1432 } 1433 1350 1434 } -
trunk/src/org/expeditee/gui/FrameKeyboardActions.java
r297 r306 21 21 import org.expeditee.actions.Actions; 22 22 import org.expeditee.actions.Misc; 23 import org.expeditee.actions.Navigation Actions;23 import org.expeditee.actions.Navigation; 24 24 import org.expeditee.actions.Simple; 25 25 import org.expeditee.io.Logger; … … 89 89 90 90 public static void processChar(char ch, boolean isShiftDown) { 91 Navigation Actions.ResetLastAddToBack();91 Navigation.ResetLastAddToBack(); 92 92 Item on = FrameUtils.getCurrentItem(); 93 93 … … 307 307 case Text.RIGHT: 308 308 case Text.PAGE_UP: 309 Navigation Actions.NextFrame(false);309 Navigation.NextFrame(false); 310 310 break; 311 311 case Text.LEFT: 312 312 case Text.PAGE_DOWN: 313 Navigation Actions.PreviousFrame(false);313 Navigation.PreviousFrame(false); 314 314 break; 315 315 case Text.HOME: 316 316 case Text.LINE_HOME: 317 Navigation Actions.ZeroFrame();317 Navigation.ZeroFrame(); 318 318 break; 319 319 case Text.END: 320 320 case Text.LINE_END: 321 Navigation Actions.LastFrame();321 Navigation.LastFrame(); 322 322 break; 323 323 } … … 709 709 } 710 710 if (current.getLink() != null) { 711 Navigation Actions.Goto(current.getAbsoluteLink());711 Navigation.Goto(current.getAbsoluteLink()); 712 712 return; 713 713 } -
trunk/src/org/expeditee/gui/FrameMouseActions.java
r298 r306 25 25 26 26 import org.expeditee.actions.Actions; 27 import org.expeditee.actions.Navigation Actions;27 import org.expeditee.actions.Navigation; 28 28 import org.expeditee.items.Circle; 29 29 import org.expeditee.items.Constraint; … … 242 242 } 243 243 244 Navigation Actions.ResetLastAddToBack();244 Navigation.ResetLastAddToBack(); 245 245 // System.out.println(modifiersEx); 246 246 if (_mouseDown == 0) … … 713 713 FrameIO.SaveFrame(DisplayIO.getCurrentFrame()); 714 714 715 Navigation Actions.setLastNavigationItem(clickedOn);715 Navigation.setLastNavigationItem(clickedOn); 716 716 load(clickedOn.getAbsoluteLink()); 717 717 // DisplayIO.UpdateTitle(); … … 2814 2814 2815 2815 public void mouseWheelMoved(MouseWheelEvent arg0) { 2816 Navigation Actions.ResetLastAddToBack();2816 Navigation.ResetLastAddToBack(); 2817 2817 2818 2818 int clicks = arg0.getClickCount(); -
trunk/src/org/expeditee/io/AbstractHTMLWriter.java
r290 r306 5 5 import java.io.File; 6 6 import java.io.IOException; 7 import java.io.Writer; 7 8 import java.util.List; 8 9 … … 19 20 20 21 @Override 21 protected void initialise(Frame start ) throws IOException {22 protected void initialise(Frame start, Writer writer) throws IOException { 22 23 _format = ".html"; 23 super.initialise(start );24 super.initialise(start, writer); 24 25 25 26 _writer.write("<html>" + ItemWriter.NEW_LINE); -
trunk/src/org/expeditee/io/DefaultFrameWriter.java
r286 r306 4 4 import java.io.FileWriter; 5 5 import java.io.IOException; 6 import java.io.Writer; 6 7 import java.lang.reflect.Method; 7 8 import java.util.Collection; … … 123 124 124 125 public String writeFrame(Frame toWrite) throws IOException { 126 return writeFrame(toWrite, null); 127 } 128 129 public String writeFrame(Frame toWrite, Writer writer) throws IOException { 125 130 try { 126 initialise(toWrite );131 initialise(toWrite, writer); 127 132 128 133 outputFrame(toWrite); … … 162 167 protected void writeEndFrame(Frame ending) throws IOException { 163 168 } 164 165 protected void initialise(Frame start) throws IOException { 169 170 protected final void initialise(Frame start) throws IOException { 171 initialise(start, null); 172 } 173 174 protected void initialise(Frame start, Writer writer) throws IOException { 166 175 if (_filename == null) 167 176 _filename = FrameIO.EXPORTS_DIR 168 177 + getFileName(start) + _format; 169 178 170 if (_filename.equalsIgnoreCase(WriteTree.CLIPBOARD)) { 179 if(writer != null){ 180 _writer = new ProxyWriter(writer); 181 _output = writer.toString(); 182 }else if (_filename.equalsIgnoreCase(WriteTree.CLIPBOARD)) { 171 183 _writer = new ProxyWriter(true); 172 184 _output = WriteTree.CLIPBOARD; -
trunk/src/org/expeditee/io/ExpWriter.java
r298 r306 4 4 import java.io.FileWriter; 5 5 import java.io.IOException; 6 import java.io.Writer; 6 7 import java.lang.reflect.Method; 7 8 import java.util.Iterator; … … 35 36 } 36 37 37 public void initialise(Frame start) throws IOException { 38 @Override 39 public void initialise(Frame start, Writer writer) throws IOException { 38 40 String name = start.getFramesetName().toLowerCase(); 39 41 … … 43 45 44 46 _stringWriter = new StringBuilder(); 45 if (_filename.equalsIgnoreCase(DefaultAgent.CLIPBOARD)) { 47 48 49 if (writer != null){ 50 _writer = new ProxyWriter(writer); 51 _output = writer.toString(); 52 }else if (_filename.equalsIgnoreCase(DefaultAgent.CLIPBOARD)) { 46 53 _writer = new ProxyWriter(true); 47 54 _filename = DefaultAgent.CLIPBOARD; 48 55 } else 49 56 _writer = new ProxyWriter(new FileWriter(_filename)); 57 58 50 59 51 60 try { -
trunk/src/org/expeditee/io/FrameWriter.java
r4 r306 2 2 3 3 import java.io.IOException; 4 import java.io.Writer; 4 5 5 6 import org.expeditee.gui.Frame; … … 11 12 public String writeFrame(Frame toWrite) throws IOException; 12 13 14 /** 15 * Methods for writing out frames to file as well as with other writers such 16 * as StringWriter. 17 * 18 * @param toWrite 19 * @param writer 20 * @return 21 * @throws IOException 22 */ 23 public String writeFrame(Frame toWrite, Writer writer) throws IOException; 24 13 25 public void stop(); 14 26 -
trunk/src/org/expeditee/io/HTMLWriter.java
r108 r306 2 2 3 3 import java.io.IOException; 4 import java.io.Writer; 4 5 import java.util.List; 5 6 … … 16 17 17 18 @Override 18 protected void initialise(Frame start ) throws IOException {19 protected void initialise(Frame start, Writer writer) throws IOException { 19 20 _format = ".html"; 20 super.initialise(start );21 super.initialise(start, writer); 21 22 } 22 23 -
trunk/src/org/expeditee/io/JAVAWriter.java
r80 r306 2 2 3 3 import java.io.IOException; 4 import java.io.Writer; 4 5 import java.util.List; 5 6 … … 16 17 17 18 @Override 18 protected void initialise(Frame start ) throws IOException {19 protected void initialise(Frame start, Writer writer) throws IOException { 19 20 _format = ".java"; 20 super.initialise(start );21 super.initialise(start, writer); 21 22 22 23 // write the package and import statements here!! -
trunk/src/org/expeditee/io/KMSWriter.java
r298 r306 4 4 import java.io.FileWriter; 5 5 import java.io.IOException; 6 import java.io.Writer; 6 7 import java.lang.reflect.InvocationTargetException; 7 8 import java.lang.reflect.Method; … … 38 39 } 39 40 40 public void initialise(Frame start ) throws IOException {41 public void initialise(Frame start, Writer writer) throws IOException { 41 42 String name = start.getFramesetName().toLowerCase(); 42 43 -
trunk/src/org/expeditee/io/PDF2Writer.java
r282 r306 5 5 import java.io.FileOutputStream; 6 6 import java.io.IOException; 7 import java.io.Writer; 7 8 import java.util.Collection; 8 9 import java.util.List; … … 40 41 41 42 @Override 42 protected void initialise(Frame start ) throws IOException {43 protected void initialise(Frame start, Writer writer) throws IOException { 43 44 _format = ".pdf"; 44 super.initialise(start );45 super.initialise(start, writer); 45 46 try { 46 47 _pdfWriter = PdfWriter.getInstance(_pdfDocument, -
trunk/src/org/expeditee/io/PDFWriter.java
r290 r306 4 4 import java.io.FileOutputStream; 5 5 import java.io.IOException; 6 import java.io.Writer; 6 7 import java.util.List; 7 8 … … 42 43 43 44 @Override 44 protected void initialise(Frame start ) throws IOException {45 protected void initialise(Frame start, Writer writer) throws IOException { 45 46 _format = ".pdf"; 46 super.initialise(start );47 super.initialise(start, writer); 47 48 try { 48 49 PdfWriter -
trunk/src/org/expeditee/io/PdfFramesetWriter.java
r286 r306 1 1 package org.expeditee.io; 2 2 3 import java.awt.Color;4 3 import java.awt.Dimension; 5 4 import java.awt.Graphics2D; … … 7 6 import java.io.FileOutputStream; 8 7 import java.io.IOException; 8 import java.io.Writer; 9 9 import java.util.Collection; 10 10 import java.util.List; … … 63 63 64 64 @Override 65 protected void initialise(Frame start ) throws IOException {65 protected void initialise(Frame start, Writer writer) throws IOException { 66 66 _format = ".pdf"; 67 super.initialise(start );67 super.initialise(start, writer); 68 68 69 69 try { -
trunk/src/org/expeditee/io/TEXWriter.java
r80 r306 2 2 3 3 import java.io.IOException; 4 import java.io.Writer; 4 5 import java.util.List; 5 6 … … 15 16 16 17 @Override 17 protected void initialise(Frame start ) throws IOException {18 protected void initialise(Frame start, Writer writer) throws IOException { 18 19 _format = ".tex"; 19 super.initialise(start );20 super.initialise(start, writer); 20 21 } 21 22 -
trunk/src/org/expeditee/io/TXTWriter.java
r80 r306 2 2 3 3 import java.io.IOException; 4 import java.io.Writer; 4 5 import java.util.List; 5 6 … … 16 17 17 18 @Override 18 protected void initialise(Frame start ) throws IOException {19 protected void initialise(Frame start, Writer writer) throws IOException { 19 20 _format = ".txt"; 20 super.initialise(start );21 super.initialise(start, writer); 21 22 } 22 23 -
trunk/src/org/expeditee/network/FrameServer.java
r305 r306 10 10 import org.expeditee.gui.MessageBay; 11 11 12 public class FrameServer extends Thread { 13 14 private static final int MAX_PACKET_LENGTH = 2000; 15 16 private boolean _stop = false; 17 18 protected DatagramSocket socket = null; 12 public class FrameServer extends DefaultServer { 19 13 20 14 public FrameServer() throws IOException { … … 27 21 } 28 22 29 public void close() {30 _stop = true;31 }32 33 public void run() {34 MessageBay.displayMessage("Serving frames on port "35 + socket.getLocalPort());36 37 while (!_stop) {38 try {39 byte[] buf = new byte[MAX_PACKET_LENGTH];40 41 // receive request42 DatagramPacket packet = new DatagramPacket(buf, buf.length);43 socket.receive(packet);44 45 String frameName = new String(packet.getData(), 0, packet46 .getLength());47 MessageBay.displayMessage("Recieved request for " + frameName);48 49 // figure out response50 String dString = getFrame(frameName);51 52 if (dString != null && dString.length() > 0) {53 buf = dString.getBytes();54 55 // send the response to the client at "address" and "port"56 InetAddress address = packet.getAddress();57 int port = packet.getPort();58 packet = new DatagramPacket(buf, buf.length, address, port);59 socket.send(packet);60 }61 } catch (IOException e) {62 e.printStackTrace();63 }64 }65 socket.close();66 }67 68 23 protected String getFrame(String frameName) { 69 24 StringBuffer sb = new StringBuffer(); … … 74 29 String s = null; 75 30 try { 76 while ((s = br.readLine()) != null && sb.length() < MAX_PACKET_LENGTH) { 31 while ((s = br.readLine()) != null) { 32 //Check if there is space for the next line in the packet 33 if(sb.length() + s.length() > MAX_PACKET_LENGTH){ 34 MessageBay.errorMessage(frameName + " is too large to be sent in a single packet"); 35 break; 36 } 77 37 sb.append(s).append('\n'); 78 38 } … … 83 43 return sb.toString(); 84 44 } 45 46 @Override 47 protected void listenForMessages() throws IOException { 48 byte[] buf = new byte[FRAMENAME_PACKET_LENGTH]; 49 50 // receive request 51 DatagramPacket packet = new DatagramPacket(buf, buf.length); 52 socket.receive(packet); 53 54 String frameName = new String(packet.getData(), 0, packet 55 .getLength()); 56 MessageBay.displayMessage("Recieved request for " + frameName); 57 58 // figure out response 59 String dString = getFrame(frameName); 60 61 if (dString != null && dString.length() > 0) { 62 buf = dString.getBytes(); 63 64 // send the response to the client at "address" and "port" 65 InetAddress address = packet.getAddress(); 66 int port = packet.getPort(); 67 packet = new DatagramPacket(buf, buf.length, address, port); 68 socket.send(packet); 69 } 70 } 85 71 } -
trunk/src/org/expeditee/network/FrameShare.java
r305 r306 4 4 import java.io.IOException; 5 5 import java.io.StringReader; 6 import java.io.StringWriter; 6 7 import java.net.DatagramPacket; 7 8 import java.net.DatagramSocket; 9 import java.net.InetAddress; 8 10 import java.net.UnknownHostException; 11 import java.util.Collection; 9 12 import java.util.HashMap; 13 import java.util.LinkedList; 10 14 import java.util.Map; 11 15 12 16 import org.expeditee.gui.AttributeValuePair; 13 17 import org.expeditee.gui.Frame; 18 import org.expeditee.gui.FrameIO; 14 19 import org.expeditee.gui.MessageBay; 15 20 import org.expeditee.io.ExpReader; 21 import org.expeditee.io.ExpWriter; 16 22 import org.expeditee.io.FrameReader; 23 import org.expeditee.io.FrameWriter; 17 24 import org.expeditee.items.Text; 18 25 19 26 public class FrameShare { 20 27 21 private static FrameShare _theSession = null; 22 23 private static FrameServer _server = null; 28 private static final int SOCKET_TIMEOUT = 1000; 29 30 private static Collection<DefaultServer> _servers = new LinkedList<DefaultServer>(); 31 32 private static FrameShare _theSession; 24 33 25 34 private Map<String, Peer> _peers; 35 36 private int _port = -1; 26 37 27 38 public static void init(Frame settingsFrame) { … … 48 59 try { 49 60 if (!avp.hasPair()) { 50 _server = new FrameServer(); 61 _servers.add(new FrameServer()); 62 _servers.add(new FrameSaver()); 63 _servers.add(new MessageReciever()); 51 64 } else { 52 _server = new FrameServer("FrameServer", avp 53 .getIntegerValue()); 65 _port = avp.getIntegerValue(); 66 _servers.add(new FrameServer("FrameServer", _port)); 67 _servers.add(new FrameSaver("FrameSaver", _port + 1)); 68 _servers 69 .add(new MessageReciever("Messages", _port + 2)); 54 70 } 55 71 } catch (Exception e) { 56 72 e.printStackTrace(); 57 MessageBay.errorMessage("Could not start frame server["73 MessageBay.errorMessage("Could not start servers [" 58 74 + avp.toString() + "]"); 59 75 } … … 73 89 74 90 try { 75 if (_server != null) { 76 _server.start(); 77 } 91 for (DefaultServer server : _servers) 92 server.start(); 78 93 } catch (Exception e) { 79 94 MessageBay.errorMessage("Error in PeerToPeer setup"); … … 82 97 83 98 public void finalise() { 84 _server.close(); 99 for (DefaultServer server : _servers) 100 server.close(); 85 101 } 86 102 … … 97 113 public Frame loadFrame(String frameName) { 98 114 byte[] nameBuf = frameName.getBytes(); 99 byte[] buf = new byte[ 2056];115 byte[] buf = new byte[FrameServer.MAX_PACKET_LENGTH]; 100 116 101 117 String result = null; … … 104 120 // get a datagram socket 105 121 DatagramSocket socket = new DatagramSocket(); 106 socket.setSoTimeout( 1000);122 socket.setSoTimeout(SOCKET_TIMEOUT); 107 123 108 124 for (Peer peer : _peers.values()) { … … 129 145 130 146 } 131 132 if (result == null)147 148 if (result == null) 133 149 return null; 134 150 135 151 // Now read the frame from the file contents 136 152 FrameReader reader = new ExpReader(frameName); … … 155 171 return frame; 156 172 } 173 174 public boolean sendMessage(String message, String peerName) { 175 Peer peer = _peers.get(peerName.toLowerCase()); 176 177 if(peer == null){ 178 return false; 179 } 180 181 try { 182 // get a datagram socket 183 DatagramSocket socket = new DatagramSocket(_port - 1); 184 socket.setSoTimeout(SOCKET_TIMEOUT); 185 186 // message = peerName + " says " + message; 187 byte[] contentsBuf = message.getBytes(); 188 189 try { 190 // send save request 191 DatagramPacket packet = new DatagramPacket(contentsBuf, 192 contentsBuf.length, peer.getAddress(), 193 peer.getPort() + 2); 194 socket.send(packet); 195 } catch (Exception e) { 196 e.printStackTrace(); 197 } 198 socket.close(); 199 200 } catch (IOException e) { 201 e.printStackTrace(); 202 } 203 return true; 204 } 205 206 public String saveFrame(Frame toSave) { 207 208 FrameIO.setSavedProperties(toSave); 209 210 Peer peer = _peers.get(toSave.getPath().toLowerCase()); 211 String fileContents = ""; 212 // Now read the frame from the file contents 213 FrameWriter writer = new ExpWriter(); 214 try { 215 // String tempName = new Date().toString() + ".exp"; 216 // writer.setOutputLocation(tempName); 217 // Write out the file to a StringBuffer 218 StringWriter sw = new StringWriter(); 219 // First write out the name of the frame 220 sw.write(toSave.getName() + "\n"); 221 //Then the version 222 sw.write(toSave.getVersion() + "\n"); 223 // Write out the rest of the frame 224 writer.writeFrame(toSave, sw); 225 // Now send the packet 226 fileContents = sw.getBuffer().toString(); 227 byte[] contentsBuf = fileContents.getBytes(); 228 229 // get a datagram socket 230 DatagramSocket socket = new DatagramSocket(_port - 2); 231 socket.setSoTimeout(SOCKET_TIMEOUT); 232 233 try { 234 // send save request 235 DatagramPacket packet = new DatagramPacket(contentsBuf, 236 contentsBuf.length, peer.getAddress(), 237 peer.getPort() + 1); 238 socket.send(packet); 239 } catch (Exception e) { 240 e.printStackTrace(); 241 } 242 socket.close(); 243 244 } catch (IOException e) { 245 e.printStackTrace(); 246 } 247 toSave.setSaved(); 248 return fileContents; 249 } 250 251 public String getPeerName(int port, InetAddress address) { 252 for (Peer p : _peers.values()) { 253 if(p.getPort() == port && p.getAddress().equals(address)) 254 return p.getName(); 255 } 256 return null; 257 } 157 258 }
Note:
See TracChangeset
for help on using the changeset viewer.