You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SIP180Ringing.java 3.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package model;
  7. import java.util.concurrent.ExecutorService;
  8. import java.util.concurrent.Executors;
  9. import java.util.logging.Level;
  10. import java.util.logging.Logger;
  11. import javax.sip.RequestEvent;
  12. import javax.sip.header.CSeqHeader;
  13. import javax.sip.header.CallIdHeader;
  14. import javax.sip.header.ContactHeader;
  15. import javax.sip.header.FromHeader;
  16. import javax.sip.header.HeaderFactory;
  17. import javax.sip.header.ToHeader;
  18. import javax.sip.header.ViaHeader;
  19. import javax.sip.message.MessageFactory;
  20. import javax.sip.message.Response;
  21. import logger.OhmLogger;
  22. /**
  23. * Erstellt den Ringing Header, wird als zweites gesendet sobald man einen Anruf bekommt
  24. * Wiederholen bis User das Telefon abnimmt oder nichtmehr angerufen wird
  25. *
  26. * @author Jan
  27. */
  28. public class SIP180Ringing implements Runnable
  29. {
  30. private RequestEvent requestEvent;
  31. private ExecutorService threadring; //für wiederholtes senden des Ringing Headers
  32. private boolean callIncoming;
  33. private Response responseRing;
  34. private MessageFactory messageFactory;
  35. private HeaderFactory headerFactory;
  36. private String myTag;
  37. private String proxyTag;
  38. public static final Logger lgRing = OhmLogger.getLogger();
  39. //private SubmissionPublisher<Integer> publisherZahl;
  40. public SIP180Ringing(RequestEvent requestEvent, String myTag, String proxyTag, ContactHeader contact, HeaderFactory headerFactory)
  41. {
  42. this.requestEvent = requestEvent;
  43. this.headerFactory = headerFactory;
  44. threadring = Executors.newSingleThreadExecutor();
  45. try
  46. {
  47. responseRing = this.messageFactory.createResponse(180, this.requestEvent.getRequest());
  48. responseRing.addHeader((ViaHeader) this.requestEvent.getRequest().getHeader("Via"));
  49. responseRing.addHeader((FromHeader) this.requestEvent.getRequest().getHeader("From"));
  50. //persönlichen Tag muss beim To-Header ergänzt werden
  51. ToHeader tempTo = ((ToHeader) this.requestEvent.getRequest().getHeader("To"));
  52. tempTo.setTag(myTag);
  53. responseRing.addHeader(tempTo);
  54. responseRing.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID"));
  55. responseRing.addHeader((CSeqHeader) this.requestEvent.getRequest().getHeader("Cseq"));
  56. responseRing.addHeader(contact);
  57. responseRing.addHeader(headerFactory.createSupportedHeader("replace,path,timer"));
  58. responseRing.addHeader(this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE"));
  59. responseRing.addHeader(this.headerFactory.createAllowEventsHeader("talk,hold,refer")); //für was wird er gebraucht
  60. lgRing.info("180-Ringing Header erstellt");
  61. }
  62. catch (Exception ex)
  63. {
  64. lgRing.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
  65. }
  66. }
  67. public void start()
  68. {
  69. callIncoming = true;
  70. }
  71. public void stop()
  72. {
  73. callIncoming = false;
  74. }
  75. @Override
  76. public void run()
  77. {
  78. while (callIncoming)
  79. {
  80. }
  81. }
  82. /**
  83. * @return the responseRing
  84. */
  85. public Response getResponseRing()
  86. {
  87. return responseRing;
  88. }
  89. }