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.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. *
  24. * @author Jan
  25. */
  26. public class SIP180Ringing implements Runnable
  27. {
  28. private RequestEvent requestEvent;
  29. private ExecutorService threadring;
  30. private boolean callIncoming;
  31. private Response responseRing;
  32. private MessageFactory messageFactory;
  33. private HeaderFactory headerFactory;
  34. private String myTag;
  35. private String proxyTag;
  36. public static final Logger lgRing = OhmLogger.getLogger();
  37. //private SubmissionPublisher<Integer> publisherZahl;
  38. public SIP180Ringing(RequestEvent requestEvent, String myTag, String proxyTag, ContactHeader contact, HeaderFactory headerFactory)
  39. {
  40. this.requestEvent = requestEvent;
  41. this.headerFactory = headerFactory;
  42. threadring = Executors.newSingleThreadExecutor();
  43. try
  44. {
  45. responseRing = this.messageFactory.createResponse(180, this.requestEvent.getRequest());
  46. responseRing.addHeader((ViaHeader) this.requestEvent.getRequest().getHeader("Via"));
  47. responseRing.addHeader((FromHeader) this.requestEvent.getRequest().getHeader("From"));
  48. //persönlichen Tag muss beim To-Header ergänzt werden
  49. ToHeader tempTo = ((ToHeader) this.requestEvent.getRequest().getHeader("To"));
  50. tempTo.setTag(myTag);
  51. responseRing.addHeader(tempTo);
  52. responseRing.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID"));
  53. responseRing.addHeader((CSeqHeader) this.requestEvent.getRequest().getHeader("Cseq"));
  54. responseRing.addHeader(contact);
  55. responseRing.addHeader(headerFactory.createSupportedHeader("replace,path,timer"));
  56. responseRing.addHeader(this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE"));
  57. responseRing.addHeader(this.headerFactory.createAllowEventsHeader("talk,hold,refer")); //für was wird er gebraucht
  58. lgRing.info("Ringing Header erfolgreich erstellt");
  59. }
  60. catch (Exception ex)
  61. {
  62. lgRing.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
  63. }
  64. }
  65. public void start()
  66. {
  67. callIncoming = true;
  68. }
  69. public void stop()
  70. {
  71. callIncoming = false;
  72. }
  73. @Override
  74. public void run()
  75. {
  76. while (callIncoming)
  77. {
  78. }
  79. }
  80. /**
  81. * @return the responseRing
  82. */
  83. public Response getResponseRing()
  84. {
  85. return responseRing;
  86. }
  87. }