Class: OPCUA::Server::ObjectVarNode

Inherits:
Node
  • Object
show all
Defined in:
ext/opcua/server/server.c

Instance Method Summary collapse

Methods inherited from Node

#description, #description=, #exists?, #id, #name, #to_s

Instance Method Details

#delete!Object

{{{



784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
# File 'ext/opcua/server/server.c', line 784

static VALUE node_delete(VALUE self) { //{{{
  node_struct *ns;

  Data_Get_Struct(self, node_struct, ns);
  if (!ns->exists) rb_raise(rb_eRuntimeError, "Node does not exist anymore.");

  UA_StatusCode retval = UA_Server_deleteNode(ns->master->master, ns->id, true);

  if (retval == UA_STATUSCODE_GOOD) {
    ns->exists = false;
    return Qtrue;
  }

  return Qfalse;
}

#valueObject

{{{



765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
# File 'ext/opcua/server/server.c', line 765

static VALUE node_value(VALUE self) { //{{{
  node_struct *ns;

  Data_Get_Struct(self, node_struct, ns);
  if (!ns->exists) rb_raise(rb_eRuntimeError, "Node does not exist anymore.");

  UA_Variant value;
  UA_Variant_init(&value);
  UA_StatusCode retval = UA_Server_readValue(ns->master->master, ns->id, &value);


  VALUE ret = Qnil;
  if (retval == UA_STATUSCODE_GOOD) {
    ret = extract_value(value);
  }

  UA_Variant_clear(&value);
  return rb_ary_entry(ret,0);
}

#value=(value) ⇒ Object

{{{



745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
# File 'ext/opcua/server/server.c', line 745

static VALUE node_value_set(VALUE self, VALUE value) { //{{{
  node_struct *ns;
  Data_Get_Struct(self, node_struct, ns);
  if (!ns->exists) rb_raise(rb_eRuntimeError, "Node does not exist anymore.");

  UA_Variant variant;
  if (value_to_variant(value,&variant,-1)) {
    // printf("-----------------------------------------%ld\n",variant.arrayDimensionsSize);
    if (variant.arrayDimensionsSize > 0) {
      UA_Server_writeValueRank(ns->master->master, ns->id, variant.arrayDimensionsSize);
      UA_Variant uaArrayDimensions;
      UA_Variant_setArray(&uaArrayDimensions, variant.arrayDimensions, variant.arrayDimensionsSize, &UA_TYPES[UA_TYPES_UINT32]);
      UA_Server_writeArrayDimensions(ns->master->master, ns->id, uaArrayDimensions);
    }

    UA_Server_writeValue(ns->master->master, ns->id, variant);
    UA_Variant_deleteMembers(&variant);
  }
  return self;
}