Blob Blame History Raw
/*
 *
 * ClientOptions
 *
 * client option declarations for openwsman swig bindings
 *
 */

%rename(ClientOptions) client_opt_t;
%nodefault client_opt_t;
typedef struct {} client_opt_t;


/*
 * Document-class: ClientOptions
 *
 * ClientOptions control the behaviour of the Client connection
 *
 * The primary use of ClientOptions in normal operations is adding
 * selectors - key/value pairs added to the request URL.
 *
 * For WS-CIM operations, selectors define the key attributes for
 * the selected CIM class to address a specific instance of the class.
 *
 */

%extend client_opt_t {
  client_opt_t() {
    client_opt_t *options = wsmc_options_init();
    return options;
  }

  ~client_opt_t() {
    wsmc_options_destroy( $self );
  }

  /*
   * Request to dump all operations to the dumpfile
   *
   * Used for debugging on the wire-level
   *
   * See also: clear_dump_request
   *
   * call-seq:
   *   options.set_dump_request
   *
   */
  void set_dump_request(void) {
    wsmc_set_action_option($self, FLAG_DUMP_REQUEST );
  }

  /*
   * Reset dump all operations to the dumpfile
   *
   * Used for debugging on the wire-level
   *
   * See also: set_dump_request
   *
   * call-seq:
   *   options.clear_dump_request
   *
   */
  void clear_dump_request(void) {
    wsmc_clear_action_option($self, FLAG_DUMP_REQUEST );
  }

#if defined(SWIGRUBY)
  %rename( "flags=" ) set_flags(int flags);
#endif
  /*
   * set option flag(s)
   * 
   * adds new flag(s) to options
   *
   * call-seq:
   *   options.flags = Openwsman::FLAG_ENUMERATION_OPTIMIZATION
   *
   */
  void set_flags(int flags) {
    wsmc_set_action_option($self, flags);
  }

#if defined(SWIGRUBY)
  %rename( "flags" ) get_flags();
#endif
  /*
   * get option flag(s)
   * 
   * return current flags bitmask
   *
   * call-seq:
   *   optins.flags -> Integer
   *
   */
  unsigned int get_flags() {
    return wsmc_get_action_option($self);
  }

  /*
   * clear option flag(s)
   * 
   * clears specific flag(s) from options
   *
   * call-seq:
   *   options.clear_flags Openwsman::FLAG_ENUMERATION_OPTIMIZATION
   *
   */
  void clear_flags(int flags) {
    wsmc_clear_action_option($self, flags);
  }

  /*
   * reset option flags
   * 
   * sets option flags bitmask to FLAG_NONE
   *
   * call-seq:
   *   options.reset_flags
   *
   */
  void reset_flags() {
    wsmc_clear_action_option($self, ~FLAG_NONE);
  }

#if defined(SWIGRUBY)
  %rename( "max_envelope_size=" ) set_max_envelope_size(unsigned long size);
#endif
  /*
   * Limit size of result document
   *
   * call-seq:
   *   options.max_envelope_size = 10240
   *
   */
  void set_max_envelope_size(unsigned long size) {
    $self->max_envelope_size = size;
  }

#if defined(SWIGRUBY)
  %rename( "max_envelope_size" ) get_max_envelope_size();
#endif
  /*
   * Return size limit of result document
   *
   * call-seq:
   *   options.max_envelope_size -> Integer
   *
   */
  unsigned long get_max_envelope_size() {
    return $self->max_envelope_size;
  }
   
#if defined(SWIGRUBY)
  %rename( "max_elements=" ) set_max_elements(int elements);
#endif
  /*
   * Limit number of elements returned by enumeration
   *
   * call-seq:
   *   options.max_elements = 42
   *
   */
  void set_max_elements(int elements) {
    $self->max_elements = elements;
  }

#if defined(SWIGRUBY)
  %rename( "max_elements" ) get_max_elements();
#endif
  /*
   * Return enumeration elements limit
   *
   * call-seq:
   *   options.max_elements -> Integer
   *
   */
  int get_max_elements() {
    return $self->max_elements;
  }

#if defined(SWIGRUBY)
  %rename( "timeout=" ) set_timeout(unsigned long timeout);
#endif
  /*
   * Operation timeout in milliseconds
   * See Openwsman::Transport.timeout for transport timeout
   *
   * call-seq:
   *   options.timeout = 60*1000 # 60 seconds
   *
   */
  void set_timeout(unsigned long timeout) {
    $self->timeout = timeout;
  }

#if defined(SWIGRUBY)
  %rename( "timeout" ) get_timeout();
#endif
  /*
   * Return operation timeout in milliseconds
   * See Openwsman::Transport.timeout for transport timeout
   *
   * call-seq:
   *   options.timeout -> Integer
   *
   */
  unsigned long get_timeout() {
    return $self->timeout;
  }
   
#if defined(SWIGRUBY)
  %rename( "fragment=" ) set_fragment(char *fragment);
#endif
  /*
   * Set fragment filter
   * See DSP0226, section 7.7.
   * (Supported Dialects: XPATH)
   *
   * call-seq:
   *   options.fragment = "xpath/expression"
   *
   */
  void set_fragment(char *fragment) {
    wsmc_set_fragment(fragment, $self);
  }

#if defined(SWIGRUBY)
  %rename( "fragment" ) get_fragment();
#endif
  /*
   * Get fragment filter
   * See DSP0226, section 7.7.
   *
   * call-seq:
   *   options.fragment -> String
   *
   */
  const char *get_fragment() {
    return $self->fragment;
  }
   
#if defined(SWIGRUBY)
  %rename( "cim_namespace=" ) set_cim_namespace(char *cim_namespace);
#endif
  /*
   * Set CIM Namespace for Openwsman
   * (default is root/cimv2)
   * Note:
   * Microsoft WinRM set the resource namespace by attaching it
   * to the resource URI
   *
   * See also: Openwsman.epr_prefix_for
   *
   * call-seq:
   *   options.cim_namespace = "root/interop"
   *
   */
  void set_cim_namespace(char *cim_namespace) {
    wsmc_set_cim_ns(cim_namespace, $self);
  }

#if defined(SWIGRUBY)
  %rename( "cim_namespace" ) get_cim_namespace();
#endif
  /*
   * Get CIM Namespace for Openwsman
   * Note:
   * Microsoft WinRM set the resource namespace by attaching it
   * to the resource URI
   *
   * See also: Openwsman.epr_prefix_for
   *
   * call-seq:
   *   options.cim_namespace -> String
   *
   */
  const char *get_cim_namespace() {
    return $self->cim_ns;
  }

#if defined(SWIGRUBY)
  %rename( "reference=" ) set_reference(const char *reference);
#endif
  /*
   * Set WS-Addressing reference properties
   * Argument must the string representation of a valid XML document
   *
   * call-seq:
   *   options.reference = "<xml ...>"
   *
   */
  void set_reference(const char *reference) {
    wsmc_set_reference(reference, $self);
  }

#if defined(SWIGRUBY)
  %rename( "reference" ) get_reference();
#endif
  /*
   * Get WS-Addressing reference properties
   * Returns the string representation of a valid XML document
   *
   * call-seq:
   *   options.reference -> String
   *
   */
  const char *get_reference() {
    return $self->reference;
  }
   
#if defined(SWIGRUBY)
  /*
   * Add an option (for OptionSet) as key/value pair
   *
   * NOTE:
   * the value must be properly escaped (replace & with &amp;, etc.)
   * in Ruby use CGI::escapeHTML()
   *
   * call-seq:
   *   options.add_option "Name", "Value"
   *
   */
  void add_option(VALUE k, VALUE v)
  {
    const char *key = as_string(k);
    const char *value = as_string(v);
#else
  void add_option(const char *key, const char *value)
  {
#endif
    wsmc_add_option($self, key, value);
  }

#if defined(SWIGRUBY)
  %rename( "options=" ) set_options(VALUE hash);
  /*
   * Set options (for OptionSet) from Hash
   *
   * NOTE:
   * the values must be properly escaped (replace & with &amp;, etc.)
   * in Ruby use CGI::escapeHTML()
   *
   * call-seq:
   *   options.options = { "Name" => "Value", ... }
   *
   */
  void set_options(VALUE hash)
  {
    $self->options = value2hash(NULL, hash, 0);
  }

  %rename( "options" ) get_options(void);
  /*
   * Get options (for OptionSet) as Hash
   *
   * call-seq:
   *   options.options -> Hash
   *
   */
  VALUE get_options(void)
  {
    return hash2value($self->options);
  }
#endif

#if defined(SWIGRUBY)
  /*
   * Add a selector as key/value pair
   *
   * NOTE:
   * the string value must be properly escaped (replace & with &amp;, etc.)
   * in Ruby use CGI::escapeHTML()
   *
   * call-seq:
   *   options.add_selector "Key", "Value"
   *   options.add_selector "Key", end_point_reference
   *
   */
  void add_selector(VALUE k, VALUE v)
  {
    const char *key = as_string(k);
    KLASS_DECL(SwigClassEndPointReference,SWIGTYPE_p_epr_t);
    if (CLASS_OF(v) == KLASS_OF(SwigClassEndPointReference)) {
      epr_t *epr;
      SWIG_ConvertPtr(v, (void **)&epr, SWIGTYPE_p_epr_t, 0);
      wsmc_add_selector_epr($self, key, epr);
    }
    else {
      const char *value = as_string(v);
      wsmc_add_selector($self, key, value);
    }
  }
#else
  void add_selector(const char *key, const char *value)
  {
    wsmc_add_selector($self, key, value);
  }
#endif

#if defined(SWIGRUBY)
  %rename( "selectors" ) get_selectors(void);
  /*
   * Get selectors as Hash
   *
   * call-seq:
   *   options.selectors -> Hash
   *
   */
  VALUE get_selectors(void)
  {
    return kv_list_to_hash($self->selectors);
  }
#endif

#if defined(SWIGRUBY)
  /*
   * Add a property as key/value pair
   * * Input parameters to 'invoke'd methods are represented as ClientOption properties
   * * Key is evaluated as String
   * * Value is evaluated as String or EndPointReference
   *
   * call-seq:
   *   options.add_property "Key", "Value"
   *   options.add_property "Key", EndPointReference.new(...)
   *
   */
  void add_property(VALUE k, VALUE v)
  {
    const char *key = as_string(k);
    KLASS_DECL(SwigClassEndPointReference,SWIGTYPE_p_epr_t);

    if (CLASS_OF(v) == KLASS_OF(SwigClassEndPointReference)) {
      const epr_t *epr;
      SWIG_ConvertPtr(v, (void **)&epr, SWIGTYPE_p_epr_t, 0);
      wsmc_add_property_epr($self, key, epr);
    }
    else {
      const char *value = as_string(v);
      wsmc_add_property($self, key, value);
    }
  }
#else
  /*
   * Add a string property as key/value pair
   * * Input parameters to 'invoke'd methods are represented as ClientOption properties
   *
   * call-seq:
   *   options.add_property( "Key", "Value" )
   *
   */
  void add_property(const char *key, const char *value)
  {
    wsmc_add_property($self, key, value);
  }
  
  /*
   * Add a string property as key/value pair (an 'add_property' analogue for adding array items)
   * * Input parameters to 'invoke'd methods are represented as ClientOption properties
   *
   * call-seq:
   *   options.add_property( "Key", "Value" )
   *
   */
  void add_property_array_item(const char *key, const char *value)
  {
    wsmc_add_property_array_item($self, key, value);
  }

  /*
   * Add an EndPointReference property as key/value pair
   *   Input parameters to 'invoke'd methods are represented as ClientOption properties
   *
   * call-seq:
   *   options.add_property( String, EndPointReference )
   *
   */
  void add_property(const char *key, const epr_t *epr)
  {
    wsmc_add_property_epr($self, key, epr);
  }
#endif
  
#if defined(SWIGRUBY)
  %rename( "properties" ) get_properties(void);
  /*
   * Get properties as Hash
   * * Input parameters to 'invoke'd methods are represented as ClientOption properties
   *
   * call-seq:
   *   options.properties -> Hash
   *
   */
  VALUE get_properties(void)
  {
    return kv_list_to_hash($self->properties);
  }
#endif

#if defined(SWIGRUBY)
  %rename( "delivery_uri=" ) set_delivery_uri(const char *delivery_uri);
#endif
  /*
   * Set delivery uri
   *
   * call-seq:
   *   options.delivery_uri = "http://..."
   *
   */
  void set_delivery_uri( const char *delivery_uri ) {
    wsmc_set_delivery_uri(delivery_uri, $self);
  }

  /*
   * Get delivery uri
   *
   * call-seq:
   *   options.delivery_uri -> String
   *
   */
  const char *delivery_uri() {
    return $self->delivery_uri;
  }

#if defined(SWIGRUBY)
  %rename( "sub_expiry=" ) set_sub_expiry(unsigned int event_subscription_expire);
#endif
  /*
   * Set subscription expiry timeout (in seconds)
   *
   * call-seq:
   *   options.sub_expiry = 600 # 10 mins
   *
   */
  void set_sub_expiry(unsigned int event_subscription_expire) {
	wsmc_set_sub_expiry(event_subscription_expire, $self);
  }

  /*
   * Get subscription expiry timeout (in seconds)
   *
   * call-seq:
   *   options.sub_expiry -> Integer
   *
   */
  int sub_expiry() {
    return $self->expires;
  }

#if defined(SWIGRUBY)
  %rename("heartbeat_interval=") set_heartbeat_interval(unsigned int heartbeat_interval);
#endif
  /*
   * Set subscription heartbeat interval (in seconds)
   *
   * call-seq:
   *   options.heartbeat_interval = 60 # every minute
   *
   */
  void set_heartbeat_interval(unsigned int heartbeat_interval) {
	wsmc_set_heartbeat_interval(heartbeat_interval, $self);
  }

  /*
   * Get subscription heartbeat interval (in seconds)
   *
   * call-seq:
   *   options.heartbeat_interval -> Integer
   *
   */
  int heartbeat_interval() {
    return $self->heartbeat_interval;
  }

#if defined(SWIGRUBY)
  %rename( "delivery_mode=" ) set_delivery_mode(unsigned int delivery_mode);
#endif
  /*
   * Set subscription delivery mode (push, pushwithack,events,pull)
   *
   * call-seq:
   *   options.delivery_mode = Openwsman::WSMAN_DELIVERY_PUSH
   *
   */
  void set_delivery_mode(unsigned int delivery_mode) {
    if (delivery_mode > WSMAN_DELIVERY_PULL)
      SWIG_exception( SWIG_ValueError, "Bad delivery mode" );
	
    wsmc_set_delivery_mode(delivery_mode, $self);
#if defined(SWIGPYTHON) || defined(SWIGPERL) || defined(SWIGJAVA)
    fail:
    return;
#endif
  }

  /*
   * Get subscription delivery mode (push, pushwithack,events,pull)
   *
   * call-seq:
   *   options.delivery_mode -> Integer
   *
   */
  int delivery_mode() {
    return $self->delivery_mode;
  }

#if defined(SWIGRUBY)
  %rename( "delivery_security_mode=" ) set_delivery_security_mode(unsigned int delivery_mode);
#endif
  /*
   * Set subscription delivery security mode
   *
   * (auto, http basic, http digest, https basic, https digest,
   * https mutual, https mutual basic, https mutual digest,
   * http spnego kerberos, https spnego kerberos,
   * https mutual spnego kerberos)
   *
   * call-seq:
   *   options.delivery_security_mode = Openwsman::WSMAN_DELIVERY_SEC_HTTPS_BASIC
   *
   */
  void set_delivery_security_mode(unsigned int delivery_sec_mode) {
    if (delivery_sec_mode > WSMAN_DELIVERY_SEC_HTTP_SPNEGO_KERBEROS)
      SWIG_exception( SWIG_ValueError, "Bad delivery security mode" );
    wsmc_set_delivery_security_mode(delivery_sec_mode, $self);
#if defined(SWIGPYTHON) || defined(SWIGPERL) || defined(SWIGJAVA)
    fail:
    return;
#endif
  }
  
  /*
   * Get subscription delivery security mode
   *
   * call-seq:
   *   options.delivery_security_mode -> Integer
   *
   */
  int delivery_sec_mode() {
    return $self->delivery_sec_mode;
  }

#if defined(SWIGRUBY)
  %rename("locale=") set_locale(const char *locale);
#endif
  /*
   * Set request locale
   *
   * call-seq:
   *   options.locale = "en_us"
   *
   */
  void set_locale(const char *locale) {
	wsmc_set_locale($self, locale);
  }

  /*
   * Get locales
   *
   * call-seq:
   *   options.locale -> String
   *
   */
  const char *locale() {
    return $self->locale;
  }

}