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.

SIP200Ok.java 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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.logging.Level;
  8. import java.util.logging.Logger;
  9. import javax.sdp.SessionDescription;
  10. import javax.sip.RequestEvent;
  11. import javax.sip.header.AllowEventsHeader;
  12. import javax.sip.header.AllowHeader;
  13. import javax.sip.header.CSeqHeader;
  14. import javax.sip.header.CallIdHeader;
  15. import javax.sip.header.ContactHeader;
  16. import javax.sip.header.ContentTypeHeader;
  17. import javax.sip.header.FromHeader;
  18. import javax.sip.header.HeaderFactory;
  19. import javax.sip.header.SupportedHeader;
  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 SIP200Ok
  30. {
  31. private Response response;
  32. private static final Logger lg200Ok = OhmLogger.getLogger();
  33. private RequestEvent requestEvent;
  34. private HeaderFactory headerFactory;
  35. public SIP200Ok(MessageFactory messageFactory, RequestEvent requestEvent,
  36. ContactHeader contactHeader, HeaderFactory headerFactory)
  37. {
  38. this.requestEvent = requestEvent;
  39. this.headerFactory = headerFactory;
  40. try
  41. {
  42. response = messageFactory.createResponse(Response.OK, this.requestEvent.getRequest());
  43. response.addHeader((ViaHeader) this.requestEvent.getRequest().getHeader("Via"));
  44. response.addHeader((FromHeader) this.requestEvent.getRequest().getHeader("From"));
  45. response.addHeader((ToHeader) this.requestEvent.getRequest().getHeader("To"));
  46. response.addHeader((CallIdHeader) this.requestEvent.getRequest().getHeader("Call-ID"));
  47. response.addHeader((CSeqHeader) this.requestEvent.getRequest().getHeader("Cseq"));
  48. response.addHeader(contactHeader);
  49. AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
  50. AllowEventsHeader allowevents = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");
  51. response.addHeader((CallIdHeader) this.requestEvent.getRequest().getHeader("Call-ID"));
  52. response.addHeader(allow);
  53. response.addHeader(allowevents);
  54. lg200Ok.info("200-OK Header erstellt");
  55. }
  56. catch (Exception ex)
  57. {
  58. lg200Ok.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
  59. }
  60. }
  61. public void addSDP(SessionDescription sdp, String myTag)
  62. {
  63. try
  64. {
  65. response.removeHeader("To");
  66. ToHeader temptoring = (ToHeader) requestEvent.getRequest().getHeader("To");
  67. temptoring.setTag(myTag); //evtl. besseren Tag
  68. response.addHeader(temptoring); //evtl noch Ergänzungen
  69. SupportedHeader supp = this.headerFactory.createSupportedHeader("replace,path,timer");//nachschauen für was es gebraucht wird
  70. response.addHeader(supp);
  71. ContentTypeHeader content = headerFactory.createContentTypeHeader("application", "sdp");
  72. response.addHeader(content);
  73. response.setContent(sdp, content);
  74. }
  75. catch (Exception ex)
  76. {
  77. lg200Ok.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
  78. }
  79. }
  80. /**
  81. * @return the response
  82. */
  83. public Response getResponse()
  84. {
  85. return response;
  86. }
  87. }