string_utils.cpp
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright (C) 2013-2014 by Alexander Rykovanov *
3  * rykovanov.as@gmail.com *
4  * *
5  * This library is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU Lesser General Public License as *
7  * published by the Free Software Foundation; version 3 of the License. *
8  * *
9  * This library is distributed in the hope that it will be useful, *
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12  * GNU Lesser General Public License for more details. *
13  * *
14  * You should have received a copy of the GNU Lesser General Public License *
15  * along with this library; if not, write to the *
16  * Free Software Foundation, Inc., *
17  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
18  ******************************************************************************/
19 
21 #include <opc/ua/event.h>
22 #include <cstring>
23 #include <ctime>
24 #include <stdexcept>
25 #include <sstream>
26 #include <iomanip>
27 #include <iostream>
28 #include <limits>
29 
30 
32 {
33  switch (direction)
34  {
36  return "forward";
37 
39  return "inverse";
40 
42  return "both";
43 
44  default:
45  return "unknown";
46  }
47 }
48 
50 {
51  std::time_t st = OpcUa::DateTime::ToTimeT(t);
52  return std::ctime(&st);
53 }
54 
56 {
57  switch (value)
58  {
60  return "Status";
61 
63  return "StatusValue";
64 
66  return "StatusValueTimestamp";
67 
68  default:
69  return "unknown";
70  }
71 }
72 
74 {
75  switch (value)
76  {
78  return "None";
79 
81  return "Absolute";
82 
84  return "Percent";
85 
86  default:
87  return "unknown";
88  }
89 }
90 
91 std::string OpcUa::ToString(const OpcUa::Event & value, bool showAll)
92 {
93  std::stringstream result;
94  ToStream(result, value, -1, showAll);
95  return result.str();
96 }
97 
98 
100 {
101  switch (value)
102  {
104  return "NONE";
105 
107  return "HAS_BINARY_BODY";
108 
110  return "HAS_XML_BODY";
111 
112  default:
113  return "unknown";
114  }
115 }
116 
118 {
119  switch (value)
120  {
122  return "Equals";
123 
125  return "IsNull";
126 
128  return "GreaterThan";
129 
131  return "LessThan";
132 
134  return "GreaterThanOrEqual";
135 
137  return "LessThanOrEqual";
138 
140  return "Like";
141 
143  return "Not";
144 
146  return "Between";
147 
149  return "InList";
150 
152  return "And";
153 
155  return "Or";
156 
158  return "Cast";
159 
161  return "InView";
162 
164  return "OfType";
165 
167  return "RelatedTo";
168 
170  return "BitwiseAnd";
171 
173  return "BitwiseOr";
174 
175  default:
176  return "unknown";
177  }
178 }
179 
181 {
182  return t.Text;
183 }
184 
186 {
187  char buf[37] = {0};
188  sprintf(buf, "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
189  return buf;
190 }
191 
193 {
194  switch (value)
195  {
197  return "Disabled";
198 
200  return "Sampling";
201 
203  return "Reporting";
204 
205  default:
206  return "unknown";
207  }
208 }
209 
210 std::string OpcUa::ToString(const NodeId & id, bool addObjectIdName)
211 {
212  std::stringstream result;
213  ToStream(result, id, addObjectIdName);
214  return result.str();
215 }
216 
218 {
219  switch (value)
220  {
222  return "Source";
223 
225  return "Server";
226 
228  return "Both";
229 
231  return "Neither";
232 
233  default:
234  return "unknown";
235  }
236 }
237 
239 {
240  switch (value)
241  {
243  return "NUL";
244 
246  return "BOOLEAN";
247 
249  return "SBYTE";
250 
252  return "BYTE";
253 
255  return "INT16";
256 
258  return "UINT16";
259 
261  return "INT32";
262 
264  return "UINT32";
265 
267  return "INT64";
268 
270  return "UINT64";
271 
273  return "FLOAT";
274 
276  return "DOUBLE";
277 
279  return "STRING";
280 
282  return "DATE_TIME";
283 
285  return "GUId";
286 
288  return "BYTE_STRING";
289 
291  return "XML_ELEMENT";
292 
294  return "NODE_Id";
295 
297  return "EXPANDED_NODE_Id";
298 
300  return "STATUS_CODE";
301 
303  return "QUALIFIED_NAME";
304 
306  return "LOCALIZED_TEXT";
307 
309  return "EXTENSION_OBJECT";
310 
312  return "DATA_VALUE";
313 
315  return "VARIANT";
316 
318  return "DIAGNOSTIC_INFO";
319 
320  default:
321  return "unknown";
322  }
323 }
324 
325 std::ostream & OpcUa::indent(std::ostream & os, int indent, bool noSeparator)
326 {
327  if (indent >= 0)
328  {
329  os << std::endl;
330  }
331  else if (!noSeparator)
332  {
333  os << ", ";
334  }
335  while (indent > 0)
336  {
337  os << " ";
338  --indent;
339  }
340  return os;
341 }
342 
343 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::AggregateFilter & value, int indentLevel)
344 {
345  os << "AggregateFilter(";
346  int subIndentLevel = (indentLevel < 0)
347  ? indentLevel
348  : indentLevel + 1;
349  indent(os, subIndentLevel, true);
350  os << "...";
351  os << ")";
352  return os;
353 }
354 
355 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::ContentFilterElement & value, int indentLevel)
356 {
357  os << "ContentFilterElement(";
358  int subIndentLevel = (indentLevel < 0)
359  ? indentLevel
360  : indentLevel + 1;
361 
362  indent(os, subIndentLevel, true);
363  os << "Operator: " << ToString(value.Operator);
364 
365  indent(os, subIndentLevel);
366  os << "FilterOperands: ";
367  ToStream(os, value.FilterOperands, subIndentLevel);
368 
369  indent(os, subIndentLevel, true);
370  os << ")";
371  return os;
372 }
373 
374 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::DataChangeFilter & value, int indentLevel)
375 {
376  os << "DataChangeFilter(";
377  int subIndentLevel = (indentLevel < 0)
378  ? indentLevel
379  : indentLevel + 1;
380 
381  indent(os, subIndentLevel, true);
382  os << "Trigger: " << ToString(value.Trigger);
383 
384  indent(os, subIndentLevel);
385  os << "Deadband: " << ToString(value.Deadband);
386 
387  indent(os, subIndentLevel);
388  os << "DeadbandValue: " << value.DeadbandValue;
389 
390  indent(os, indentLevel, true);
391  os << ")";
392  return os;
393 }
394 
395 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::ExtensionObjectHeader & value, int indentLevel)
396 {
397  os << "ExtensionObjectHeader(";
398  int subIndentLevel = (indentLevel < 0)
399  ? indentLevel
400  : indentLevel + 1;
401 
402  indent(os, subIndentLevel, true);
403  os << "TypeId: ";
404  ToStream(os, value.TypeId, true);
405 
406  indent(os, subIndentLevel);
407  os << "Encoding: " << value.Encoding;
408 
409  indent(os, indentLevel, true);
410  os << ")";
411  return os;
412 }
413 
414 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::Event & value, int indentLevel, bool showAll)
415 {
416  os << "Event(";
417  int subIndentLevel = (indentLevel < 0)
418  ? indentLevel
419  : indentLevel + 1;
420 
421  indent(os, subIndentLevel, true);
422  os << "EventType: ";
423  ToStream(os, value.EventType, true);
424 
425  indent(os, subIndentLevel);
426  os << "Time: " << value.Time;
427 
428  if (showAll)
429  {
430  indent(os, subIndentLevel);
431  os << "LocalTime: " << value.LocalTime;
432 
433  indent(os, subIndentLevel);
434  os << "ReceiveTime: " << value.ReceiveTime;
435 
436  indent(os, subIndentLevel);
437  os << "EventId: " << value.EventId;
438 
439  indent(os, subIndentLevel);
440  os << "SourceName: " << value.SourceName;
441  }
442 
443  indent(os, subIndentLevel);
444  os << "SourceNode: ";
445  ToStream(os, value.SourceNode);
446 
447  indent(os, subIndentLevel);
448  os << "Severity: " << value.Severity;
449 
450  indent(os, subIndentLevel);
451  os << "Message: " << value.Message;
452 
453  indent(os, indentLevel, true);
454  os << ")";
455  return os;
456 }
457 
458 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::EventFilter & value, int indentLevel)
459 {
460  os << "EventFilter(";
461  int subIndentLevel = (indentLevel < 0)
462  ? indentLevel
463  : indentLevel + 1;
464 
465  indent(os, subIndentLevel, true);
466  os << "SelectClauses: ";
467  ToStream(os, value.SelectClauses, subIndentLevel);
468 
469  indent(os, subIndentLevel);
470  os << "WhereClause: ";
471  ToStream(os, value.WhereClause, subIndentLevel);
472 
473  indent(os, indentLevel, true);
474  os << ")";
475  return os;
476 }
477 
478 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::FilterOperand & value, int indentLevel)
479 {
480  os << "FilterOperand(";
481  int subIndentLevel = (indentLevel < 0)
482  ? indentLevel
483  : indentLevel + 1;
484 
485  indent(os, subIndentLevel, true);
486  os << "Header: ";
487  ToStream(os, value.Header, subIndentLevel);
488 
489  indent(os, subIndentLevel);
490  os << "Element: ...";
491 // ToStream(os, value.Element, subIndentLevel);
492 
493  indent(os, subIndentLevel);
494  os << "Literal: ...";
495 // ToStream(os, value.Literal, subIndentLevel);
496 
497  indent(os, subIndentLevel);
498  os << "Attribute: ";
499 // ToStream(os, value.Attribute, subIndentLevel);
500 
501  indent(os, subIndentLevel);
502  os << "SimpleAttribute: ";
503  ToStream(os, value.SimpleAttribute, subIndentLevel);
504 
505  indent(os, indentLevel, true);
506  os << ")";
507  return os;
508 }
509 
510 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::MonitoredItemCreateRequest & value, int indentLevel)
511 {
512  os << "MonitoredItemCreateRequest(";
513  int subIndentLevel = (indentLevel < 0)
514  ? indentLevel
515  : indentLevel + 1;
516 
517  indent(os, subIndentLevel, true);
518  os << "ItemToMonitor: ";
519  ToStream(os, value.ItemToMonitor, subIndentLevel);
520 
521  indent(os, subIndentLevel);
522  os << "MonitoringMode: " << value.MonitoringMode;
523 
524  indent(os, subIndentLevel);
525  os << "RequestedParameters: ";
526  ToStream(os, value.RequestedParameters, subIndentLevel);
527 
528  indent(os, indentLevel, true);
529  os << ")";
530  return os;
531 }
532 
533 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::MonitoredItemsParameters & value, int indentLevel)
534 {
535  os << "MonitoredItemsParameters(";
536  int subIndentLevel = (indentLevel < 0)
537  ? indentLevel
538  : indentLevel + 1;
539 
540  indent(os, subIndentLevel, true);
541  os << "SubscriptionId: " << value.SubscriptionId;
542 
543  indent(os, subIndentLevel);
544  os << "TimestampsToReturn: " << value.TimestampsToReturn;
545 
546  indent(os, subIndentLevel);
547  os << "ItemsToCreate: ";
548  ToStream(os, value.ItemsToCreate, subIndentLevel);
549 
550  indent(os, indentLevel, true);
551  os << ")";
552  return os;
553 }
554 
555 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::MonitoringParameters & value, int indentLevel)
556 {
557  os << "MonitoringParameters(";
558  int subIndentLevel = (indentLevel < 0)
559  ? indentLevel
560  : indentLevel + 1;
561 
562  indent(os, subIndentLevel, true);
563  os << "ClientHandle: " << value.ClientHandle;
564 
565  indent(os, subIndentLevel, true);
566  os << "SamplingInterval: " << value.SamplingInterval;
567 
568  indent(os, subIndentLevel);
569  os << "Filter: ";
570  ToStream(os, value.Filter, subIndentLevel);
571 
572  indent(os, subIndentLevel, true);
573  os << "QueueSize: " << value.QueueSize;
574 
575  indent(os, subIndentLevel, true);
576  os << "DiscardOldest: " << value.DiscardOldest;
577 
578  indent(os, indentLevel, true);
579  os << ")";
580  return os;
581 }
582 
583 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::MonitoringFilter & value, int indentLevel)
584 {
585  os << "MonitoringFilter(";
586  int subIndentLevel = (indentLevel < 0)
587  ? indentLevel
588  : indentLevel + 1;
589 
590  indent(os, subIndentLevel, true);
591  os << "Header: ";
592  ToStream(os, value.Header, subIndentLevel);
593 
594  indent(os, subIndentLevel);
595  os << "DataChange: ";
596  ToStream(os, value.DataChange, subIndentLevel);
597 
598  indent(os, subIndentLevel);
599  os << "Event: ";
600  ToStream(os, value.Event, subIndentLevel);
601 
602  indent(os, subIndentLevel);
603  os << "Aggregate: ";
604  ToStream(os, value.Aggregate, subIndentLevel);
605 
606  indent(os, indentLevel, true);
607  os << ")";
608  return os;
609 }
610 
611 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::NodeId & value, bool addObjectIdName)
612 {
613  if (value.HasServerIndex())
614  {
615  os << "srv=" << value.ServerIndex << ";";
616  }
617 
618  if (value.HasNamespaceURI())
619  {
620  os << "nsu=" << value.NamespaceURI << ";";
621  }
622 
623  os << "ns=" << value.GetNamespaceIndex() << ";";
624 
625  if (value.IsInteger())
626  {
627  int id = value.GetIntegerIdentifier();
628  os << "i=" << id << ";";
629  if (addObjectIdName)
630  {
631  os << " (" << ToString(ObjectId(id)) << ")";
632  }
633  }
634 
635 #ifndef __ENABLE_EMBEDDED_PROFILE__
636 
637  else if (value.IsString())
638  {
639  os << "s=" << value.GetStringIdentifier() << ";";
640  }
641 
642  else if (value.IsGuid())
643  {
644  os << "g=" << ToString(value.GetGuidIdentifier()) << ";";
645  }
646 
647 #endif
648  return os;
649 }
650 
651 std::ostream & OpcUa::ToStream(std::ostream & os, const std::vector<OpcUa::QualifiedName> & value)
652 {
653  bool isFirst = true;
654  for (auto element : value)
655  {
656  if (isFirst)
657  {
658  isFirst = false;
659  }
660  else
661  {
662  os << "/";
663  }
664  os << element.NamespaceIndex << ":" << element.Name;
665  }
666  return os;
667 }
668 
669 std::ostream & OpcUa::ToStream(std::ostream & os, const std::string & value, int /*indentLevel*/)
670 {
671  return os << value;
672 }
673 
674 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::ReadValueId & value, int indentLevel)
675 {
676  os << "ReadValueId(";
677  int subIndentLevel = (indentLevel < 0)
678  ? indentLevel
679  : indentLevel + 1;
680 
681  indent(os, subIndentLevel, true);
682  os << "NodeId: " << value.NodeId;
683 
684  indent(os, subIndentLevel);
685  os << "AttributeId: " << value.AttributeId;
686 
687  indent(os, subIndentLevel);
688  os << "IndexRange: " << value.IndexRange;
689 
690  indent(os, subIndentLevel);
691  os << "DataEncoding: " << value.DataEncoding;
692 
693  indent(os, indentLevel, true);
694  os << ")";
695  return os;
696 }
697 
698 std::ostream & OpcUa::ToStream(std::ostream & os, const OpcUa::SimpleAttributeOperand & value, int indentLevel)
699 {
700  os << "SimpleAttributeOperand(";
701  int subIndentLevel = (indentLevel < 0)
702  ? indentLevel
703  : indentLevel + 1;
704  indent(os, subIndentLevel, true);
705  os << "TypeId: ";
706  ToStream(os, value.TypeId, true);
707  indent(os, subIndentLevel);
708  os << "BrowsePath: ";
709  ToStream(os, value.BrowsePath);
710  indent(os, subIndentLevel);
711  os << "AttributeId: " << ToString(value.Attribute);
712  indent(os, subIndentLevel);
713  os << "IndexRange: ";
714  ToStream(os, value.IndexRange, -1);
715  indent(os, indentLevel, true);
716  os << ")";
717  return os;
718 }
719 
721 {
722  if (str.size() != 36)
723  {
724  return OpcUa::Guid();
725  }
726 
727  Guid guid;
728 
729  unsigned data1 = 0;
730  unsigned data2 = 0;
731  unsigned data3 = 0;
732  unsigned data4 = 0;
733  unsigned data5 = 0;
734  unsigned data6 = 0;
735  unsigned data7 = 0;
736  unsigned data8 = 0;
737  unsigned data9 = 0;
738  unsigned data10 = 0;
739  unsigned data11 = 0;
740  const int parts = sscanf(str.c_str(), "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X",
741  &data1, &data2, &data3, &data4, &data5, &data6, &data7, &data8, &data9, &data10, &data11);
742 
743  guid.Data1 = static_cast<uint32_t>(data1);
744  guid.Data2 = static_cast<uint16_t>(data2);
745  guid.Data3 = static_cast<uint16_t>(data3);
746  guid.Data4[0] = static_cast<uint8_t>(data4);
747  guid.Data4[1] = static_cast<uint8_t>(data5);
748  guid.Data4[2] = static_cast<uint8_t>(data6);
749  guid.Data4[3] = static_cast<uint8_t>(data7);
750  guid.Data4[4] = static_cast<uint8_t>(data8);
751  guid.Data4[5] = static_cast<uint8_t>(data9);
752  guid.Data4[6] = static_cast<uint8_t>(data10);
753  guid.Data4[7] = static_cast<uint8_t>(data11);
754 
755  if (parts != 11)
756  {
757  return OpcUa::Guid();
758  }
759 
760  return guid;
761 }
762 
763 
764 namespace
765 {
766 std::string GetNodeField(const std::string & data, const char * field)
767 {
768  std::size_t colon = 0;
769 
770  do
771  {
772  // if something found at previous cycle
773  if (colon)
774  {
775  ++colon;
776  }
777 
778  // find field string
779  colon = data.find(field, colon);
780 
781  // if found nothing
782  if (colon == std::string::npos)
783  {
784  return std::string();
785  }
786 
787  // if found at the begin
788  if (colon == 0)
789  {
790  break;
791  }
792  }
793 
794  // if finding 's=' in the 'ns=1;i-3;' will be found field 'ns=1;'
795  // check that previous character is the ';' if not then search next.
796  while (data[colon - 1] != ';');
797 
798  colon += std::strlen(field);
799  const std::size_t semicolon = data.find(";", colon);
800 
801  if (semicolon == std::string::npos)
802  {
803  data.substr(colon);
804  }
805 
806  return data.substr(colon, semicolon - colon);
807 }
808 
809 uint32_t GetInteger(const std::string & value)
810 {
811  if (value.empty())
812  {
813  return 0;
814  }
815 
816  return std::stoul(value);
817 }
818 
819 }
820 
821 OpcUa::NodeId OpcUa::ToNodeId(const std::string & data, uint32_t defaultNamespace)
822 {
823  OpcUa::NodeId result;
824  uint32_t ns = defaultNamespace;
825 
826  const std::string nsString = GetNodeField(data, "ns=");
827 
828  if (nsString.empty())
829  {
830  if (ns == std::numeric_limits<uint32_t>::max())
831  {
832  throw (std::runtime_error("Namespace index coult not be parsed from string and not default index specified in string: " + data));
833  }
834  }
835 
836  else
837  {
838  ns = GetInteger(nsString);
839  }
840 
841  const std::string srv = GetNodeField(data, "srv=");
842 
843  if (!srv.empty())
844  {
845  result.SetServerIndex(GetInteger(srv));
846  }
847 
848  const std::string nsu = GetNodeField(data, "nsu=");
849 
850  if (!nsu.empty())
851  {
852  result.SetNamespaceURI(nsu);
853  }
854 
855  const std::string integer = GetNodeField(data, "i=");
856 
857  if (!integer.empty())
858  {
859  return OpcUa::NumericNodeId(GetInteger(integer), ns);
860  }
861 
862  const std::string str = GetNodeField(data, "s=");
863 
864  if (!str.empty())
865  {
866  return OpcUa::StringNodeId(str, ns);
867  }
868 
869  const std::string g = GetNodeField(data, "g=");
870 
871  if (!g.empty())
872  {
873  return OpcUa::GuidNodeId(ToGuid(g), ns);
874  }
875 
876  throw (std::runtime_error("No identifier found in string: '" + data + "'"));
877 }
878 
879 OpcUa::QualifiedName OpcUa::ToQualifiedName(const std::string & str, uint32_t default_ns)
880 {
881  std::size_t found = str.find(":");
882 
883  if (found != std::string::npos)
884  {
885  uint16_t ns = std::stoi(str.substr(0, found));
886  std::string name = str.substr(found + 1, str.length() - found);
887  return QualifiedName(ns, name);
888  }
889 
890  if (default_ns == std::numeric_limits<uint32_t>::max())
891  {
892  throw (std::runtime_error("Namespace index coult not be parsed from string and not default index specified in string: " + str));
893  }
894 
895  return QualifiedName(default_ns, str);
896 }
897 
uint16_t Data2
Definition: guid.h:22
uint32_t GetNamespaceIndex() const
Definition: nodeid.cpp:118
ExtensionObjectEncoding Encoding
Definition: types.h:287
ExtensionObjectEncoding
Definition: types.h:276
LocalizedText Message
Definition: event.h:41
bool IsInteger() const
Definition: nodeid.cpp:38
bool IsGuid() const
Definition: nodeid.cpp:56
ExtensionObjectHeader Header
Definition: types_manual.h:121
DateTime ReceiveTime
Definition: event.h:39
uint32_t Data1
Definition: guid.h:21
std::string SourceName
Definition: event.h:44
DateTime LocalTime
Definition: event.h:38
std::vector< QualifiedName > BrowsePath
Definition: types_manual.h:94
std::vector< std::string > IndexRange
Definition: types_manual.h:96
OpcUa::QualifiedName DataEncoding
DeadbandType
Definition: enums.h:290
OpcUa::MonitoringFilter Filter
const char QualifiedName[]
Definition: strings.h:127
NodeId SourceNode
Definition: event.h:43
std::vector< SimpleAttributeOperand > SelectClauses
Definition: types_manual.h:136
Guid GetGuidIdentifier() const
Definition: nodeid.cpp:82
bool HasNamespaceURI() const
Definition: nodeid.cpp:470
name
Definition: setup.py:38
uint16_t Severity
Definition: event.h:42
NodeId EventType
Definition: event.h:37
static time_t ToTimeT(DateTime dateTime)
std::string IndexRange
DataChangeFilter DataChange
Definition: types_manual.h:156
TimestampsToReturn
Definition: enums.h:237
VariantType
Definition: variant.h:27
void SetNamespaceURI(const std::string &uri)
Definition: nodeid.cpp:480
uint32_t GetIntegerIdentifier() const
Definition: nodeid.cpp:92
std::vector< ContentFilterElement > WhereClause
Definition: types_manual.h:137
ObjectId
Definition: object_ids.h:12
void SetServerIndex(uint32_t index)
Definition: nodeid.cpp:486
std::string sprintf(CStringRef format, ArgList args)
Definition: format.h:3737
BrowseDirection
Definition: enums.h:173
ExpandedNodeId TypeId
Definition: types.h:286
uint16_t Data3
Definition: guid.h:23
std::ostream & indent(std::ostream &os, int level, bool noSeparator=false)
NodeId GuidNodeId(Guid value, uint16_t namespaceIndex=0)
Definition: nodeid.h:245
MonitoringMode
Definition: enums.h:270
std::ostream & ToStream(std::ostream &os, const AggregateFilter &value, int indentLevel=0)
Guid ToGuid(const std::string &str)
uint8_t Data4[8]
Definition: guid.h:24
bool HasServerIndex() const
Definition: nodeid.cpp:475
QualifiedName ToQualifiedName(const std::string &str, uint32_t default_ns=0)
SimpleAttributeOperand SimpleAttribute
Definition: types_manual.h:125
std::string Text
Definition: types.h:136
uint32_t ServerIndex
Definition: nodeid.h:48
bool IsString() const
Definition: nodeid.cpp:44
ByteString EventId
Definition: event.h:36
NodeId ToNodeId(const std::string &str, uint32_t defaultNamespace=0)
AggregateFilter Aggregate
Definition: types_manual.h:158
std::string ToString(const AttributeId &value)
FilterOperator
Definition: enums.h:212
NodeId StringNodeId(std::string value, uint16_t namespaceIndex=0)
Definition: nodeid.h:227
std::vector< FilterOperand > FilterOperands
Definition: types_manual.h:131
OpcUa::AttributeId AttributeId
OpcUa::MonitoringParameters RequestedParameters
DataChangeTrigger
Definition: enums.h:280
NodeId NumericNodeId(uint32_t value, uint16_t namespaceIndex=0)
Definition: nodeid.h:218
DataChangeTrigger Trigger
Definition: types_manual.h:86
ExtensionObjectHeader Header
Definition: types_manual.h:155
std::string GetStringIdentifier() const
Definition: nodeid.cpp:62
OpcUa::NodeId NodeId
std::string NamespaceURI
Definition: nodeid.h:47
DateTime Time
Definition: event.h:40
OpcUa::TimestampsToReturn TimestampsToReturn
OpcUa::MonitoringMode MonitoringMode
std::vector< OpcUa::MonitoredItemCreateRequest > ItemsToCreate


ros_opcua_impl_freeopcua
Author(s): Denis Štogl
autogenerated on Tue Jan 19 2021 03:12:08