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.

SIPRinging.java 2.9KB

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