123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package model;
-
- import static java.lang.Thread.sleep;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.sip.RequestEvent;
- import javax.sip.SipException;
- import javax.sip.header.AllowEventsHeader;
- import javax.sip.header.AllowHeader;
- import javax.sip.header.CSeqHeader;
- import javax.sip.header.ContactHeader;
- import javax.sip.header.FromHeader;
- import javax.sip.header.HeaderFactory;
- import javax.sip.header.ToHeader;
- import javax.sip.header.ViaHeader;
- import javax.sip.message.MessageFactory;
- import javax.sip.message.Response;
- import logger.OhmLogger;
-
- /**
- *
- * @author Jan
- */
- public class SIP180Ringing implements Runnable
- {
- private RequestEvent evtubergabe;
- private ExecutorService threadring;
- private boolean run;
- private Response responsering;
- private MessageFactory messageFactory;
- private HeaderFactory headerFactory;
- private String myTag;
- private String proxyTag;
-
- public static final Logger lg = OhmLogger.getLogger();
- //private SubmissionPublisher<Integer> publisherZahl;
-
- public SIP180Ringing(RequestEvent evtubergabe, String myTag, ContactHeader contact)
- {
- this.evtubergabe = evtubergabe;
- threadring = Executors.newSingleThreadExecutor();
-
- try
- {
- responsering = this.messageFactory.createResponse(180, evtubergabe.getRequest());
- responsering.addHeader((ViaHeader) evtubergabe.getRequest().getHeader("Via"));
- responsering.addHeader((FromHeader) evtubergabe.getRequest().getHeader("From"));
- AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
- //Bei Ringing muss persönlicher Tag ergänzt werden
- ToHeader temptoring = (ToHeader) evtubergabe.getRequest().getHeader("To");
- proxyTag = temptoring.getTag();
- temptoring.setTag(String.valueOf(this.myTag));
- responsering.addHeader(temptoring);
- long cSequenz = ((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq")).getSeqNumber();
- responsering.addHeader((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq"));
- responsering.addHeader(contact);
- responsering.addHeader(allow);
- AllowEventsHeader allowevent = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");// für was gebraucht
- responsering.addHeader(allowevent);
- lg.info("Ringing Header erfolgreich erstellt");
- }
- catch (Exception ex)
- {
- lg.info("Fehler bei erstellen des Ringing Headers");
- lg.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
-
- public void start()
- {
- run = true;
- threadring.submit(this);
- }
-
- public void stop()
- {
- run = false;
- }
-
- @Override
- public void run()
- {
- while (run)
- {
- try
- {
- this.sipProvider.sendResponse(responsering);
- }
- catch (SipException ex)
- {
- Logger.getLogger(SIP180Ringing.class.getName()).log(Level.SEVERE, null, ex);
- }
- try
- {
- sleep(1000);
- }
- catch (Exception e)
- {
- }
- }
- }
- }
|