Namespace SipLib.Core
Core classes for building and parsing SIP messages.
The main classes in the SipLib.Core namespace are:
- SIPMessage
- SIPRequest
- SIPResponse
- SIPHeader
- Classes for each type of SIP header (SIPFrom, SIPTo, etc.)
The SIPMessage class is the base class for the SIPRequest (representing a SIP request message) and the SIPResponse (representing a SIP response message) classes. The SIPMessage class contains SIP headers and optionally a SIP message body. The Header field of a SIPMessage is a SIPHeader object that contains fields for the SIP headers. Each type of SIP header is represented by a unique class. For example, the SIPFromHeader class is used to manage a SIP From header. The SIPMessage class contains methods and properties for accessing the contents of the body of a SIP message if one is present.
When building applications that receive and process SIP message, it is generally not necessary to programmatically parse raw messages received via the network because message parsing is handled by classes contained in the SipLib.Channels and SipLib.Transactions namespaces.
The SipUtils class in the SipLib.Core namespace is a static class that provides various helper methods for building SIP messages and for extracting various information from SIP messages.
Classes
ByteBufferInfo
Class for parsing a buffer of bytes
CallProperties
Class that provides various static utility functions relating to call properties
Crypto
Class containing various cryptography utilities
HTTPDigest
Class for processing an HTTP digest
IPSocket
Class containing various utility functions for sockets.
SIPAuthenticationHeader
Class for the SIP WWW-Authenticate and Authorization headers
SIPAuthorisationDigest
Class for the SIP authorization digest
SIPCallInfoHeader
Class for a SIP Call-Info header. See Sections 20.9 and 25.1 of RFC 3261.
SIPConstants
Defines various constants used for SIP
SIPContactHeader
Class for building or parsing a SIP Contact header. See Section 20.10 and page 228 of RFC 3261.
SIPEndPoint
This class is a more specific version of the SIPURI class BUT is only concerned with the network and transport properties. It contains all the information needed to determine the remote end point to deliver a SIP request or response to.
This class must remain immutable otherwise the SIP stack can develop problems. SIP end points can get passed amongst different servers for logging and forwarding SIP messages and a modification of the end point by one server can result in a problem for a different server. Instead a new SIP end point should be created wherever a modification is required.
SIPEscape
Static class that contains various methods for escaping and unescaping reserved characters in various parts of SIPURIs, SIP headers, SIP parameters, etc.
SIPFrag
Class for parsing or creating a SIPFRAG (SIP Fragment) body use in a NOTIFY request for a Refer subscription. See Section 2.4.5 of RFC 3515.
SIPFromHeader
The From header only has parameters, no headers. Parameters of from ...;name=value;name2=value2. Specific parameters: tag.
SIPGeolocationHeader
Class for a SIP Geolocation header as defined in RFC 6442.
SIPHeader
Class for handling the SIP headers portion of a SIP request or a SIP response message.
SIPHeaders
Definitions for SIP Header fields.
SIPMessage
Represents an entire SIP message. This is the base class for the SIPRequest and the SIPResponse classes.
SIPMethods
Class for mapping SIP method string to SIPMethodsEnum values
SIPPaiHeader
Class for the SIP P-Asserted-Identity header.
SIPParameters
Represents a series of name value pairs that are optionally included in SIP URIs and also as an additional optional setting on some SIP Headers (Contact, To, From, Via). This class also treats the header value of a SIP URI as a special case of a SIP parameter. The difference between a parameter and a SIP URI header is the start and delimiter characters used.
SIPPpiHeader
Class for the SIP P-Preferred-Identity header.
SIPProtocolsType
Helper functions for dealing with tranport protocols
SIPReplacesParameter
Class for the Replaces parameter of a Refer-To header field. The Replaces parameter is used to identify involved in a transfer operation.
SIPRequest
Class for a SIP request message.
SIPResponse
Class for a SIP Response message
SIPResponseStatusCodes
SIP response status codes functions
SIPRoute
The SIPRoute class is used to represent both Route and Record-Route headers.
SIPRouteSet
Class for managing a SIP Route set
SIPSchemesType
Helper functions for dealing with SIP schemes
SIPToHeader
Class for handling a SIP To header
SIPURI
Implements the SIP URI concept from the SIP RFC3261. This class also handles URIs for http, https, ws, wss, msrp, msrps and im schemes.
SIPUserField
Class for parsing and building the user field of a SIP URI.
SIPValidationException
Exception class for SIP validation errors
SIPViaHeader
The Via header only has parameters, no headers. Parameters of from ...;name= value;name2=value2 Specific parameters: ttl, maddr, received, branch.
From page 179 of RFC3261: "Even though this specification mandates that the branch parameter be present in all requests, the BNF for the header field indicates that it is optional."
The branch parameter on a Via therefore appears to be optionally mandatory?!
Any SIP application element that uses transactions depends on the branch parameter for transaction matching. Only the top Via header branch is used for transactions though so if the request has made it to this stack with missing branches then in theory it should be safe to proceed. It will be left up to the SIPTransaction class to reject any SIP requests that are missing the necessary branch.
SIPViaSet
Class for managing a list of SIPViaHeader objects
SipUtils
Static class containing various SIP related utility functions.
TypeExtensions
Type extensions used in this class library
Enums
SIPAuthorisationHeadersEnum
Enumeration of SIP authorization/authentication header types
SIPMessageTypesEnum
Message types for SIP
SIPMethodsEnum
Enumeration of all of the methods for a SIP request.
SIPProtocolsEnum
Enumeration that defines the transport protocols used for SIP
SIPResponseStatusCodesEnum
Enumeration of SIP response status codes
SIPSchemesEnum
Enumeration of the different URI schemes that the SIPURI and other classes must handle.
SIPValidationFieldsEnum
Enumeration of SIP validation fields