SyncHostTask.java 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package de.tudarmstadt.informatik.hostage.sync.wifi_direct.sync_tasks;
  2. import android.content.Context;
  3. import android.net.wifi.p2p.WifiP2pDevice;
  4. import android.net.wifi.p2p.WifiP2pManager;
  5. import android.util.Log;
  6. import java.util.Collection;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import java.util.Set;
  10. import de.tudarmstadt.informatik.hostage.logging.SyncData;
  11. import de.tudarmstadt.informatik.hostage.logging.SyncInfo;
  12. import de.tudarmstadt.informatik.hostage.persistence.HostageDBOpenHelper;
  13. import de.tudarmstadt.informatik.hostage.sync.Synchronizer;
  14. import de.tudarmstadt.informatik.hostage.sync.wifi_direct.WiFiP2pSerializableObject;
  15. import de.tudarmstadt.informatik.hostage.sync.wifi_direct.WiFiP2pServerTask;
  16. /**
  17. * Created by Julien on 14.01.2015.
  18. */
  19. public class SyncHostTask extends WiFiP2pServerTask {
  20. public static final String SYNC_INFO_REQUEST = "sync_info_request";
  21. public static final String SYNC_INFO_RESPONSE = "sync_info_response";
  22. public static final String SYNC_DATA_REQUEST = "sync_data_request";
  23. public static final String SYNC_DATA_RESPONSE = "sync_data_response";
  24. private HostageDBOpenHelper mdbh;
  25. private Synchronizer synchronizer;
  26. private Map<String, SyncInfo> receivedInfoPerDevice;
  27. public SyncHostTask( WifiP2pDevice ownDevice, BackgroundTaskCompletionListener l , Context context) {
  28. super(ownDevice , l);
  29. mdbh = new HostageDBOpenHelper(context);
  30. synchronizer = new Synchronizer(mdbh);
  31. this.receivedInfoPerDevice = new HashMap<String, SyncInfo>();
  32. }
  33. @Override
  34. public WiFiP2pSerializableObject handleReceivedObject(WiFiP2pSerializableObject receivedObj){
  35. if (receivedObj != null) {
  36. Log.i("WiFiP2p_Host", "Received: " + receivedObj.getRequestIdentifier());
  37. if (receivedObj.getRequestIdentifier().equals(SYNC_INFO_REQUEST)){
  38. Log.i("WiFiP2p_Host", "Sending Sync Info: " + SYNC_INFO_RESPONSE);
  39. SyncInfo syncInfo = (SyncInfo) receivedObj.getObjectToSend();
  40. this.receivedInfoPerDevice.put(receivedObj.getActingDevice_IP_address(), syncInfo);
  41. SyncInfo response = synchronizer.getSyncInfo();
  42. WiFiP2pSerializableObject syncObj = new WiFiP2pSerializableObject();
  43. syncObj.setObjectToSend(response);
  44. syncObj.setRequestIdentifier(SYNC_INFO_RESPONSE);
  45. return syncObj;
  46. }
  47. if (receivedObj.getRequestIdentifier().equals(SYNC_DATA_REQUEST)){
  48. Log.i("WiFiP2p_Host", "Sending Sync Data: " + SYNC_DATA_RESPONSE);
  49. SyncData sdata = (SyncData) receivedObj.getObjectToSend();
  50. if (sdata != null && sdata instanceof SyncData){
  51. synchronizer.updateFromSyncData(sdata);
  52. }
  53. SyncInfo syncInfo = this.receivedInfoPerDevice.get(receivedObj.getActingDevice_IP_address());
  54. if (syncInfo != null){
  55. SyncData response = synchronizer.getSyncData(syncInfo);
  56. WiFiP2pSerializableObject syncObj = new WiFiP2pSerializableObject();
  57. syncObj.setObjectToSend(response);
  58. syncObj.setRequestIdentifier(SYNC_DATA_RESPONSE);
  59. return syncObj;
  60. }
  61. }
  62. }
  63. Log.i("WiFiP2p_Host", "Stop Sync Process - Performing a disconnect.");
  64. // DISCONNECT
  65. this.interrupt(true);
  66. return null;
  67. }
  68. }