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

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.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. private ContactHeader contactHeader;
  36. public SIP200Ok(MessageFactory messageFactory, RequestEvent requestEvent,
  37. ContactHeader contactHeader, HeaderFactory headerFactory)
  38. {
  39. this.requestEvent = requestEvent;
  40. this.headerFactory = headerFactory;
  41. this.contactHeader = contactHeader;
  42. try
  43. {
  44. response = messageFactory.createResponse(Response.OK, this.requestEvent.getRequest());
  45. response.addHeader((ViaHeader) this.requestEvent.getRequest().getHeader("Via"));
  46. System.out.println(this.requestEvent.getRequest().getHeader("Via"));
  47. response.addHeader((FromHeader) this.requestEvent.getRequest().getHeader("From"));
  48. response.addHeader((ToHeader) this.requestEvent.getRequest().getHeader("To"));
  49. response.addHeader((CallIdHeader) this.requestEvent.getRequest().getHeader("Call-ID"));
  50. response.addHeader((CSeqHeader) this.requestEvent.getRequest().getHeader("Cseq"));
  51. response.addHeader(contactHeader);
  52. AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
  53. AllowEventsHeader allowevents = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");
  54. response.addHeader((CallIdHeader) this.requestEvent.getRequest().getHeader("Call-ID"));
  55. response.addHeader(allow);
  56. response.addHeader(allowevents);
  57. lg200Ok.info("200-OK Header erstellt");
  58. }
  59. catch (Exception ex)
  60. {
  61. lg200Ok.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
  62. }
  63. }
  64. public void addSDP(SessionDescription sdp, String myTag)
  65. {
  66. try
  67. {
  68. response.removeHeader("To");
  69. ToHeader temptoring = (ToHeader) requestEvent.getRequest().getHeader("To");
  70. temptoring.setTag(myTag);
  71. response.addHeader(temptoring);
  72. SupportedHeader supp = this.headerFactory.createSupportedHeader("replace,path,timer");//nachschauen für was es gebraucht wird
  73. response.addHeader(supp);
  74. ContentTypeHeader content = headerFactory.createContentTypeHeader("application", "sdp");
  75. response.addHeader(content);
  76. response.setContent(sdp, content);
  77. }
  78. catch (Exception ex)
  79. {
  80. lg200Ok.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
  81. }
  82. }
  83. /**
  84. * @return the response
  85. */
  86. public Response getResponse()
  87. {
  88. return response;
  89. }
  90. }