Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void sendSubscribe(String subscriberAddress) {
- try {
- /**
- * Extracting the info received in this method (on the form username@proxy)
- */
- // create Request URI
- String[] address = subscriberAddress.split("@");
- SipURI toURI = myAddressFactory
- .createSipURI(address[0], address[1]);
- /**
- * Create the required headers
- **/
- // Create ToHeader
- Address toNameAddress = myAddressFactory.createAddress(toURI);
- ToHeader toHeader = myHeaderFactory.createToHeader(toNameAddress,
- null);
- // Create FromHeader
- SipURI fromURI = myAddressFactory.createSipURI(address[0],
- address[1]);
- Address fromNameAddress = myAddressFactory.createAddress(fromURI);
- FromHeader fromHeader = myHeaderFactory.createFromHeader(
- fromNameAddress, null);
- fromHeader.setTag("12");
- // Create CseqHeader
- CSeqHeader cSeqHeader = myHeaderFactory.createCSeqHeader(1L,
- Request.SUBSCRIBE);
- // Create CallIdHeader
- CallIdHeader callIdHeader = mySipProvider.getNewCallId();
- // Create ExpiresHeader
- ExpiresHeader expiresHeader = myHeaderFactory
- .createExpiresHeader(3600);
- // Create EventHeader
- EventHeader eventHeader = myHeaderFactory
- .createEventHeader("presence");
- // Create MaxForwardsHeader
- MaxForwardsHeader maxForwards = myHeaderFactory
- .createMaxForwardsHeader(70);
- // Create ViaHeader
- String ipAddress = myListeningPoint.getIPAddress();
- ViaHeader viaHeader = myHeaderFactory.createViaHeader(ipAddress,
- myListeningPoint.getPort(),
- myListeningPoint.getTransport(), null);
- viaHeader.setRPort();
- // Create Contact Headers
- SipURI contactURI = myAddressFactory.createSipURI(address[0], myIP);
- contactURI.setPort(mySipProvider.getListeningPoint(
- myListeningPoint.getTransport()).getPort());
- Address contactAddress = myAddressFactory.createAddress(contactURI);
- Header contactHeader = myHeaderFactory
- .createContactHeader(contactAddress);
- /**
- * Create the request and add the corresponding headers
- **/
- // Create the request.
- Request request = myMessageFactory.createRequest(null);
- // Add the headers
- request.setRequestURI(toURI);
- request.setExpires(expiresHeader);
- request.addHeader(toHeader);
- request.addHeader(fromHeader);
- request.addHeader(eventHeader);
- request.addHeader(cSeqHeader);
- request.addHeader(callIdHeader);
- request.addHeader(maxForwards);
- request.addHeader(viaHeader);
- request.addHeader(contactHeader);
- /**
- * Print out the request you are going to send
- */
- System.out.println(request.toString());
- /**
- * Finally create a new clienttransaction and send the request.
- **/
- // Create the client transaction.
- myClientTransaction = mySipProvider
- .getNewClientTransaction(request);
- // Send the request out.
- myClientTransaction.sendRequest();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public void sendPublish(String statusid, String status) {
- try {
- /**
- * Create the Request URI
- */
- // create Request URI
- SipURI reqURI = myAddressFactory
- .createSipURI(conf.userID, myServer);
- /**
- * Create the required headers
- **/
- // Create ToHeader
- Address toNameAddress = myAddressFactory.createAddress(reqURI);
- ToHeader toHeader = myHeaderFactory.createToHeader(toNameAddress,
- null);
- // Create FromHeader
- FromHeader fromHeader = myHeaderFactory.createFromHeader(
- toNameAddress, null);
- fromHeader.setTag("12");
- // Create CseqHeader
- CSeqHeader cSeqHeader = myHeaderFactory.createCSeqHeader(1L,
- Request.PUBLISH);
- // Create CallIdHeader
- CallIdHeader callIdHeader = mySipProvider.getNewCallId();
- // Create ExpiresHeader
- ExpiresHeader expiresHeader = myHeaderFactory
- .createExpiresHeader(60);
- // Create EventHeader
- EventHeader eventHeader = myHeaderFactory
- .createEventHeader("presence");
- // Create MaxForwardsHeader
- MaxForwardsHeader maxForwards = myHeaderFactory
- .createMaxForwardsHeader(70);
- // Create ViaHeader
- String ipAddress = myListeningPoint.getIPAddress();
- ViaHeader viaHeader = myHeaderFactory.createViaHeader(ipAddress,
- myListeningPoint.getPort(),
- myListeningPoint.getTransport(), null);
- viaHeader.setRPort();
- // Create Contact Headers
- SipURI contactURI = myAddressFactory
- .createSipURI(conf.userID, myIP);
- contactURI.setPort(mySipProvider.getListeningPoint(
- myListeningPoint.getTransport()).getPort());
- Address contactAddress = myAddressFactory.createAddress(contactURI);
- Header contactHeader = myHeaderFactory
- .createContactHeader(contactAddress);
- // Create ContentTypeHeader
- ContentTypeHeader contentHeader = myHeaderFactory
- .createContentTypeHeader("application", "pidf-diff+xml");
- // Create AllowHeader
- AllowHeader allowHeader = myHeaderFactory
- .createAllowHeader("INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO");
- /**
- * Create the request and add the headers
- **/
- // Create the request.
- Request request = myMessageFactory.createRequest(null);
- request.setRequestURI(reqURI);
- request.setExpires(expiresHeader);
- request.addHeader(toHeader);
- request.addHeader(fromHeader);
- request.addHeader(eventHeader);
- request.addHeader(cSeqHeader);
- request.addHeader(callIdHeader);
- request.addHeader(maxForwards);
- request.addHeader(viaHeader);
- request.addHeader(contactHeader);
- request.addHeader(contentHeader);
- request.addHeader(allowHeader);
- /**
- * Create the XML-content and add it to the request
- */
- String content = "<?xml version='1.0' encoding='UTF-8'?>"
- + "<presence xmlns='urn:ietf:params:xml:ns:pidf'"
- + "xmlns:dm='urn:ietf:params:xml:ns:pidf:data-model'"
- + "xmlns:rpid='urn:ietf:params:xml:ns:pidf:rpid'"
- + "xmlns:c='urn:ietf:params:xml:ns:pidf:cipid'"
- + "entity='sip:"
- + conf.userID
- + "@"
- + myServer.split(":")[0]
- + "'>"
- + "<tuple id='"
- + conf.userID
- + "'>"
- + "<status>"
- + "<basic>open</basic>"
- + "</status>"
- + "</tuple>"
- + "<dm:person id='"
- + conf.userID
- + "'>"
- + "<rpid:activities>"
- + "<rpid:"
- + statusid
- + "/>"
- + "</rpid:activities>"
- + "<dm:note>"
- + status
- + "</dm:note>" + "</dm:person>" + "</presence>";
- request.setContent(content, contentHeader);
- /**
- * Print out the request you are going to send
- */
- System.out.println(request.toString());
- /**
- * Finally create a new clienttransaction and send the request.
- **/
- // Create the client transaction.
- myClientTransaction = mySipProvider
- .getNewClientTransaction(request);
- // send the request out.
- myClientTransaction.sendRequest();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private void handleNotify(Request myRequest) {
- try {
- /**
- * Create new server transaction if it is not already created.
- */
- if (myServerTransaction == null) {
- myServerTransaction = mySipProvider
- .getNewServerTransaction(myRequest);
- }
- /**
- * Create a Status: 200 OK response and send it immediately back to the notifier.
- */
- Response myResponse = myMessageFactory.createResponse(200,
- myRequest);
- Address contactAddress = myAddressFactory.createAddress("sip:"
- + myIP + ":" + myPort);
- Header myContactHeader = myHeaderFactory
- .createContactHeader(contactAddress);
- myResponse.addHeader(myContactHeader);
- myServerTransaction.sendResponse(myResponse);
- /**
- * Use the info in myRequest to extract the status and user and show the new status-update on the GUI.
- */
- if (myRequest.getRawContent() != null) {
- // Extract the XML-content
- String pidfContent = new String(myRequest.getRawContent());
- // Find the entity
- int entityStart = pidfContent.indexOf("entity=\"") + 8;
- int entityEnd = pidfContent.indexOf("\"><tuple id=\"");
- String entity = pidfContent.substring(entityStart, entityEnd);
- // Find the status
- int statusStart = pidfContent
- .indexOf("\"><rpid:activities><rpid:") + 25;
- int statusEnd = pidfContent.indexOf("/></rpid:activities>");
- String status = pidfContent.substring(statusStart, statusEnd);
- // Update the GUI
- myGUI.updateListWithStatus(entity, status);
- System.out.println("Updated: " + entity + ", with status: "
- + status);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement