コード例 #1
0
ファイル: SIPFramer.java プロジェクト: tempbottle/pkts
 /**
  * Helper function that checks whether or not the data could be a SIP message. It is a very basic
  * check but if it doesn't go through it definitely is not a SIP message.
  *
  * @param data
  * @return
  */
 public static boolean couldBeSipMessage(final Buffer data) throws IOException {
   final byte a = data.getByte(0);
   final byte b = data.getByte(1);
   final byte c = data.getByte(2);
   return a == 'S' && b == 'I' && c == 'P'
       || // response
       a == 'I' && b == 'N' && c == 'V'
       || // INVITE
       a == 'A' && b == 'C' && c == 'K'
       || // ACK
       a == 'B' && b == 'Y' && c == 'E'
       || // BYE
       a == 'O' && b == 'P' && c == 'T'
       || // OPTIONS
       a == 'C' && b == 'A' && c == 'N'
       || // CANCEL
       a == 'M' && b == 'E' && c == 'S'
       || // MESSAGE
       a == 'R' && b == 'E' && c == 'G'
       || // REGISTER
       a == 'I' && b == 'N' && c == 'F'
       || // INFO
       a == 'P' && b == 'R' && c == 'A'
       || // PRACK
       a == 'S' && b == 'U' && c == 'B'
       || // SUBSCRIBE
       a == 'N' && b == 'O' && c == 'T'
       || // NOTIFY
       a == 'U' && b == 'P' && c == 'D'
       || // UPDATE
       a == 'R' && b == 'E' && c == 'F'
       || // REFER
       a == 'P' && b == 'U' && c == 'B'; // PUBLISH
 }
コード例 #2
0
ファイル: SipMessage.java プロジェクト: aboutsip/pkts
 /**
  * Convenience method for determining whether the method of this message is an ACK or not. Hence,
  * this is NOT to the method to determine whether this is an ACK Request or not!
  *
  * @return true if the method of this message is a ACK, false otherwise.
  * @throws SipParseException in case the method could not be parsed out of the underlying buffer.
  */
 default boolean isAck() throws SipParseException {
   final Buffer m = getMethod();
   try {
     return m.getByte(0) == 'A' && m.getByte(1) == 'C' && m.getByte(2) == 'K';
   } catch (final IOException e) {
     throw new SipParseException(
         0, UNABLE_TO_PARSE_OUT_THE_METHOD_DUE_TO_UNDERLYING_IO_EXCEPTION, e);
   }
 }
コード例 #3
0
ファイル: RouteHeaderImpl.java プロジェクト: aboutsip/pkts
 @Override
 public RouteHeader clone() {
   final Buffer value = getValue();
   final Address address = getAddress();
   final Buffer params = getRawParams();
   // TODO: once Buffer is truly immutable we don't actually have to clone, like we don't have to
   // do for Address anymore
   return new RouteHeaderImpl(value.clone(), address, params.clone());
 }
コード例 #4
0
ファイル: SipMessage.java プロジェクト: aboutsip/pkts
 /**
  * Convenience method for determining whether the method of this message is a OPTIONS or not.
  * Hence, this is NOT to the method to determine whether this is an OPTIONS Request or not!
  *
  * @return true if the method of this message is a OPTIONS, false otherwise.
  * @throws SipParseException in case the method could not be parsed out of the underlying buffer.
  */
 default boolean isOptions() throws SipParseException {
   final Buffer m = getMethod();
   try {
     return m.getByte(0) == 'O'
         && m.getByte(1) == 'P'
         && m.getByte(2) == 'T'
         && m.getByte(3) == 'I'
         && m.getByte(4) == 'O'
         && m.getByte(5) == 'N'
         && m.getByte(6) == 'S';
   } catch (final IOException e) {
     throw new SipParseException(
         0, UNABLE_TO_PARSE_OUT_THE_METHOD_DUE_TO_UNDERLYING_IO_EXCEPTION, e);
   }
 }