commit 490059722e519533b74a68f5bf3a07b2ed0f07ec Author: Hashik Donthineni HashikDonthineni@gmail.com Date: Tue Jun 9 14:57:00 2020 +0530
Setting remote description and SDP serialization, deserialization --- .../torproject/snowflake/MyPersistentService.java | 31 ++++++++++++++----- .../org/torproject/snowflake/SDPSerializer.java | 17 ++++++++++ .../torproject/snowflake/SimpleSdpObserver.java | 36 ++++++++++++++++++++++ 3 files changed, 77 insertions(+), 7 deletions(-)
diff --git a/app/src/main/java/org/torproject/snowflake/MyPersistentService.java b/app/src/main/java/org/torproject/snowflake/MyPersistentService.java index 8a045a6..ecb39ee 100644 --- a/app/src/main/java/org/torproject/snowflake/MyPersistentService.java +++ b/app/src/main/java/org/torproject/snowflake/MyPersistentService.java @@ -266,6 +266,7 @@ public class MyPersistentService extends Service { return factory.createPeerConnection(rtcConfiguration, pcObserver); } /////////////// Network Calls //////////////////////// + /** * Sending post request to get offer from the broker. */ @@ -280,24 +281,40 @@ public class MyPersistentService extends Service {
/** * Fetching offer is a success. + * * @param sdpOfferResponse */ public void offerRequestSuccess(SDPOfferResponse sdpOfferResponse) { + createPersistentNotification(true, "Fetching offer success. Creating Answer."); if (sdpOfferResponse.getStatus().equals(BrokerConstants.CLIENT_MATCH)) { Log.d(TAG, "requestSuccess: CLIENT MATCH"); - //TODO:Serialize SDP, SetRemote Description, Send Answer. - + try { + SessionDescription offer = SDPSerializer.deserializeOffer(sdpOfferResponse.getOffer()); + Log.d(TAG, "requestSuccess: Remote Description (OFFER):\n" + offer.description); + mainPeerConnection.setRemoteDescription(new SimpleSdpObserver("Remote: Offer"), offer); + //TODO: Create Answer + } catch (JSONException e) { + Log.d(TAG, "requestSuccess: Serialization Failed:"); + e.printStackTrace(); + } } else { Log.d(TAG, "requestSuccess: NO CLIENT MATCH"); -// if (isServiceStarted) - //fetchOffer(); //Sending request for offer again. + //TODO:Set a time out to resending offer. + if (isServiceStarted) + fetchOffer(); //Sending request for offer again. } }
- public void offerRequestFailure(Throwable t){ + /** + * Offer Request is a failure and handling the failure by resending the offer. + * + * @param t + */ + public void offerRequestFailure(Throwable t) { Log.d(TAG, "requestFailure: " + t.getMessage()); - createPersistentNotification(true,"Failed getting offer. Retrying."); + createPersistentNotification(true, "Failed getting offer. Retrying."); //TODO:Set a time out to resending offer. - fetchOffer(); //Sending request for offer again. + if (isServiceStarted) + fetchOffer(); //Sending request for offer again. } } diff --git a/app/src/main/java/org/torproject/snowflake/SDPSerializer.java b/app/src/main/java/org/torproject/snowflake/SDPSerializer.java new file mode 100644 index 0000000..60bb846 --- /dev/null +++ b/app/src/main/java/org/torproject/snowflake/SDPSerializer.java @@ -0,0 +1,17 @@ +package org.torproject.snowflake; + +import org.json.JSONException; +import org.json.JSONObject; +import org.webrtc.SessionDescription; + +public class SDPSerializer { + + public static SessionDescription deserializeOffer(String SDP) throws JSONException { + return new SessionDescription(SessionDescription.Type.OFFER, + new JSONObject(SDP).get("sdp").toString()); + } + + public static String serializeAnswer(SessionDescription SDP){ + return SDP.description; + } +} diff --git a/app/src/main/java/org/torproject/snowflake/SimpleSdpObserver.java b/app/src/main/java/org/torproject/snowflake/SimpleSdpObserver.java new file mode 100644 index 0000000..0a42603 --- /dev/null +++ b/app/src/main/java/org/torproject/snowflake/SimpleSdpObserver.java @@ -0,0 +1,36 @@ +package org.torproject.snowflake; + +import android.util.Log; + +import org.webrtc.SdpObserver; +import org.webrtc.SessionDescription; + + +public class SimpleSdpObserver implements SdpObserver { + private final String TAG = "SimpleSdpObserver"; + private final String location; + + public SimpleSdpObserver(String loc) { + location = loc; //Remote or local + } + + @Override + public void onCreateSuccess(SessionDescription sessionDescription) { + Log.d(TAG, "onCreateSuccess: " + location + ":\n" + sessionDescription.description); + } + + @Override + public void onSetSuccess() { + Log.d(TAG, "onSetSuccess: " + location); + } + + @Override + public void onCreateFailure(String s) { + Log.d(TAG, "onCreateFailure: " + location + ":" + s); + } + + @Override + public void onSetFailure(String s) { + Log.d(TAG, "onSetFailure: " + location + ":" + s); + } +}
tor-commits@lists.torproject.org