Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. package protocols;
  2.  
  3. import java.io.BufferedInputStream;
  4. import java.io.ByteArrayOutputStream;
  5. import java.io.File;
  6. import java.net.DatagramPacket;
  7. import java.net.DatagramSocket;
  8. import java.net.InetAddress;
  9. import java.io.FileInputStream;
  10. import java.io.IOException;
  11.  
  12. import utilities.Utils;
  13. import rmi.Peer;
  14.  
  15. public class BackupProtocol implements Runnable{
  16. private Peer peer;
  17. private String pathName;
  18. private String fileId;
  19. private String version;
  20. private String address;
  21. private int port;
  22. private int replicationDegree;
  23.  
  24. public BackupProtocol(Peer ProtocolPeer, String version, String pathName, int repDeg, String addr, int port){
  25. this.peer = ProtocolPeer;
  26. this.pathName = pathName;
  27. this.replicationDegree = repDeg;
  28. this.fileId = Utils.hash(pathName);
  29. this.version = version;
  30. this.address = addr;
  31. this.port = port;
  32.  
  33. System.out.println("Backup protocol is being started!");
  34. }
  35.  
  36.  
  37. //PUTCHUNK <Version> <SenderId> <FileId> <ChunkNo> <ReplicationDeg> <CRLF><CRLF><Body>
  38. public String createHeader(int chunkNumber) {
  39. String header="";
  40.  
  41. header = "PUTCHUNK "+ version + " " + peer.getId() + " " + fileId + " " + Integer.toString(chunkNumber)+ " " + replicationDegree + " " +"\r\n\r\n";
  42.  
  43. return header;
  44. }
  45.  
  46.  
  47. @Override
  48. public void run(){
  49.  
  50.  
  51. File f = new File(pathName);
  52.  
  53. int chunkNumber = 0;
  54. int chunkSize=64000;
  55.  
  56. byte[] buffer = new byte[chunkSize];
  57.  
  58. int counterNumber = 0;
  59. try {
  60. FileInputStream fis = new FileInputStream(f);
  61. BufferedInputStream bis= new BufferedInputStream(fis);
  62.  
  63. int c;
  64. while ((c = bis.read(buffer)) > 0) {
  65. chunkNumber++;
  66. String header = createHeader(chunkNumber);
  67.  
  68. byte[] headerBytes = header.getBytes();
  69. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  70. outputStream.write(headerBytes);
  71. outputStream.write(buffer,0,c);
  72.  
  73. System.out.println("Msg Sent: "+ header);
  74. byte msg[] = outputStream.toByteArray();
  75. outputStream.close();
  76.  
  77. //sending the message
  78. InetAddress address = InetAddress.getByName("224.0.0.1");
  79. DatagramSocket socket = new DatagramSocket();
  80.  
  81. DatagramPacket packet = new DatagramPacket(msg, msg.length, address, port);
  82. socket.send(packet);
  83.  
  84. long timeout = (long) (1000 * Math.pow(2, counterNumber));
  85. Thread.sleep(timeout);
  86.  
  87. //verificacao do numero de counters;
  88.  
  89. }
  90. }
  91. catch (IOException e1) {
  92. System.out.println("Error Reading The File.");
  93. e1.printStackTrace();
  94. } catch (InterruptedException e) {
  95. e.printStackTrace();
  96. return;
  97. }
  98. }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement