) const = 0;

  virtual uint32_t GetNumberOfChannels(void) const = 0;

  virtual uint32_t GetNumberOfSessions(void) const = 0;

  virtual uint32_t GetNumberOfSubscriptions(void) const = 0;

  virtual uint32_t GetNumberOfMonitoredItems(void) const = 0;

  /*****************************************************************************/
  /** Configure the Server profile for Nano server profile
   *
   * @return
   * Returns the status of the operation
   */
  virtual Status_t ConfigureAsNanoDeviceServerProfile(void) = 0;

  /*****************************************************************************/
  /** Configure the Server profile for Micro server profile
   *
   * @return
   * Returns the status of the operation
   */
  virtual Status_t ConfigureAsMicroDeviceServerProfile(void) = 0;

  /*****************************************************************************/
  /** Configure the Server profile for Embedded server profile
   *
   * @return
   * Returns the status of the operation
   */
  virtual Status_t ConfigureAsEmbeddedServerProfile(void) = 0;

  /*****************************************************************************/
  /** Add IP address to IP address white list
  *
  * @param[in] octets
  * The IP Address to add in binary big endian octet format.
  *
  * @return
  * Returns the status of the operation
  */
  virtual Status_t AddIPAddressToWhiteList(const ByteString_t& octets) = 0;

  /*****************************************************************************/
  /** Add IP address to IP address white list
  *
  * @param[in] ipAddress
  * The IP Address to add in dot notation.
  *
  * @return
  * Returns the status of the operation
  */
  virtual Status_t AddIPAddressToWhiteList(const String_t& ipAddress) = 0;

  /*****************************************************************************/
  /** Remove IP address from white list
  *
  * @param[in] octets
  * The IP Address to remove in binary big endian octet format.
  *
  * @return
  * Returns the status of the operation
  */
  virtual Status_t RemoveIPAddressFromWhiteList(const ByteString_t& octets) = 0;

  /*****************************************************************************/
  /** Remove IP address from white list
  *
  * @param[in] ipAddress
  * The IP Address to remove in dot notation.
  *
  * @return
  * Returns the status of the operation
  */
  virtual Status_t RemoveIPAddressFromWhiteList(const String_t& ipAddress) = 0;

  /*****************************************************************************/
  /** Clear IP address white list
  *
  */
  virtual void ClearIPAddressWhiteList(void) = 0;

  /*****************************************************************************/
  /** Is IP address in white list
  *
  * @param[in] octets
  * The IP Address to test in big endian binary octet format.
  *
  * @return
  * Returns true if the IP Address is in the whitelist
  */
  virtual bool IsIPAddressInWhiteList(const ByteString_t& octets) const = 0;

  /*****************************************************************************/
  /** Is IP address in white list
  *
  * @param[in] ipAddress
  * The IP Address to test in dot notation.
  *
  * @return
  * Returns true if the IP Address is in the whitelist
  */
  virtual bool IsIPAddressInWhiteList(const String_t& ipAddress) const = 0;

  /*****************************************************************************/
  /** Is IP address white list in use
  *
  * @return
  * Returns true if the whitelist is in use (i.e. not empty)
  */
  virtual bool IsIPAddressWhiteListInUse(void) const = 0;

#if (UASDK_INCLUDE_EVENTS > 0)
	/*****************************************************************************/
	/** Get the Maximum Number of Operands for ContentFilterElement_InList_t
	*
	* @return
	* Returns the Maximum Monitored Items Queue Size
	*/
	virtual uint32_t MaxOperandsInListOperator(void) const = 0;

	/*****************************************************************************/
	/** Set the Maximum Number of Operands for ContentFilterElement_InList_t
	*
	* @param[in] value
	* The Maximum Monitored Items Queue Size to be set
	*/
	virtual void MaxOperandsInListOperator(uint32_t value) = 0;

	/*****************************************************************************/
  /** Check if the server object is only event notifier node
   *
   * @return
   * True - If the server object is only event notifier node
   * False - otherwise
   */
  virtual bool IsServerObjectOnlyEventNotifierNode(void) const = 0;

  /*****************************************************************************/
  /** Set if the server object is only event notifier node
   *
   * @param[in] value
   * Set to true if the server object is only event notifier node, otherwise false
   */
  virtual void IsServerObjectOnlyEventNotifierNode(bool value) = 0;

  /*****************************************************************************/
  /** Get if that the server application receives event notification is enabled
   *
   * @return
   * True - If the server application is configured to receive event notification
   * False - otherwise
   */
  virtual bool IsServerApplicationReceivingEventNotificationEnabled(void) const = 0;

  /*****************************************************************************/
  /** Set if the server application is allowed to receive event notification
   *
   * @param[in] value
   * Set to true if the server application is allowed to receive event notification, otherwise false
   */
  virtual void IsServerApplicationReceivingEventNotificationEnabled(bool value) = 0;

  /*****************************************************************************/
  /** Check if the model change events compression is enabled
   *
   * @return
   * True - If the model change event compression is enabled
   * False - otherwise
   */
  virtual bool IsModelChangeEventsCompressionEnabled(void) const = 0;

  /*****************************************************************************/
  /** enable/disable the model change events compression
   *
   * @param[in] value
   * Set true to enable the model change events compression, otherwise false to disable it
   */
  virtual void IsModelChangeEventsCompressionEnabled(bool value) = 0;

  /*****************************************************************************/
  /** Check if the semantic change events compression is enabled
   *
   * @return
   * True - If the semantic change event compression is enabled
   * False - otherwise
   */
  virtual bool IsSemanticChangeEventsCompressionEnabled(void) const = 0;

  /*****************************************************************************/
  /** enable/disable the semantic change events compression
   *
   * @param[in] value
   * Set true to enable the semantic change events compression, otherwise false to disable it
   */
  virtual void IsSemanticChangeEventsCompressionEnabled(bool value) = 0;

  /*****************************************************************************/
  /** Get a 32-bit event activation status for each individual event type
   *
   *  Please refer to the header file "event_type_activation_bits_defs.h" for
   *  the detailed bit activation definition of each individual event type
   *
   * @return
   * Returns the activation status for event types
   */
  virtual uint32_t EventTypesActivationStatus(void) const = 0;

  /*****************************************************************************/
  /** Set a 32-bit event activation status for each individual event type
   *
   *  Please refer to the header file "event_type_activation_bits_defs.h" for
   *  the detailed bit activation definition of each individual event type
   *
   * @param[in] value
   * The enable bits for event types to be set
   */
  virtual void EventTypesActivationStatus(uint32_t value) = 0;

  /*****************************************************************************/
  /** Get EventIdGenerator
  *
  * return
  * intrusive pointer to Event Id generator
  */
  virtual IntrusivePtr_t<IEventIdGenerator_t> EventIdGenerator(void) const = 0;
  
  /*****************************************************************************/
  /** Set EventIdGenerator
  *
  * return
  */
  virtual void EventIdGenerator(IntrusivePtr_t<IEventIdGenerator_t> value) = 0;

  /*****************************************************************************/
  /** Get EventDispatcher
  *
  * return
  * intrusive pointer to Event Id generator
  */
  virtual IntrusivePtr_t<IEventDispatcher_t> EventDispatcher(void) const = 0;

  /*****************************************************************************/
  /** Set EventDispatcher
  *
  * return
  */
  virtual void EventDispatcher(IntrusivePtr_t<IEventDispatcher_t> value) = 0;

  /*****************************************************************************/
  /** Get local time
  *
  * return 
  * intrusive pointer to TimeZoneDataType_t for local time
  */
  virtual IntrusivePtr_