示例#1
0
 def _make_and_send_request(self, body, route_header, timeout, do_publish):
     notification_center = NotificationCenter()
     extra_headers = []
     extra_headers.append(Header("Event", self.event))
     extra_headers.append(
         Header("Expires", str(int(self.duration) if do_publish else 0)))
     if self._last_etag is not None:
         extra_headers.append(Header("SIP-If-Match", self._last_etag))
     extra_headers.extend(self.extra_headers)
     content_type = (self.content_type if body is not None else None)
     request = Request("PUBLISH",
                       self.from_header.uri,
                       self.from_header,
                       ToHeader.new(self.from_header),
                       route_header,
                       credentials=self.credentials,
                       cseq=1,
                       extra_headers=extra_headers,
                       content_type=content_type,
                       body=body)
     notification_center.add_observer(self, sender=request)
     if self._current_request is not None:
         # we are trying to send something already, cancel whatever it is
         self._current_request.end()
         self._current_request = None
     try:
         request.send(timeout=timeout)
     except:
         notification_center.remove_observer(self, sender=request)
         raise
     self._unpublishing = not do_publish
     self._current_request = request
 def __init__(self,
              from_header,
              to_header,
              route_header,
              content_type,
              body,
              credentials=None,
              extra_headers=[]):
     self._request = Request("MESSAGE",
                             from_header,
                             to_header,
                             to_header.uri,
                             route_header,
                             credentials=credentials,
                             extra_headers=extra_headers,
                             content_type=content_type,
                             body=body)
     self._lock = RLock()
示例#3
0
 def __init__(self,
              from_header,
              to_header,
              route_header,
              content_type,
              body,
              credentials=None,
              extra_headers=None):
     self._request = Request(
         "MESSAGE",
         to_header.uri,
         from_header,
         to_header,
         route_header,
         credentials=credentials,
         extra_headers=extra_headers,
         content_type=content_type,
         body=body if isinstance(body, bytes) else body.encode())
     self._lock = RLock()
示例#4
0
 def _make_and_send_request(self, contact_header, route_header, timeout,
                            do_register):
     notification_center = NotificationCenter()
     prev_request = self._current_request or self._last_request
     if prev_request is not None:
         call_id = prev_request.call_id
         cseq = prev_request.cseq + 1
     else:
         call_id = None
         cseq = 1
     extra_headers = []
     extra_headers.append(
         Header("Expires", str(int(self.duration) if do_register else 0)))
     extra_headers.extend(self.extra_headers)
     uri = SIPURI(self.from_header.uri.host)
     to_header = ToHeader.new(self.from_header)
     request = Request("REGISTER",
                       uri,
                       self.from_header,
                       to_header,
                       route_header,
                       credentials=self.credentials,
                       contact_header=contact_header,
                       call_id=call_id,
                       cseq=cseq,
                       extra_headers=extra_headers)
     notification_center.add_observer(self, sender=request)
     if self._current_request is not None:
         # we are trying to send something already, cancel whatever it is
         self._current_request.end()
         self._current_request = None
     try:
         request.send(timeout=timeout)
     except:
         notification_center.remove_observer(self, sender=request)
         raise
     self._unregistering = not do_register
     self._current_request = request