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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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 static java.lang.Thread.sleep;
  8. import java.util.concurrent.ExecutorService;
  9. import java.util.concurrent.Executors;
  10. import java.util.logging.Level;
  11. import java.util.logging.Logger;
  12. import javax.sip.RequestEvent;
  13. import javax.sip.SipException;
  14. import javax.sip.header.AllowEventsHeader;
  15. import javax.sip.header.AllowHeader;
  16. import javax.sip.header.CSeqHeader;
  17. import javax.sip.header.ContactHeader;
  18. import javax.sip.header.FromHeader;
  19. import javax.sip.header.HeaderFactory;
  20. import javax.sip.header.ToHeader;
  21. import javax.sip.header.ViaHeader;
  22. import javax.sip.message.MessageFactory;
  23. import javax.sip.message.Response;
  24. import logger.OhmLogger;
  25. /**
  26. *
  27. * @author Jan
  28. */
  29. public class SIP180Ringing implements Runnable
  30. {
  31. private RequestEvent evtubergabe;
  32. private ExecutorService threadring;
  33. private boolean run;
  34. private Response responsering;
  35. private MessageFactory messageFactory;
  36. private HeaderFactory headerFactory;
  37. private String myTag;
  38. private String proxyTag;
  39. public static final Logger lg = OhmLogger.getLogger();
  40. //private SubmissionPublisher<Integer> publisherZahl;
  41. public SIP180Ringing(RequestEvent evtubergabe, String myTag, ContactHeader contact)
  42. {
  43. this.evtubergabe = evtubergabe;
  44. threadring = Executors.newSingleThreadExecutor();
  45. try
  46. {
  47. responsering = this.messageFactory.createResponse(180, evtubergabe.getRequest());
  48. responsering.addHeader((ViaHeader) evtubergabe.getRequest().getHeader("Via"));
  49. responsering.addHeader((FromHeader) evtubergabe.getRequest().getHeader("From"));
  50. AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
  51. //Bei Ringing muss persönlicher Tag ergänzt werden
  52. ToHeader temptoring = (ToHeader) evtubergabe.getRequest().getHeader("To");
  53. proxyTag = temptoring.getTag();
  54. temptoring.setTag(String.valueOf(this.myTag));
  55. responsering.addHeader(temptoring);
  56. long cSequenz = ((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq")).getSeqNumber();
  57. responsering.addHeader((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq"));
  58. responsering.addHeader(contact);
  59. responsering.addHeader(allow);
  60. AllowEventsHeader allowevent = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");// für was gebraucht
  61. responsering.addHeader(allowevent);
  62. lg.info("Ringing Header erfolgreich erstellt");
  63. }
  64. catch (Exception ex)
  65. {
  66. lg.info("Fehler bei erstellen des Ringing Headers");
  67. lg.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
  68. }
  69. }
  70. public void start()
  71. {
  72. run = true;
  73. threadring.submit(this);
  74. }
  75. public void stop()
  76. {
  77. run = false;
  78. }
  79. @Override
  80. public void run()
  81. {
  82. while (run)
  83. {
  84. try
  85. {
  86. this.sipProvider.sendResponse(responsering);
  87. }
  88. catch (SipException ex)
  89. {
  90. Logger.getLogger(SIP180Ringing.class.getName()).log(Level.SEVERE, null, ex);
  91. }
  92. try
  93. {
  94. sleep(1000);
  95. }
  96. catch (Exception e)
  97. {
  98. }
  99. }
  100. }
  101. }