Completed
Push — master ( 2374dd...6c7b37 )
by Olivier
02:18
created

opcua.ua.ObjectAttributes.__str__()   A

Complexity

Conditions 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1.125
Metric Value
cc 1
dl 0
loc 7
ccs 1
cts 2
cp 0.5
crap 1.125
rs 9.4285
1
'''
2
Autogenerate code from xml spec
3
'''
4
5 1
from datetime import datetime
6 1
from enum import Enum, IntEnum
7
8 1
from opcua.common.utils import Buffer
9 1
from opcua.common.uaerrors import UAError
10 1
from opcua.ua.uatypes import *
11 1
from opcua.ua.object_ids import ObjectIds
12
13
14 1
class NamingRuleType(IntEnum):
15
    '''
16
    :ivar Mandatory:
17
    :vartype Mandatory: 1
18
    :ivar Optional:
19
    :vartype Optional: 2
20
    :ivar Constraint:
21
    :vartype Constraint: 3
22
    '''
23 1
    Mandatory = 1
24 1
    Optional = 2
25 1
    Constraint = 3
26
27
28 1
class OpenFileMode(IntEnum):
29
    '''
30
    :ivar Read:
31
    :vartype Read: 1
32
    :ivar Write:
33
    :vartype Write: 2
34
    :ivar EraseExisting:
35
    :vartype EraseExisting: 4
36
    :ivar Append:
37
    :vartype Append: 8
38
    '''
39 1
    Read = 1
40 1
    Write = 2
41 1
    EraseExisting = 4
42 1
    Append = 8
43
44
45 1
class TrustListMasks(IntEnum):
46
    '''
47
    :ivar None_:
48
    :vartype None_: 0
49
    :ivar TrustedCertificates:
50
    :vartype TrustedCertificates: 1
51
    :ivar TrustedCrls:
52
    :vartype TrustedCrls: 2
53
    :ivar IssuerCertificates:
54
    :vartype IssuerCertificates: 4
55
    :ivar IssuerCrls:
56
    :vartype IssuerCrls: 8
57
    :ivar All:
58
    :vartype All: 15
59
    '''
60 1
    None_ = 0
61 1
    TrustedCertificates = 1
62 1
    TrustedCrls = 2
63 1
    IssuerCertificates = 4
64 1
    IssuerCrls = 8
65 1
    All = 15
66
67
68 1
class IdType(IntEnum):
69
    '''
70
    The type of identifier used in a node id.
71
72
    :ivar Numeric:
73
    :vartype Numeric: 0
74
    :ivar String:
75
    :vartype String: 1
76
    :ivar Guid:
77
    :vartype Guid: 2
78
    :ivar Opaque:
79
    :vartype Opaque: 3
80
    '''
81 1
    Numeric = 0
82 1
    String = 1
83 1
    Guid = 2
84 1
    Opaque = 3
85
86
87 1
class NodeClass(IntEnum):
88
    '''
89
    A mask specifying the class of the node.
90
91
    :ivar Unspecified:
92
    :vartype Unspecified: 0
93
    :ivar Object:
94
    :vartype Object: 1
95
    :ivar Variable:
96
    :vartype Variable: 2
97
    :ivar Method:
98
    :vartype Method: 4
99
    :ivar ObjectType:
100
    :vartype ObjectType: 8
101
    :ivar VariableType:
102
    :vartype VariableType: 16
103
    :ivar ReferenceType:
104
    :vartype ReferenceType: 32
105
    :ivar DataType:
106
    :vartype DataType: 64
107
    :ivar View:
108
    :vartype View: 128
109
    '''
110 1
    Unspecified = 0
111 1
    Object = 1
112 1
    Variable = 2
113 1
    Method = 4
114 1
    ObjectType = 8
115 1
    VariableType = 16
116 1
    ReferenceType = 32
117 1
    DataType = 64
118 1
    View = 128
119
120
121 1
class ApplicationType(IntEnum):
122
    '''
123
    The types of applications.
124
125
    :ivar Server:
126
    :vartype Server: 0
127
    :ivar Client:
128
    :vartype Client: 1
129
    :ivar ClientAndServer:
130
    :vartype ClientAndServer: 2
131
    :ivar DiscoveryServer:
132
    :vartype DiscoveryServer: 3
133
    '''
134 1
    Server = 0
135 1
    Client = 1
136 1
    ClientAndServer = 2
137 1
    DiscoveryServer = 3
138
139
140 1
class MessageSecurityMode(IntEnum):
141
    '''
142
    The type of security to use on a message.
143
144
    :ivar Invalid:
145
    :vartype Invalid: 0
146
    :ivar None_:
147
    :vartype None_: 1
148
    :ivar Sign:
149
    :vartype Sign: 2
150
    :ivar SignAndEncrypt:
151
    :vartype SignAndEncrypt: 3
152
    '''
153 1
    Invalid = 0
154 1
    None_ = 1
155 1
    Sign = 2
156 1
    SignAndEncrypt = 3
157
158
159 1
class UserTokenType(IntEnum):
160
    '''
161
    The possible user token types.
162
163
    :ivar Anonymous:
164
    :vartype Anonymous: 0
165
    :ivar UserName:
166
    :vartype UserName: 1
167
    :ivar Certificate:
168
    :vartype Certificate: 2
169
    :ivar IssuedToken:
170
    :vartype IssuedToken: 3
171
    :ivar Kerberos:
172
    :vartype Kerberos: 4
173
    '''
174 1
    Anonymous = 0
175 1
    UserName = 1
176 1
    Certificate = 2
177 1
    IssuedToken = 3
178 1
    Kerberos = 4
179
180
181 1
class SecurityTokenRequestType(IntEnum):
182
    '''
183
    Indicates whether a token if being created or renewed.
184
185
    :ivar Issue:
186
    :vartype Issue: 0
187
    :ivar Renew:
188
    :vartype Renew: 1
189
    '''
190 1
    Issue = 0
191 1
    Renew = 1
192
193
194 1
class NodeAttributesMask(IntEnum):
195
    '''
196
    The bits used to specify default attributes for a new node.
197
198
    :ivar None_:
199
    :vartype None_: 0
200
    :ivar AccessLevel:
201
    :vartype AccessLevel: 1
202
    :ivar ArrayDimensions:
203
    :vartype ArrayDimensions: 2
204
    :ivar BrowseName:
205
    :vartype BrowseName: 4
206
    :ivar ContainsNoLoops:
207
    :vartype ContainsNoLoops: 8
208
    :ivar DataType:
209
    :vartype DataType: 16
210
    :ivar Description:
211
    :vartype Description: 32
212
    :ivar DisplayName:
213
    :vartype DisplayName: 64
214
    :ivar EventNotifier:
215
    :vartype EventNotifier: 128
216
    :ivar Executable:
217
    :vartype Executable: 256
218
    :ivar Historizing:
219
    :vartype Historizing: 512
220
    :ivar InverseName:
221
    :vartype InverseName: 1024
222
    :ivar IsAbstract:
223
    :vartype IsAbstract: 2048
224
    :ivar MinimumSamplingInterval:
225
    :vartype MinimumSamplingInterval: 4096
226
    :ivar NodeClass:
227
    :vartype NodeClass: 8192
228
    :ivar NodeId:
229
    :vartype NodeId: 16384
230
    :ivar Symmetric:
231
    :vartype Symmetric: 32768
232
    :ivar UserAccessLevel:
233
    :vartype UserAccessLevel: 65536
234
    :ivar UserExecutable:
235
    :vartype UserExecutable: 131072
236
    :ivar UserWriteMask:
237
    :vartype UserWriteMask: 262144
238
    :ivar ValueRank:
239
    :vartype ValueRank: 524288
240
    :ivar WriteMask:
241
    :vartype WriteMask: 1048576
242
    :ivar Value:
243
    :vartype Value: 2097152
244
    :ivar All:
245
    :vartype All: 4194303
246
    :ivar BaseNode:
247
    :vartype BaseNode: 1335396
248
    :ivar Object:
249
    :vartype Object: 1335524
250
    :ivar ObjectTypeOrDataType:
251
    :vartype ObjectTypeOrDataType: 1337444
252
    :ivar Variable:
253
    :vartype Variable: 4026999
254
    :ivar VariableType:
255
    :vartype VariableType: 3958902
256
    :ivar Method:
257
    :vartype Method: 1466724
258
    :ivar ReferenceType:
259
    :vartype ReferenceType: 1371236
260
    :ivar View:
261
    :vartype View: 1335532
262
    '''
263 1
    None_ = 0
264 1
    AccessLevel = 1
265 1
    ArrayDimensions = 2
266 1
    BrowseName = 4
267 1
    ContainsNoLoops = 8
268 1
    DataType = 16
269 1
    Description = 32
270 1
    DisplayName = 64
271 1
    EventNotifier = 128
272 1
    Executable = 256
273 1
    Historizing = 512
274 1
    InverseName = 1024
275 1
    IsAbstract = 2048
276 1
    MinimumSamplingInterval = 4096
277 1
    NodeClass = 8192
278 1
    NodeId = 16384
279 1
    Symmetric = 32768
280 1
    UserAccessLevel = 65536
281 1
    UserExecutable = 131072
282 1
    UserWriteMask = 262144
283 1
    ValueRank = 524288
284 1
    WriteMask = 1048576
285 1
    Value = 2097152
286 1
    All = 4194303
287 1
    BaseNode = 1335396
288 1
    Object = 1335524
289 1
    ObjectTypeOrDataType = 1337444
290 1
    Variable = 4026999
291 1
    VariableType = 3958902
292 1
    Method = 1466724
293 1
    ReferenceType = 1371236
294 1
    View = 1335532
295
296
297 1
class AttributeWriteMask(IntEnum):
298
    '''
299
    Define bits used to indicate which attributes are writable.
300
301
    :ivar None_:
302
    :vartype None_: 0
303
    :ivar AccessLevel:
304
    :vartype AccessLevel: 1
305
    :ivar ArrayDimensions:
306
    :vartype ArrayDimensions: 2
307
    :ivar BrowseName:
308
    :vartype BrowseName: 4
309
    :ivar ContainsNoLoops:
310
    :vartype ContainsNoLoops: 8
311
    :ivar DataType:
312
    :vartype DataType: 16
313
    :ivar Description:
314
    :vartype Description: 32
315
    :ivar DisplayName:
316
    :vartype DisplayName: 64
317
    :ivar EventNotifier:
318
    :vartype EventNotifier: 128
319
    :ivar Executable:
320
    :vartype Executable: 256
321
    :ivar Historizing:
322
    :vartype Historizing: 512
323
    :ivar InverseName:
324
    :vartype InverseName: 1024
325
    :ivar IsAbstract:
326
    :vartype IsAbstract: 2048
327
    :ivar MinimumSamplingInterval:
328
    :vartype MinimumSamplingInterval: 4096
329
    :ivar NodeClass:
330
    :vartype NodeClass: 8192
331
    :ivar NodeId:
332
    :vartype NodeId: 16384
333
    :ivar Symmetric:
334
    :vartype Symmetric: 32768
335
    :ivar UserAccessLevel:
336
    :vartype UserAccessLevel: 65536
337
    :ivar UserExecutable:
338
    :vartype UserExecutable: 131072
339
    :ivar UserWriteMask:
340
    :vartype UserWriteMask: 262144
341
    :ivar ValueRank:
342
    :vartype ValueRank: 524288
343
    :ivar WriteMask:
344
    :vartype WriteMask: 1048576
345
    :ivar ValueForVariableType:
346
    :vartype ValueForVariableType: 2097152
347
    '''
348 1
    None_ = 0
349 1
    AccessLevel = 1
350 1
    ArrayDimensions = 2
351 1
    BrowseName = 4
352 1
    ContainsNoLoops = 8
353 1
    DataType = 16
354 1
    Description = 32
355 1
    DisplayName = 64
356 1
    EventNotifier = 128
357 1
    Executable = 256
358 1
    Historizing = 512
359 1
    InverseName = 1024
360 1
    IsAbstract = 2048
361 1
    MinimumSamplingInterval = 4096
362 1
    NodeClass = 8192
363 1
    NodeId = 16384
364 1
    Symmetric = 32768
365 1
    UserAccessLevel = 65536
366 1
    UserExecutable = 131072
367 1
    UserWriteMask = 262144
368 1
    ValueRank = 524288
369 1
    WriteMask = 1048576
370 1
    ValueForVariableType = 2097152
371
372
373 1
class BrowseDirection(IntEnum):
374
    '''
375
    The directions of the references to return.
376
377
    :ivar Forward:
378
    :vartype Forward: 0
379
    :ivar Inverse:
380
    :vartype Inverse: 1
381
    :ivar Both:
382
    :vartype Both: 2
383
    '''
384 1
    Forward = 0
385 1
    Inverse = 1
386 1
    Both = 2
387
388
389 1
class BrowseResultMask(IntEnum):
390
    '''
391
    A bit mask which specifies what should be returned in a browse response.
392
393
    :ivar None_:
394
    :vartype None_: 0
395
    :ivar ReferenceTypeId:
396
    :vartype ReferenceTypeId: 1
397
    :ivar IsForward:
398
    :vartype IsForward: 2
399
    :ivar NodeClass:
400
    :vartype NodeClass: 4
401
    :ivar BrowseName:
402
    :vartype BrowseName: 8
403
    :ivar DisplayName:
404
    :vartype DisplayName: 16
405
    :ivar TypeDefinition:
406
    :vartype TypeDefinition: 32
407
    :ivar All:
408
    :vartype All: 63
409
    :ivar ReferenceTypeInfo:
410
    :vartype ReferenceTypeInfo: 3
411
    :ivar TargetInfo:
412
    :vartype TargetInfo: 60
413
    '''
414 1
    None_ = 0
415 1
    ReferenceTypeId = 1
416 1
    IsForward = 2
417 1
    NodeClass = 4
418 1
    BrowseName = 8
419 1
    DisplayName = 16
420 1
    TypeDefinition = 32
421 1
    All = 63
422 1
    ReferenceTypeInfo = 3
423 1
    TargetInfo = 60
424
425
426 1
class ComplianceLevel(IntEnum):
427
    '''
428
    :ivar Untested:
429
    :vartype Untested: 0
430
    :ivar Partial:
431
    :vartype Partial: 1
432
    :ivar SelfTested:
433
    :vartype SelfTested: 2
434
    :ivar Certified:
435
    :vartype Certified: 3
436
    '''
437 1
    Untested = 0
438 1
    Partial = 1
439 1
    SelfTested = 2
440 1
    Certified = 3
441
442
443 1
class FilterOperator(IntEnum):
444
    '''
445
    :ivar Equals:
446
    :vartype Equals: 0
447
    :ivar IsNull:
448
    :vartype IsNull: 1
449
    :ivar GreaterThan:
450
    :vartype GreaterThan: 2
451
    :ivar LessThan:
452
    :vartype LessThan: 3
453
    :ivar GreaterThanOrEqual:
454
    :vartype GreaterThanOrEqual: 4
455
    :ivar LessThanOrEqual:
456
    :vartype LessThanOrEqual: 5
457
    :ivar Like:
458
    :vartype Like: 6
459
    :ivar Not:
460
    :vartype Not: 7
461
    :ivar Between:
462
    :vartype Between: 8
463
    :ivar InList:
464
    :vartype InList: 9
465
    :ivar And:
466
    :vartype And: 10
467
    :ivar Or:
468
    :vartype Or: 11
469
    :ivar Cast:
470
    :vartype Cast: 12
471
    :ivar InView:
472
    :vartype InView: 13
473
    :ivar OfType:
474
    :vartype OfType: 14
475
    :ivar RelatedTo:
476
    :vartype RelatedTo: 15
477
    :ivar BitwiseAnd:
478
    :vartype BitwiseAnd: 16
479
    :ivar BitwiseOr:
480
    :vartype BitwiseOr: 17
481
    '''
482 1
    Equals = 0
483 1
    IsNull = 1
484 1
    GreaterThan = 2
485 1
    LessThan = 3
486 1
    GreaterThanOrEqual = 4
487 1
    LessThanOrEqual = 5
488 1
    Like = 6
489 1
    Not = 7
490 1
    Between = 8
491 1
    InList = 9
492 1
    And = 10
493 1
    Or = 11
494 1
    Cast = 12
495 1
    InView = 13
496 1
    OfType = 14
497 1
    RelatedTo = 15
498 1
    BitwiseAnd = 16
499 1
    BitwiseOr = 17
500
501
502 1
class TimestampsToReturn(IntEnum):
503
    '''
504
    :ivar Source:
505
    :vartype Source: 0
506
    :ivar Server:
507
    :vartype Server: 1
508
    :ivar Both:
509
    :vartype Both: 2
510
    :ivar Neither:
511
    :vartype Neither: 3
512
    '''
513 1
    Source = 0
514 1
    Server = 1
515 1
    Both = 2
516 1
    Neither = 3
517
518
519 1
class HistoryUpdateType(IntEnum):
520
    '''
521
    :ivar Insert:
522
    :vartype Insert: 1
523
    :ivar Replace:
524
    :vartype Replace: 2
525
    :ivar Update:
526
    :vartype Update: 3
527
    :ivar Delete:
528
    :vartype Delete: 4
529
    '''
530 1
    Insert = 1
531 1
    Replace = 2
532 1
    Update = 3
533 1
    Delete = 4
534
535
536 1
class PerformUpdateType(IntEnum):
537
    '''
538
    :ivar Insert:
539
    :vartype Insert: 1
540
    :ivar Replace:
541
    :vartype Replace: 2
542
    :ivar Update:
543
    :vartype Update: 3
544
    :ivar Remove:
545
    :vartype Remove: 4
546
    '''
547 1
    Insert = 1
548 1
    Replace = 2
549 1
    Update = 3
550 1
    Remove = 4
551
552
553 1
class MonitoringMode(IntEnum):
554
    '''
555
    :ivar Disabled:
556
    :vartype Disabled: 0
557
    :ivar Sampling:
558
    :vartype Sampling: 1
559
    :ivar Reporting:
560
    :vartype Reporting: 2
561
    '''
562 1
    Disabled = 0
563 1
    Sampling = 1
564 1
    Reporting = 2
565
566
567 1
class DataChangeTrigger(IntEnum):
568
    '''
569
    :ivar Status:
570
    :vartype Status: 0
571
    :ivar StatusValue:
572
    :vartype StatusValue: 1
573
    :ivar StatusValueTimestamp:
574
    :vartype StatusValueTimestamp: 2
575
    '''
576 1
    Status = 0
577 1
    StatusValue = 1
578 1
    StatusValueTimestamp = 2
579
580
581 1
class DeadbandType(IntEnum):
582
    '''
583
    :ivar None_:
584
    :vartype None_: 0
585
    :ivar Absolute:
586
    :vartype Absolute: 1
587
    :ivar Percent:
588
    :vartype Percent: 2
589
    '''
590 1
    None_ = 0
591 1
    Absolute = 1
592 1
    Percent = 2
593
594
595 1
class EnumeratedTestType(IntEnum):
596
    '''
597
    A simple enumerated type used for testing.
598
599
    :ivar Red:
600
    :vartype Red: 1
601
    :ivar Yellow:
602
    :vartype Yellow: 4
603
    :ivar Green:
604
    :vartype Green: 5
605
    '''
606 1
    Red = 1
607 1
    Yellow = 4
608 1
    Green = 5
609
610
611 1
class RedundancySupport(IntEnum):
612
    '''
613
    :ivar None_:
614
    :vartype None_: 0
615
    :ivar Cold:
616
    :vartype Cold: 1
617
    :ivar Warm:
618
    :vartype Warm: 2
619
    :ivar Hot:
620
    :vartype Hot: 3
621
    :ivar Transparent:
622
    :vartype Transparent: 4
623
    :ivar HotAndMirrored:
624
    :vartype HotAndMirrored: 5
625
    '''
626 1
    None_ = 0
627 1
    Cold = 1
628 1
    Warm = 2
629 1
    Hot = 3
630 1
    Transparent = 4
631 1
    HotAndMirrored = 5
632
633
634 1
class ServerState(IntEnum):
635
    '''
636
    :ivar Running:
637
    :vartype Running: 0
638
    :ivar Failed:
639
    :vartype Failed: 1
640
    :ivar NoConfiguration:
641
    :vartype NoConfiguration: 2
642
    :ivar Suspended:
643
    :vartype Suspended: 3
644
    :ivar Shutdown:
645
    :vartype Shutdown: 4
646
    :ivar Test:
647
    :vartype Test: 5
648
    :ivar CommunicationFault:
649
    :vartype CommunicationFault: 6
650
    :ivar Unknown:
651
    :vartype Unknown: 7
652
    '''
653 1
    Running = 0
654 1
    Failed = 1
655 1
    NoConfiguration = 2
656 1
    Suspended = 3
657 1
    Shutdown = 4
658 1
    Test = 5
659 1
    CommunicationFault = 6
660 1
    Unknown = 7
661
662
663 1
class ModelChangeStructureVerbMask(IntEnum):
664
    '''
665
    :ivar NodeAdded:
666
    :vartype NodeAdded: 1
667
    :ivar NodeDeleted:
668
    :vartype NodeDeleted: 2
669
    :ivar ReferenceAdded:
670
    :vartype ReferenceAdded: 4
671
    :ivar ReferenceDeleted:
672
    :vartype ReferenceDeleted: 8
673
    :ivar DataTypeChanged:
674
    :vartype DataTypeChanged: 16
675
    '''
676 1
    NodeAdded = 1
677 1
    NodeDeleted = 2
678 1
    ReferenceAdded = 4
679 1
    ReferenceDeleted = 8
680 1
    DataTypeChanged = 16
681
682
683 1
class AxisScaleEnumeration(IntEnum):
684
    '''
685
    :ivar Linear:
686
    :vartype Linear: 0
687
    :ivar Log:
688
    :vartype Log: 1
689
    :ivar Ln:
690
    :vartype Ln: 2
691
    '''
692 1
    Linear = 0
693 1
    Log = 1
694 1
    Ln = 2
695
696
697 1
class ExceptionDeviationFormat(IntEnum):
698
    '''
699
    :ivar AbsoluteValue:
700
    :vartype AbsoluteValue: 0
701
    :ivar PercentOfValue:
702
    :vartype PercentOfValue: 1
703
    :ivar PercentOfRange:
704
    :vartype PercentOfRange: 2
705
    :ivar PercentOfEURange:
706
    :vartype PercentOfEURange: 3
707
    :ivar Unknown:
708
    :vartype Unknown: 4
709
    '''
710 1
    AbsoluteValue = 0
711 1
    PercentOfValue = 1
712 1
    PercentOfRange = 2
713 1
    PercentOfEURange = 3
714 1
    Unknown = 4
715
716
717 1
class DiagnosticInfo(FrozenClass):
718
    '''
719
    A recursive structure containing diagnostic information associated with a status code.
720
721
    :ivar Encoding:
722
    :vartype Encoding: UInt8
723
    :ivar SymbolicId:
724
    :vartype SymbolicId: Int32
725
    :ivar NamespaceURI:
726
    :vartype NamespaceURI: Int32
727
    :ivar Locale:
728
    :vartype Locale: Int32
729
    :ivar LocalizedText:
730
    :vartype LocalizedText: Int32
731
    :ivar AdditionalInfo:
732
    :vartype AdditionalInfo: CharArray
733
    :ivar InnerStatusCode:
734
    :vartype InnerStatusCode: StatusCode
735
    :ivar InnerDiagnosticInfo:
736
    :vartype InnerDiagnosticInfo: DiagnosticInfo
737
    '''
738 1
    def __init__(self, binary=None):
739 1
        if binary is not None:
740 1
            self._binary_init(binary)
741 1
            self._freeze = True
742 1
            return
743 1
        self.Encoding = 0
744 1
        self.SymbolicId = 0
745 1
        self.NamespaceURI = 0
746 1
        self.Locale = 0
747 1
        self.LocalizedText = 0
748 1
        self.AdditionalInfo = b''
749 1
        self.InnerStatusCode = StatusCode()
750 1
        self.InnerDiagnosticInfo = None
751 1
        self._freeze = True
752
753 1
    def to_binary(self):
754 1
        packet = []
755 1
        if self.SymbolicId: self.Encoding |= (1 << 0)
756 1
        if self.NamespaceURI: self.Encoding |= (1 << 1)
757 1
        if self.Locale: self.Encoding |= (1 << 2)
758 1
        if self.LocalizedText: self.Encoding |= (1 << 3)
759 1
        if self.AdditionalInfo: self.Encoding |= (1 << 4)
760 1
        if self.InnerStatusCode: self.Encoding |= (1 << 5)
761 1
        if self.InnerDiagnosticInfo: self.Encoding |= (1 << 6)
762 1
        packet.append(uatype_UInt8.pack(self.Encoding))
763 1
        if self.SymbolicId: 
764
            packet.append(uatype_Int32.pack(self.SymbolicId))
765 1
        if self.NamespaceURI: 
766
            packet.append(uatype_Int32.pack(self.NamespaceURI))
767 1
        if self.Locale: 
768
            packet.append(uatype_Int32.pack(self.Locale))
769 1
        if self.LocalizedText: 
770
            packet.append(uatype_Int32.pack(self.LocalizedText))
771 1
        if self.AdditionalInfo: 
772
            packet.append(pack_bytes(self.AdditionalInfo))
773 1
        if self.InnerStatusCode: 
774 1
            packet.append(self.InnerStatusCode.to_binary())
775 1
        if self.InnerDiagnosticInfo: 
776
            packet.append(self.InnerDiagnosticInfo.to_binary())
777 1
        return b''.join(packet)
778
779 1
    @staticmethod
780
    def from_binary(data):
781 1
        return DiagnosticInfo(data)
782
783 1
    def _binary_init(self, data):
784 1
        self.Encoding = uatype_UInt8.unpack(data.read(1))[0]
785 1
        if self.Encoding & (1 << 0):
786
            self.SymbolicId = uatype_Int32.unpack(data.read(4))[0]
787
        else:
788 1
            self.SymbolicId = 0
789 1
        if self.Encoding & (1 << 1):
790
            self.NamespaceURI = uatype_Int32.unpack(data.read(4))[0]
791
        else:
792 1
            self.NamespaceURI = 0
793 1
        if self.Encoding & (1 << 2):
794
            self.Locale = uatype_Int32.unpack(data.read(4))[0]
795
        else:
796 1
            self.Locale = 0
797 1
        if self.Encoding & (1 << 3):
798
            self.LocalizedText = uatype_Int32.unpack(data.read(4))[0]
799
        else:
800 1
            self.LocalizedText = 0
801 1
        if self.Encoding & (1 << 4):
802
            self.AdditionalInfo = unpack_bytes(data)
803
        else:
804 1
            self.AdditionalInfo = b''
805 1
        if self.Encoding & (1 << 5):
806 1
            self.InnerStatusCode = StatusCode.from_binary(data)
807
        else:
808
            self.InnerStatusCode = StatusCode()
809 1
        if self.Encoding & (1 << 6):
810
            self.InnerDiagnosticInfo = DiagnosticInfo.from_binary(data)
811
        else:
812 1
            self.InnerDiagnosticInfo = None
813
814 1
    def __str__(self):
815
        return 'DiagnosticInfo(' + 'Encoding:' + str(self.Encoding) + ', ' + \
816
               'SymbolicId:' + str(self.SymbolicId) + ', ' + \
817
               'NamespaceURI:' + str(self.NamespaceURI) + ', ' + \
818
               'Locale:' + str(self.Locale) + ', ' + \
819
               'LocalizedText:' + str(self.LocalizedText) + ', ' + \
820
               'AdditionalInfo:' + str(self.AdditionalInfo) + ', ' + \
821
               'InnerStatusCode:' + str(self.InnerStatusCode) + ', ' + \
822
               'InnerDiagnosticInfo:' + str(self.InnerDiagnosticInfo) + ')'
823
824 1
    __repr__ = __str__
825
826
827 1
class TrustListDataType(FrozenClass):
828
    '''
829
    :ivar SpecifiedLists:
830
    :vartype SpecifiedLists: UInt32
831
    :ivar TrustedCertificates:
832
    :vartype TrustedCertificates: ByteString
833
    :ivar TrustedCrls:
834
    :vartype TrustedCrls: ByteString
835
    :ivar IssuerCertificates:
836
    :vartype IssuerCertificates: ByteString
837
    :ivar IssuerCrls:
838
    :vartype IssuerCrls: ByteString
839
    '''
840 1
    def __init__(self, binary=None):
841
        if binary is not None:
842
            self._binary_init(binary)
843
            self._freeze = True
844
            return
845
        self.SpecifiedLists = 0
846
        self.TrustedCertificates = []
847
        self.TrustedCrls = []
848
        self.IssuerCertificates = []
849
        self.IssuerCrls = []
850
        self._freeze = True
851
852 1
    def to_binary(self):
853
        packet = []
854
        packet.append(uatype_UInt32.pack(self.SpecifiedLists))
855
        packet.append(uatype_Int32.pack(len(self.TrustedCertificates)))
856
        for fieldname in self.TrustedCertificates:
857
            packet.append(pack_bytes(fieldname))
858
        packet.append(uatype_Int32.pack(len(self.TrustedCrls)))
859
        for fieldname in self.TrustedCrls:
860
            packet.append(pack_bytes(fieldname))
861
        packet.append(uatype_Int32.pack(len(self.IssuerCertificates)))
862
        for fieldname in self.IssuerCertificates:
863
            packet.append(pack_bytes(fieldname))
864
        packet.append(uatype_Int32.pack(len(self.IssuerCrls)))
865
        for fieldname in self.IssuerCrls:
866
            packet.append(pack_bytes(fieldname))
867
        return b''.join(packet)
868
869 1
    @staticmethod
870
    def from_binary(data):
871
        return TrustListDataType(data)
872
873 1
    def _binary_init(self, data):
874
        self.SpecifiedLists = uatype_UInt32.unpack(data.read(4))[0]
875
        self.TrustedCertificates = unpack_uatype_array('ByteString', data)
876
        self.TrustedCrls = unpack_uatype_array('ByteString', data)
877
        self.IssuerCertificates = unpack_uatype_array('ByteString', data)
878
        self.IssuerCrls = unpack_uatype_array('ByteString', data)
879
880 1
    def __str__(self):
881
        return 'TrustListDataType(' + 'SpecifiedLists:' + str(self.SpecifiedLists) + ', ' + \
882
               'TrustedCertificates:' + str(self.TrustedCertificates) + ', ' + \
883
               'TrustedCrls:' + str(self.TrustedCrls) + ', ' + \
884
               'IssuerCertificates:' + str(self.IssuerCertificates) + ', ' + \
885
               'IssuerCrls:' + str(self.IssuerCrls) + ')'
886
887 1
    __repr__ = __str__
888
889
890 1
class Argument(FrozenClass):
891
    '''
892
    An argument for a method.
893
894
    :ivar Name:
895
    :vartype Name: String
896
    :ivar DataType:
897
    :vartype DataType: NodeId
898
    :ivar ValueRank:
899
    :vartype ValueRank: Int32
900
    :ivar ArrayDimensions:
901
    :vartype ArrayDimensions: UInt32
902
    :ivar Description:
903
    :vartype Description: LocalizedText
904
    '''
905 1
    def __init__(self, binary=None):
906 1
        if binary is not None:
907
            self._binary_init(binary)
908
            self._freeze = True
909
            return
910 1
        self.Name = ''
911 1
        self.DataType = NodeId()
912 1
        self.ValueRank = 0
913 1
        self.ArrayDimensions = []
914 1
        self.Description = LocalizedText()
915 1
        self._freeze = True
916
917 1
    def to_binary(self):
918
        packet = []
919
        packet.append(pack_string(self.Name))
920
        packet.append(self.DataType.to_binary())
921
        packet.append(uatype_Int32.pack(self.ValueRank))
922
        packet.append(uatype_Int32.pack(len(self.ArrayDimensions)))
923
        for fieldname in self.ArrayDimensions:
924
            packet.append(uatype_UInt32.pack(fieldname))
925
        packet.append(self.Description.to_binary())
926
        return b''.join(packet)
927
928 1
    @staticmethod
929
    def from_binary(data):
930
        return Argument(data)
931
932 1
    def _binary_init(self, data):
933
        self.Name = unpack_string(data)
934
        self.DataType = NodeId.from_binary(data)
935
        self.ValueRank = uatype_Int32.unpack(data.read(4))[0]
936
        self.ArrayDimensions = unpack_uatype_array('UInt32', data)
937
        self.Description = LocalizedText.from_binary(data)
938
939 1
    def __str__(self):
940
        return 'Argument(' + 'Name:' + str(self.Name) + ', ' + \
941
               'DataType:' + str(self.DataType) + ', ' + \
942
               'ValueRank:' + str(self.ValueRank) + ', ' + \
943
               'ArrayDimensions:' + str(self.ArrayDimensions) + ', ' + \
944
               'Description:' + str(self.Description) + ')'
945
946 1
    __repr__ = __str__
947
948
949 1
class EnumValueType(FrozenClass):
950
    '''
951
    A mapping between a value of an enumerated type and a name and description.
952
953
    :ivar Value:
954
    :vartype Value: Int64
955
    :ivar DisplayName:
956
    :vartype DisplayName: LocalizedText
957
    :ivar Description:
958
    :vartype Description: LocalizedText
959
    '''
960 1
    def __init__(self, binary=None):
961
        if binary is not None:
962
            self._binary_init(binary)
963
            self._freeze = True
964
            return
965
        self.Value = 0
966
        self.DisplayName = LocalizedText()
967
        self.Description = LocalizedText()
968
        self._freeze = True
969
970 1
    def to_binary(self):
971
        packet = []
972
        packet.append(uatype_Int64.pack(self.Value))
973
        packet.append(self.DisplayName.to_binary())
974
        packet.append(self.Description.to_binary())
975
        return b''.join(packet)
976
977 1
    @staticmethod
978
    def from_binary(data):
979
        return EnumValueType(data)
980
981 1
    def _binary_init(self, data):
982
        self.Value = uatype_Int64.unpack(data.read(8))[0]
983
        self.DisplayName = LocalizedText.from_binary(data)
984
        self.Description = LocalizedText.from_binary(data)
985
986 1
    def __str__(self):
987
        return 'EnumValueType(' + 'Value:' + str(self.Value) + ', ' + \
988
               'DisplayName:' + str(self.DisplayName) + ', ' + \
989
               'Description:' + str(self.Description) + ')'
990
991 1
    __repr__ = __str__
992
993
994 1
class OptionSet(FrozenClass):
995
    '''
996
    This abstract Structured DataType is the base DataType for all DataTypes representing a bit mask.
997
998
    :ivar Value:
999
    :vartype Value: ByteString
1000
    :ivar ValidBits:
1001
    :vartype ValidBits: ByteString
1002
    '''
1003 1
    def __init__(self, binary=None):
1004
        if binary is not None:
1005
            self._binary_init(binary)
1006
            self._freeze = True
1007
            return
1008
        self.Value = b''
1009
        self.ValidBits = b''
1010
        self._freeze = True
1011
1012 1
    def to_binary(self):
1013
        packet = []
1014
        packet.append(pack_bytes(self.Value))
1015
        packet.append(pack_bytes(self.ValidBits))
1016
        return b''.join(packet)
1017
1018 1
    @staticmethod
1019
    def from_binary(data):
1020
        return OptionSet(data)
1021
1022 1
    def _binary_init(self, data):
1023
        self.Value = unpack_bytes(data)
1024
        self.ValidBits = unpack_bytes(data)
1025
1026 1
    def __str__(self):
1027
        return 'OptionSet(' + 'Value:' + str(self.Value) + ', ' + \
1028
               'ValidBits:' + str(self.ValidBits) + ')'
1029
1030 1
    __repr__ = __str__
1031
1032
1033 1
class Union(FrozenClass):
1034
    '''
1035
    This abstract DataType is the base DataType for all union DataTypes.
1036
1037
    '''
1038 1
    def __init__(self, binary=None):
1039
        if binary is not None:
1040
            self._binary_init(binary)
1041
            self._freeze = True
1042
            return
1043
        self._freeze = True
1044
1045 1
    def to_binary(self):
1046
        packet = []
1047
        return b''.join(packet)
1048
1049 1
    @staticmethod
1050
    def from_binary(data):
1051
        return Union(data)
1052
1053 1
    def _binary_init(self, data):
1054
        pass
1055
1056 1
    def __str__(self):
1057
        return 'Union(' +  + ')'
1058
1059 1
    __repr__ = __str__
1060
1061
1062 1
class TimeZoneDataType(FrozenClass):
1063
    '''
1064
    :ivar Offset:
1065
    :vartype Offset: Int16
1066
    :ivar DaylightSavingInOffset:
1067
    :vartype DaylightSavingInOffset: Boolean
1068
    '''
1069 1
    def __init__(self, binary=None):
1070
        if binary is not None:
1071
            self._binary_init(binary)
1072
            self._freeze = True
1073
            return
1074
        self.Offset = 0
1075
        self.DaylightSavingInOffset = True
1076
        self._freeze = True
1077
1078 1
    def to_binary(self):
1079
        packet = []
1080
        packet.append(uatype_Int16.pack(self.Offset))
1081
        packet.append(uatype_Boolean.pack(self.DaylightSavingInOffset))
1082
        return b''.join(packet)
1083
1084 1
    @staticmethod
1085
    def from_binary(data):
1086
        return TimeZoneDataType(data)
1087
1088 1
    def _binary_init(self, data):
1089
        self.Offset = uatype_Int16.unpack(data.read(2))[0]
1090
        self.DaylightSavingInOffset = uatype_Boolean.unpack(data.read(1))[0]
1091
1092 1
    def __str__(self):
1093
        return 'TimeZoneDataType(' + 'Offset:' + str(self.Offset) + ', ' + \
1094
               'DaylightSavingInOffset:' + str(self.DaylightSavingInOffset) + ')'
1095
1096 1
    __repr__ = __str__
1097
1098
1099 1
class ApplicationDescription(FrozenClass):
1100
    '''
1101
    Describes an application and how to find it.
1102
1103
    :ivar ApplicationUri:
1104
    :vartype ApplicationUri: String
1105
    :ivar ProductUri:
1106
    :vartype ProductUri: String
1107
    :ivar ApplicationName:
1108
    :vartype ApplicationName: LocalizedText
1109
    :ivar ApplicationType:
1110
    :vartype ApplicationType: ApplicationType
1111
    :ivar GatewayServerUri:
1112
    :vartype GatewayServerUri: String
1113
    :ivar DiscoveryProfileUri:
1114
    :vartype DiscoveryProfileUri: String
1115
    :ivar DiscoveryUrls:
1116
    :vartype DiscoveryUrls: String
1117
    '''
1118 1
    def __init__(self, binary=None):
1119 1
        if binary is not None:
1120 1
            self._binary_init(binary)
1121 1
            self._freeze = True
1122 1
            return
1123 1
        self.ApplicationUri = ''
1124 1
        self.ProductUri = ''
1125 1
        self.ApplicationName = LocalizedText()
1126 1
        self.ApplicationType = ApplicationType(0)
1127 1
        self.GatewayServerUri = ''
1128 1
        self.DiscoveryProfileUri = ''
1129 1
        self.DiscoveryUrls = []
1130 1
        self._freeze = True
1131
1132 1
    def to_binary(self):
1133 1
        packet = []
1134 1
        packet.append(pack_string(self.ApplicationUri))
1135 1
        packet.append(pack_string(self.ProductUri))
1136 1
        packet.append(self.ApplicationName.to_binary())
1137 1
        packet.append(uatype_UInt32.pack(self.ApplicationType.value))
1138 1
        packet.append(pack_string(self.GatewayServerUri))
1139 1
        packet.append(pack_string(self.DiscoveryProfileUri))
1140 1
        packet.append(uatype_Int32.pack(len(self.DiscoveryUrls)))
1141 1
        for fieldname in self.DiscoveryUrls:
1142 1
            packet.append(pack_string(fieldname))
1143 1
        return b''.join(packet)
1144
1145 1
    @staticmethod
1146
    def from_binary(data):
1147 1
        return ApplicationDescription(data)
1148
1149 1
    def _binary_init(self, data):
1150 1
        self.ApplicationUri = unpack_string(data)
1151 1
        self.ProductUri = unpack_string(data)
1152 1
        self.ApplicationName = LocalizedText.from_binary(data)
1153 1
        self.ApplicationType = ApplicationType(uatype_UInt32.unpack(data.read(4))[0])
1154 1
        self.GatewayServerUri = unpack_string(data)
1155 1
        self.DiscoveryProfileUri = unpack_string(data)
1156 1
        self.DiscoveryUrls = unpack_uatype_array('String', data)
1157
1158 1
    def __str__(self):
1159
        return 'ApplicationDescription(' + 'ApplicationUri:' + str(self.ApplicationUri) + ', ' + \
1160
               'ProductUri:' + str(self.ProductUri) + ', ' + \
1161
               'ApplicationName:' + str(self.ApplicationName) + ', ' + \
1162
               'ApplicationType:' + str(self.ApplicationType) + ', ' + \
1163
               'GatewayServerUri:' + str(self.GatewayServerUri) + ', ' + \
1164
               'DiscoveryProfileUri:' + str(self.DiscoveryProfileUri) + ', ' + \
1165
               'DiscoveryUrls:' + str(self.DiscoveryUrls) + ')'
1166
1167 1
    __repr__ = __str__
1168
1169
1170 1
class RequestHeader(FrozenClass):
1171
    '''
1172
    The header passed with every server request.
1173
1174
    :ivar AuthenticationToken:
1175
    :vartype AuthenticationToken: NodeId
1176
    :ivar Timestamp:
1177
    :vartype Timestamp: DateTime
1178
    :ivar RequestHandle:
1179
    :vartype RequestHandle: UInt32
1180
    :ivar ReturnDiagnostics:
1181
    :vartype ReturnDiagnostics: UInt32
1182
    :ivar AuditEntryId:
1183
    :vartype AuditEntryId: String
1184
    :ivar TimeoutHint:
1185
    :vartype TimeoutHint: UInt32
1186
    :ivar AdditionalHeader:
1187
    :vartype AdditionalHeader: ExtensionObject
1188
    '''
1189 1
    def __init__(self, binary=None):
1190 1
        if binary is not None:
1191 1
            self._binary_init(binary)
1192 1
            self._freeze = True
1193 1
            return
1194 1
        self.AuthenticationToken = NodeId()
1195 1
        self.Timestamp = datetime.now()
1196 1
        self.RequestHandle = 0
1197 1
        self.ReturnDiagnostics = 0
1198 1
        self.AuditEntryId = ''
1199 1
        self.TimeoutHint = 0
1200 1
        self.AdditionalHeader = None
1201 1
        self._freeze = True
1202
1203 1
    def to_binary(self):
1204 1
        packet = []
1205 1
        packet.append(self.AuthenticationToken.to_binary())
1206 1
        packet.append(pack_datetime(self.Timestamp))
1207 1
        packet.append(uatype_UInt32.pack(self.RequestHandle))
1208 1
        packet.append(uatype_UInt32.pack(self.ReturnDiagnostics))
1209 1
        packet.append(pack_string(self.AuditEntryId))
1210 1
        packet.append(uatype_UInt32.pack(self.TimeoutHint))
1211 1
        packet.append(extensionobject_to_binary(self.AdditionalHeader))
1212 1
        return b''.join(packet)
1213
1214 1
    @staticmethod
1215
    def from_binary(data):
1216 1
        return RequestHeader(data)
1217
1218 1
    def _binary_init(self, data):
1219 1
        self.AuthenticationToken = NodeId.from_binary(data)
1220 1
        self.Timestamp = unpack_datetime(data)
1221 1
        self.RequestHandle = uatype_UInt32.unpack(data.read(4))[0]
1222 1
        self.ReturnDiagnostics = uatype_UInt32.unpack(data.read(4))[0]
1223 1
        self.AuditEntryId = unpack_string(data)
1224 1
        self.TimeoutHint = uatype_UInt32.unpack(data.read(4))[0]
1225 1
        self.AdditionalHeader = extensionobject_from_binary(data)
1226
1227 1
    def __str__(self):
1228
        return 'RequestHeader(' + 'AuthenticationToken:' + str(self.AuthenticationToken) + ', ' + \
1229
               'Timestamp:' + str(self.Timestamp) + ', ' + \
1230
               'RequestHandle:' + str(self.RequestHandle) + ', ' + \
1231
               'ReturnDiagnostics:' + str(self.ReturnDiagnostics) + ', ' + \
1232
               'AuditEntryId:' + str(self.AuditEntryId) + ', ' + \
1233
               'TimeoutHint:' + str(self.TimeoutHint) + ', ' + \
1234
               'AdditionalHeader:' + str(self.AdditionalHeader) + ')'
1235
1236 1
    __repr__ = __str__
1237
1238
1239 1
class ResponseHeader(FrozenClass):
1240
    '''
1241
    The header passed with every server response.
1242
1243
    :ivar Timestamp:
1244
    :vartype Timestamp: DateTime
1245
    :ivar RequestHandle:
1246
    :vartype RequestHandle: UInt32
1247
    :ivar ServiceResult:
1248
    :vartype ServiceResult: StatusCode
1249
    :ivar ServiceDiagnostics:
1250
    :vartype ServiceDiagnostics: DiagnosticInfo
1251
    :ivar StringTable:
1252
    :vartype StringTable: String
1253
    :ivar AdditionalHeader:
1254
    :vartype AdditionalHeader: ExtensionObject
1255
    '''
1256 1
    def __init__(self, binary=None):
1257 1
        if binary is not None:
1258 1
            self._binary_init(binary)
1259 1
            self._freeze = True
1260 1
            return
1261 1
        self.Timestamp = datetime.now()
1262 1
        self.RequestHandle = 0
1263 1
        self.ServiceResult = StatusCode()
1264 1
        self.ServiceDiagnostics = DiagnosticInfo()
1265 1
        self.StringTable = []
1266 1
        self.AdditionalHeader = None
1267 1
        self._freeze = True
1268
1269 1
    def to_binary(self):
1270 1
        packet = []
1271 1
        packet.append(pack_datetime(self.Timestamp))
1272 1
        packet.append(uatype_UInt32.pack(self.RequestHandle))
1273 1
        packet.append(self.ServiceResult.to_binary())
1274 1
        packet.append(self.ServiceDiagnostics.to_binary())
1275 1
        packet.append(uatype_Int32.pack(len(self.StringTable)))
1276 1
        for fieldname in self.StringTable:
1277
            packet.append(pack_string(fieldname))
1278 1
        packet.append(extensionobject_to_binary(self.AdditionalHeader))
1279 1
        return b''.join(packet)
1280
1281 1
    @staticmethod
1282
    def from_binary(data):
1283 1
        return ResponseHeader(data)
1284
1285 1
    def _binary_init(self, data):
1286 1
        self.Timestamp = unpack_datetime(data)
1287 1
        self.RequestHandle = uatype_UInt32.unpack(data.read(4))[0]
1288 1
        self.ServiceResult = StatusCode.from_binary(data)
1289 1
        self.ServiceDiagnostics = DiagnosticInfo.from_binary(data)
1290 1
        self.StringTable = unpack_uatype_array('String', data)
1291 1
        self.AdditionalHeader = extensionobject_from_binary(data)
1292
1293 1
    def __str__(self):
1294
        return 'ResponseHeader(' + 'Timestamp:' + str(self.Timestamp) + ', ' + \
1295
               'RequestHandle:' + str(self.RequestHandle) + ', ' + \
1296
               'ServiceResult:' + str(self.ServiceResult) + ', ' + \
1297
               'ServiceDiagnostics:' + str(self.ServiceDiagnostics) + ', ' + \
1298
               'StringTable:' + str(self.StringTable) + ', ' + \
1299
               'AdditionalHeader:' + str(self.AdditionalHeader) + ')'
1300
1301 1
    __repr__ = __str__
1302
1303
1304 1
class ServiceFault(FrozenClass):
1305
    '''
1306
    The response returned by all services when there is a service level error.
1307
1308
    :ivar TypeId:
1309
    :vartype TypeId: NodeId
1310
    :ivar ResponseHeader:
1311
    :vartype ResponseHeader: ResponseHeader
1312
    '''
1313 1
    def __init__(self, binary=None):
1314 1
        if binary is not None:
1315
            self._binary_init(binary)
1316
            self._freeze = True
1317
            return
1318 1
        self.TypeId = FourByteNodeId(ObjectIds.ServiceFault_Encoding_DefaultBinary)
1319 1
        self.ResponseHeader = ResponseHeader()
1320 1
        self._freeze = True
1321
1322 1
    def to_binary(self):
1323 1
        packet = []
1324 1
        packet.append(self.TypeId.to_binary())
1325 1
        packet.append(self.ResponseHeader.to_binary())
1326 1
        return b''.join(packet)
1327
1328 1
    @staticmethod
1329
    def from_binary(data):
1330
        return ServiceFault(data)
1331
1332 1
    def _binary_init(self, data):
1333
        self.TypeId = NodeId.from_binary(data)
1334
        self.ResponseHeader = ResponseHeader.from_binary(data)
1335
1336 1
    def __str__(self):
1337
        return 'ServiceFault(' + 'TypeId:' + str(self.TypeId) + ', ' + \
1338
               'ResponseHeader:' + str(self.ResponseHeader) + ')'
1339
1340 1
    __repr__ = __str__
1341
1342
1343 1
class FindServersParameters(FrozenClass):
1344
    '''
1345
    :ivar EndpointUrl:
1346
    :vartype EndpointUrl: String
1347
    :ivar LocaleIds:
1348
    :vartype LocaleIds: String
1349
    :ivar ServerUris:
1350
    :vartype ServerUris: String
1351
    '''
1352 1
    def __init__(self, binary=None):
1353 1
        if binary is not None:
1354 1
            self._binary_init(binary)
1355 1
            self._freeze = True
1356 1
            return
1357 1
        self.EndpointUrl = ''
1358 1
        self.LocaleIds = []
1359 1
        self.ServerUris = []
1360 1
        self._freeze = True
1361
1362 1
    def to_binary(self):
1363 1
        packet = []
1364 1
        packet.append(pack_string(self.EndpointUrl))
1365 1
        packet.append(uatype_Int32.pack(len(self.LocaleIds)))
1366 1
        for fieldname in self.LocaleIds:
1367
            packet.append(pack_string(fieldname))
1368 1
        packet.append(uatype_Int32.pack(len(self.ServerUris)))
1369 1
        for fieldname in self.ServerUris:
1370 1
            packet.append(pack_string(fieldname))
1371 1
        return b''.join(packet)
1372
1373 1
    @staticmethod
1374
    def from_binary(data):
1375 1
        return FindServersParameters(data)
1376
1377 1
    def _binary_init(self, data):
1378 1
        self.EndpointUrl = unpack_string(data)
1379 1
        self.LocaleIds = unpack_uatype_array('String', data)
1380 1
        self.ServerUris = unpack_uatype_array('String', data)
1381
1382 1
    def __str__(self):
1383
        return 'FindServersParameters(' + 'EndpointUrl:' + str(self.EndpointUrl) + ', ' + \
1384
               'LocaleIds:' + str(self.LocaleIds) + ', ' + \
1385
               'ServerUris:' + str(self.ServerUris) + ')'
1386
1387 1
    __repr__ = __str__
1388
1389
1390 1
class FindServersRequest(FrozenClass):
1391
    '''
1392
    Finds the servers known to the discovery server.
1393
1394
    :ivar TypeId:
1395
    :vartype TypeId: NodeId
1396
    :ivar RequestHeader:
1397
    :vartype RequestHeader: RequestHeader
1398
    :ivar Parameters:
1399
    :vartype Parameters: FindServersParameters
1400
    '''
1401 1
    def __init__(self, binary=None):
1402 1
        if binary is not None:
1403
            self._binary_init(binary)
1404
            self._freeze = True
1405
            return
1406 1
        self.TypeId = FourByteNodeId(ObjectIds.FindServersRequest_Encoding_DefaultBinary)
1407 1
        self.RequestHeader = RequestHeader()
1408 1
        self.Parameters = FindServersParameters()
1409 1
        self._freeze = True
1410
1411 1
    def to_binary(self):
1412 1
        packet = []
1413 1
        packet.append(self.TypeId.to_binary())
1414 1
        packet.append(self.RequestHeader.to_binary())
1415 1
        packet.append(self.Parameters.to_binary())
1416 1
        return b''.join(packet)
1417
1418 1
    @staticmethod
1419
    def from_binary(data):
1420
        return FindServersRequest(data)
1421
1422 1
    def _binary_init(self, data):
1423
        self.TypeId = NodeId.from_binary(data)
1424
        self.RequestHeader = RequestHeader.from_binary(data)
1425
        self.Parameters = FindServersParameters.from_binary(data)
1426
1427 1
    def __str__(self):
1428
        return 'FindServersRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
1429
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
1430
               'Parameters:' + str(self.Parameters) + ')'
1431
1432 1
    __repr__ = __str__
1433
1434
1435 1
class FindServersResponse(FrozenClass):
1436
    '''
1437
    Finds the servers known to the discovery server.
1438
1439
    :ivar TypeId:
1440
    :vartype TypeId: NodeId
1441
    :ivar ResponseHeader:
1442
    :vartype ResponseHeader: ResponseHeader
1443
    :ivar Servers:
1444
    :vartype Servers: ApplicationDescription
1445
    '''
1446 1
    def __init__(self, binary=None):
1447 1
        if binary is not None:
1448 1
            self._binary_init(binary)
1449 1
            self._freeze = True
1450 1
            return
1451 1
        self.TypeId = FourByteNodeId(ObjectIds.FindServersResponse_Encoding_DefaultBinary)
1452 1
        self.ResponseHeader = ResponseHeader()
1453 1
        self.Servers = []
1454 1
        self._freeze = True
1455
1456 1
    def to_binary(self):
1457 1
        packet = []
1458 1
        packet.append(self.TypeId.to_binary())
1459 1
        packet.append(self.ResponseHeader.to_binary())
1460 1
        packet.append(uatype_Int32.pack(len(self.Servers)))
1461 1
        for fieldname in self.Servers:
1462 1
            packet.append(fieldname.to_binary())
1463 1
        return b''.join(packet)
1464
1465 1
    @staticmethod
1466
    def from_binary(data):
1467 1
        return FindServersResponse(data)
1468
1469 1
    def _binary_init(self, data):
1470 1
        self.TypeId = NodeId.from_binary(data)
1471 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
1472 1
        length = uatype_Int32.unpack(data.read(4))[0]
1473 1
        array = []
1474 1
        if length != -1:
1475 1
            for _ in range(0, length):
1476 1
                array.append(ApplicationDescription.from_binary(data))
1477 1
        self.Servers = array
1478
1479 1
    def __str__(self):
1480
        return 'FindServersResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
1481
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
1482
               'Servers:' + str(self.Servers) + ')'
1483
1484 1
    __repr__ = __str__
1485
1486
1487 1
class ServerOnNetwork(FrozenClass):
1488
    '''
1489
    :ivar RecordId:
1490
    :vartype RecordId: UInt32
1491
    :ivar ServerName:
1492
    :vartype ServerName: String
1493
    :ivar DiscoveryUrl:
1494
    :vartype DiscoveryUrl: String
1495
    :ivar ServerCapabilities:
1496
    :vartype ServerCapabilities: String
1497
    '''
1498 1
    def __init__(self, binary=None):
1499
        if binary is not None:
1500
            self._binary_init(binary)
1501
            self._freeze = True
1502
            return
1503
        self.RecordId = 0
1504
        self.ServerName = ''
1505
        self.DiscoveryUrl = ''
1506
        self.ServerCapabilities = []
1507
        self._freeze = True
1508
1509 1
    def to_binary(self):
1510
        packet = []
1511
        packet.append(uatype_UInt32.pack(self.RecordId))
1512
        packet.append(pack_string(self.ServerName))
1513
        packet.append(pack_string(self.DiscoveryUrl))
1514
        packet.append(uatype_Int32.pack(len(self.ServerCapabilities)))
1515
        for fieldname in self.ServerCapabilities:
1516
            packet.append(pack_string(fieldname))
1517
        return b''.join(packet)
1518
1519 1
    @staticmethod
1520
    def from_binary(data):
1521
        return ServerOnNetwork(data)
1522
1523 1
    def _binary_init(self, data):
1524
        self.RecordId = uatype_UInt32.unpack(data.read(4))[0]
1525
        self.ServerName = unpack_string(data)
1526
        self.DiscoveryUrl = unpack_string(data)
1527
        self.ServerCapabilities = unpack_uatype_array('String', data)
1528
1529 1
    def __str__(self):
1530
        return 'ServerOnNetwork(' + 'RecordId:' + str(self.RecordId) + ', ' + \
1531
               'ServerName:' + str(self.ServerName) + ', ' + \
1532
               'DiscoveryUrl:' + str(self.DiscoveryUrl) + ', ' + \
1533
               'ServerCapabilities:' + str(self.ServerCapabilities) + ')'
1534
1535 1
    __repr__ = __str__
1536
1537
1538 1
class FindServersOnNetworkParameters(FrozenClass):
1539
    '''
1540
    :ivar StartingRecordId:
1541
    :vartype StartingRecordId: UInt32
1542
    :ivar MaxRecordsToReturn:
1543
    :vartype MaxRecordsToReturn: UInt32
1544
    :ivar ServerCapabilityFilter:
1545
    :vartype ServerCapabilityFilter: String
1546
    '''
1547 1
    def __init__(self, binary=None):
1548
        if binary is not None:
1549
            self._binary_init(binary)
1550
            self._freeze = True
1551
            return
1552
        self.StartingRecordId = 0
1553
        self.MaxRecordsToReturn = 0
1554
        self.ServerCapabilityFilter = []
1555
        self._freeze = True
1556
1557 1
    def to_binary(self):
1558
        packet = []
1559
        packet.append(uatype_UInt32.pack(self.StartingRecordId))
1560
        packet.append(uatype_UInt32.pack(self.MaxRecordsToReturn))
1561
        packet.append(uatype_Int32.pack(len(self.ServerCapabilityFilter)))
1562
        for fieldname in self.ServerCapabilityFilter:
1563
            packet.append(pack_string(fieldname))
1564
        return b''.join(packet)
1565
1566 1
    @staticmethod
1567
    def from_binary(data):
1568
        return FindServersOnNetworkParameters(data)
1569
1570 1
    def _binary_init(self, data):
1571
        self.StartingRecordId = uatype_UInt32.unpack(data.read(4))[0]
1572
        self.MaxRecordsToReturn = uatype_UInt32.unpack(data.read(4))[0]
1573
        self.ServerCapabilityFilter = unpack_uatype_array('String', data)
1574
1575 1
    def __str__(self):
1576
        return 'FindServersOnNetworkParameters(' + 'StartingRecordId:' + str(self.StartingRecordId) + ', ' + \
1577
               'MaxRecordsToReturn:' + str(self.MaxRecordsToReturn) + ', ' + \
1578
               'ServerCapabilityFilter:' + str(self.ServerCapabilityFilter) + ')'
1579
1580 1
    __repr__ = __str__
1581
1582
1583 1
class FindServersOnNetworkRequest(FrozenClass):
1584
    '''
1585
    :ivar TypeId:
1586
    :vartype TypeId: NodeId
1587
    :ivar RequestHeader:
1588
    :vartype RequestHeader: RequestHeader
1589
    :ivar Parameters:
1590
    :vartype Parameters: FindServersOnNetworkParameters
1591
    '''
1592 1
    def __init__(self, binary=None):
1593
        if binary is not None:
1594
            self._binary_init(binary)
1595
            self._freeze = True
1596
            return
1597
        self.TypeId = FourByteNodeId(ObjectIds.FindServersOnNetworkRequest_Encoding_DefaultBinary)
1598
        self.RequestHeader = RequestHeader()
1599
        self.Parameters = FindServersOnNetworkParameters()
1600
        self._freeze = True
1601
1602 1
    def to_binary(self):
1603
        packet = []
1604
        packet.append(self.TypeId.to_binary())
1605
        packet.append(self.RequestHeader.to_binary())
1606
        packet.append(self.Parameters.to_binary())
1607
        return b''.join(packet)
1608
1609 1
    @staticmethod
1610
    def from_binary(data):
1611
        return FindServersOnNetworkRequest(data)
1612
1613 1
    def _binary_init(self, data):
1614
        self.TypeId = NodeId.from_binary(data)
1615
        self.RequestHeader = RequestHeader.from_binary(data)
1616
        self.Parameters = FindServersOnNetworkParameters.from_binary(data)
1617
1618 1
    def __str__(self):
1619
        return 'FindServersOnNetworkRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
1620
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
1621
               'Parameters:' + str(self.Parameters) + ')'
1622
1623 1
    __repr__ = __str__
1624
1625
1626 1
class FindServersOnNetworkResult(FrozenClass):
1627
    '''
1628
    :ivar LastCounterResetTime:
1629
    :vartype LastCounterResetTime: DateTime
1630
    :ivar Servers:
1631
    :vartype Servers: ServerOnNetwork
1632
    '''
1633 1
    def __init__(self, binary=None):
1634
        if binary is not None:
1635
            self._binary_init(binary)
1636
            self._freeze = True
1637
            return
1638
        self.LastCounterResetTime = datetime.now()
1639
        self.Servers = []
1640
        self._freeze = True
1641
1642 1
    def to_binary(self):
1643
        packet = []
1644
        packet.append(pack_datetime(self.LastCounterResetTime))
1645
        packet.append(uatype_Int32.pack(len(self.Servers)))
1646
        for fieldname in self.Servers:
1647
            packet.append(fieldname.to_binary())
1648
        return b''.join(packet)
1649
1650 1
    @staticmethod
1651
    def from_binary(data):
1652
        return FindServersOnNetworkResult(data)
1653
1654 1
    def _binary_init(self, data):
1655
        self.LastCounterResetTime = unpack_datetime(data)
1656
        length = uatype_Int32.unpack(data.read(4))[0]
1657
        array = []
1658
        if length != -1:
1659
            for _ in range(0, length):
1660
                array.append(ServerOnNetwork.from_binary(data))
1661
        self.Servers = array
1662
1663 1
    def __str__(self):
1664
        return 'FindServersOnNetworkResult(' + 'LastCounterResetTime:' + str(self.LastCounterResetTime) + ', ' + \
1665
               'Servers:' + str(self.Servers) + ')'
1666
1667 1
    __repr__ = __str__
1668
1669
1670 1
class FindServersOnNetworkResponse(FrozenClass):
1671
    '''
1672
    :ivar TypeId:
1673
    :vartype TypeId: NodeId
1674
    :ivar ResponseHeader:
1675
    :vartype ResponseHeader: ResponseHeader
1676
    :ivar Parameters:
1677
    :vartype Parameters: FindServersOnNetworkResult
1678
    '''
1679 1
    def __init__(self, binary=None):
1680
        if binary is not None:
1681
            self._binary_init(binary)
1682
            self._freeze = True
1683
            return
1684
        self.TypeId = FourByteNodeId(ObjectIds.FindServersOnNetworkResponse_Encoding_DefaultBinary)
1685
        self.ResponseHeader = ResponseHeader()
1686
        self.Parameters = FindServersOnNetworkResult()
1687
        self._freeze = True
1688
1689 1
    def to_binary(self):
1690
        packet = []
1691
        packet.append(self.TypeId.to_binary())
1692
        packet.append(self.ResponseHeader.to_binary())
1693
        packet.append(self.Parameters.to_binary())
1694
        return b''.join(packet)
1695
1696 1
    @staticmethod
1697
    def from_binary(data):
1698
        return FindServersOnNetworkResponse(data)
1699
1700 1
    def _binary_init(self, data):
1701
        self.TypeId = NodeId.from_binary(data)
1702
        self.ResponseHeader = ResponseHeader.from_binary(data)
1703
        self.Parameters = FindServersOnNetworkResult.from_binary(data)
1704
1705 1
    def __str__(self):
1706
        return 'FindServersOnNetworkResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
1707
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
1708
               'Parameters:' + str(self.Parameters) + ')'
1709
1710 1
    __repr__ = __str__
1711
1712
1713 1
class UserTokenPolicy(FrozenClass):
1714
    '''
1715
    Describes a user token that can be used with a server.
1716
1717
    :ivar PolicyId:
1718
    :vartype PolicyId: String
1719
    :ivar TokenType:
1720
    :vartype TokenType: UserTokenType
1721
    :ivar IssuedTokenType:
1722
    :vartype IssuedTokenType: String
1723
    :ivar IssuerEndpointUrl:
1724
    :vartype IssuerEndpointUrl: String
1725
    :ivar SecurityPolicyUri:
1726
    :vartype SecurityPolicyUri: String
1727
    '''
1728 1
    def __init__(self, binary=None):
1729 1
        if binary is not None:
1730 1
            self._binary_init(binary)
1731 1
            self._freeze = True
1732 1
            return
1733 1
        self.PolicyId = ''
1734 1
        self.TokenType = UserTokenType(0)
1735 1
        self.IssuedTokenType = ''
1736 1
        self.IssuerEndpointUrl = ''
1737 1
        self.SecurityPolicyUri = ''
1738 1
        self._freeze = True
1739
1740 1
    def to_binary(self):
1741 1
        packet = []
1742 1
        packet.append(pack_string(self.PolicyId))
1743 1
        packet.append(uatype_UInt32.pack(self.TokenType.value))
1744 1
        packet.append(pack_string(self.IssuedTokenType))
1745 1
        packet.append(pack_string(self.IssuerEndpointUrl))
1746 1
        packet.append(pack_string(self.SecurityPolicyUri))
1747 1
        return b''.join(packet)
1748
1749 1
    @staticmethod
1750
    def from_binary(data):
1751 1
        return UserTokenPolicy(data)
1752
1753 1
    def _binary_init(self, data):
1754 1
        self.PolicyId = unpack_string(data)
1755 1
        self.TokenType = UserTokenType(uatype_UInt32.unpack(data.read(4))[0])
1756 1
        self.IssuedTokenType = unpack_string(data)
1757 1
        self.IssuerEndpointUrl = unpack_string(data)
1758 1
        self.SecurityPolicyUri = unpack_string(data)
1759
1760 1
    def __str__(self):
1761
        return 'UserTokenPolicy(' + 'PolicyId:' + str(self.PolicyId) + ', ' + \
1762
               'TokenType:' + str(self.TokenType) + ', ' + \
1763
               'IssuedTokenType:' + str(self.IssuedTokenType) + ', ' + \
1764
               'IssuerEndpointUrl:' + str(self.IssuerEndpointUrl) + ', ' + \
1765
               'SecurityPolicyUri:' + str(self.SecurityPolicyUri) + ')'
1766
1767 1
    __repr__ = __str__
1768
1769
1770 1
class EndpointDescription(FrozenClass):
1771
    '''
1772
    The description of a endpoint that can be used to access a server.
1773
1774
    :ivar EndpointUrl:
1775
    :vartype EndpointUrl: String
1776
    :ivar Server:
1777
    :vartype Server: ApplicationDescription
1778
    :ivar ServerCertificate:
1779
    :vartype ServerCertificate: ByteString
1780
    :ivar SecurityMode:
1781
    :vartype SecurityMode: MessageSecurityMode
1782
    :ivar SecurityPolicyUri:
1783
    :vartype SecurityPolicyUri: String
1784
    :ivar UserIdentityTokens:
1785
    :vartype UserIdentityTokens: UserTokenPolicy
1786
    :ivar TransportProfileUri:
1787
    :vartype TransportProfileUri: String
1788
    :ivar SecurityLevel:
1789
    :vartype SecurityLevel: Byte
1790
    '''
1791 1
    def __init__(self, binary=None):
1792 1
        if binary is not None:
1793 1
            self._binary_init(binary)
1794 1
            self._freeze = True
1795 1
            return
1796 1
        self.EndpointUrl = ''
1797 1
        self.Server = ApplicationDescription()
1798 1
        self.ServerCertificate = b''
1799 1
        self.SecurityMode = MessageSecurityMode(0)
1800 1
        self.SecurityPolicyUri = ''
1801 1
        self.UserIdentityTokens = []
1802 1
        self.TransportProfileUri = ''
1803 1
        self.SecurityLevel = 0
1804 1
        self._freeze = True
1805
1806 1
    def to_binary(self):
1807 1
        packet = []
1808 1
        packet.append(pack_string(self.EndpointUrl))
1809 1
        packet.append(self.Server.to_binary())
1810 1
        packet.append(pack_bytes(self.ServerCertificate))
1811 1
        packet.append(uatype_UInt32.pack(self.SecurityMode.value))
1812 1
        packet.append(pack_string(self.SecurityPolicyUri))
1813 1
        packet.append(uatype_Int32.pack(len(self.UserIdentityTokens)))
1814 1
        for fieldname in self.UserIdentityTokens:
1815 1
            packet.append(fieldname.to_binary())
1816 1
        packet.append(pack_string(self.TransportProfileUri))
1817 1
        packet.append(uatype_Byte.pack(self.SecurityLevel))
1818 1
        return b''.join(packet)
1819
1820 1
    @staticmethod
1821
    def from_binary(data):
1822 1
        return EndpointDescription(data)
1823
1824 1
    def _binary_init(self, data):
1825 1
        self.EndpointUrl = unpack_string(data)
1826 1
        self.Server = ApplicationDescription.from_binary(data)
1827 1
        self.ServerCertificate = unpack_bytes(data)
1828 1
        self.SecurityMode = MessageSecurityMode(uatype_UInt32.unpack(data.read(4))[0])
1829 1
        self.SecurityPolicyUri = unpack_string(data)
1830 1
        length = uatype_Int32.unpack(data.read(4))[0]
1831 1
        array = []
1832 1
        if length != -1:
1833 1
            for _ in range(0, length):
1834 1
                array.append(UserTokenPolicy.from_binary(data))
1835 1
        self.UserIdentityTokens = array
1836 1
        self.TransportProfileUri = unpack_string(data)
1837 1
        self.SecurityLevel = uatype_Byte.unpack(data.read(1))[0]
1838
1839 1
    def __str__(self):
1840
        return 'EndpointDescription(' + 'EndpointUrl:' + str(self.EndpointUrl) + ', ' + \
1841
               'Server:' + str(self.Server) + ', ' + \
1842
               'ServerCertificate:' + str(self.ServerCertificate) + ', ' + \
1843
               'SecurityMode:' + str(self.SecurityMode) + ', ' + \
1844
               'SecurityPolicyUri:' + str(self.SecurityPolicyUri) + ', ' + \
1845
               'UserIdentityTokens:' + str(self.UserIdentityTokens) + ', ' + \
1846
               'TransportProfileUri:' + str(self.TransportProfileUri) + ', ' + \
1847
               'SecurityLevel:' + str(self.SecurityLevel) + ')'
1848
1849 1
    __repr__ = __str__
1850
1851
1852 1
class GetEndpointsParameters(FrozenClass):
1853
    '''
1854
    :ivar EndpointUrl:
1855
    :vartype EndpointUrl: String
1856
    :ivar LocaleIds:
1857
    :vartype LocaleIds: String
1858
    :ivar ProfileUris:
1859
    :vartype ProfileUris: String
1860
    '''
1861 1
    def __init__(self, binary=None):
1862 1
        if binary is not None:
1863 1
            self._binary_init(binary)
1864 1
            self._freeze = True
1865 1
            return
1866 1
        self.EndpointUrl = ''
1867 1
        self.LocaleIds = []
1868 1
        self.ProfileUris = []
1869 1
        self._freeze = True
1870
1871 1
    def to_binary(self):
1872 1
        packet = []
1873 1
        packet.append(pack_string(self.EndpointUrl))
1874 1
        packet.append(uatype_Int32.pack(len(self.LocaleIds)))
1875 1
        for fieldname in self.LocaleIds:
1876
            packet.append(pack_string(fieldname))
1877 1
        packet.append(uatype_Int32.pack(len(self.ProfileUris)))
1878 1
        for fieldname in self.ProfileUris:
1879
            packet.append(pack_string(fieldname))
1880 1
        return b''.join(packet)
1881
1882 1
    @staticmethod
1883
    def from_binary(data):
1884 1
        return GetEndpointsParameters(data)
1885
1886 1
    def _binary_init(self, data):
1887 1
        self.EndpointUrl = unpack_string(data)
1888 1
        self.LocaleIds = unpack_uatype_array('String', data)
1889 1
        self.ProfileUris = unpack_uatype_array('String', data)
1890
1891 1
    def __str__(self):
1892
        return 'GetEndpointsParameters(' + 'EndpointUrl:' + str(self.EndpointUrl) + ', ' + \
1893
               'LocaleIds:' + str(self.LocaleIds) + ', ' + \
1894
               'ProfileUris:' + str(self.ProfileUris) + ')'
1895
1896 1
    __repr__ = __str__
1897
1898
1899 1
class GetEndpointsRequest(FrozenClass):
1900
    '''
1901
    Gets the endpoints used by the server.
1902
1903
    :ivar TypeId:
1904
    :vartype TypeId: NodeId
1905
    :ivar RequestHeader:
1906
    :vartype RequestHeader: RequestHeader
1907
    :ivar Parameters:
1908
    :vartype Parameters: GetEndpointsParameters
1909
    '''
1910 1
    def __init__(self, binary=None):
1911 1
        if binary is not None:
1912
            self._binary_init(binary)
1913
            self._freeze = True
1914
            return
1915 1
        self.TypeId = FourByteNodeId(ObjectIds.GetEndpointsRequest_Encoding_DefaultBinary)
1916 1
        self.RequestHeader = RequestHeader()
1917 1
        self.Parameters = GetEndpointsParameters()
1918 1
        self._freeze = True
1919
1920 1
    def to_binary(self):
1921 1
        packet = []
1922 1
        packet.append(self.TypeId.to_binary())
1923 1
        packet.append(self.RequestHeader.to_binary())
1924 1
        packet.append(self.Parameters.to_binary())
1925 1
        return b''.join(packet)
1926
1927 1
    @staticmethod
1928
    def from_binary(data):
1929
        return GetEndpointsRequest(data)
1930
1931 1
    def _binary_init(self, data):
1932
        self.TypeId = NodeId.from_binary(data)
1933
        self.RequestHeader = RequestHeader.from_binary(data)
1934
        self.Parameters = GetEndpointsParameters.from_binary(data)
1935
1936 1
    def __str__(self):
1937
        return 'GetEndpointsRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
1938
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
1939
               'Parameters:' + str(self.Parameters) + ')'
1940
1941 1
    __repr__ = __str__
1942
1943
1944 1
class GetEndpointsResponse(FrozenClass):
1945
    '''
1946
    Gets the endpoints used by the server.
1947
1948
    :ivar TypeId:
1949
    :vartype TypeId: NodeId
1950
    :ivar ResponseHeader:
1951
    :vartype ResponseHeader: ResponseHeader
1952
    :ivar Endpoints:
1953
    :vartype Endpoints: EndpointDescription
1954
    '''
1955 1
    def __init__(self, binary=None):
1956 1
        if binary is not None:
1957 1
            self._binary_init(binary)
1958 1
            self._freeze = True
1959 1
            return
1960 1
        self.TypeId = FourByteNodeId(ObjectIds.GetEndpointsResponse_Encoding_DefaultBinary)
1961 1
        self.ResponseHeader = ResponseHeader()
1962 1
        self.Endpoints = []
1963 1
        self._freeze = True
1964
1965 1
    def to_binary(self):
1966 1
        packet = []
1967 1
        packet.append(self.TypeId.to_binary())
1968 1
        packet.append(self.ResponseHeader.to_binary())
1969 1
        packet.append(uatype_Int32.pack(len(self.Endpoints)))
1970 1
        for fieldname in self.Endpoints:
1971 1
            packet.append(fieldname.to_binary())
1972 1
        return b''.join(packet)
1973
1974 1
    @staticmethod
1975
    def from_binary(data):
1976 1
        return GetEndpointsResponse(data)
1977
1978 1
    def _binary_init(self, data):
1979 1
        self.TypeId = NodeId.from_binary(data)
1980 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
1981 1
        length = uatype_Int32.unpack(data.read(4))[0]
1982 1
        array = []
1983 1
        if length != -1:
1984 1
            for _ in range(0, length):
1985 1
                array.append(EndpointDescription.from_binary(data))
1986 1
        self.Endpoints = array
1987
1988 1
    def __str__(self):
1989
        return 'GetEndpointsResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
1990
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
1991
               'Endpoints:' + str(self.Endpoints) + ')'
1992
1993 1
    __repr__ = __str__
1994
1995
1996 1
class RegisteredServer(FrozenClass):
1997
    '''
1998
    The information required to register a server with a discovery server.
1999
2000
    :ivar ServerUri:
2001
    :vartype ServerUri: String
2002
    :ivar ProductUri:
2003
    :vartype ProductUri: String
2004
    :ivar ServerNames:
2005
    :vartype ServerNames: LocalizedText
2006
    :ivar ServerType:
2007
    :vartype ServerType: ApplicationType
2008
    :ivar GatewayServerUri:
2009
    :vartype GatewayServerUri: String
2010
    :ivar DiscoveryUrls:
2011
    :vartype DiscoveryUrls: String
2012
    :ivar SemaphoreFilePath:
2013
    :vartype SemaphoreFilePath: String
2014
    :ivar IsOnline:
2015
    :vartype IsOnline: Boolean
2016
    '''
2017 1
    def __init__(self, binary=None):
2018 1
        if binary is not None:
2019 1
            self._binary_init(binary)
2020 1
            self._freeze = True
2021 1
            return
2022 1
        self.ServerUri = ''
2023 1
        self.ProductUri = ''
2024 1
        self.ServerNames = []
2025 1
        self.ServerType = ApplicationType(0)
2026 1
        self.GatewayServerUri = ''
2027 1
        self.DiscoveryUrls = []
2028 1
        self.SemaphoreFilePath = ''
2029 1
        self.IsOnline = True
2030 1
        self._freeze = True
2031
2032 1
    def to_binary(self):
2033 1
        packet = []
2034 1
        packet.append(pack_string(self.ServerUri))
2035 1
        packet.append(pack_string(self.ProductUri))
2036 1
        packet.append(uatype_Int32.pack(len(self.ServerNames)))
2037 1
        for fieldname in self.ServerNames:
2038 1
            packet.append(fieldname.to_binary())
2039 1
        packet.append(uatype_UInt32.pack(self.ServerType.value))
2040 1
        packet.append(pack_string(self.GatewayServerUri))
2041 1
        packet.append(uatype_Int32.pack(len(self.DiscoveryUrls)))
2042 1
        for fieldname in self.DiscoveryUrls:
2043 1
            packet.append(pack_string(fieldname))
2044 1
        packet.append(pack_string(self.SemaphoreFilePath))
2045 1
        packet.append(uatype_Boolean.pack(self.IsOnline))
2046 1
        return b''.join(packet)
2047
2048 1
    @staticmethod
2049
    def from_binary(data):
2050 1
        return RegisteredServer(data)
2051
2052 1
    def _binary_init(self, data):
2053 1
        self.ServerUri = unpack_string(data)
2054 1
        self.ProductUri = unpack_string(data)
2055 1
        length = uatype_Int32.unpack(data.read(4))[0]
2056 1
        array = []
2057 1
        if length != -1:
2058 1
            for _ in range(0, length):
2059 1
                array.append(LocalizedText.from_binary(data))
2060 1
        self.ServerNames = array
2061 1
        self.ServerType = ApplicationType(uatype_UInt32.unpack(data.read(4))[0])
2062 1
        self.GatewayServerUri = unpack_string(data)
2063 1
        self.DiscoveryUrls = unpack_uatype_array('String', data)
2064 1
        self.SemaphoreFilePath = unpack_string(data)
2065 1
        self.IsOnline = uatype_Boolean.unpack(data.read(1))[0]
2066
2067 1
    def __str__(self):
2068
        return 'RegisteredServer(' + 'ServerUri:' + str(self.ServerUri) + ', ' + \
2069
               'ProductUri:' + str(self.ProductUri) + ', ' + \
2070
               'ServerNames:' + str(self.ServerNames) + ', ' + \
2071
               'ServerType:' + str(self.ServerType) + ', ' + \
2072
               'GatewayServerUri:' + str(self.GatewayServerUri) + ', ' + \
2073
               'DiscoveryUrls:' + str(self.DiscoveryUrls) + ', ' + \
2074
               'SemaphoreFilePath:' + str(self.SemaphoreFilePath) + ', ' + \
2075
               'IsOnline:' + str(self.IsOnline) + ')'
2076
2077 1
    __repr__ = __str__
2078
2079
2080 1
class RegisterServerRequest(FrozenClass):
2081
    '''
2082
    Registers a server with the discovery server.
2083
2084
    :ivar TypeId:
2085
    :vartype TypeId: NodeId
2086
    :ivar RequestHeader:
2087
    :vartype RequestHeader: RequestHeader
2088
    :ivar Server:
2089
    :vartype Server: RegisteredServer
2090
    '''
2091 1
    def __init__(self, binary=None):
2092 1
        if binary is not None:
2093
            self._binary_init(binary)
2094
            self._freeze = True
2095
            return
2096 1
        self.TypeId = FourByteNodeId(ObjectIds.RegisterServerRequest_Encoding_DefaultBinary)
2097 1
        self.RequestHeader = RequestHeader()
2098 1
        self.Server = RegisteredServer()
2099 1
        self._freeze = True
2100
2101 1
    def to_binary(self):
2102 1
        packet = []
2103 1
        packet.append(self.TypeId.to_binary())
2104 1
        packet.append(self.RequestHeader.to_binary())
2105 1
        packet.append(self.Server.to_binary())
2106 1
        return b''.join(packet)
2107
2108 1
    @staticmethod
2109
    def from_binary(data):
2110
        return RegisterServerRequest(data)
2111
2112 1
    def _binary_init(self, data):
2113
        self.TypeId = NodeId.from_binary(data)
2114
        self.RequestHeader = RequestHeader.from_binary(data)
2115
        self.Server = RegisteredServer.from_binary(data)
2116
2117 1
    def __str__(self):
2118
        return 'RegisterServerRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
2119
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
2120
               'Server:' + str(self.Server) + ')'
2121
2122 1
    __repr__ = __str__
2123
2124
2125 1
class RegisterServerResponse(FrozenClass):
2126
    '''
2127
    Registers a server with the discovery server.
2128
2129
    :ivar TypeId:
2130
    :vartype TypeId: NodeId
2131
    :ivar ResponseHeader:
2132
    :vartype ResponseHeader: ResponseHeader
2133
    '''
2134 1
    def __init__(self, binary=None):
2135 1
        if binary is not None:
2136 1
            self._binary_init(binary)
2137 1
            self._freeze = True
2138 1
            return
2139 1
        self.TypeId = FourByteNodeId(ObjectIds.RegisterServerResponse_Encoding_DefaultBinary)
2140 1
        self.ResponseHeader = ResponseHeader()
2141 1
        self._freeze = True
2142
2143 1
    def to_binary(self):
2144 1
        packet = []
2145 1
        packet.append(self.TypeId.to_binary())
2146 1
        packet.append(self.ResponseHeader.to_binary())
2147 1
        return b''.join(packet)
2148
2149 1
    @staticmethod
2150
    def from_binary(data):
2151 1
        return RegisterServerResponse(data)
2152
2153 1
    def _binary_init(self, data):
2154 1
        self.TypeId = NodeId.from_binary(data)
2155 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
2156
2157 1
    def __str__(self):
2158
        return 'RegisterServerResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
2159
               'ResponseHeader:' + str(self.ResponseHeader) + ')'
2160
2161 1
    __repr__ = __str__
2162
2163
2164 1
class DiscoveryConfiguration(FrozenClass):
2165
    '''
2166
    A base type for discovery configuration information.
2167
2168
    '''
2169 1
    def __init__(self, binary=None):
2170
        if binary is not None:
2171
            self._binary_init(binary)
2172
            self._freeze = True
2173
            return
2174
        self._freeze = True
2175
2176 1
    def to_binary(self):
2177
        packet = []
2178
        return b''.join(packet)
2179
2180 1
    @staticmethod
2181
    def from_binary(data):
2182
        return DiscoveryConfiguration(data)
2183
2184 1
    def _binary_init(self, data):
2185
        pass
2186
2187 1
    def __str__(self):
2188
        return 'DiscoveryConfiguration(' +  + ')'
2189
2190 1
    __repr__ = __str__
2191
2192
2193 1
class MdnsDiscoveryConfiguration(FrozenClass):
2194
    '''
2195
    The discovery information needed for mDNS registration.
2196
2197
    :ivar MdnsServerName:
2198
    :vartype MdnsServerName: String
2199
    :ivar ServerCapabilities:
2200
    :vartype ServerCapabilities: String
2201
    '''
2202 1
    def __init__(self, binary=None):
2203
        if binary is not None:
2204
            self._binary_init(binary)
2205
            self._freeze = True
2206
            return
2207
        self.MdnsServerName = ''
2208
        self.ServerCapabilities = []
2209
        self._freeze = True
2210
2211 1
    def to_binary(self):
2212
        packet = []
2213
        packet.append(pack_string(self.MdnsServerName))
2214
        packet.append(uatype_Int32.pack(len(self.ServerCapabilities)))
2215
        for fieldname in self.ServerCapabilities:
2216
            packet.append(pack_string(fieldname))
2217
        return b''.join(packet)
2218
2219 1
    @staticmethod
2220
    def from_binary(data):
2221
        return MdnsDiscoveryConfiguration(data)
2222
2223 1
    def _binary_init(self, data):
2224
        self.MdnsServerName = unpack_string(data)
2225
        self.ServerCapabilities = unpack_uatype_array('String', data)
2226
2227 1
    def __str__(self):
2228
        return 'MdnsDiscoveryConfiguration(' + 'MdnsServerName:' + str(self.MdnsServerName) + ', ' + \
2229
               'ServerCapabilities:' + str(self.ServerCapabilities) + ')'
2230
2231 1
    __repr__ = __str__
2232
2233
2234 1
class RegisterServer2Parameters(FrozenClass):
2235
    '''
2236
    :ivar Server:
2237
    :vartype Server: RegisteredServer
2238
    :ivar DiscoveryConfiguration:
2239
    :vartype DiscoveryConfiguration: ExtensionObject
2240
    '''
2241 1
    def __init__(self, binary=None):
2242
        if binary is not None:
2243
            self._binary_init(binary)
2244
            self._freeze = True
2245
            return
2246
        self.Server = RegisteredServer()
2247
        self.DiscoveryConfiguration = []
2248
        self._freeze = True
2249
2250 1
    def to_binary(self):
2251
        packet = []
2252
        packet.append(self.Server.to_binary())
2253
        packet.append(uatype_Int32.pack(len(self.DiscoveryConfiguration)))
2254
        for fieldname in self.DiscoveryConfiguration:
2255
            packet.append(extensionobject_to_binary(fieldname))
2256
        return b''.join(packet)
2257
2258 1
    @staticmethod
2259
    def from_binary(data):
2260
        return RegisterServer2Parameters(data)
2261
2262 1
    def _binary_init(self, data):
2263
        self.Server = RegisteredServer.from_binary(data)
2264
        length = uatype_Int32.unpack(data.read(4))[0]
2265
        array = []
2266
        if length != -1:
2267
            for _ in range(0, length):
2268
                array.append(extensionobject_from_binary(data))
2269
        self.DiscoveryConfiguration = array
2270
2271 1
    def __str__(self):
2272
        return 'RegisterServer2Parameters(' + 'Server:' + str(self.Server) + ', ' + \
2273
               'DiscoveryConfiguration:' + str(self.DiscoveryConfiguration) + ')'
2274
2275 1
    __repr__ = __str__
2276
2277
2278 1
class RegisterServer2Request(FrozenClass):
2279
    '''
2280
    :ivar TypeId:
2281
    :vartype TypeId: NodeId
2282
    :ivar RequestHeader:
2283
    :vartype RequestHeader: RequestHeader
2284
    :ivar Parameters:
2285
    :vartype Parameters: RegisterServer2Parameters
2286
    '''
2287 1
    def __init__(self, binary=None):
2288
        if binary is not None:
2289
            self._binary_init(binary)
2290
            self._freeze = True
2291
            return
2292
        self.TypeId = FourByteNodeId(ObjectIds.RegisterServer2Request_Encoding_DefaultBinary)
2293
        self.RequestHeader = RequestHeader()
2294
        self.Parameters = RegisterServer2Parameters()
2295
        self._freeze = True
2296
2297 1
    def to_binary(self):
2298
        packet = []
2299
        packet.append(self.TypeId.to_binary())
2300
        packet.append(self.RequestHeader.to_binary())
2301
        packet.append(self.Parameters.to_binary())
2302
        return b''.join(packet)
2303
2304 1
    @staticmethod
2305
    def from_binary(data):
2306
        return RegisterServer2Request(data)
2307
2308 1
    def _binary_init(self, data):
2309
        self.TypeId = NodeId.from_binary(data)
2310
        self.RequestHeader = RequestHeader.from_binary(data)
2311
        self.Parameters = RegisterServer2Parameters.from_binary(data)
2312
2313 1
    def __str__(self):
2314
        return 'RegisterServer2Request(' + 'TypeId:' + str(self.TypeId) + ', ' + \
2315
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
2316
               'Parameters:' + str(self.Parameters) + ')'
2317
2318 1
    __repr__ = __str__
2319
2320
2321 1
class RegisterServer2Response(FrozenClass):
2322
    '''
2323
    :ivar TypeId:
2324
    :vartype TypeId: NodeId
2325
    :ivar ResponseHeader:
2326
    :vartype ResponseHeader: ResponseHeader
2327
    :ivar ConfigurationResults:
2328
    :vartype ConfigurationResults: StatusCode
2329
    :ivar DiagnosticInfos:
2330
    :vartype DiagnosticInfos: DiagnosticInfo
2331
    '''
2332 1
    def __init__(self, binary=None):
2333
        if binary is not None:
2334
            self._binary_init(binary)
2335
            self._freeze = True
2336
            return
2337
        self.TypeId = FourByteNodeId(ObjectIds.RegisterServer2Response_Encoding_DefaultBinary)
2338
        self.ResponseHeader = ResponseHeader()
2339
        self.ConfigurationResults = []
2340
        self.DiagnosticInfos = []
2341
        self._freeze = True
2342
2343 1
    def to_binary(self):
2344
        packet = []
2345
        packet.append(self.TypeId.to_binary())
2346
        packet.append(self.ResponseHeader.to_binary())
2347
        packet.append(uatype_Int32.pack(len(self.ConfigurationResults)))
2348
        for fieldname in self.ConfigurationResults:
2349
            packet.append(fieldname.to_binary())
2350
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
2351
        for fieldname in self.DiagnosticInfos:
2352
            packet.append(fieldname.to_binary())
2353
        return b''.join(packet)
2354
2355 1
    @staticmethod
2356
    def from_binary(data):
2357
        return RegisterServer2Response(data)
2358
2359 1
    def _binary_init(self, data):
2360
        self.TypeId = NodeId.from_binary(data)
2361
        self.ResponseHeader = ResponseHeader.from_binary(data)
2362
        length = uatype_Int32.unpack(data.read(4))[0]
2363
        array = []
2364
        if length != -1:
2365
            for _ in range(0, length):
2366
                array.append(StatusCode.from_binary(data))
2367
        self.ConfigurationResults = array
2368
        length = uatype_Int32.unpack(data.read(4))[0]
2369
        array = []
2370
        if length != -1:
2371
            for _ in range(0, length):
2372
                array.append(DiagnosticInfo.from_binary(data))
2373
        self.DiagnosticInfos = array
2374
2375 1
    def __str__(self):
2376
        return 'RegisterServer2Response(' + 'TypeId:' + str(self.TypeId) + ', ' + \
2377
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
2378
               'ConfigurationResults:' + str(self.ConfigurationResults) + ', ' + \
2379
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
2380
2381 1
    __repr__ = __str__
2382
2383
2384 1
class ChannelSecurityToken(FrozenClass):
2385
    '''
2386
    The token that identifies a set of keys for an active secure channel.
2387
2388
    :ivar ChannelId:
2389
    :vartype ChannelId: UInt32
2390
    :ivar TokenId:
2391
    :vartype TokenId: UInt32
2392
    :ivar CreatedAt:
2393
    :vartype CreatedAt: DateTime
2394
    :ivar RevisedLifetime:
2395
    :vartype RevisedLifetime: UInt32
2396
    '''
2397 1
    def __init__(self, binary=None):
2398 1
        if binary is not None:
2399 1
            self._binary_init(binary)
2400 1
            self._freeze = True
2401 1
            return
2402 1
        self.ChannelId = 0
2403 1
        self.TokenId = 0
2404 1
        self.CreatedAt = datetime.now()
2405 1
        self.RevisedLifetime = 0
2406 1
        self._freeze = True
2407
2408 1
    def to_binary(self):
2409 1
        packet = []
2410 1
        packet.append(uatype_UInt32.pack(self.ChannelId))
2411 1
        packet.append(uatype_UInt32.pack(self.TokenId))
2412 1
        packet.append(pack_datetime(self.CreatedAt))
2413 1
        packet.append(uatype_UInt32.pack(self.RevisedLifetime))
2414 1
        return b''.join(packet)
2415
2416 1
    @staticmethod
2417
    def from_binary(data):
2418 1
        return ChannelSecurityToken(data)
2419
2420 1
    def _binary_init(self, data):
2421 1
        self.ChannelId = uatype_UInt32.unpack(data.read(4))[0]
2422 1
        self.TokenId = uatype_UInt32.unpack(data.read(4))[0]
2423 1
        self.CreatedAt = unpack_datetime(data)
2424 1
        self.RevisedLifetime = uatype_UInt32.unpack(data.read(4))[0]
2425
2426 1
    def __str__(self):
2427
        return 'ChannelSecurityToken(' + 'ChannelId:' + str(self.ChannelId) + ', ' + \
2428
               'TokenId:' + str(self.TokenId) + ', ' + \
2429
               'CreatedAt:' + str(self.CreatedAt) + ', ' + \
2430
               'RevisedLifetime:' + str(self.RevisedLifetime) + ')'
2431
2432 1
    __repr__ = __str__
2433
2434
2435 1
class OpenSecureChannelParameters(FrozenClass):
2436
    '''
2437
    :ivar ClientProtocolVersion:
2438
    :vartype ClientProtocolVersion: UInt32
2439
    :ivar RequestType:
2440
    :vartype RequestType: SecurityTokenRequestType
2441
    :ivar SecurityMode:
2442
    :vartype SecurityMode: MessageSecurityMode
2443
    :ivar ClientNonce:
2444
    :vartype ClientNonce: ByteString
2445
    :ivar RequestedLifetime:
2446
    :vartype RequestedLifetime: UInt32
2447
    '''
2448 1
    def __init__(self, binary=None):
2449 1
        if binary is not None:
2450 1
            self._binary_init(binary)
2451 1
            self._freeze = True
2452 1
            return
2453 1
        self.ClientProtocolVersion = 0
2454 1
        self.RequestType = SecurityTokenRequestType(0)
2455 1
        self.SecurityMode = MessageSecurityMode(0)
2456 1
        self.ClientNonce = b''
2457 1
        self.RequestedLifetime = 0
2458 1
        self._freeze = True
2459
2460 1
    def to_binary(self):
2461 1
        packet = []
2462 1
        packet.append(uatype_UInt32.pack(self.ClientProtocolVersion))
2463 1
        packet.append(uatype_UInt32.pack(self.RequestType.value))
2464 1
        packet.append(uatype_UInt32.pack(self.SecurityMode.value))
2465 1
        packet.append(pack_bytes(self.ClientNonce))
2466 1
        packet.append(uatype_UInt32.pack(self.RequestedLifetime))
2467 1
        return b''.join(packet)
2468
2469 1
    @staticmethod
2470
    def from_binary(data):
2471 1
        return OpenSecureChannelParameters(data)
2472
2473 1
    def _binary_init(self, data):
2474 1
        self.ClientProtocolVersion = uatype_UInt32.unpack(data.read(4))[0]
2475 1
        self.RequestType = SecurityTokenRequestType(uatype_UInt32.unpack(data.read(4))[0])
2476 1
        self.SecurityMode = MessageSecurityMode(uatype_UInt32.unpack(data.read(4))[0])
2477 1
        self.ClientNonce = unpack_bytes(data)
2478 1
        self.RequestedLifetime = uatype_UInt32.unpack(data.read(4))[0]
2479
2480 1
    def __str__(self):
2481
        return 'OpenSecureChannelParameters(' + 'ClientProtocolVersion:' + str(self.ClientProtocolVersion) + ', ' + \
2482
               'RequestType:' + str(self.RequestType) + ', ' + \
2483
               'SecurityMode:' + str(self.SecurityMode) + ', ' + \
2484
               'ClientNonce:' + str(self.ClientNonce) + ', ' + \
2485
               'RequestedLifetime:' + str(self.RequestedLifetime) + ')'
2486
2487 1
    __repr__ = __str__
2488
2489
2490 1
class OpenSecureChannelRequest(FrozenClass):
2491
    '''
2492
    Creates a secure channel with a server.
2493
2494
    :ivar TypeId:
2495
    :vartype TypeId: NodeId
2496
    :ivar RequestHeader:
2497
    :vartype RequestHeader: RequestHeader
2498
    :ivar Parameters:
2499
    :vartype Parameters: OpenSecureChannelParameters
2500
    '''
2501 1
    def __init__(self, binary=None):
2502 1
        if binary is not None:
2503 1
            self._binary_init(binary)
2504 1
            self._freeze = True
2505 1
            return
2506 1
        self.TypeId = FourByteNodeId(ObjectIds.OpenSecureChannelRequest_Encoding_DefaultBinary)
2507 1
        self.RequestHeader = RequestHeader()
2508 1
        self.Parameters = OpenSecureChannelParameters()
2509 1
        self._freeze = True
2510
2511 1
    def to_binary(self):
2512 1
        packet = []
2513 1
        packet.append(self.TypeId.to_binary())
2514 1
        packet.append(self.RequestHeader.to_binary())
2515 1
        packet.append(self.Parameters.to_binary())
2516 1
        return b''.join(packet)
2517
2518 1
    @staticmethod
2519
    def from_binary(data):
2520 1
        return OpenSecureChannelRequest(data)
2521
2522 1
    def _binary_init(self, data):
2523 1
        self.TypeId = NodeId.from_binary(data)
2524 1
        self.RequestHeader = RequestHeader.from_binary(data)
2525 1
        self.Parameters = OpenSecureChannelParameters.from_binary(data)
2526
2527 1
    def __str__(self):
2528
        return 'OpenSecureChannelRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
2529
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
2530
               'Parameters:' + str(self.Parameters) + ')'
2531
2532 1
    __repr__ = __str__
2533
2534
2535 1
class OpenSecureChannelResult(FrozenClass):
2536
    '''
2537
    :ivar ServerProtocolVersion:
2538
    :vartype ServerProtocolVersion: UInt32
2539
    :ivar SecurityToken:
2540
    :vartype SecurityToken: ChannelSecurityToken
2541
    :ivar ServerNonce:
2542
    :vartype ServerNonce: ByteString
2543
    '''
2544 1
    def __init__(self, binary=None):
2545 1
        if binary is not None:
2546 1
            self._binary_init(binary)
2547 1
            self._freeze = True
2548 1
            return
2549 1
        self.ServerProtocolVersion = 0
2550 1
        self.SecurityToken = ChannelSecurityToken()
2551 1
        self.ServerNonce = b''
2552 1
        self._freeze = True
2553
2554 1
    def to_binary(self):
2555 1
        packet = []
2556 1
        packet.append(uatype_UInt32.pack(self.ServerProtocolVersion))
2557 1
        packet.append(self.SecurityToken.to_binary())
2558 1
        packet.append(pack_bytes(self.ServerNonce))
2559 1
        return b''.join(packet)
2560
2561 1
    @staticmethod
2562
    def from_binary(data):
2563 1
        return OpenSecureChannelResult(data)
2564
2565 1
    def _binary_init(self, data):
2566 1
        self.ServerProtocolVersion = uatype_UInt32.unpack(data.read(4))[0]
2567 1
        self.SecurityToken = ChannelSecurityToken.from_binary(data)
2568 1
        self.ServerNonce = unpack_bytes(data)
2569
2570 1
    def __str__(self):
2571
        return 'OpenSecureChannelResult(' + 'ServerProtocolVersion:' + str(self.ServerProtocolVersion) + ', ' + \
2572
               'SecurityToken:' + str(self.SecurityToken) + ', ' + \
2573
               'ServerNonce:' + str(self.ServerNonce) + ')'
2574
2575 1
    __repr__ = __str__
2576
2577
2578 1
class OpenSecureChannelResponse(FrozenClass):
2579
    '''
2580
    Creates a secure channel with a server.
2581
2582
    :ivar TypeId:
2583
    :vartype TypeId: NodeId
2584
    :ivar ResponseHeader:
2585
    :vartype ResponseHeader: ResponseHeader
2586
    :ivar Parameters:
2587
    :vartype Parameters: OpenSecureChannelResult
2588
    '''
2589 1
    def __init__(self, binary=None):
2590 1
        if binary is not None:
2591 1
            self._binary_init(binary)
2592 1
            self._freeze = True
2593 1
            return
2594 1
        self.TypeId = FourByteNodeId(ObjectIds.OpenSecureChannelResponse_Encoding_DefaultBinary)
2595 1
        self.ResponseHeader = ResponseHeader()
2596 1
        self.Parameters = OpenSecureChannelResult()
2597 1
        self._freeze = True
2598
2599 1
    def to_binary(self):
2600 1
        packet = []
2601 1
        packet.append(self.TypeId.to_binary())
2602 1
        packet.append(self.ResponseHeader.to_binary())
2603 1
        packet.append(self.Parameters.to_binary())
2604 1
        return b''.join(packet)
2605
2606 1
    @staticmethod
2607
    def from_binary(data):
2608 1
        return OpenSecureChannelResponse(data)
2609
2610 1
    def _binary_init(self, data):
2611 1
        self.TypeId = NodeId.from_binary(data)
2612 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
2613 1
        self.Parameters = OpenSecureChannelResult.from_binary(data)
2614
2615 1
    def __str__(self):
2616
        return 'OpenSecureChannelResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
2617
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
2618
               'Parameters:' + str(self.Parameters) + ')'
2619
2620 1
    __repr__ = __str__
2621
2622
2623 1
class CloseSecureChannelRequest(FrozenClass):
2624
    '''
2625
    Closes a secure channel.
2626
2627
    :ivar TypeId:
2628
    :vartype TypeId: NodeId
2629
    :ivar RequestHeader:
2630
    :vartype RequestHeader: RequestHeader
2631
    '''
2632 1
    def __init__(self, binary=None):
2633 1
        if binary is not None:
2634
            self._binary_init(binary)
2635
            self._freeze = True
2636
            return
2637 1
        self.TypeId = FourByteNodeId(ObjectIds.CloseSecureChannelRequest_Encoding_DefaultBinary)
2638 1
        self.RequestHeader = RequestHeader()
2639 1
        self._freeze = True
2640
2641 1
    def to_binary(self):
2642 1
        packet = []
2643 1
        packet.append(self.TypeId.to_binary())
2644 1
        packet.append(self.RequestHeader.to_binary())
2645 1
        return b''.join(packet)
2646
2647 1
    @staticmethod
2648
    def from_binary(data):
2649
        return CloseSecureChannelRequest(data)
2650
2651 1
    def _binary_init(self, data):
2652
        self.TypeId = NodeId.from_binary(data)
2653
        self.RequestHeader = RequestHeader.from_binary(data)
2654
2655 1
    def __str__(self):
2656
        return 'CloseSecureChannelRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
2657
               'RequestHeader:' + str(self.RequestHeader) + ')'
2658
2659 1
    __repr__ = __str__
2660
2661
2662 1
class CloseSecureChannelResponse(FrozenClass):
2663
    '''
2664
    Closes a secure channel.
2665
2666
    :ivar TypeId:
2667
    :vartype TypeId: NodeId
2668
    :ivar ResponseHeader:
2669
    :vartype ResponseHeader: ResponseHeader
2670
    '''
2671 1
    def __init__(self, binary=None):
2672
        if binary is not None:
2673
            self._binary_init(binary)
2674
            self._freeze = True
2675
            return
2676
        self.TypeId = FourByteNodeId(ObjectIds.CloseSecureChannelResponse_Encoding_DefaultBinary)
2677
        self.ResponseHeader = ResponseHeader()
2678
        self._freeze = True
2679
2680 1
    def to_binary(self):
2681
        packet = []
2682
        packet.append(self.TypeId.to_binary())
2683
        packet.append(self.ResponseHeader.to_binary())
2684
        return b''.join(packet)
2685
2686 1
    @staticmethod
2687
    def from_binary(data):
2688
        return CloseSecureChannelResponse(data)
2689
2690 1
    def _binary_init(self, data):
2691
        self.TypeId = NodeId.from_binary(data)
2692
        self.ResponseHeader = ResponseHeader.from_binary(data)
2693
2694 1
    def __str__(self):
2695
        return 'CloseSecureChannelResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
2696
               'ResponseHeader:' + str(self.ResponseHeader) + ')'
2697
2698 1
    __repr__ = __str__
2699
2700
2701 1
class SignedSoftwareCertificate(FrozenClass):
2702
    '''
2703
    A software certificate with a digital signature.
2704
2705
    :ivar CertificateData:
2706
    :vartype CertificateData: ByteString
2707
    :ivar Signature:
2708
    :vartype Signature: ByteString
2709
    '''
2710 1
    def __init__(self, binary=None):
2711
        if binary is not None:
2712
            self._binary_init(binary)
2713
            self._freeze = True
2714
            return
2715
        self.CertificateData = b''
2716
        self.Signature = b''
2717
        self._freeze = True
2718
2719 1
    def to_binary(self):
2720
        packet = []
2721
        packet.append(pack_bytes(self.CertificateData))
2722
        packet.append(pack_bytes(self.Signature))
2723
        return b''.join(packet)
2724
2725 1
    @staticmethod
2726
    def from_binary(data):
2727
        return SignedSoftwareCertificate(data)
2728
2729 1
    def _binary_init(self, data):
2730
        self.CertificateData = unpack_bytes(data)
2731
        self.Signature = unpack_bytes(data)
2732
2733 1
    def __str__(self):
2734
        return 'SignedSoftwareCertificate(' + 'CertificateData:' + str(self.CertificateData) + ', ' + \
2735
               'Signature:' + str(self.Signature) + ')'
2736
2737 1
    __repr__ = __str__
2738
2739
2740 1
class SignatureData(FrozenClass):
2741
    '''
2742
    A digital signature.
2743
2744
    :ivar Algorithm:
2745
    :vartype Algorithm: String
2746
    :ivar Signature:
2747
    :vartype Signature: ByteString
2748
    '''
2749 1
    def __init__(self, binary=None):
2750 1
        if binary is not None:
2751 1
            self._binary_init(binary)
2752 1
            self._freeze = True
2753 1
            return
2754 1
        self.Algorithm = ''
2755 1
        self.Signature = b''
2756 1
        self._freeze = True
2757
2758 1
    def to_binary(self):
2759 1
        packet = []
2760 1
        packet.append(pack_string(self.Algorithm))
2761 1
        packet.append(pack_bytes(self.Signature))
2762 1
        return b''.join(packet)
2763
2764 1
    @staticmethod
2765
    def from_binary(data):
2766 1
        return SignatureData(data)
2767
2768 1
    def _binary_init(self, data):
2769 1
        self.Algorithm = unpack_string(data)
2770 1
        self.Signature = unpack_bytes(data)
2771
2772 1
    def __str__(self):
2773
        return 'SignatureData(' + 'Algorithm:' + str(self.Algorithm) + ', ' + \
2774
               'Signature:' + str(self.Signature) + ')'
2775
2776 1
    __repr__ = __str__
2777
2778
2779 1
class CreateSessionParameters(FrozenClass):
2780
    '''
2781
    :ivar ClientDescription:
2782
    :vartype ClientDescription: ApplicationDescription
2783
    :ivar ServerUri:
2784
    :vartype ServerUri: String
2785
    :ivar EndpointUrl:
2786
    :vartype EndpointUrl: String
2787
    :ivar SessionName:
2788
    :vartype SessionName: String
2789
    :ivar ClientNonce:
2790
    :vartype ClientNonce: ByteString
2791
    :ivar ClientCertificate:
2792
    :vartype ClientCertificate: ByteString
2793
    :ivar RequestedSessionTimeout:
2794
    :vartype RequestedSessionTimeout: Double
2795
    :ivar MaxResponseMessageSize:
2796
    :vartype MaxResponseMessageSize: UInt32
2797
    '''
2798 1
    def __init__(self, binary=None):
2799 1
        if binary is not None:
2800 1
            self._binary_init(binary)
2801 1
            self._freeze = True
2802 1
            return
2803 1
        self.ClientDescription = ApplicationDescription()
2804 1
        self.ServerUri = ''
2805 1
        self.EndpointUrl = ''
2806 1
        self.SessionName = ''
2807 1
        self.ClientNonce = b''
2808 1
        self.ClientCertificate = b''
2809 1
        self.RequestedSessionTimeout = 0
2810 1
        self.MaxResponseMessageSize = 0
2811 1
        self._freeze = True
2812
2813 1
    def to_binary(self):
2814 1
        packet = []
2815 1
        packet.append(self.ClientDescription.to_binary())
2816 1
        packet.append(pack_string(self.ServerUri))
2817 1
        packet.append(pack_string(self.EndpointUrl))
2818 1
        packet.append(pack_string(self.SessionName))
2819 1
        packet.append(pack_bytes(self.ClientNonce))
2820 1
        packet.append(pack_bytes(self.ClientCertificate))
2821 1
        packet.append(uatype_Double.pack(self.RequestedSessionTimeout))
2822 1
        packet.append(uatype_UInt32.pack(self.MaxResponseMessageSize))
2823 1
        return b''.join(packet)
2824
2825 1
    @staticmethod
2826
    def from_binary(data):
2827 1
        return CreateSessionParameters(data)
2828
2829 1
    def _binary_init(self, data):
2830 1
        self.ClientDescription = ApplicationDescription.from_binary(data)
2831 1
        self.ServerUri = unpack_string(data)
2832 1
        self.EndpointUrl = unpack_string(data)
2833 1
        self.SessionName = unpack_string(data)
2834 1
        self.ClientNonce = unpack_bytes(data)
2835 1
        self.ClientCertificate = unpack_bytes(data)
2836 1
        self.RequestedSessionTimeout = uatype_Double.unpack(data.read(8))[0]
2837 1
        self.MaxResponseMessageSize = uatype_UInt32.unpack(data.read(4))[0]
2838
2839 1
    def __str__(self):
2840
        return 'CreateSessionParameters(' + 'ClientDescription:' + str(self.ClientDescription) + ', ' + \
2841
               'ServerUri:' + str(self.ServerUri) + ', ' + \
2842
               'EndpointUrl:' + str(self.EndpointUrl) + ', ' + \
2843
               'SessionName:' + str(self.SessionName) + ', ' + \
2844
               'ClientNonce:' + str(self.ClientNonce) + ', ' + \
2845
               'ClientCertificate:' + str(self.ClientCertificate) + ', ' + \
2846
               'RequestedSessionTimeout:' + str(self.RequestedSessionTimeout) + ', ' + \
2847
               'MaxResponseMessageSize:' + str(self.MaxResponseMessageSize) + ')'
2848
2849 1
    __repr__ = __str__
2850
2851
2852 1
class CreateSessionRequest(FrozenClass):
2853
    '''
2854
    Creates a new session with the server.
2855
2856
    :ivar TypeId:
2857
    :vartype TypeId: NodeId
2858
    :ivar RequestHeader:
2859
    :vartype RequestHeader: RequestHeader
2860
    :ivar Parameters:
2861
    :vartype Parameters: CreateSessionParameters
2862
    '''
2863 1
    def __init__(self, binary=None):
2864 1
        if binary is not None:
2865
            self._binary_init(binary)
2866
            self._freeze = True
2867
            return
2868 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSessionRequest_Encoding_DefaultBinary)
2869 1
        self.RequestHeader = RequestHeader()
2870 1
        self.Parameters = CreateSessionParameters()
2871 1
        self._freeze = True
2872
2873 1
    def to_binary(self):
2874 1
        packet = []
2875 1
        packet.append(self.TypeId.to_binary())
2876 1
        packet.append(self.RequestHeader.to_binary())
2877 1
        packet.append(self.Parameters.to_binary())
2878 1
        return b''.join(packet)
2879
2880 1
    @staticmethod
2881
    def from_binary(data):
2882
        return CreateSessionRequest(data)
2883
2884 1
    def _binary_init(self, data):
2885
        self.TypeId = NodeId.from_binary(data)
2886
        self.RequestHeader = RequestHeader.from_binary(data)
2887
        self.Parameters = CreateSessionParameters.from_binary(data)
2888
2889 1
    def __str__(self):
2890
        return 'CreateSessionRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
2891
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
2892
               'Parameters:' + str(self.Parameters) + ')'
2893
2894 1
    __repr__ = __str__
2895
2896
2897 1
class CreateSessionResult(FrozenClass):
2898
    '''
2899
    :ivar SessionId:
2900
    :vartype SessionId: NodeId
2901
    :ivar AuthenticationToken:
2902
    :vartype AuthenticationToken: NodeId
2903
    :ivar RevisedSessionTimeout:
2904
    :vartype RevisedSessionTimeout: Double
2905
    :ivar ServerNonce:
2906
    :vartype ServerNonce: ByteString
2907
    :ivar ServerCertificate:
2908
    :vartype ServerCertificate: ByteString
2909
    :ivar ServerEndpoints:
2910
    :vartype ServerEndpoints: EndpointDescription
2911
    :ivar ServerSoftwareCertificates:
2912
    :vartype ServerSoftwareCertificates: SignedSoftwareCertificate
2913
    :ivar ServerSignature:
2914
    :vartype ServerSignature: SignatureData
2915
    :ivar MaxRequestMessageSize:
2916
    :vartype MaxRequestMessageSize: UInt32
2917
    '''
2918 1
    def __init__(self, binary=None):
2919 1
        if binary is not None:
2920 1
            self._binary_init(binary)
2921 1
            self._freeze = True
2922 1
            return
2923 1
        self.SessionId = NodeId()
2924 1
        self.AuthenticationToken = NodeId()
2925 1
        self.RevisedSessionTimeout = 0
2926 1
        self.ServerNonce = b''
2927 1
        self.ServerCertificate = b''
2928 1
        self.ServerEndpoints = []
2929 1
        self.ServerSoftwareCertificates = []
2930 1
        self.ServerSignature = SignatureData()
2931 1
        self.MaxRequestMessageSize = 0
2932 1
        self._freeze = True
2933
2934 1
    def to_binary(self):
2935 1
        packet = []
2936 1
        packet.append(self.SessionId.to_binary())
2937 1
        packet.append(self.AuthenticationToken.to_binary())
2938 1
        packet.append(uatype_Double.pack(self.RevisedSessionTimeout))
2939 1
        packet.append(pack_bytes(self.ServerNonce))
2940 1
        packet.append(pack_bytes(self.ServerCertificate))
2941 1
        packet.append(uatype_Int32.pack(len(self.ServerEndpoints)))
2942 1
        for fieldname in self.ServerEndpoints:
2943 1
            packet.append(fieldname.to_binary())
2944 1
        packet.append(uatype_Int32.pack(len(self.ServerSoftwareCertificates)))
2945 1
        for fieldname in self.ServerSoftwareCertificates:
2946
            packet.append(fieldname.to_binary())
2947 1
        packet.append(self.ServerSignature.to_binary())
2948 1
        packet.append(uatype_UInt32.pack(self.MaxRequestMessageSize))
2949 1
        return b''.join(packet)
2950
2951 1
    @staticmethod
2952
    def from_binary(data):
2953 1
        return CreateSessionResult(data)
2954
2955 1
    def _binary_init(self, data):
2956 1
        self.SessionId = NodeId.from_binary(data)
2957 1
        self.AuthenticationToken = NodeId.from_binary(data)
2958 1
        self.RevisedSessionTimeout = uatype_Double.unpack(data.read(8))[0]
2959 1
        self.ServerNonce = unpack_bytes(data)
2960 1
        self.ServerCertificate = unpack_bytes(data)
2961 1
        length = uatype_Int32.unpack(data.read(4))[0]
2962 1
        array = []
2963 1
        if length != -1:
2964 1
            for _ in range(0, length):
2965 1
                array.append(EndpointDescription.from_binary(data))
2966 1
        self.ServerEndpoints = array
2967 1
        length = uatype_Int32.unpack(data.read(4))[0]
2968 1
        array = []
2969 1
        if length != -1:
2970 1
            for _ in range(0, length):
2971
                array.append(SignedSoftwareCertificate.from_binary(data))
2972 1
        self.ServerSoftwareCertificates = array
2973 1
        self.ServerSignature = SignatureData.from_binary(data)
2974 1
        self.MaxRequestMessageSize = uatype_UInt32.unpack(data.read(4))[0]
2975
2976 1
    def __str__(self):
2977
        return 'CreateSessionResult(' + 'SessionId:' + str(self.SessionId) + ', ' + \
2978
               'AuthenticationToken:' + str(self.AuthenticationToken) + ', ' + \
2979
               'RevisedSessionTimeout:' + str(self.RevisedSessionTimeout) + ', ' + \
2980
               'ServerNonce:' + str(self.ServerNonce) + ', ' + \
2981
               'ServerCertificate:' + str(self.ServerCertificate) + ', ' + \
2982
               'ServerEndpoints:' + str(self.ServerEndpoints) + ', ' + \
2983
               'ServerSoftwareCertificates:' + str(self.ServerSoftwareCertificates) + ', ' + \
2984
               'ServerSignature:' + str(self.ServerSignature) + ', ' + \
2985
               'MaxRequestMessageSize:' + str(self.MaxRequestMessageSize) + ')'
2986
2987 1
    __repr__ = __str__
2988
2989
2990 1
class CreateSessionResponse(FrozenClass):
2991
    '''
2992
    Creates a new session with the server.
2993
2994
    :ivar TypeId:
2995
    :vartype TypeId: NodeId
2996
    :ivar ResponseHeader:
2997
    :vartype ResponseHeader: ResponseHeader
2998
    :ivar Parameters:
2999
    :vartype Parameters: CreateSessionResult
3000
    '''
3001 1
    def __init__(self, binary=None):
3002 1
        if binary is not None:
3003 1
            self._binary_init(binary)
3004 1
            self._freeze = True
3005 1
            return
3006 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSessionResponse_Encoding_DefaultBinary)
3007 1
        self.ResponseHeader = ResponseHeader()
3008 1
        self.Parameters = CreateSessionResult()
3009 1
        self._freeze = True
3010
3011 1
    def to_binary(self):
3012 1
        packet = []
3013 1
        packet.append(self.TypeId.to_binary())
3014 1
        packet.append(self.ResponseHeader.to_binary())
3015 1
        packet.append(self.Parameters.to_binary())
3016 1
        return b''.join(packet)
3017
3018 1
    @staticmethod
3019
    def from_binary(data):
3020 1
        return CreateSessionResponse(data)
3021
3022 1
    def _binary_init(self, data):
3023 1
        self.TypeId = NodeId.from_binary(data)
3024 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
3025 1
        self.Parameters = CreateSessionResult.from_binary(data)
3026
3027 1
    def __str__(self):
3028
        return 'CreateSessionResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
3029
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
3030
               'Parameters:' + str(self.Parameters) + ')'
3031
3032 1
    __repr__ = __str__
3033
3034
3035 1
class UserIdentityToken(FrozenClass):
3036
    '''
3037
    A base type for a user identity token.
3038
3039
    :ivar PolicyId:
3040
    :vartype PolicyId: String
3041
    '''
3042 1
    def __init__(self, binary=None):
3043
        if binary is not None:
3044
            self._binary_init(binary)
3045
            self._freeze = True
3046
            return
3047
        self.PolicyId = ''
3048
        self._freeze = True
3049
3050 1
    def to_binary(self):
3051
        packet = []
3052
        packet.append(pack_string(self.PolicyId))
3053
        return b''.join(packet)
3054
3055 1
    @staticmethod
3056
    def from_binary(data):
3057
        return UserIdentityToken(data)
3058
3059 1
    def _binary_init(self, data):
3060
        self.PolicyId = unpack_string(data)
3061
3062 1
    def __str__(self):
3063
        return 'UserIdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ')'
3064
3065 1
    __repr__ = __str__
3066
3067
3068 1
class AnonymousIdentityToken(FrozenClass):
3069
    '''
3070
    A token representing an anonymous user.
3071
3072
    :ivar PolicyId:
3073
    :vartype PolicyId: String
3074
    '''
3075 1
    def __init__(self, binary=None):
3076 1
        if binary is not None:
3077 1
            self._binary_init(binary)
3078 1
            self._freeze = True
3079 1
            return
3080 1
        self.PolicyId = ''
3081 1
        self._freeze = True
3082
3083 1
    def to_binary(self):
3084 1
        packet = []
3085 1
        packet.append(pack_string(self.PolicyId))
3086 1
        return b''.join(packet)
3087
3088 1
    @staticmethod
3089
    def from_binary(data):
3090 1
        return AnonymousIdentityToken(data)
3091
3092 1
    def _binary_init(self, data):
3093 1
        self.PolicyId = unpack_string(data)
3094
3095 1
    def __str__(self):
3096
        return 'AnonymousIdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ')'
3097
3098 1
    __repr__ = __str__
3099
3100
3101 1
class UserNameIdentityToken(FrozenClass):
3102
    '''
3103
    A token representing a user identified by a user name and password.
3104
3105
    :ivar PolicyId:
3106
    :vartype PolicyId: String
3107
    :ivar UserName:
3108
    :vartype UserName: String
3109
    :ivar Password:
3110
    :vartype Password: ByteString
3111
    :ivar EncryptionAlgorithm:
3112
    :vartype EncryptionAlgorithm: String
3113
    '''
3114 1
    def __init__(self, binary=None):
3115 1
        if binary is not None:
3116 1
            self._binary_init(binary)
3117 1
            self._freeze = True
3118 1
            return
3119 1
        self.PolicyId = ''
3120 1
        self.UserName = ''
3121 1
        self.Password = b''
3122 1
        self.EncryptionAlgorithm = ''
3123 1
        self._freeze = True
3124
3125 1
    def to_binary(self):
3126 1
        packet = []
3127 1
        packet.append(pack_string(self.PolicyId))
3128 1
        packet.append(pack_string(self.UserName))
3129 1
        packet.append(pack_bytes(self.Password))
3130 1
        packet.append(pack_string(self.EncryptionAlgorithm))
3131 1
        return b''.join(packet)
3132
3133 1
    @staticmethod
3134
    def from_binary(data):
3135 1
        return UserNameIdentityToken(data)
3136
3137 1
    def _binary_init(self, data):
3138 1
        self.PolicyId = unpack_string(data)
3139 1
        self.UserName = unpack_string(data)
3140 1
        self.Password = unpack_bytes(data)
3141 1
        self.EncryptionAlgorithm = unpack_string(data)
3142
3143 1
    def __str__(self):
3144
        return 'UserNameIdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ', ' + \
3145
               'UserName:' + str(self.UserName) + ', ' + \
3146
               'Password:' + str(self.Password) + ', ' + \
3147
               'EncryptionAlgorithm:' + str(self.EncryptionAlgorithm) + ')'
3148
3149 1
    __repr__ = __str__
3150
3151
3152 1
class X509IdentityToken(FrozenClass):
3153
    '''
3154
    A token representing a user identified by an X509 certificate.
3155
3156
    :ivar PolicyId:
3157
    :vartype PolicyId: String
3158
    :ivar CertificateData:
3159
    :vartype CertificateData: ByteString
3160
    '''
3161 1
    def __init__(self, binary=None):
3162
        if binary is not None:
3163
            self._binary_init(binary)
3164
            self._freeze = True
3165
            return
3166
        self.PolicyId = ''
3167
        self.CertificateData = b''
3168
        self._freeze = True
3169
3170 1
    def to_binary(self):
3171
        packet = []
3172
        packet.append(pack_string(self.PolicyId))
3173
        packet.append(pack_bytes(self.CertificateData))
3174
        return b''.join(packet)
3175
3176 1
    @staticmethod
3177
    def from_binary(data):
3178
        return X509IdentityToken(data)
3179
3180 1
    def _binary_init(self, data):
3181
        self.PolicyId = unpack_string(data)
3182
        self.CertificateData = unpack_bytes(data)
3183
3184 1
    def __str__(self):
3185
        return 'X509IdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ', ' + \
3186
               'CertificateData:' + str(self.CertificateData) + ')'
3187
3188 1
    __repr__ = __str__
3189
3190
3191 1
class KerberosIdentityToken(FrozenClass):
3192
    '''
3193
    :ivar PolicyId:
3194
    :vartype PolicyId: String
3195
    :ivar TicketData:
3196
    :vartype TicketData: ByteString
3197
    '''
3198 1
    def __init__(self, binary=None):
3199
        if binary is not None:
3200
            self._binary_init(binary)
3201
            self._freeze = True
3202
            return
3203
        self.PolicyId = ''
3204
        self.TicketData = b''
3205
        self._freeze = True
3206
3207 1
    def to_binary(self):
3208
        packet = []
3209
        packet.append(pack_string(self.PolicyId))
3210
        packet.append(pack_bytes(self.TicketData))
3211
        return b''.join(packet)
3212
3213 1
    @staticmethod
3214
    def from_binary(data):
3215
        return KerberosIdentityToken(data)
3216
3217 1
    def _binary_init(self, data):
3218
        self.PolicyId = unpack_string(data)
3219
        self.TicketData = unpack_bytes(data)
3220
3221 1
    def __str__(self):
3222
        return 'KerberosIdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ', ' + \
3223
               'TicketData:' + str(self.TicketData) + ')'
3224
3225 1
    __repr__ = __str__
3226
3227
3228 1
class IssuedIdentityToken(FrozenClass):
3229
    '''
3230
    A token representing a user identified by a WS-Security XML token.
3231
3232
    :ivar PolicyId:
3233
    :vartype PolicyId: String
3234
    :ivar TokenData:
3235
    :vartype TokenData: ByteString
3236
    :ivar EncryptionAlgorithm:
3237
    :vartype EncryptionAlgorithm: String
3238
    '''
3239 1
    def __init__(self, binary=None):
3240
        if binary is not None:
3241
            self._binary_init(binary)
3242
            self._freeze = True
3243
            return
3244
        self.PolicyId = ''
3245
        self.TokenData = b''
3246
        self.EncryptionAlgorithm = ''
3247
        self._freeze = True
3248
3249 1
    def to_binary(self):
3250
        packet = []
3251
        packet.append(pack_string(self.PolicyId))
3252
        packet.append(pack_bytes(self.TokenData))
3253
        packet.append(pack_string(self.EncryptionAlgorithm))
3254
        return b''.join(packet)
3255
3256 1
    @staticmethod
3257
    def from_binary(data):
3258
        return IssuedIdentityToken(data)
3259
3260 1
    def _binary_init(self, data):
3261
        self.PolicyId = unpack_string(data)
3262
        self.TokenData = unpack_bytes(data)
3263
        self.EncryptionAlgorithm = unpack_string(data)
3264
3265 1
    def __str__(self):
3266
        return 'IssuedIdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ', ' + \
3267
               'TokenData:' + str(self.TokenData) + ', ' + \
3268
               'EncryptionAlgorithm:' + str(self.EncryptionAlgorithm) + ')'
3269
3270 1
    __repr__ = __str__
3271
3272
3273 1
class ActivateSessionParameters(FrozenClass):
3274
    '''
3275
    :ivar ClientSignature:
3276
    :vartype ClientSignature: SignatureData
3277
    :ivar ClientSoftwareCertificates:
3278
    :vartype ClientSoftwareCertificates: SignedSoftwareCertificate
3279
    :ivar LocaleIds:
3280
    :vartype LocaleIds: String
3281
    :ivar UserIdentityToken:
3282
    :vartype UserIdentityToken: ExtensionObject
3283
    :ivar UserTokenSignature:
3284
    :vartype UserTokenSignature: SignatureData
3285
    '''
3286 1
    def __init__(self, binary=None):
3287 1
        if binary is not None:
3288 1
            self._binary_init(binary)
3289 1
            self._freeze = True
3290 1
            return
3291 1
        self.ClientSignature = SignatureData()
3292 1
        self.ClientSoftwareCertificates = []
3293 1
        self.LocaleIds = []
3294 1
        self.UserIdentityToken = None
3295 1
        self.UserTokenSignature = SignatureData()
3296 1
        self._freeze = True
3297
3298 1
    def to_binary(self):
3299 1
        packet = []
3300 1
        packet.append(self.ClientSignature.to_binary())
3301 1
        packet.append(uatype_Int32.pack(len(self.ClientSoftwareCertificates)))
3302 1
        for fieldname in self.ClientSoftwareCertificates:
3303
            packet.append(fieldname.to_binary())
3304 1
        packet.append(uatype_Int32.pack(len(self.LocaleIds)))
3305 1
        for fieldname in self.LocaleIds:
3306 1
            packet.append(pack_string(fieldname))
3307 1
        packet.append(extensionobject_to_binary(self.UserIdentityToken))
3308 1
        packet.append(self.UserTokenSignature.to_binary())
3309 1
        return b''.join(packet)
3310
3311 1
    @staticmethod
3312
    def from_binary(data):
3313 1
        return ActivateSessionParameters(data)
3314
3315 1
    def _binary_init(self, data):
3316 1
        self.ClientSignature = SignatureData.from_binary(data)
3317 1
        length = uatype_Int32.unpack(data.read(4))[0]
3318 1
        array = []
3319 1
        if length != -1:
3320 1
            for _ in range(0, length):
3321
                array.append(SignedSoftwareCertificate.from_binary(data))
3322 1
        self.ClientSoftwareCertificates = array
3323 1
        self.LocaleIds = unpack_uatype_array('String', data)
3324 1
        self.UserIdentityToken = extensionobject_from_binary(data)
3325 1
        self.UserTokenSignature = SignatureData.from_binary(data)
3326
3327 1
    def __str__(self):
3328
        return 'ActivateSessionParameters(' + 'ClientSignature:' + str(self.ClientSignature) + ', ' + \
3329
               'ClientSoftwareCertificates:' + str(self.ClientSoftwareCertificates) + ', ' + \
3330
               'LocaleIds:' + str(self.LocaleIds) + ', ' + \
3331
               'UserIdentityToken:' + str(self.UserIdentityToken) + ', ' + \
3332
               'UserTokenSignature:' + str(self.UserTokenSignature) + ')'
3333
3334 1
    __repr__ = __str__
3335
3336
3337 1
class ActivateSessionRequest(FrozenClass):
3338
    '''
3339
    Activates a session with the server.
3340
3341
    :ivar TypeId:
3342
    :vartype TypeId: NodeId
3343
    :ivar RequestHeader:
3344
    :vartype RequestHeader: RequestHeader
3345
    :ivar Parameters:
3346
    :vartype Parameters: ActivateSessionParameters
3347
    '''
3348 1
    def __init__(self, binary=None):
3349 1
        if binary is not None:
3350
            self._binary_init(binary)
3351
            self._freeze = True
3352
            return
3353 1
        self.TypeId = FourByteNodeId(ObjectIds.ActivateSessionRequest_Encoding_DefaultBinary)
3354 1
        self.RequestHeader = RequestHeader()
3355 1
        self.Parameters = ActivateSessionParameters()
3356 1
        self._freeze = True
3357
3358 1
    def to_binary(self):
3359 1
        packet = []
3360 1
        packet.append(self.TypeId.to_binary())
3361 1
        packet.append(self.RequestHeader.to_binary())
3362 1
        packet.append(self.Parameters.to_binary())
3363 1
        return b''.join(packet)
3364
3365 1
    @staticmethod
3366
    def from_binary(data):
3367
        return ActivateSessionRequest(data)
3368
3369 1
    def _binary_init(self, data):
3370
        self.TypeId = NodeId.from_binary(data)
3371
        self.RequestHeader = RequestHeader.from_binary(data)
3372
        self.Parameters = ActivateSessionParameters.from_binary(data)
3373
3374 1
    def __str__(self):
3375
        return 'ActivateSessionRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
3376
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
3377
               'Parameters:' + str(self.Parameters) + ')'
3378
3379 1
    __repr__ = __str__
3380
3381
3382 1
class ActivateSessionResult(FrozenClass):
3383
    '''
3384
    :ivar ServerNonce:
3385
    :vartype ServerNonce: ByteString
3386
    :ivar Results:
3387
    :vartype Results: StatusCode
3388
    :ivar DiagnosticInfos:
3389
    :vartype DiagnosticInfos: DiagnosticInfo
3390
    '''
3391 1
    def __init__(self, binary=None):
3392 1
        if binary is not None:
3393 1
            self._binary_init(binary)
3394 1
            self._freeze = True
3395 1
            return
3396 1
        self.ServerNonce = b''
3397 1
        self.Results = []
3398 1
        self.DiagnosticInfos = []
3399 1
        self._freeze = True
3400
3401 1
    def to_binary(self):
3402 1
        packet = []
3403 1
        packet.append(pack_bytes(self.ServerNonce))
3404 1
        packet.append(uatype_Int32.pack(len(self.Results)))
3405 1
        for fieldname in self.Results:
3406
            packet.append(fieldname.to_binary())
3407 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
3408 1
        for fieldname in self.DiagnosticInfos:
3409
            packet.append(fieldname.to_binary())
3410 1
        return b''.join(packet)
3411
3412 1
    @staticmethod
3413
    def from_binary(data):
3414 1
        return ActivateSessionResult(data)
3415
3416 1
    def _binary_init(self, data):
3417 1
        self.ServerNonce = unpack_bytes(data)
3418 1
        length = uatype_Int32.unpack(data.read(4))[0]
3419 1
        array = []
3420 1
        if length != -1:
3421 1
            for _ in range(0, length):
3422
                array.append(StatusCode.from_binary(data))
3423 1
        self.Results = array
3424 1
        length = uatype_Int32.unpack(data.read(4))[0]
3425 1
        array = []
3426 1
        if length != -1:
3427 1
            for _ in range(0, length):
3428
                array.append(DiagnosticInfo.from_binary(data))
3429 1
        self.DiagnosticInfos = array
3430
3431 1
    def __str__(self):
3432
        return 'ActivateSessionResult(' + 'ServerNonce:' + str(self.ServerNonce) + ', ' + \
3433
               'Results:' + str(self.Results) + ', ' + \
3434
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
3435
3436 1
    __repr__ = __str__
3437
3438
3439 1
class ActivateSessionResponse(FrozenClass):
3440
    '''
3441
    Activates a session with the server.
3442
3443
    :ivar TypeId:
3444
    :vartype TypeId: NodeId
3445
    :ivar ResponseHeader:
3446
    :vartype ResponseHeader: ResponseHeader
3447
    :ivar Parameters:
3448
    :vartype Parameters: ActivateSessionResult
3449
    '''
3450 1
    def __init__(self, binary=None):
3451 1
        if binary is not None:
3452 1
            self._binary_init(binary)
3453 1
            self._freeze = True
3454 1
            return
3455 1
        self.TypeId = FourByteNodeId(ObjectIds.ActivateSessionResponse_Encoding_DefaultBinary)
3456 1
        self.ResponseHeader = ResponseHeader()
3457 1
        self.Parameters = ActivateSessionResult()
3458 1
        self._freeze = True
3459
3460 1
    def to_binary(self):
3461 1
        packet = []
3462 1
        packet.append(self.TypeId.to_binary())
3463 1
        packet.append(self.ResponseHeader.to_binary())
3464 1
        packet.append(self.Parameters.to_binary())
3465 1
        return b''.join(packet)
3466
3467 1
    @staticmethod
3468
    def from_binary(data):
3469 1
        return ActivateSessionResponse(data)
3470
3471 1
    def _binary_init(self, data):
3472 1
        self.TypeId = NodeId.from_binary(data)
3473 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
3474 1
        self.Parameters = ActivateSessionResult.from_binary(data)
3475
3476 1
    def __str__(self):
3477
        return 'ActivateSessionResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
3478
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
3479
               'Parameters:' + str(self.Parameters) + ')'
3480
3481 1
    __repr__ = __str__
3482
3483
3484 1
class CloseSessionRequest(FrozenClass):
3485
    '''
3486
    Closes a session with the server.
3487
3488
    :ivar TypeId:
3489
    :vartype TypeId: NodeId
3490
    :ivar RequestHeader:
3491
    :vartype RequestHeader: RequestHeader
3492
    :ivar DeleteSubscriptions:
3493
    :vartype DeleteSubscriptions: Boolean
3494
    '''
3495 1
    def __init__(self, binary=None):
3496 1
        if binary is not None:
3497
            self._binary_init(binary)
3498
            self._freeze = True
3499
            return
3500 1
        self.TypeId = FourByteNodeId(ObjectIds.CloseSessionRequest_Encoding_DefaultBinary)
3501 1
        self.RequestHeader = RequestHeader()
3502 1
        self.DeleteSubscriptions = True
3503 1
        self._freeze = True
3504
3505 1
    def to_binary(self):
3506 1
        packet = []
3507 1
        packet.append(self.TypeId.to_binary())
3508 1
        packet.append(self.RequestHeader.to_binary())
3509 1
        packet.append(uatype_Boolean.pack(self.DeleteSubscriptions))
3510 1
        return b''.join(packet)
3511
3512 1
    @staticmethod
3513
    def from_binary(data):
3514
        return CloseSessionRequest(data)
3515
3516 1
    def _binary_init(self, data):
3517
        self.TypeId = NodeId.from_binary(data)
3518
        self.RequestHeader = RequestHeader.from_binary(data)
3519
        self.DeleteSubscriptions = uatype_Boolean.unpack(data.read(1))[0]
3520
3521 1
    def __str__(self):
3522
        return 'CloseSessionRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
3523
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
3524
               'DeleteSubscriptions:' + str(self.DeleteSubscriptions) + ')'
3525
3526 1
    __repr__ = __str__
3527
3528
3529 1
class CloseSessionResponse(FrozenClass):
3530
    '''
3531
    Closes a session with the server.
3532
3533
    :ivar TypeId:
3534
    :vartype TypeId: NodeId
3535
    :ivar ResponseHeader:
3536
    :vartype ResponseHeader: ResponseHeader
3537
    '''
3538 1
    def __init__(self, binary=None):
3539 1
        if binary is not None:
3540 1
            self._binary_init(binary)
3541 1
            self._freeze = True
3542 1
            return
3543 1
        self.TypeId = FourByteNodeId(ObjectIds.CloseSessionResponse_Encoding_DefaultBinary)
3544 1
        self.ResponseHeader = ResponseHeader()
3545 1
        self._freeze = True
3546
3547 1
    def to_binary(self):
3548 1
        packet = []
3549 1
        packet.append(self.TypeId.to_binary())
3550 1
        packet.append(self.ResponseHeader.to_binary())
3551 1
        return b''.join(packet)
3552
3553 1
    @staticmethod
3554
    def from_binary(data):
3555 1
        return CloseSessionResponse(data)
3556
3557 1
    def _binary_init(self, data):
3558 1
        self.TypeId = NodeId.from_binary(data)
3559 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
3560
3561 1
    def __str__(self):
3562
        return 'CloseSessionResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
3563
               'ResponseHeader:' + str(self.ResponseHeader) + ')'
3564
3565 1
    __repr__ = __str__
3566
3567
3568 1
class CancelParameters(FrozenClass):
3569
    '''
3570
    :ivar RequestHandle:
3571
    :vartype RequestHandle: UInt32
3572
    '''
3573 1
    def __init__(self, binary=None):
3574
        if binary is not None:
3575
            self._binary_init(binary)
3576
            self._freeze = True
3577
            return
3578
        self.RequestHandle = 0
3579
        self._freeze = True
3580
3581 1
    def to_binary(self):
3582
        packet = []
3583
        packet.append(uatype_UInt32.pack(self.RequestHandle))
3584
        return b''.join(packet)
3585
3586 1
    @staticmethod
3587
    def from_binary(data):
3588
        return CancelParameters(data)
3589
3590 1
    def _binary_init(self, data):
3591
        self.RequestHandle = uatype_UInt32.unpack(data.read(4))[0]
3592
3593 1
    def __str__(self):
3594
        return 'CancelParameters(' + 'RequestHandle:' + str(self.RequestHandle) + ')'
3595
3596 1
    __repr__ = __str__
3597
3598
3599 1
class CancelRequest(FrozenClass):
3600
    '''
3601
    Cancels an outstanding request.
3602
3603
    :ivar TypeId:
3604
    :vartype TypeId: NodeId
3605
    :ivar RequestHeader:
3606
    :vartype RequestHeader: RequestHeader
3607
    :ivar Parameters:
3608
    :vartype Parameters: CancelParameters
3609
    '''
3610 1
    def __init__(self, binary=None):
3611
        if binary is not None:
3612
            self._binary_init(binary)
3613
            self._freeze = True
3614
            return
3615
        self.TypeId = FourByteNodeId(ObjectIds.CancelRequest_Encoding_DefaultBinary)
3616
        self.RequestHeader = RequestHeader()
3617
        self.Parameters = CancelParameters()
3618
        self._freeze = True
3619
3620 1
    def to_binary(self):
3621
        packet = []
3622
        packet.append(self.TypeId.to_binary())
3623
        packet.append(self.RequestHeader.to_binary())
3624
        packet.append(self.Parameters.to_binary())
3625
        return b''.join(packet)
3626
3627 1
    @staticmethod
3628
    def from_binary(data):
3629
        return CancelRequest(data)
3630
3631 1
    def _binary_init(self, data):
3632
        self.TypeId = NodeId.from_binary(data)
3633
        self.RequestHeader = RequestHeader.from_binary(data)
3634
        self.Parameters = CancelParameters.from_binary(data)
3635
3636 1
    def __str__(self):
3637
        return 'CancelRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
3638
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
3639
               'Parameters:' + str(self.Parameters) + ')'
3640
3641 1
    __repr__ = __str__
3642
3643
3644 1
class CancelResult(FrozenClass):
3645
    '''
3646
    :ivar CancelCount:
3647
    :vartype CancelCount: UInt32
3648
    '''
3649 1
    def __init__(self, binary=None):
3650
        if binary is not None:
3651
            self._binary_init(binary)
3652
            self._freeze = True
3653
            return
3654
        self.CancelCount = 0
3655
        self._freeze = True
3656
3657 1
    def to_binary(self):
3658
        packet = []
3659
        packet.append(uatype_UInt32.pack(self.CancelCount))
3660
        return b''.join(packet)
3661
3662 1
    @staticmethod
3663
    def from_binary(data):
3664
        return CancelResult(data)
3665
3666 1
    def _binary_init(self, data):
3667
        self.CancelCount = uatype_UInt32.unpack(data.read(4))[0]
3668
3669 1
    def __str__(self):
3670
        return 'CancelResult(' + 'CancelCount:' + str(self.CancelCount) + ')'
3671
3672 1
    __repr__ = __str__
3673
3674
3675 1
class CancelResponse(FrozenClass):
3676
    '''
3677
    Cancels an outstanding request.
3678
3679
    :ivar TypeId:
3680
    :vartype TypeId: NodeId
3681
    :ivar ResponseHeader:
3682
    :vartype ResponseHeader: ResponseHeader
3683
    :ivar Parameters:
3684
    :vartype Parameters: CancelResult
3685
    '''
3686 1
    def __init__(self, binary=None):
3687
        if binary is not None:
3688
            self._binary_init(binary)
3689
            self._freeze = True
3690
            return
3691
        self.TypeId = FourByteNodeId(ObjectIds.CancelResponse_Encoding_DefaultBinary)
3692
        self.ResponseHeader = ResponseHeader()
3693
        self.Parameters = CancelResult()
3694
        self._freeze = True
3695
3696 1
    def to_binary(self):
3697
        packet = []
3698
        packet.append(self.TypeId.to_binary())
3699
        packet.append(self.ResponseHeader.to_binary())
3700
        packet.append(self.Parameters.to_binary())
3701
        return b''.join(packet)
3702
3703 1
    @staticmethod
3704
    def from_binary(data):
3705
        return CancelResponse(data)
3706
3707 1
    def _binary_init(self, data):
3708
        self.TypeId = NodeId.from_binary(data)
3709
        self.ResponseHeader = ResponseHeader.from_binary(data)
3710
        self.Parameters = CancelResult.from_binary(data)
3711
3712 1
    def __str__(self):
3713
        return 'CancelResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
3714
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
3715
               'Parameters:' + str(self.Parameters) + ')'
3716
3717 1
    __repr__ = __str__
3718
3719
3720 1
class NodeAttributes(FrozenClass):
3721
    '''
3722
    The base attributes for all nodes.
3723
3724
    :ivar SpecifiedAttributes:
3725
    :vartype SpecifiedAttributes: UInt32
3726
    :ivar DisplayName:
3727
    :vartype DisplayName: LocalizedText
3728
    :ivar Description:
3729
    :vartype Description: LocalizedText
3730
    :ivar WriteMask:
3731
    :vartype WriteMask: UInt32
3732
    :ivar UserWriteMask:
3733
    :vartype UserWriteMask: UInt32
3734
    '''
3735 1
    def __init__(self, binary=None):
3736
        if binary is not None:
3737
            self._binary_init(binary)
3738
            self._freeze = True
3739
            return
3740
        self.SpecifiedAttributes = 0
3741
        self.DisplayName = LocalizedText()
3742
        self.Description = LocalizedText()
3743
        self.WriteMask = 0
3744
        self.UserWriteMask = 0
3745
        self._freeze = True
3746
3747 1
    def to_binary(self):
3748
        packet = []
3749
        packet.append(uatype_UInt32.pack(self.SpecifiedAttributes))
3750
        packet.append(self.DisplayName.to_binary())
3751
        packet.append(self.Description.to_binary())
3752
        packet.append(uatype_UInt32.pack(self.WriteMask))
3753
        packet.append(uatype_UInt32.pack(self.UserWriteMask))
3754
        return b''.join(packet)
3755
3756 1
    @staticmethod
3757
    def from_binary(data):
3758
        return NodeAttributes(data)
3759
3760 1
    def _binary_init(self, data):
3761
        self.SpecifiedAttributes = uatype_UInt32.unpack(data.read(4))[0]
3762
        self.DisplayName = LocalizedText.from_binary(data)
3763
        self.Description = LocalizedText.from_binary(data)
3764
        self.WriteMask = uatype_UInt32.unpack(data.read(4))[0]
3765
        self.UserWriteMask = uatype_UInt32.unpack(data.read(4))[0]
3766
3767 1
    def __str__(self):
3768
        return 'NodeAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', ' + \
3769
               'DisplayName:' + str(self.DisplayName) + ', ' + \
3770
               'Description:' + str(self.Description) + ', ' + \
3771
               'WriteMask:' + str(self.WriteMask) + ', ' + \
3772
               'UserWriteMask:' + str(self.UserWriteMask) + ')'
3773
3774 1
    __repr__ = __str__
3775
3776
3777 1
class ObjectAttributes(FrozenClass):
3778
    '''
3779
    The attributes for an object node.
3780
3781
    :ivar SpecifiedAttributes:
3782
    :vartype SpecifiedAttributes: UInt32
3783
    :ivar DisplayName:
3784
    :vartype DisplayName: LocalizedText
3785
    :ivar Description:
3786
    :vartype Description: LocalizedText
3787
    :ivar WriteMask:
3788
    :vartype WriteMask: UInt32
3789
    :ivar UserWriteMask:
3790
    :vartype UserWriteMask: UInt32
3791
    :ivar EventNotifier:
3792
    :vartype EventNotifier: Byte
3793
    '''
3794 1
    def __init__(self, binary=None):
3795 1
        if binary is not None:
3796 1
            self._binary_init(binary)
3797 1
            self._freeze = True
3798 1
            return
3799 1
        self.SpecifiedAttributes = 0
3800 1
        self.DisplayName = LocalizedText()
3801 1
        self.Description = LocalizedText()
3802 1
        self.WriteMask = 0
3803 1
        self.UserWriteMask = 0
3804 1
        self.EventNotifier = 0
3805 1
        self._freeze = True
3806
3807 1
    def to_binary(self):
3808 1
        packet = []
3809 1
        packet.append(uatype_UInt32.pack(self.SpecifiedAttributes))
3810 1
        packet.append(self.DisplayName.to_binary())
3811 1
        packet.append(self.Description.to_binary())
3812 1
        packet.append(uatype_UInt32.pack(self.WriteMask))
3813 1
        packet.append(uatype_UInt32.pack(self.UserWriteMask))
3814 1
        packet.append(uatype_Byte.pack(self.EventNotifier))
3815 1
        return b''.join(packet)
3816
3817 1
    @staticmethod
3818
    def from_binary(data):
3819 1
        return ObjectAttributes(data)
3820
3821 1
    def _binary_init(self, data):
3822 1
        self.SpecifiedAttributes = uatype_UInt32.unpack(data.read(4))[0]
3823 1
        self.DisplayName = LocalizedText.from_binary(data)
3824 1
        self.Description = LocalizedText.from_binary(data)
3825 1
        self.WriteMask = uatype_UInt32.unpack(data.read(4))[0]
3826 1
        self.UserWriteMask = uatype_UInt32.unpack(data.read(4))[0]
3827 1
        self.EventNotifier = uatype_Byte.unpack(data.read(1))[0]
3828
3829 1
    def __str__(self):
3830
        return 'ObjectAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', ' + \
3831
               'DisplayName:' + str(self.DisplayName) + ', ' + \
3832
               'Description:' + str(self.Description) + ', ' + \
3833
               'WriteMask:' + str(self.WriteMask) + ', ' + \
3834
               'UserWriteMask:' + str(self.UserWriteMask) + ', ' + \
3835
               'EventNotifier:' + str(self.EventNotifier) + ')'
3836
3837 1
    __repr__ = __str__
3838
3839
3840 1
class VariableAttributes(FrozenClass):
3841
    '''
3842
    The attributes for a variable node.
3843
3844
    :ivar SpecifiedAttributes:
3845
    :vartype SpecifiedAttributes: UInt32
3846
    :ivar DisplayName:
3847
    :vartype DisplayName: LocalizedText
3848
    :ivar Description:
3849
    :vartype Description: LocalizedText
3850
    :ivar WriteMask:
3851
    :vartype WriteMask: UInt32
3852
    :ivar UserWriteMask:
3853
    :vartype UserWriteMask: UInt32
3854
    :ivar Value:
3855
    :vartype Value: Variant
3856
    :ivar DataType:
3857
    :vartype DataType: NodeId
3858
    :ivar ValueRank:
3859
    :vartype ValueRank: Int32
3860
    :ivar ArrayDimensions:
3861
    :vartype ArrayDimensions: UInt32
3862
    :ivar AccessLevel:
3863
    :vartype AccessLevel: Byte
3864
    :ivar UserAccessLevel:
3865
    :vartype UserAccessLevel: Byte
3866
    :ivar MinimumSamplingInterval:
3867
    :vartype MinimumSamplingInterval: Double
3868
    :ivar Historizing:
3869
    :vartype Historizing: Boolean
3870
    '''
3871 1
    def __init__(self, binary=None):
3872 1
        if binary is not None:
3873 1
            self._binary_init(binary)
3874 1
            self._freeze = True
3875 1
            return
3876 1
        self.SpecifiedAttributes = 0
3877 1
        self.DisplayName = LocalizedText()
3878 1
        self.Description = LocalizedText()
3879 1
        self.WriteMask = 0
3880 1
        self.UserWriteMask = 0
3881 1
        self.Value = Variant()
3882 1
        self.DataType = NodeId()
3883 1
        self.ValueRank = 0
3884 1
        self.ArrayDimensions = []
3885 1
        self.AccessLevel = 0
3886 1
        self.UserAccessLevel = 0
3887 1
        self.MinimumSamplingInterval = 0
3888 1
        self.Historizing = True
3889 1
        self._freeze = True
3890
3891 1
    def to_binary(self):
3892 1
        packet = []
3893 1
        packet.append(uatype_UInt32.pack(self.SpecifiedAttributes))
3894 1
        packet.append(self.DisplayName.to_binary())
3895 1
        packet.append(self.Description.to_binary())
3896 1
        packet.append(uatype_UInt32.pack(self.WriteMask))
3897 1
        packet.append(uatype_UInt32.pack(self.UserWriteMask))
3898 1
        packet.append(self.Value.to_binary())
3899 1
        packet.append(self.DataType.to_binary())
3900 1
        packet.append(uatype_Int32.pack(self.ValueRank))
3901 1
        packet.append(uatype_Int32.pack(len(self.ArrayDimensions)))
3902 1
        for fieldname in self.ArrayDimensions:
3903
            packet.append(uatype_UInt32.pack(fieldname))
3904 1
        packet.append(uatype_Byte.pack(self.AccessLevel))
3905 1
        packet.append(uatype_Byte.pack(self.UserAccessLevel))
3906 1
        packet.append(uatype_Double.pack(self.MinimumSamplingInterval))
3907 1
        packet.append(uatype_Boolean.pack(self.Historizing))
3908 1
        return b''.join(packet)
3909
3910 1
    @staticmethod
3911
    def from_binary(data):
3912 1
        return VariableAttributes(data)
3913
3914 1
    def _binary_init(self, data):
3915 1
        self.SpecifiedAttributes = uatype_UInt32.unpack(data.read(4))[0]
3916 1
        self.DisplayName = LocalizedText.from_binary(data)
3917 1
        self.Description = LocalizedText.from_binary(data)
3918 1
        self.WriteMask = uatype_UInt32.unpack(data.read(4))[0]
3919 1
        self.UserWriteMask = uatype_UInt32.unpack(data.read(4))[0]
3920 1
        self.Value = Variant.from_binary(data)
3921 1
        self.DataType = NodeId.from_binary(data)
3922 1
        self.ValueRank = uatype_Int32.unpack(data.read(4))[0]
3923 1
        self.ArrayDimensions = unpack_uatype_array('UInt32', data)
3924 1
        self.AccessLevel = uatype_Byte.unpack(data.read(1))[0]
3925 1
        self.UserAccessLevel = uatype_Byte.unpack(data.read(1))[0]
3926 1
        self.MinimumSamplingInterval = uatype_Double.unpack(data.read(8))[0]
3927 1
        self.Historizing = uatype_Boolean.unpack(data.read(1))[0]
3928
3929 1
    def __str__(self):
3930
        return 'VariableAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', ' + \
3931
               'DisplayName:' + str(self.DisplayName) + ', ' + \
3932
               'Description:' + str(self.Description) + ', ' + \
3933
               'WriteMask:' + str(self.WriteMask) + ', ' + \
3934
               'UserWriteMask:' + str(self.UserWriteMask) + ', ' + \
3935
               'Value:' + str(self.Value) + ', ' + \
3936
               'DataType:' + str(self.DataType) + ', ' + \
3937
               'ValueRank:' + str(self.ValueRank) + ', ' + \
3938
               'ArrayDimensions:' + str(self.ArrayDimensions) + ', ' + \
3939
               'AccessLevel:' + str(self.AccessLevel) + ', ' + \
3940
               'UserAccessLevel:' + str(self.UserAccessLevel) + ', ' + \
3941
               'MinimumSamplingInterval:' + str(self.MinimumSamplingInterval) + ', ' + \
3942
               'Historizing:' + str(self.Historizing) + ')'
3943
3944 1
    __repr__ = __str__
3945
3946
3947 1
class MethodAttributes(FrozenClass):
3948
    '''
3949
    The attributes for a method node.
3950
3951
    :ivar SpecifiedAttributes:
3952
    :vartype SpecifiedAttributes: UInt32
3953
    :ivar DisplayName:
3954
    :vartype DisplayName: LocalizedText
3955
    :ivar Description:
3956
    :vartype Description: LocalizedText
3957
    :ivar WriteMask:
3958
    :vartype WriteMask: UInt32
3959
    :ivar UserWriteMask:
3960
    :vartype UserWriteMask: UInt32
3961
    :ivar Executable:
3962
    :vartype Executable: Boolean
3963
    :ivar UserExecutable:
3964
    :vartype UserExecutable: Boolean
3965
    '''
3966 1
    def __init__(self, binary=None):
3967 1
        if binary is not None:
3968
            self._binary_init(binary)
3969
            self._freeze = True
3970
            return
3971 1
        self.SpecifiedAttributes = 0
3972 1
        self.DisplayName = LocalizedText()
3973 1
        self.Description = LocalizedText()
3974 1
        self.WriteMask = 0
3975 1
        self.UserWriteMask = 0
3976 1
        self.Executable = True
3977 1
        self.UserExecutable = True
3978 1
        self._freeze = True
3979
3980 1
    def to_binary(self):
3981
        packet = []
3982
        packet.append(uatype_UInt32.pack(self.SpecifiedAttributes))
3983
        packet.append(self.DisplayName.to_binary())
3984
        packet.append(self.Description.to_binary())
3985
        packet.append(uatype_UInt32.pack(self.WriteMask))
3986
        packet.append(uatype_UInt32.pack(self.UserWriteMask))
3987
        packet.append(uatype_Boolean.pack(self.Executable))
3988
        packet.append(uatype_Boolean.pack(self.UserExecutable))
3989
        return b''.join(packet)
3990
3991 1
    @staticmethod
3992
    def from_binary(data):
3993
        return MethodAttributes(data)
3994
3995 1
    def _binary_init(self, data):
3996
        self.SpecifiedAttributes = uatype_UInt32.unpack(data.read(4))[0]
3997
        self.DisplayName = LocalizedText.from_binary(data)
3998
        self.Description = LocalizedText.from_binary(data)
3999
        self.WriteMask = uatype_UInt32.unpack(data.read(4))[0]
4000
        self.UserWriteMask = uatype_UInt32.unpack(data.read(4))[0]
4001
        self.Executable = uatype_Boolean.unpack(data.read(1))[0]
4002
        self.UserExecutable = uatype_Boolean.unpack(data.read(1))[0]
4003
4004 1
    def __str__(self):
4005
        return 'MethodAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', ' + \
4006
               'DisplayName:' + str(self.DisplayName) + ', ' + \
4007
               'Description:' + str(self.Description) + ', ' + \
4008
               'WriteMask:' + str(self.WriteMask) + ', ' + \
4009
               'UserWriteMask:' + str(self.UserWriteMask) + ', ' + \
4010
               'Executable:' + str(self.Executable) + ', ' + \
4011
               'UserExecutable:' + str(self.UserExecutable) + ')'
4012
4013 1
    __repr__ = __str__
4014
4015
4016 1
class ObjectTypeAttributes(FrozenClass):
4017
    '''
4018
    The attributes for an object type node.
4019
4020
    :ivar SpecifiedAttributes:
4021
    :vartype SpecifiedAttributes: UInt32
4022
    :ivar DisplayName:
4023
    :vartype DisplayName: LocalizedText
4024
    :ivar Description:
4025
    :vartype Description: LocalizedText
4026
    :ivar WriteMask:
4027
    :vartype WriteMask: UInt32
4028
    :ivar UserWriteMask:
4029
    :vartype UserWriteMask: UInt32
4030
    :ivar IsAbstract:
4031
    :vartype IsAbstract: Boolean
4032
    '''
4033 1
    def __init__(self, binary=None):
4034 1
        if binary is not None:
4035
            self._binary_init(binary)
4036
            self._freeze = True
4037
            return
4038 1
        self.SpecifiedAttributes = 0
4039 1
        self.DisplayName = LocalizedText()
4040 1
        self.Description = LocalizedText()
4041 1
        self.WriteMask = 0
4042 1
        self.UserWriteMask = 0
4043 1
        self.IsAbstract = True
4044 1
        self._freeze = True
4045
4046 1
    def to_binary(self):
4047
        packet = []
4048
        packet.append(uatype_UInt32.pack(self.SpecifiedAttributes))
4049
        packet.append(self.DisplayName.to_binary())
4050
        packet.append(self.Description.to_binary())
4051
        packet.append(uatype_UInt32.pack(self.WriteMask))
4052
        packet.append(uatype_UInt32.pack(self.UserWriteMask))
4053
        packet.append(uatype_Boolean.pack(self.IsAbstract))
4054
        return b''.join(packet)
4055
4056 1
    @staticmethod
4057
    def from_binary(data):
4058
        return ObjectTypeAttributes(data)
4059
4060 1
    def _binary_init(self, data):
4061
        self.SpecifiedAttributes = uatype_UInt32.unpack(data.read(4))[0]
4062
        self.DisplayName = LocalizedText.from_binary(data)
4063
        self.Description = LocalizedText.from_binary(data)
4064
        self.WriteMask = uatype_UInt32.unpack(data.read(4))[0]
4065
        self.UserWriteMask = uatype_UInt32.unpack(data.read(4))[0]
4066
        self.IsAbstract = uatype_Boolean.unpack(data.read(1))[0]
4067
4068 1
    def __str__(self):
4069
        return 'ObjectTypeAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', ' + \
4070
               'DisplayName:' + str(self.DisplayName) + ', ' + \
4071
               'Description:' + str(self.Description) + ', ' + \
4072
               'WriteMask:' + str(self.WriteMask) + ', ' + \
4073
               'UserWriteMask:' + str(self.UserWriteMask) + ', ' + \
4074
               'IsAbstract:' + str(self.IsAbstract) + ')'
4075
4076 1
    __repr__ = __str__
4077
4078
4079 1
class VariableTypeAttributes(FrozenClass):
4080
    '''
4081
    The attributes for a variable type node.
4082
4083
    :ivar SpecifiedAttributes:
4084
    :vartype SpecifiedAttributes: UInt32
4085
    :ivar DisplayName:
4086
    :vartype DisplayName: LocalizedText
4087
    :ivar Description:
4088
    :vartype Description: LocalizedText
4089
    :ivar WriteMask:
4090
    :vartype WriteMask: UInt32
4091
    :ivar UserWriteMask:
4092
    :vartype UserWriteMask: UInt32
4093
    :ivar Value:
4094
    :vartype Value: Variant
4095
    :ivar DataType:
4096
    :vartype DataType: NodeId
4097
    :ivar ValueRank:
4098
    :vartype ValueRank: Int32
4099
    :ivar ArrayDimensions:
4100
    :vartype ArrayDimensions: UInt32
4101
    :ivar IsAbstract:
4102
    :vartype IsAbstract: Boolean
4103
    '''
4104 1
    def __init__(self, binary=None):
4105 1
        if binary is not None:
4106
            self._binary_init(binary)
4107
            self._freeze = True
4108
            return
4109 1
        self.SpecifiedAttributes = 0
4110 1
        self.DisplayName = LocalizedText()
4111 1
        self.Description = LocalizedText()
4112 1
        self.WriteMask = 0
4113 1
        self.UserWriteMask = 0
4114 1
        self.Value = Variant()
4115 1
        self.DataType = NodeId()
4116 1
        self.ValueRank = 0
4117 1
        self.ArrayDimensions = []
4118 1
        self.IsAbstract = True
4119 1
        self._freeze = True
4120
4121 1
    def to_binary(self):
4122
        packet = []
4123
        packet.append(uatype_UInt32.pack(self.SpecifiedAttributes))
4124
        packet.append(self.DisplayName.to_binary())
4125
        packet.append(self.Description.to_binary())
4126
        packet.append(uatype_UInt32.pack(self.WriteMask))
4127
        packet.append(uatype_UInt32.pack(self.UserWriteMask))
4128
        packet.append(self.Value.to_binary())
4129
        packet.append(self.DataType.to_binary())
4130
        packet.append(uatype_Int32.pack(self.ValueRank))
4131
        packet.append(uatype_Int32.pack(len(self.ArrayDimensions)))
4132
        for fieldname in self.ArrayDimensions:
4133
            packet.append(uatype_UInt32.pack(fieldname))
4134
        packet.append(uatype_Boolean.pack(self.IsAbstract))
4135
        return b''.join(packet)
4136
4137 1
    @staticmethod
4138
    def from_binary(data):
4139
        return VariableTypeAttributes(data)
4140
4141 1
    def _binary_init(self, data):
4142
        self.SpecifiedAttributes = uatype_UInt32.unpack(data.read(4))[0]
4143
        self.DisplayName = LocalizedText.from_binary(data)
4144
        self.Description = LocalizedText.from_binary(data)
4145
        self.WriteMask = uatype_UInt32.unpack(data.read(4))[0]
4146
        self.UserWriteMask = uatype_UInt32.unpack(data.read(4))[0]
4147
        self.Value = Variant.from_binary(data)
4148
        self.DataType = NodeId.from_binary(data)
4149
        self.ValueRank = uatype_Int32.unpack(data.read(4))[0]
4150
        self.ArrayDimensions = unpack_uatype_array('UInt32', data)
4151
        self.IsAbstract = uatype_Boolean.unpack(data.read(1))[0]
4152
4153 1
    def __str__(self):
4154
        return 'VariableTypeAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', ' + \
4155
               'DisplayName:' + str(self.DisplayName) + ', ' + \
4156
               'Description:' + str(self.Description) + ', ' + \
4157
               'WriteMask:' + str(self.WriteMask) + ', ' + \
4158
               'UserWriteMask:' + str(self.UserWriteMask) + ', ' + \
4159
               'Value:' + str(self.Value) + ', ' + \
4160
               'DataType:' + str(self.DataType) + ', ' + \
4161
               'ValueRank:' + str(self.ValueRank) + ', ' + \
4162
               'ArrayDimensions:' + str(self.ArrayDimensions) + ', ' + \
4163
               'IsAbstract:' + str(self.IsAbstract) + ')'
4164
4165 1
    __repr__ = __str__
4166
4167
4168 1
class ReferenceTypeAttributes(FrozenClass):
4169
    '''
4170
    The attributes for a reference type node.
4171
4172
    :ivar SpecifiedAttributes:
4173
    :vartype SpecifiedAttributes: UInt32
4174
    :ivar DisplayName:
4175
    :vartype DisplayName: LocalizedText
4176
    :ivar Description:
4177
    :vartype Description: LocalizedText
4178
    :ivar WriteMask:
4179
    :vartype WriteMask: UInt32
4180
    :ivar UserWriteMask:
4181
    :vartype UserWriteMask: UInt32
4182
    :ivar IsAbstract:
4183
    :vartype IsAbstract: Boolean
4184
    :ivar Symmetric:
4185
    :vartype Symmetric: Boolean
4186
    :ivar InverseName:
4187
    :vartype InverseName: LocalizedText
4188
    '''
4189 1
    def __init__(self, binary=None):
4190 1
        if binary is not None:
4191
            self._binary_init(binary)
4192
            self._freeze = True
4193
            return
4194 1
        self.SpecifiedAttributes = 0
4195 1
        self.DisplayName = LocalizedText()
4196 1
        self.Description = LocalizedText()
4197 1
        self.WriteMask = 0
4198 1
        self.UserWriteMask = 0
4199 1
        self.IsAbstract = True
4200 1
        self.Symmetric = True
4201 1
        self.InverseName = LocalizedText()
4202 1
        self._freeze = True
4203
4204 1
    def to_binary(self):
4205
        packet = []
4206
        packet.append(uatype_UInt32.pack(self.SpecifiedAttributes))
4207
        packet.append(self.DisplayName.to_binary())
4208
        packet.append(self.Description.to_binary())
4209
        packet.append(uatype_UInt32.pack(self.WriteMask))
4210
        packet.append(uatype_UInt32.pack(self.UserWriteMask))
4211
        packet.append(uatype_Boolean.pack(self.IsAbstract))
4212
        packet.append(uatype_Boolean.pack(self.Symmetric))
4213
        packet.append(self.InverseName.to_binary())
4214
        return b''.join(packet)
4215
4216 1
    @staticmethod
4217
    def from_binary(data):
4218
        return ReferenceTypeAttributes(data)
4219
4220 1
    def _binary_init(self, data):
4221
        self.SpecifiedAttributes = uatype_UInt32.unpack(data.read(4))[0]
4222
        self.DisplayName = LocalizedText.from_binary(data)
4223
        self.Description = LocalizedText.from_binary(data)
4224
        self.WriteMask = uatype_UInt32.unpack(data.read(4))[0]
4225
        self.UserWriteMask = uatype_UInt32.unpack(data.read(4))[0]
4226
        self.IsAbstract = uatype_Boolean.unpack(data.read(1))[0]
4227
        self.Symmetric = uatype_Boolean.unpack(data.read(1))[0]
4228
        self.InverseName = LocalizedText.from_binary(data)
4229
4230 1
    def __str__(self):
4231
        return 'ReferenceTypeAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', ' + \
4232
               'DisplayName:' + str(self.DisplayName) + ', ' + \
4233
               'Description:' + str(self.Description) + ', ' + \
4234
               'WriteMask:' + str(self.WriteMask) + ', ' + \
4235
               'UserWriteMask:' + str(self.UserWriteMask) + ', ' + \
4236
               'IsAbstract:' + str(self.IsAbstract) + ', ' + \
4237
               'Symmetric:' + str(self.Symmetric) + ', ' + \
4238
               'InverseName:' + str(self.InverseName) + ')'
4239
4240 1
    __repr__ = __str__
4241
4242
4243 1
class DataTypeAttributes(FrozenClass):
4244
    '''
4245
    The attributes for a data type node.
4246
4247
    :ivar SpecifiedAttributes:
4248
    :vartype SpecifiedAttributes: UInt32
4249
    :ivar DisplayName:
4250
    :vartype DisplayName: LocalizedText
4251
    :ivar Description:
4252
    :vartype Description: LocalizedText
4253
    :ivar WriteMask:
4254
    :vartype WriteMask: UInt32
4255
    :ivar UserWriteMask:
4256
    :vartype UserWriteMask: UInt32
4257
    :ivar IsAbstract:
4258
    :vartype IsAbstract: Boolean
4259
    '''
4260 1
    def __init__(self, binary=None):
4261 1
        if binary is not None:
4262
            self._binary_init(binary)
4263
            self._freeze = True
4264
            return
4265 1
        self.SpecifiedAttributes = 0
4266 1
        self.DisplayName = LocalizedText()
4267 1
        self.Description = LocalizedText()
4268 1
        self.WriteMask = 0
4269 1
        self.UserWriteMask = 0
4270 1
        self.IsAbstract = True
4271 1
        self._freeze = True
4272
4273 1
    def to_binary(self):
4274
        packet = []
4275
        packet.append(uatype_UInt32.pack(self.SpecifiedAttributes))
4276
        packet.append(self.DisplayName.to_binary())
4277
        packet.append(self.Description.to_binary())
4278
        packet.append(uatype_UInt32.pack(self.WriteMask))
4279
        packet.append(uatype_UInt32.pack(self.UserWriteMask))
4280
        packet.append(uatype_Boolean.pack(self.IsAbstract))
4281
        return b''.join(packet)
4282
4283 1
    @staticmethod
4284
    def from_binary(data):
4285
        return DataTypeAttributes(data)
4286
4287 1
    def _binary_init(self, data):
4288
        self.SpecifiedAttributes = uatype_UInt32.unpack(data.read(4))[0]
4289
        self.DisplayName = LocalizedText.from_binary(data)
4290
        self.Description = LocalizedText.from_binary(data)
4291
        self.WriteMask = uatype_UInt32.unpack(data.read(4))[0]
4292
        self.UserWriteMask = uatype_UInt32.unpack(data.read(4))[0]
4293
        self.IsAbstract = uatype_Boolean.unpack(data.read(1))[0]
4294
4295 1
    def __str__(self):
4296
        return 'DataTypeAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', ' + \
4297
               'DisplayName:' + str(self.DisplayName) + ', ' + \
4298
               'Description:' + str(self.Description) + ', ' + \
4299
               'WriteMask:' + str(self.WriteMask) + ', ' + \
4300
               'UserWriteMask:' + str(self.UserWriteMask) + ', ' + \
4301
               'IsAbstract:' + str(self.IsAbstract) + ')'
4302
4303 1
    __repr__ = __str__
4304
4305
4306 1
class ViewAttributes(FrozenClass):
4307
    '''
4308
    The attributes for a view node.
4309
4310
    :ivar SpecifiedAttributes:
4311
    :vartype SpecifiedAttributes: UInt32
4312
    :ivar DisplayName:
4313
    :vartype DisplayName: LocalizedText
4314
    :ivar Description:
4315
    :vartype Description: LocalizedText
4316
    :ivar WriteMask:
4317
    :vartype WriteMask: UInt32
4318
    :ivar UserWriteMask:
4319
    :vartype UserWriteMask: UInt32
4320
    :ivar ContainsNoLoops:
4321
    :vartype ContainsNoLoops: Boolean
4322
    :ivar EventNotifier:
4323
    :vartype EventNotifier: Byte
4324
    '''
4325 1
    def __init__(self, binary=None):
4326
        if binary is not None:
4327
            self._binary_init(binary)
4328
            self._freeze = True
4329
            return
4330
        self.SpecifiedAttributes = 0
4331
        self.DisplayName = LocalizedText()
4332
        self.Description = LocalizedText()
4333
        self.WriteMask = 0
4334
        self.UserWriteMask = 0
4335
        self.ContainsNoLoops = True
4336
        self.EventNotifier = 0
4337
        self._freeze = True
4338
4339 1
    def to_binary(self):
4340
        packet = []
4341
        packet.append(uatype_UInt32.pack(self.SpecifiedAttributes))
4342
        packet.append(self.DisplayName.to_binary())
4343
        packet.append(self.Description.to_binary())
4344
        packet.append(uatype_UInt32.pack(self.WriteMask))
4345
        packet.append(uatype_UInt32.pack(self.UserWriteMask))
4346
        packet.append(uatype_Boolean.pack(self.ContainsNoLoops))
4347
        packet.append(uatype_Byte.pack(self.EventNotifier))
4348
        return b''.join(packet)
4349
4350 1
    @staticmethod
4351
    def from_binary(data):
4352
        return ViewAttributes(data)
4353
4354 1
    def _binary_init(self, data):
4355
        self.SpecifiedAttributes = uatype_UInt32.unpack(data.read(4))[0]
4356
        self.DisplayName = LocalizedText.from_binary(data)
4357
        self.Description = LocalizedText.from_binary(data)
4358
        self.WriteMask = uatype_UInt32.unpack(data.read(4))[0]
4359
        self.UserWriteMask = uatype_UInt32.unpack(data.read(4))[0]
4360
        self.ContainsNoLoops = uatype_Boolean.unpack(data.read(1))[0]
4361
        self.EventNotifier = uatype_Byte.unpack(data.read(1))[0]
4362
4363 1
    def __str__(self):
4364
        return 'ViewAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', ' + \
4365
               'DisplayName:' + str(self.DisplayName) + ', ' + \
4366
               'Description:' + str(self.Description) + ', ' + \
4367
               'WriteMask:' + str(self.WriteMask) + ', ' + \
4368
               'UserWriteMask:' + str(self.UserWriteMask) + ', ' + \
4369
               'ContainsNoLoops:' + str(self.ContainsNoLoops) + ', ' + \
4370
               'EventNotifier:' + str(self.EventNotifier) + ')'
4371
4372 1
    __repr__ = __str__
4373
4374
4375 1
class AddNodesItem(FrozenClass):
4376
    '''
4377
    A request to add a node to the server address space.
4378
4379
    :ivar ParentNodeId:
4380
    :vartype ParentNodeId: ExpandedNodeId
4381
    :ivar ReferenceTypeId:
4382
    :vartype ReferenceTypeId: NodeId
4383
    :ivar RequestedNewNodeId:
4384
    :vartype RequestedNewNodeId: ExpandedNodeId
4385
    :ivar BrowseName:
4386
    :vartype BrowseName: QualifiedName
4387
    :ivar NodeClass:
4388
    :vartype NodeClass: NodeClass
4389
    :ivar NodeAttributes:
4390
    :vartype NodeAttributes: ExtensionObject
4391
    :ivar TypeDefinition:
4392
    :vartype TypeDefinition: ExpandedNodeId
4393
    '''
4394 1
    def __init__(self, binary=None):
4395 1
        if binary is not None:
4396 1
            self._binary_init(binary)
4397 1
            self._freeze = True
4398 1
            return
4399 1
        self.ParentNodeId = ExpandedNodeId()
4400 1
        self.ReferenceTypeId = NodeId()
4401 1
        self.RequestedNewNodeId = ExpandedNodeId()
4402 1
        self.BrowseName = QualifiedName()
4403 1
        self.NodeClass = NodeClass(0)
4404 1
        self.NodeAttributes = None
4405 1
        self.TypeDefinition = ExpandedNodeId()
4406 1
        self._freeze = True
4407
4408 1
    def to_binary(self):
4409 1
        packet = []
4410 1
        packet.append(self.ParentNodeId.to_binary())
4411 1
        packet.append(self.ReferenceTypeId.to_binary())
4412 1
        packet.append(self.RequestedNewNodeId.to_binary())
4413 1
        packet.append(self.BrowseName.to_binary())
4414 1
        packet.append(uatype_UInt32.pack(self.NodeClass.value))
4415 1
        packet.append(extensionobject_to_binary(self.NodeAttributes))
4416 1
        packet.append(self.TypeDefinition.to_binary())
4417 1
        return b''.join(packet)
4418
4419 1
    @staticmethod
4420
    def from_binary(data):
4421 1
        return AddNodesItem(data)
4422
4423 1
    def _binary_init(self, data):
4424 1
        self.ParentNodeId = ExpandedNodeId.from_binary(data)
4425 1
        self.ReferenceTypeId = NodeId.from_binary(data)
4426 1
        self.RequestedNewNodeId = ExpandedNodeId.from_binary(data)
4427 1
        self.BrowseName = QualifiedName.from_binary(data)
4428 1
        self.NodeClass = NodeClass(uatype_UInt32.unpack(data.read(4))[0])
4429 1
        self.NodeAttributes = extensionobject_from_binary(data)
4430 1
        self.TypeDefinition = ExpandedNodeId.from_binary(data)
4431
4432 1
    def __str__(self):
4433
        return 'AddNodesItem(' + 'ParentNodeId:' + str(self.ParentNodeId) + ', ' + \
4434
               'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', ' + \
4435
               'RequestedNewNodeId:' + str(self.RequestedNewNodeId) + ', ' + \
4436
               'BrowseName:' + str(self.BrowseName) + ', ' + \
4437
               'NodeClass:' + str(self.NodeClass) + ', ' + \
4438
               'NodeAttributes:' + str(self.NodeAttributes) + ', ' + \
4439
               'TypeDefinition:' + str(self.TypeDefinition) + ')'
4440
4441 1
    __repr__ = __str__
4442
4443
4444 1
class AddNodesResult(FrozenClass):
4445
    '''
4446
    A result of an add node operation.
4447
4448
    :ivar StatusCode:
4449
    :vartype StatusCode: StatusCode
4450
    :ivar AddedNodeId:
4451
    :vartype AddedNodeId: NodeId
4452
    '''
4453 1
    def __init__(self, binary=None):
4454 1
        if binary is not None:
4455 1
            self._binary_init(binary)
4456 1
            self._freeze = True
4457 1
            return
4458 1
        self.StatusCode = StatusCode()
4459 1
        self.AddedNodeId = NodeId()
4460 1
        self._freeze = True
4461
4462 1
    def to_binary(self):
4463 1
        packet = []
4464 1
        packet.append(self.StatusCode.to_binary())
4465 1
        packet.append(self.AddedNodeId.to_binary())
4466 1
        return b''.join(packet)
4467
4468 1
    @staticmethod
4469
    def from_binary(data):
4470 1
        return AddNodesResult(data)
4471
4472 1
    def _binary_init(self, data):
4473 1
        self.StatusCode = StatusCode.from_binary(data)
4474 1
        self.AddedNodeId = NodeId.from_binary(data)
4475
4476 1
    def __str__(self):
4477
        return 'AddNodesResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
4478
               'AddedNodeId:' + str(self.AddedNodeId) + ')'
4479
4480 1
    __repr__ = __str__
4481
4482
4483 1
class AddNodesParameters(FrozenClass):
4484
    '''
4485
    :ivar NodesToAdd:
4486
    :vartype NodesToAdd: AddNodesItem
4487
    '''
4488 1
    def __init__(self, binary=None):
4489 1
        if binary is not None:
4490 1
            self._binary_init(binary)
4491 1
            self._freeze = True
4492 1
            return
4493 1
        self.NodesToAdd = []
4494 1
        self._freeze = True
4495
4496 1
    def to_binary(self):
4497 1
        packet = []
4498 1
        packet.append(uatype_Int32.pack(len(self.NodesToAdd)))
4499 1
        for fieldname in self.NodesToAdd:
4500 1
            packet.append(fieldname.to_binary())
4501 1
        return b''.join(packet)
4502
4503 1
    @staticmethod
4504
    def from_binary(data):
4505 1
        return AddNodesParameters(data)
4506
4507 1
    def _binary_init(self, data):
4508 1
        length = uatype_Int32.unpack(data.read(4))[0]
4509 1
        array = []
4510 1
        if length != -1:
4511 1
            for _ in range(0, length):
4512 1
                array.append(AddNodesItem.from_binary(data))
4513 1
        self.NodesToAdd = array
4514
4515 1
    def __str__(self):
4516
        return 'AddNodesParameters(' + 'NodesToAdd:' + str(self.NodesToAdd) + ')'
4517
4518 1
    __repr__ = __str__
4519
4520
4521 1
class AddNodesRequest(FrozenClass):
4522
    '''
4523
    Adds one or more nodes to the server address space.
4524
4525
    :ivar TypeId:
4526
    :vartype TypeId: NodeId
4527
    :ivar RequestHeader:
4528
    :vartype RequestHeader: RequestHeader
4529
    :ivar Parameters:
4530
    :vartype Parameters: AddNodesParameters
4531
    '''
4532 1
    def __init__(self, binary=None):
4533 1
        if binary is not None:
4534
            self._binary_init(binary)
4535
            self._freeze = True
4536
            return
4537 1
        self.TypeId = FourByteNodeId(ObjectIds.AddNodesRequest_Encoding_DefaultBinary)
4538 1
        self.RequestHeader = RequestHeader()
4539 1
        self.Parameters = AddNodesParameters()
4540 1
        self._freeze = True
4541
4542 1
    def to_binary(self):
4543 1
        packet = []
4544 1
        packet.append(self.TypeId.to_binary())
4545 1
        packet.append(self.RequestHeader.to_binary())
4546 1
        packet.append(self.Parameters.to_binary())
4547 1
        return b''.join(packet)
4548
4549 1
    @staticmethod
4550
    def from_binary(data):
4551
        return AddNodesRequest(data)
4552
4553 1
    def _binary_init(self, data):
4554
        self.TypeId = NodeId.from_binary(data)
4555
        self.RequestHeader = RequestHeader.from_binary(data)
4556
        self.Parameters = AddNodesParameters.from_binary(data)
4557
4558 1
    def __str__(self):
4559
        return 'AddNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
4560
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
4561
               'Parameters:' + str(self.Parameters) + ')'
4562
4563 1
    __repr__ = __str__
4564
4565
4566 1
class AddNodesResponse(FrozenClass):
4567
    '''
4568
    Adds one or more nodes to the server address space.
4569
4570
    :ivar TypeId:
4571
    :vartype TypeId: NodeId
4572
    :ivar ResponseHeader:
4573
    :vartype ResponseHeader: ResponseHeader
4574
    :ivar Results:
4575
    :vartype Results: AddNodesResult
4576
    :ivar DiagnosticInfos:
4577
    :vartype DiagnosticInfos: DiagnosticInfo
4578
    '''
4579 1
    def __init__(self, binary=None):
4580 1
        if binary is not None:
4581 1
            self._binary_init(binary)
4582 1
            self._freeze = True
4583 1
            return
4584 1
        self.TypeId = FourByteNodeId(ObjectIds.AddNodesResponse_Encoding_DefaultBinary)
4585 1
        self.ResponseHeader = ResponseHeader()
4586 1
        self.Results = []
4587 1
        self.DiagnosticInfos = []
4588 1
        self._freeze = True
4589
4590 1
    def to_binary(self):
4591 1
        packet = []
4592 1
        packet.append(self.TypeId.to_binary())
4593 1
        packet.append(self.ResponseHeader.to_binary())
4594 1
        packet.append(uatype_Int32.pack(len(self.Results)))
4595 1
        for fieldname in self.Results:
4596 1
            packet.append(fieldname.to_binary())
4597 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
4598 1
        for fieldname in self.DiagnosticInfos:
4599
            packet.append(fieldname.to_binary())
4600 1
        return b''.join(packet)
4601
4602 1
    @staticmethod
4603
    def from_binary(data):
4604 1
        return AddNodesResponse(data)
4605
4606 1
    def _binary_init(self, data):
4607 1
        self.TypeId = NodeId.from_binary(data)
4608 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
4609 1
        length = uatype_Int32.unpack(data.read(4))[0]
4610 1
        array = []
4611 1
        if length != -1:
4612 1
            for _ in range(0, length):
4613 1
                array.append(AddNodesResult.from_binary(data))
4614 1
        self.Results = array
4615 1
        length = uatype_Int32.unpack(data.read(4))[0]
4616 1
        array = []
4617 1
        if length != -1:
4618 1
            for _ in range(0, length):
4619
                array.append(DiagnosticInfo.from_binary(data))
4620 1
        self.DiagnosticInfos = array
4621
4622 1
    def __str__(self):
4623
        return 'AddNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
4624
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
4625
               'Results:' + str(self.Results) + ', ' + \
4626
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4627
4628 1
    __repr__ = __str__
4629
4630
4631 1
class AddReferencesItem(FrozenClass):
4632
    '''
4633
    A request to add a reference to the server address space.
4634
4635
    :ivar SourceNodeId:
4636
    :vartype SourceNodeId: NodeId
4637
    :ivar ReferenceTypeId:
4638
    :vartype ReferenceTypeId: NodeId
4639
    :ivar IsForward:
4640
    :vartype IsForward: Boolean
4641
    :ivar TargetServerUri:
4642
    :vartype TargetServerUri: String
4643
    :ivar TargetNodeId:
4644
    :vartype TargetNodeId: ExpandedNodeId
4645
    :ivar TargetNodeClass:
4646
    :vartype TargetNodeClass: NodeClass
4647
    '''
4648 1
    def __init__(self, binary=None):
4649 1
        if binary is not None:
4650
            self._binary_init(binary)
4651
            self._freeze = True
4652
            return
4653 1
        self.SourceNodeId = NodeId()
4654 1
        self.ReferenceTypeId = NodeId()
4655 1
        self.IsForward = True
4656 1
        self.TargetServerUri = ''
4657 1
        self.TargetNodeId = ExpandedNodeId()
4658 1
        self.TargetNodeClass = NodeClass(0)
4659 1
        self._freeze = True
4660
4661 1
    def to_binary(self):
4662
        packet = []
4663
        packet.append(self.SourceNodeId.to_binary())
4664
        packet.append(self.ReferenceTypeId.to_binary())
4665
        packet.append(uatype_Boolean.pack(self.IsForward))
4666
        packet.append(pack_string(self.TargetServerUri))
4667
        packet.append(self.TargetNodeId.to_binary())
4668
        packet.append(uatype_UInt32.pack(self.TargetNodeClass.value))
4669
        return b''.join(packet)
4670
4671 1
    @staticmethod
4672
    def from_binary(data):
4673
        return AddReferencesItem(data)
4674
4675 1
    def _binary_init(self, data):
4676
        self.SourceNodeId = NodeId.from_binary(data)
4677
        self.ReferenceTypeId = NodeId.from_binary(data)
4678
        self.IsForward = uatype_Boolean.unpack(data.read(1))[0]
4679
        self.TargetServerUri = unpack_string(data)
4680
        self.TargetNodeId = ExpandedNodeId.from_binary(data)
4681
        self.TargetNodeClass = NodeClass(uatype_UInt32.unpack(data.read(4))[0])
4682
4683 1
    def __str__(self):
4684
        return 'AddReferencesItem(' + 'SourceNodeId:' + str(self.SourceNodeId) + ', ' + \
4685
               'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', ' + \
4686
               'IsForward:' + str(self.IsForward) + ', ' + \
4687
               'TargetServerUri:' + str(self.TargetServerUri) + ', ' + \
4688
               'TargetNodeId:' + str(self.TargetNodeId) + ', ' + \
4689
               'TargetNodeClass:' + str(self.TargetNodeClass) + ')'
4690
4691 1
    __repr__ = __str__
4692
4693
4694 1
class AddReferencesRequest(FrozenClass):
4695
    '''
4696
    Adds one or more references to the server address space.
4697
4698
    :ivar TypeId:
4699
    :vartype TypeId: NodeId
4700
    :ivar RequestHeader:
4701
    :vartype RequestHeader: RequestHeader
4702
    :ivar ReferencesToAdd:
4703
    :vartype ReferencesToAdd: AddReferencesItem
4704
    '''
4705 1
    def __init__(self, binary=None):
4706
        if binary is not None:
4707
            self._binary_init(binary)
4708
            self._freeze = True
4709
            return
4710
        self.TypeId = FourByteNodeId(ObjectIds.AddReferencesRequest_Encoding_DefaultBinary)
4711
        self.RequestHeader = RequestHeader()
4712
        self.ReferencesToAdd = []
4713
        self._freeze = True
4714
4715 1
    def to_binary(self):
4716
        packet = []
4717
        packet.append(self.TypeId.to_binary())
4718
        packet.append(self.RequestHeader.to_binary())
4719
        packet.append(uatype_Int32.pack(len(self.ReferencesToAdd)))
4720
        for fieldname in self.ReferencesToAdd:
4721
            packet.append(fieldname.to_binary())
4722
        return b''.join(packet)
4723
4724 1
    @staticmethod
4725
    def from_binary(data):
4726
        return AddReferencesRequest(data)
4727
4728 1
    def _binary_init(self, data):
4729
        self.TypeId = NodeId.from_binary(data)
4730
        self.RequestHeader = RequestHeader.from_binary(data)
4731
        length = uatype_Int32.unpack(data.read(4))[0]
4732
        array = []
4733
        if length != -1:
4734
            for _ in range(0, length):
4735
                array.append(AddReferencesItem.from_binary(data))
4736
        self.ReferencesToAdd = array
4737
4738 1
    def __str__(self):
4739
        return 'AddReferencesRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
4740
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
4741
               'ReferencesToAdd:' + str(self.ReferencesToAdd) + ')'
4742
4743 1
    __repr__ = __str__
4744
4745
4746 1
class AddReferencesResponse(FrozenClass):
4747
    '''
4748
    Adds one or more references to the server address space.
4749
4750
    :ivar TypeId:
4751
    :vartype TypeId: NodeId
4752
    :ivar ResponseHeader:
4753
    :vartype ResponseHeader: ResponseHeader
4754
    :ivar Results:
4755
    :vartype Results: StatusCode
4756
    :ivar DiagnosticInfos:
4757
    :vartype DiagnosticInfos: DiagnosticInfo
4758
    '''
4759 1
    def __init__(self, binary=None):
4760
        if binary is not None:
4761
            self._binary_init(binary)
4762
            self._freeze = True
4763
            return
4764
        self.TypeId = FourByteNodeId(ObjectIds.AddReferencesResponse_Encoding_DefaultBinary)
4765
        self.ResponseHeader = ResponseHeader()
4766
        self.Results = []
4767
        self.DiagnosticInfos = []
4768
        self._freeze = True
4769
4770 1
    def to_binary(self):
4771
        packet = []
4772
        packet.append(self.TypeId.to_binary())
4773
        packet.append(self.ResponseHeader.to_binary())
4774
        packet.append(uatype_Int32.pack(len(self.Results)))
4775
        for fieldname in self.Results:
4776
            packet.append(fieldname.to_binary())
4777
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
4778
        for fieldname in self.DiagnosticInfos:
4779
            packet.append(fieldname.to_binary())
4780
        return b''.join(packet)
4781
4782 1
    @staticmethod
4783
    def from_binary(data):
4784
        return AddReferencesResponse(data)
4785
4786 1
    def _binary_init(self, data):
4787
        self.TypeId = NodeId.from_binary(data)
4788
        self.ResponseHeader = ResponseHeader.from_binary(data)
4789
        length = uatype_Int32.unpack(data.read(4))[0]
4790
        array = []
4791
        if length != -1:
4792
            for _ in range(0, length):
4793
                array.append(StatusCode.from_binary(data))
4794
        self.Results = array
4795
        length = uatype_Int32.unpack(data.read(4))[0]
4796
        array = []
4797
        if length != -1:
4798
            for _ in range(0, length):
4799
                array.append(DiagnosticInfo.from_binary(data))
4800
        self.DiagnosticInfos = array
4801
4802 1
    def __str__(self):
4803
        return 'AddReferencesResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
4804
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
4805
               'Results:' + str(self.Results) + ', ' + \
4806
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4807
4808 1
    __repr__ = __str__
4809
4810
4811 1
class DeleteNodesItem(FrozenClass):
4812
    '''
4813
    A request to delete a node to the server address space.
4814
4815
    :ivar NodeId:
4816
    :vartype NodeId: NodeId
4817
    :ivar DeleteTargetReferences:
4818
    :vartype DeleteTargetReferences: Boolean
4819
    '''
4820 1
    def __init__(self, binary=None):
4821
        if binary is not None:
4822
            self._binary_init(binary)
4823
            self._freeze = True
4824
            return
4825
        self.NodeId = NodeId()
4826
        self.DeleteTargetReferences = True
4827
        self._freeze = True
4828
4829 1
    def to_binary(self):
4830
        packet = []
4831
        packet.append(self.NodeId.to_binary())
4832
        packet.append(uatype_Boolean.pack(self.DeleteTargetReferences))
4833
        return b''.join(packet)
4834
4835 1
    @staticmethod
4836
    def from_binary(data):
4837
        return DeleteNodesItem(data)
4838
4839 1
    def _binary_init(self, data):
4840
        self.NodeId = NodeId.from_binary(data)
4841
        self.DeleteTargetReferences = uatype_Boolean.unpack(data.read(1))[0]
4842
4843 1
    def __str__(self):
4844
        return 'DeleteNodesItem(' + 'NodeId:' + str(self.NodeId) + ', ' + \
4845
               'DeleteTargetReferences:' + str(self.DeleteTargetReferences) + ')'
4846
4847 1
    __repr__ = __str__
4848
4849
4850 1
class DeleteNodesParameters(FrozenClass):
4851
    '''
4852
    :ivar NodesToDelete:
4853
    :vartype NodesToDelete: DeleteNodesItem
4854
    '''
4855 1
    def __init__(self, binary=None):
4856
        if binary is not None:
4857
            self._binary_init(binary)
4858
            self._freeze = True
4859
            return
4860
        self.NodesToDelete = []
4861
        self._freeze = True
4862
4863 1
    def to_binary(self):
4864
        packet = []
4865
        packet.append(uatype_Int32.pack(len(self.NodesToDelete)))
4866
        for fieldname in self.NodesToDelete:
4867
            packet.append(fieldname.to_binary())
4868
        return b''.join(packet)
4869
4870 1
    @staticmethod
4871
    def from_binary(data):
4872
        return DeleteNodesParameters(data)
4873
4874 1
    def _binary_init(self, data):
4875
        length = uatype_Int32.unpack(data.read(4))[0]
4876
        array = []
4877
        if length != -1:
4878
            for _ in range(0, length):
4879
                array.append(DeleteNodesItem.from_binary(data))
4880
        self.NodesToDelete = array
4881
4882 1
    def __str__(self):
4883
        return 'DeleteNodesParameters(' + 'NodesToDelete:' + str(self.NodesToDelete) + ')'
4884
4885 1
    __repr__ = __str__
4886
4887
4888 1
class DeleteNodesRequest(FrozenClass):
4889
    '''
4890
    Delete one or more nodes from the server address space.
4891
4892
    :ivar TypeId:
4893
    :vartype TypeId: NodeId
4894
    :ivar RequestHeader:
4895
    :vartype RequestHeader: RequestHeader
4896
    :ivar Parameters:
4897
    :vartype Parameters: DeleteNodesParameters
4898
    '''
4899 1
    def __init__(self, binary=None):
4900
        if binary is not None:
4901
            self._binary_init(binary)
4902
            self._freeze = True
4903
            return
4904
        self.TypeId = FourByteNodeId(ObjectIds.DeleteNodesRequest_Encoding_DefaultBinary)
4905
        self.RequestHeader = RequestHeader()
4906
        self.Parameters = DeleteNodesParameters()
4907
        self._freeze = True
4908
4909 1
    def to_binary(self):
4910
        packet = []
4911
        packet.append(self.TypeId.to_binary())
4912
        packet.append(self.RequestHeader.to_binary())
4913
        packet.append(self.Parameters.to_binary())
4914
        return b''.join(packet)
4915
4916 1
    @staticmethod
4917
    def from_binary(data):
4918
        return DeleteNodesRequest(data)
4919
4920 1
    def _binary_init(self, data):
4921
        self.TypeId = NodeId.from_binary(data)
4922
        self.RequestHeader = RequestHeader.from_binary(data)
4923
        self.Parameters = DeleteNodesParameters.from_binary(data)
4924
4925 1
    def __str__(self):
4926
        return 'DeleteNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
4927
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
4928
               'Parameters:' + str(self.Parameters) + ')'
4929
4930 1
    __repr__ = __str__
4931
4932
4933 1
class DeleteNodesResult(FrozenClass):
4934
    '''
4935
    :ivar Results:
4936
    :vartype Results: StatusCode
4937
    :ivar DiagnosticInfos:
4938
    :vartype DiagnosticInfos: DiagnosticInfo
4939
    '''
4940 1
    def __init__(self, binary=None):
4941
        if binary is not None:
4942
            self._binary_init(binary)
4943
            self._freeze = True
4944
            return
4945
        self.Results = []
4946
        self.DiagnosticInfos = []
4947
        self._freeze = True
4948
4949 1
    def to_binary(self):
4950
        packet = []
4951
        packet.append(uatype_Int32.pack(len(self.Results)))
4952
        for fieldname in self.Results:
4953
            packet.append(fieldname.to_binary())
4954
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
4955
        for fieldname in self.DiagnosticInfos:
4956
            packet.append(fieldname.to_binary())
4957
        return b''.join(packet)
4958
4959 1
    @staticmethod
4960
    def from_binary(data):
4961
        return DeleteNodesResult(data)
4962
4963 1
    def _binary_init(self, data):
4964
        length = uatype_Int32.unpack(data.read(4))[0]
4965
        array = []
4966
        if length != -1:
4967
            for _ in range(0, length):
4968
                array.append(StatusCode.from_binary(data))
4969
        self.Results = array
4970
        length = uatype_Int32.unpack(data.read(4))[0]
4971
        array = []
4972
        if length != -1:
4973
            for _ in range(0, length):
4974
                array.append(DiagnosticInfo.from_binary(data))
4975
        self.DiagnosticInfos = array
4976
4977 1
    def __str__(self):
4978
        return 'DeleteNodesResult(' + 'Results:' + str(self.Results) + ', ' + \
4979
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4980
4981 1
    __repr__ = __str__
4982
4983
4984 1
class DeleteNodesResponse(FrozenClass):
4985
    '''
4986
    Delete one or more nodes from the server address space.
4987
4988
    :ivar TypeId:
4989
    :vartype TypeId: NodeId
4990
    :ivar ResponseHeader:
4991
    :vartype ResponseHeader: ResponseHeader
4992
    :ivar Parameters:
4993
    :vartype Parameters: DeleteNodesResult
4994
    '''
4995 1
    def __init__(self, binary=None):
4996
        if binary is not None:
4997
            self._binary_init(binary)
4998
            self._freeze = True
4999
            return
5000
        self.TypeId = FourByteNodeId(ObjectIds.DeleteNodesResponse_Encoding_DefaultBinary)
5001
        self.ResponseHeader = ResponseHeader()
5002
        self.Parameters = DeleteNodesResult()
5003
        self._freeze = True
5004
5005 1
    def to_binary(self):
5006
        packet = []
5007
        packet.append(self.TypeId.to_binary())
5008
        packet.append(self.ResponseHeader.to_binary())
5009
        packet.append(self.Parameters.to_binary())
5010
        return b''.join(packet)
5011
5012 1
    @staticmethod
5013
    def from_binary(data):
5014
        return DeleteNodesResponse(data)
5015
5016 1
    def _binary_init(self, data):
5017
        self.TypeId = NodeId.from_binary(data)
5018
        self.ResponseHeader = ResponseHeader.from_binary(data)
5019
        self.Parameters = DeleteNodesResult.from_binary(data)
5020
5021 1
    def __str__(self):
5022
        return 'DeleteNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
5023
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
5024
               'Parameters:' + str(self.Parameters) + ')'
5025
5026 1
    __repr__ = __str__
5027
5028
5029 1
class DeleteReferencesItem(FrozenClass):
5030
    '''
5031
    A request to delete a node from the server address space.
5032
5033
    :ivar SourceNodeId:
5034
    :vartype SourceNodeId: NodeId
5035
    :ivar ReferenceTypeId:
5036
    :vartype ReferenceTypeId: NodeId
5037
    :ivar IsForward:
5038
    :vartype IsForward: Boolean
5039
    :ivar TargetNodeId:
5040
    :vartype TargetNodeId: ExpandedNodeId
5041
    :ivar DeleteBidirectional:
5042
    :vartype DeleteBidirectional: Boolean
5043
    '''
5044 1
    def __init__(self, binary=None):
5045
        if binary is not None:
5046
            self._binary_init(binary)
5047
            self._freeze = True
5048
            return
5049
        self.SourceNodeId = NodeId()
5050
        self.ReferenceTypeId = NodeId()
5051
        self.IsForward = True
5052
        self.TargetNodeId = ExpandedNodeId()
5053
        self.DeleteBidirectional = True
5054
        self._freeze = True
5055
5056 1
    def to_binary(self):
5057
        packet = []
5058
        packet.append(self.SourceNodeId.to_binary())
5059
        packet.append(self.ReferenceTypeId.to_binary())
5060
        packet.append(uatype_Boolean.pack(self.IsForward))
5061
        packet.append(self.TargetNodeId.to_binary())
5062
        packet.append(uatype_Boolean.pack(self.DeleteBidirectional))
5063
        return b''.join(packet)
5064
5065 1
    @staticmethod
5066
    def from_binary(data):
5067
        return DeleteReferencesItem(data)
5068
5069 1
    def _binary_init(self, data):
5070
        self.SourceNodeId = NodeId.from_binary(data)
5071
        self.ReferenceTypeId = NodeId.from_binary(data)
5072
        self.IsForward = uatype_Boolean.unpack(data.read(1))[0]
5073
        self.TargetNodeId = ExpandedNodeId.from_binary(data)
5074
        self.DeleteBidirectional = uatype_Boolean.unpack(data.read(1))[0]
5075
5076 1
    def __str__(self):
5077
        return 'DeleteReferencesItem(' + 'SourceNodeId:' + str(self.SourceNodeId) + ', ' + \
5078
               'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', ' + \
5079
               'IsForward:' + str(self.IsForward) + ', ' + \
5080
               'TargetNodeId:' + str(self.TargetNodeId) + ', ' + \
5081
               'DeleteBidirectional:' + str(self.DeleteBidirectional) + ')'
5082
5083 1
    __repr__ = __str__
5084
5085
5086 1
class DeleteReferencesParameters(FrozenClass):
5087
    '''
5088
    :ivar ReferencesToDelete:
5089
    :vartype ReferencesToDelete: DeleteReferencesItem
5090
    '''
5091 1
    def __init__(self, binary=None):
5092
        if binary is not None:
5093
            self._binary_init(binary)
5094
            self._freeze = True
5095
            return
5096
        self.ReferencesToDelete = []
5097
        self._freeze = True
5098
5099 1
    def to_binary(self):
5100
        packet = []
5101
        packet.append(uatype_Int32.pack(len(self.ReferencesToDelete)))
5102
        for fieldname in self.ReferencesToDelete:
5103
            packet.append(fieldname.to_binary())
5104
        return b''.join(packet)
5105
5106 1
    @staticmethod
5107
    def from_binary(data):
5108
        return DeleteReferencesParameters(data)
5109
5110 1
    def _binary_init(self, data):
5111
        length = uatype_Int32.unpack(data.read(4))[0]
5112
        array = []
5113
        if length != -1:
5114
            for _ in range(0, length):
5115
                array.append(DeleteReferencesItem.from_binary(data))
5116
        self.ReferencesToDelete = array
5117
5118 1
    def __str__(self):
5119
        return 'DeleteReferencesParameters(' + 'ReferencesToDelete:' + str(self.ReferencesToDelete) + ')'
5120
5121 1
    __repr__ = __str__
5122
5123
5124 1
class DeleteReferencesRequest(FrozenClass):
5125
    '''
5126
    Delete one or more references from the server address space.
5127
5128
    :ivar TypeId:
5129
    :vartype TypeId: NodeId
5130
    :ivar RequestHeader:
5131
    :vartype RequestHeader: RequestHeader
5132
    :ivar Parameters:
5133
    :vartype Parameters: DeleteReferencesParameters
5134
    '''
5135 1
    def __init__(self, binary=None):
5136
        if binary is not None:
5137
            self._binary_init(binary)
5138
            self._freeze = True
5139
            return
5140
        self.TypeId = FourByteNodeId(ObjectIds.DeleteReferencesRequest_Encoding_DefaultBinary)
5141
        self.RequestHeader = RequestHeader()
5142
        self.Parameters = DeleteReferencesParameters()
5143
        self._freeze = True
5144
5145 1
    def to_binary(self):
5146
        packet = []
5147
        packet.append(self.TypeId.to_binary())
5148
        packet.append(self.RequestHeader.to_binary())
5149
        packet.append(self.Parameters.to_binary())
5150
        return b''.join(packet)
5151
5152 1
    @staticmethod
5153
    def from_binary(data):
5154
        return DeleteReferencesRequest(data)
5155
5156 1
    def _binary_init(self, data):
5157
        self.TypeId = NodeId.from_binary(data)
5158
        self.RequestHeader = RequestHeader.from_binary(data)
5159
        self.Parameters = DeleteReferencesParameters.from_binary(data)
5160
5161 1
    def __str__(self):
5162
        return 'DeleteReferencesRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
5163
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
5164
               'Parameters:' + str(self.Parameters) + ')'
5165
5166 1
    __repr__ = __str__
5167
5168
5169 1
class DeleteReferencesResult(FrozenClass):
5170
    '''
5171
    :ivar Results:
5172
    :vartype Results: StatusCode
5173
    :ivar DiagnosticInfos:
5174
    :vartype DiagnosticInfos: DiagnosticInfo
5175
    '''
5176 1
    def __init__(self, binary=None):
5177
        if binary is not None:
5178
            self._binary_init(binary)
5179
            self._freeze = True
5180
            return
5181
        self.Results = []
5182
        self.DiagnosticInfos = []
5183
        self._freeze = True
5184
5185 1
    def to_binary(self):
5186
        packet = []
5187
        packet.append(uatype_Int32.pack(len(self.Results)))
5188
        for fieldname in self.Results:
5189
            packet.append(fieldname.to_binary())
5190
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
5191
        for fieldname in self.DiagnosticInfos:
5192
            packet.append(fieldname.to_binary())
5193
        return b''.join(packet)
5194
5195 1
    @staticmethod
5196
    def from_binary(data):
5197
        return DeleteReferencesResult(data)
5198
5199 1
    def _binary_init(self, data):
5200
        length = uatype_Int32.unpack(data.read(4))[0]
5201
        array = []
5202
        if length != -1:
5203
            for _ in range(0, length):
5204
                array.append(StatusCode.from_binary(data))
5205
        self.Results = array
5206
        length = uatype_Int32.unpack(data.read(4))[0]
5207
        array = []
5208
        if length != -1:
5209
            for _ in range(0, length):
5210
                array.append(DiagnosticInfo.from_binary(data))
5211
        self.DiagnosticInfos = array
5212
5213 1
    def __str__(self):
5214
        return 'DeleteReferencesResult(' + 'Results:' + str(self.Results) + ', ' + \
5215
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
5216
5217 1
    __repr__ = __str__
5218
5219
5220 1
class DeleteReferencesResponse(FrozenClass):
5221
    '''
5222
    Delete one or more references from the server address space.
5223
5224
    :ivar TypeId:
5225
    :vartype TypeId: NodeId
5226
    :ivar ResponseHeader:
5227
    :vartype ResponseHeader: ResponseHeader
5228
    :ivar Parameters:
5229
    :vartype Parameters: DeleteReferencesResult
5230
    '''
5231 1
    def __init__(self, binary=None):
5232
        if binary is not None:
5233
            self._binary_init(binary)
5234
            self._freeze = True
5235
            return
5236
        self.TypeId = FourByteNodeId(ObjectIds.DeleteReferencesResponse_Encoding_DefaultBinary)
5237
        self.ResponseHeader = ResponseHeader()
5238
        self.Parameters = DeleteReferencesResult()
5239
        self._freeze = True
5240
5241 1
    def to_binary(self):
5242
        packet = []
5243
        packet.append(self.TypeId.to_binary())
5244
        packet.append(self.ResponseHeader.to_binary())
5245
        packet.append(self.Parameters.to_binary())
5246
        return b''.join(packet)
5247
5248 1
    @staticmethod
5249
    def from_binary(data):
5250
        return DeleteReferencesResponse(data)
5251
5252 1
    def _binary_init(self, data):
5253
        self.TypeId = NodeId.from_binary(data)
5254
        self.ResponseHeader = ResponseHeader.from_binary(data)
5255
        self.Parameters = DeleteReferencesResult.from_binary(data)
5256
5257 1
    def __str__(self):
5258
        return 'DeleteReferencesResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
5259
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
5260
               'Parameters:' + str(self.Parameters) + ')'
5261
5262 1
    __repr__ = __str__
5263
5264
5265 1
class ViewDescription(FrozenClass):
5266
    '''
5267
    The view to browse.
5268
5269
    :ivar ViewId:
5270
    :vartype ViewId: NodeId
5271
    :ivar Timestamp:
5272
    :vartype Timestamp: DateTime
5273
    :ivar ViewVersion:
5274
    :vartype ViewVersion: UInt32
5275
    '''
5276 1
    def __init__(self, binary=None):
5277 1
        if binary is not None:
5278 1
            self._binary_init(binary)
5279 1
            self._freeze = True
5280 1
            return
5281 1
        self.ViewId = NodeId()
5282 1
        self.Timestamp = datetime.now()
5283 1
        self.ViewVersion = 0
5284 1
        self._freeze = True
5285
5286 1
    def to_binary(self):
5287 1
        packet = []
5288 1
        packet.append(self.ViewId.to_binary())
5289 1
        packet.append(pack_datetime(self.Timestamp))
5290 1
        packet.append(uatype_UInt32.pack(self.ViewVersion))
5291 1
        return b''.join(packet)
5292
5293 1
    @staticmethod
5294
    def from_binary(data):
5295 1
        return ViewDescription(data)
5296
5297 1
    def _binary_init(self, data):
5298 1
        self.ViewId = NodeId.from_binary(data)
5299 1
        self.Timestamp = unpack_datetime(data)
5300 1
        self.ViewVersion = uatype_UInt32.unpack(data.read(4))[0]
5301
5302 1
    def __str__(self):
5303
        return 'ViewDescription(' + 'ViewId:' + str(self.ViewId) + ', ' + \
5304
               'Timestamp:' + str(self.Timestamp) + ', ' + \
5305
               'ViewVersion:' + str(self.ViewVersion) + ')'
5306
5307 1
    __repr__ = __str__
5308
5309
5310 1
class BrowseDescription(FrozenClass):
5311
    '''
5312
    A request to browse the the references from a node.
5313
5314
    :ivar NodeId:
5315
    :vartype NodeId: NodeId
5316
    :ivar BrowseDirection:
5317
    :vartype BrowseDirection: BrowseDirection
5318
    :ivar ReferenceTypeId:
5319
    :vartype ReferenceTypeId: NodeId
5320
    :ivar IncludeSubtypes:
5321
    :vartype IncludeSubtypes: Boolean
5322
    :ivar NodeClassMask:
5323
    :vartype NodeClassMask: UInt32
5324
    :ivar ResultMask:
5325
    :vartype ResultMask: UInt32
5326
    '''
5327 1
    def __init__(self, binary=None):
5328 1
        if binary is not None:
5329 1
            self._binary_init(binary)
5330 1
            self._freeze = True
5331 1
            return
5332 1
        self.NodeId = NodeId()
5333 1
        self.BrowseDirection = BrowseDirection(0)
5334 1
        self.ReferenceTypeId = NodeId()
5335 1
        self.IncludeSubtypes = True
5336 1
        self.NodeClassMask = 0
5337 1
        self.ResultMask = 0
5338 1
        self._freeze = True
5339
5340 1
    def to_binary(self):
5341 1
        packet = []
5342 1
        packet.append(self.NodeId.to_binary())
5343 1
        packet.append(uatype_UInt32.pack(self.BrowseDirection.value))
5344 1
        packet.append(self.ReferenceTypeId.to_binary())
5345 1
        packet.append(uatype_Boolean.pack(self.IncludeSubtypes))
5346 1
        packet.append(uatype_UInt32.pack(self.NodeClassMask))
5347 1
        packet.append(uatype_UInt32.pack(self.ResultMask))
5348 1
        return b''.join(packet)
5349
5350 1
    @staticmethod
5351
    def from_binary(data):
5352 1
        return BrowseDescription(data)
5353
5354 1
    def _binary_init(self, data):
5355 1
        self.NodeId = NodeId.from_binary(data)
5356 1
        self.BrowseDirection = BrowseDirection(uatype_UInt32.unpack(data.read(4))[0])
5357 1
        self.ReferenceTypeId = NodeId.from_binary(data)
5358 1
        self.IncludeSubtypes = uatype_Boolean.unpack(data.read(1))[0]
5359 1
        self.NodeClassMask = uatype_UInt32.unpack(data.read(4))[0]
5360 1
        self.ResultMask = uatype_UInt32.unpack(data.read(4))[0]
5361
5362 1
    def __str__(self):
5363
        return 'BrowseDescription(' + 'NodeId:' + str(self.NodeId) + ', ' + \
5364
               'BrowseDirection:' + str(self.BrowseDirection) + ', ' + \
5365
               'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', ' + \
5366
               'IncludeSubtypes:' + str(self.IncludeSubtypes) + ', ' + \
5367
               'NodeClassMask:' + str(self.NodeClassMask) + ', ' + \
5368
               'ResultMask:' + str(self.ResultMask) + ')'
5369
5370 1
    __repr__ = __str__
5371
5372
5373 1
class ReferenceDescription(FrozenClass):
5374
    '''
5375
    The description of a reference.
5376
5377
    :ivar ReferenceTypeId:
5378
    :vartype ReferenceTypeId: NodeId
5379
    :ivar IsForward:
5380
    :vartype IsForward: Boolean
5381
    :ivar NodeId:
5382
    :vartype NodeId: ExpandedNodeId
5383
    :ivar BrowseName:
5384
    :vartype BrowseName: QualifiedName
5385
    :ivar DisplayName:
5386
    :vartype DisplayName: LocalizedText
5387
    :ivar NodeClass:
5388
    :vartype NodeClass: NodeClass
5389
    :ivar TypeDefinition:
5390
    :vartype TypeDefinition: ExpandedNodeId
5391
    '''
5392 1
    def __init__(self, binary=None):
5393 1
        if binary is not None:
5394 1
            self._binary_init(binary)
5395 1
            self._freeze = True
5396 1
            return
5397 1
        self.ReferenceTypeId = NodeId()
5398 1
        self.IsForward = True
5399 1
        self.NodeId = ExpandedNodeId()
5400 1
        self.BrowseName = QualifiedName()
5401 1
        self.DisplayName = LocalizedText()
5402 1
        self.NodeClass = NodeClass(0)
5403 1
        self.TypeDefinition = ExpandedNodeId()
5404 1
        self._freeze = True
5405
5406 1
    def to_binary(self):
5407 1
        packet = []
5408 1
        packet.append(self.ReferenceTypeId.to_binary())
5409 1
        packet.append(uatype_Boolean.pack(self.IsForward))
5410 1
        packet.append(self.NodeId.to_binary())
5411 1
        packet.append(self.BrowseName.to_binary())
5412 1
        packet.append(self.DisplayName.to_binary())
5413 1
        packet.append(uatype_UInt32.pack(self.NodeClass.value))
5414 1
        packet.append(self.TypeDefinition.to_binary())
5415 1
        return b''.join(packet)
5416
5417 1
    @staticmethod
5418
    def from_binary(data):
5419 1
        return ReferenceDescription(data)
5420
5421 1
    def _binary_init(self, data):
5422 1
        self.ReferenceTypeId = NodeId.from_binary(data)
5423 1
        self.IsForward = uatype_Boolean.unpack(data.read(1))[0]
5424 1
        self.NodeId = ExpandedNodeId.from_binary(data)
5425 1
        self.BrowseName = QualifiedName.from_binary(data)
5426 1
        self.DisplayName = LocalizedText.from_binary(data)
5427 1
        self.NodeClass = NodeClass(uatype_UInt32.unpack(data.read(4))[0])
5428 1
        self.TypeDefinition = ExpandedNodeId.from_binary(data)
5429
5430 1
    def __str__(self):
5431
        return 'ReferenceDescription(' + 'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', ' + \
5432
               'IsForward:' + str(self.IsForward) + ', ' + \
5433
               'NodeId:' + str(self.NodeId) + ', ' + \
5434
               'BrowseName:' + str(self.BrowseName) + ', ' + \
5435
               'DisplayName:' + str(self.DisplayName) + ', ' + \
5436
               'NodeClass:' + str(self.NodeClass) + ', ' + \
5437
               'TypeDefinition:' + str(self.TypeDefinition) + ')'
5438
5439 1
    __repr__ = __str__
5440
5441
5442 1
class BrowseResult(FrozenClass):
5443
    '''
5444
    The result of a browse operation.
5445
5446
    :ivar StatusCode:
5447
    :vartype StatusCode: StatusCode
5448
    :ivar ContinuationPoint:
5449
    :vartype ContinuationPoint: ByteString
5450
    :ivar References:
5451
    :vartype References: ReferenceDescription
5452
    '''
5453 1
    def __init__(self, binary=None):
5454 1
        if binary is not None:
5455 1
            self._binary_init(binary)
5456 1
            self._freeze = True
5457 1
            return
5458 1
        self.StatusCode = StatusCode()
5459 1
        self.ContinuationPoint = b''
5460 1
        self.References = []
5461 1
        self._freeze = True
5462
5463 1
    def to_binary(self):
5464 1
        packet = []
5465 1
        packet.append(self.StatusCode.to_binary())
5466 1
        packet.append(pack_bytes(self.ContinuationPoint))
5467 1
        packet.append(uatype_Int32.pack(len(self.References)))
5468 1
        for fieldname in self.References:
5469 1
            packet.append(fieldname.to_binary())
5470 1
        return b''.join(packet)
5471
5472 1
    @staticmethod
5473
    def from_binary(data):
5474 1
        return BrowseResult(data)
5475
5476 1
    def _binary_init(self, data):
5477 1
        self.StatusCode = StatusCode.from_binary(data)
5478 1
        self.ContinuationPoint = unpack_bytes(data)
5479 1
        length = uatype_Int32.unpack(data.read(4))[0]
5480 1
        array = []
5481 1
        if length != -1:
5482 1
            for _ in range(0, length):
5483 1
                array.append(ReferenceDescription.from_binary(data))
5484 1
        self.References = array
5485
5486 1
    def __str__(self):
5487
        return 'BrowseResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
5488
               'ContinuationPoint:' + str(self.ContinuationPoint) + ', ' + \
5489
               'References:' + str(self.References) + ')'
5490
5491 1
    __repr__ = __str__
5492
5493
5494 1
class BrowseParameters(FrozenClass):
5495
    '''
5496
    :ivar View:
5497
    :vartype View: ViewDescription
5498
    :ivar RequestedMaxReferencesPerNode:
5499
    :vartype RequestedMaxReferencesPerNode: UInt32
5500
    :ivar NodesToBrowse:
5501
    :vartype NodesToBrowse: BrowseDescription
5502
    '''
5503 1
    def __init__(self, binary=None):
5504 1
        if binary is not None:
5505 1
            self._binary_init(binary)
5506 1
            self._freeze = True
5507 1
            return
5508 1
        self.View = ViewDescription()
5509 1
        self.RequestedMaxReferencesPerNode = 0
5510 1
        self.NodesToBrowse = []
5511 1
        self._freeze = True
5512
5513 1
    def to_binary(self):
5514 1
        packet = []
5515 1
        packet.append(self.View.to_binary())
5516 1
        packet.append(uatype_UInt32.pack(self.RequestedMaxReferencesPerNode))
5517 1
        packet.append(uatype_Int32.pack(len(self.NodesToBrowse)))
5518 1
        for fieldname in self.NodesToBrowse:
5519 1
            packet.append(fieldname.to_binary())
5520 1
        return b''.join(packet)
5521
5522 1
    @staticmethod
5523
    def from_binary(data):
5524 1
        return BrowseParameters(data)
5525
5526 1
    def _binary_init(self, data):
5527 1
        self.View = ViewDescription.from_binary(data)
5528 1
        self.RequestedMaxReferencesPerNode = uatype_UInt32.unpack(data.read(4))[0]
5529 1
        length = uatype_Int32.unpack(data.read(4))[0]
5530 1
        array = []
5531 1
        if length != -1:
5532 1
            for _ in range(0, length):
5533 1
                array.append(BrowseDescription.from_binary(data))
5534 1
        self.NodesToBrowse = array
5535
5536 1
    def __str__(self):
5537
        return 'BrowseParameters(' + 'View:' + str(self.View) + ', ' + \
5538
               'RequestedMaxReferencesPerNode:' + str(self.RequestedMaxReferencesPerNode) + ', ' + \
5539
               'NodesToBrowse:' + str(self.NodesToBrowse) + ')'
5540
5541 1
    __repr__ = __str__
5542
5543
5544 1
class BrowseRequest(FrozenClass):
5545
    '''
5546
    Browse the references for one or more nodes from the server address space.
5547
5548
    :ivar TypeId:
5549
    :vartype TypeId: NodeId
5550
    :ivar RequestHeader:
5551
    :vartype RequestHeader: RequestHeader
5552
    :ivar Parameters:
5553
    :vartype Parameters: BrowseParameters
5554
    '''
5555 1
    def __init__(self, binary=None):
5556 1
        if binary is not None:
5557
            self._binary_init(binary)
5558
            self._freeze = True
5559
            return
5560 1
        self.TypeId = FourByteNodeId(ObjectIds.BrowseRequest_Encoding_DefaultBinary)
5561 1
        self.RequestHeader = RequestHeader()
5562 1
        self.Parameters = BrowseParameters()
5563 1
        self._freeze = True
5564
5565 1
    def to_binary(self):
5566 1
        packet = []
5567 1
        packet.append(self.TypeId.to_binary())
5568 1
        packet.append(self.RequestHeader.to_binary())
5569 1
        packet.append(self.Parameters.to_binary())
5570 1
        return b''.join(packet)
5571
5572 1
    @staticmethod
5573
    def from_binary(data):
5574
        return BrowseRequest(data)
5575
5576 1
    def _binary_init(self, data):
5577
        self.TypeId = NodeId.from_binary(data)
5578
        self.RequestHeader = RequestHeader.from_binary(data)
5579
        self.Parameters = BrowseParameters.from_binary(data)
5580
5581 1
    def __str__(self):
5582
        return 'BrowseRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
5583
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
5584
               'Parameters:' + str(self.Parameters) + ')'
5585
5586 1
    __repr__ = __str__
5587
5588
5589 1
class BrowseResponse(FrozenClass):
5590
    '''
5591
    Browse the references for one or more nodes from the server address space.
5592
5593
    :ivar TypeId:
5594
    :vartype TypeId: NodeId
5595
    :ivar ResponseHeader:
5596
    :vartype ResponseHeader: ResponseHeader
5597
    :ivar Results:
5598
    :vartype Results: BrowseResult
5599
    :ivar DiagnosticInfos:
5600
    :vartype DiagnosticInfos: DiagnosticInfo
5601
    '''
5602 1
    def __init__(self, binary=None):
5603 1
        if binary is not None:
5604 1
            self._binary_init(binary)
5605 1
            self._freeze = True
5606 1
            return
5607 1
        self.TypeId = FourByteNodeId(ObjectIds.BrowseResponse_Encoding_DefaultBinary)
5608 1
        self.ResponseHeader = ResponseHeader()
5609 1
        self.Results = []
5610 1
        self.DiagnosticInfos = []
5611 1
        self._freeze = True
5612
5613 1
    def to_binary(self):
5614 1
        packet = []
5615 1
        packet.append(self.TypeId.to_binary())
5616 1
        packet.append(self.ResponseHeader.to_binary())
5617 1
        packet.append(uatype_Int32.pack(len(self.Results)))
5618 1
        for fieldname in self.Results:
5619 1
            packet.append(fieldname.to_binary())
5620 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
5621 1
        for fieldname in self.DiagnosticInfos:
5622
            packet.append(fieldname.to_binary())
5623 1
        return b''.join(packet)
5624
5625 1
    @staticmethod
5626
    def from_binary(data):
5627 1
        return BrowseResponse(data)
5628
5629 1
    def _binary_init(self, data):
5630 1
        self.TypeId = NodeId.from_binary(data)
5631 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
5632 1
        length = uatype_Int32.unpack(data.read(4))[0]
5633 1
        array = []
5634 1
        if length != -1:
5635 1
            for _ in range(0, length):
5636 1
                array.append(BrowseResult.from_binary(data))
5637 1
        self.Results = array
5638 1
        length = uatype_Int32.unpack(data.read(4))[0]
5639 1
        array = []
5640 1
        if length != -1:
5641 1
            for _ in range(0, length):
5642
                array.append(DiagnosticInfo.from_binary(data))
5643 1
        self.DiagnosticInfos = array
5644
5645 1
    def __str__(self):
5646
        return 'BrowseResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
5647
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
5648
               'Results:' + str(self.Results) + ', ' + \
5649
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
5650
5651 1
    __repr__ = __str__
5652
5653
5654 1
class BrowseNextParameters(FrozenClass):
5655
    '''
5656
    :ivar ReleaseContinuationPoints:
5657
    :vartype ReleaseContinuationPoints: Boolean
5658
    :ivar ContinuationPoints:
5659
    :vartype ContinuationPoints: ByteString
5660
    '''
5661 1
    def __init__(self, binary=None):
5662
        if binary is not None:
5663
            self._binary_init(binary)
5664
            self._freeze = True
5665
            return
5666
        self.ReleaseContinuationPoints = True
5667
        self.ContinuationPoints = []
5668
        self._freeze = True
5669
5670 1
    def to_binary(self):
5671
        packet = []
5672
        packet.append(uatype_Boolean.pack(self.ReleaseContinuationPoints))
5673
        packet.append(uatype_Int32.pack(len(self.ContinuationPoints)))
5674
        for fieldname in self.ContinuationPoints:
5675
            packet.append(pack_bytes(fieldname))
5676
        return b''.join(packet)
5677
5678 1
    @staticmethod
5679
    def from_binary(data):
5680
        return BrowseNextParameters(data)
5681
5682 1
    def _binary_init(self, data):
5683
        self.ReleaseContinuationPoints = uatype_Boolean.unpack(data.read(1))[0]
5684
        self.ContinuationPoints = unpack_uatype_array('ByteString', data)
5685
5686 1
    def __str__(self):
5687
        return 'BrowseNextParameters(' + 'ReleaseContinuationPoints:' + str(self.ReleaseContinuationPoints) + ', ' + \
5688
               'ContinuationPoints:' + str(self.ContinuationPoints) + ')'
5689
5690 1
    __repr__ = __str__
5691
5692
5693 1
class BrowseNextRequest(FrozenClass):
5694
    '''
5695
    Continues one or more browse operations.
5696
5697
    :ivar TypeId:
5698
    :vartype TypeId: NodeId
5699
    :ivar RequestHeader:
5700
    :vartype RequestHeader: RequestHeader
5701
    :ivar Parameters:
5702
    :vartype Parameters: BrowseNextParameters
5703
    '''
5704 1
    def __init__(self, binary=None):
5705
        if binary is not None:
5706
            self._binary_init(binary)
5707
            self._freeze = True
5708
            return
5709
        self.TypeId = FourByteNodeId(ObjectIds.BrowseNextRequest_Encoding_DefaultBinary)
5710
        self.RequestHeader = RequestHeader()
5711
        self.Parameters = BrowseNextParameters()
5712
        self._freeze = True
5713
5714 1
    def to_binary(self):
5715
        packet = []
5716
        packet.append(self.TypeId.to_binary())
5717
        packet.append(self.RequestHeader.to_binary())
5718
        packet.append(self.Parameters.to_binary())
5719
        return b''.join(packet)
5720
5721 1
    @staticmethod
5722
    def from_binary(data):
5723
        return BrowseNextRequest(data)
5724
5725 1
    def _binary_init(self, data):
5726
        self.TypeId = NodeId.from_binary(data)
5727
        self.RequestHeader = RequestHeader.from_binary(data)
5728
        self.Parameters = BrowseNextParameters.from_binary(data)
5729
5730 1
    def __str__(self):
5731
        return 'BrowseNextRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
5732
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
5733
               'Parameters:' + str(self.Parameters) + ')'
5734
5735 1
    __repr__ = __str__
5736
5737
5738 1
class BrowseNextResult(FrozenClass):
5739
    '''
5740
    :ivar Results:
5741
    :vartype Results: BrowseResult
5742
    :ivar DiagnosticInfos:
5743
    :vartype DiagnosticInfos: DiagnosticInfo
5744
    '''
5745 1
    def __init__(self, binary=None):
5746
        if binary is not None:
5747
            self._binary_init(binary)
5748
            self._freeze = True
5749
            return
5750
        self.Results = []
5751
        self.DiagnosticInfos = []
5752
        self._freeze = True
5753
5754 1
    def to_binary(self):
5755
        packet = []
5756
        packet.append(uatype_Int32.pack(len(self.Results)))
5757
        for fieldname in self.Results:
5758
            packet.append(fieldname.to_binary())
5759
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
5760
        for fieldname in self.DiagnosticInfos:
5761
            packet.append(fieldname.to_binary())
5762
        return b''.join(packet)
5763
5764 1
    @staticmethod
5765
    def from_binary(data):
5766
        return BrowseNextResult(data)
5767
5768 1
    def _binary_init(self, data):
5769
        length = uatype_Int32.unpack(data.read(4))[0]
5770
        array = []
5771
        if length != -1:
5772
            for _ in range(0, length):
5773
                array.append(BrowseResult.from_binary(data))
5774
        self.Results = array
5775
        length = uatype_Int32.unpack(data.read(4))[0]
5776
        array = []
5777
        if length != -1:
5778
            for _ in range(0, length):
5779
                array.append(DiagnosticInfo.from_binary(data))
5780
        self.DiagnosticInfos = array
5781
5782 1
    def __str__(self):
5783
        return 'BrowseNextResult(' + 'Results:' + str(self.Results) + ', ' + \
5784
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
5785
5786 1
    __repr__ = __str__
5787
5788
5789 1
class BrowseNextResponse(FrozenClass):
5790
    '''
5791
    Continues one or more browse operations.
5792
5793
    :ivar TypeId:
5794
    :vartype TypeId: NodeId
5795
    :ivar ResponseHeader:
5796
    :vartype ResponseHeader: ResponseHeader
5797
    :ivar Parameters:
5798
    :vartype Parameters: BrowseNextResult
5799
    '''
5800 1
    def __init__(self, binary=None):
5801
        if binary is not None:
5802
            self._binary_init(binary)
5803
            self._freeze = True
5804
            return
5805
        self.TypeId = FourByteNodeId(ObjectIds.BrowseNextResponse_Encoding_DefaultBinary)
5806
        self.ResponseHeader = ResponseHeader()
5807
        self.Parameters = BrowseNextResult()
5808
        self._freeze = True
5809
5810 1
    def to_binary(self):
5811
        packet = []
5812
        packet.append(self.TypeId.to_binary())
5813
        packet.append(self.ResponseHeader.to_binary())
5814
        packet.append(self.Parameters.to_binary())
5815
        return b''.join(packet)
5816
5817 1
    @staticmethod
5818
    def from_binary(data):
5819
        return BrowseNextResponse(data)
5820
5821 1
    def _binary_init(self, data):
5822
        self.TypeId = NodeId.from_binary(data)
5823
        self.ResponseHeader = ResponseHeader.from_binary(data)
5824
        self.Parameters = BrowseNextResult.from_binary(data)
5825
5826 1
    def __str__(self):
5827
        return 'BrowseNextResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
5828
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
5829
               'Parameters:' + str(self.Parameters) + ')'
5830
5831 1
    __repr__ = __str__
5832
5833
5834 1
class RelativePathElement(FrozenClass):
5835
    '''
5836
    An element in a relative path.
5837
5838
    :ivar ReferenceTypeId:
5839
    :vartype ReferenceTypeId: NodeId
5840
    :ivar IsInverse:
5841
    :vartype IsInverse: Boolean
5842
    :ivar IncludeSubtypes:
5843
    :vartype IncludeSubtypes: Boolean
5844
    :ivar TargetName:
5845
    :vartype TargetName: QualifiedName
5846
    '''
5847 1
    def __init__(self, binary=None):
5848 1
        if binary is not None:
5849 1
            self._binary_init(binary)
5850 1
            self._freeze = True
5851 1
            return
5852 1
        self.ReferenceTypeId = NodeId()
5853 1
        self.IsInverse = True
5854 1
        self.IncludeSubtypes = True
5855 1
        self.TargetName = QualifiedName()
5856 1
        self._freeze = True
5857
5858 1
    def to_binary(self):
5859 1
        packet = []
5860 1
        packet.append(self.ReferenceTypeId.to_binary())
5861 1
        packet.append(uatype_Boolean.pack(self.IsInverse))
5862 1
        packet.append(uatype_Boolean.pack(self.IncludeSubtypes))
5863 1
        packet.append(self.TargetName.to_binary())
5864 1
        return b''.join(packet)
5865
5866 1
    @staticmethod
5867
    def from_binary(data):
5868 1
        return RelativePathElement(data)
5869
5870 1
    def _binary_init(self, data):
5871 1
        self.ReferenceTypeId = NodeId.from_binary(data)
5872 1
        self.IsInverse = uatype_Boolean.unpack(data.read(1))[0]
5873 1
        self.IncludeSubtypes = uatype_Boolean.unpack(data.read(1))[0]
5874 1
        self.TargetName = QualifiedName.from_binary(data)
5875
5876 1
    def __str__(self):
5877
        return 'RelativePathElement(' + 'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', ' + \
5878
               'IsInverse:' + str(self.IsInverse) + ', ' + \
5879
               'IncludeSubtypes:' + str(self.IncludeSubtypes) + ', ' + \
5880
               'TargetName:' + str(self.TargetName) + ')'
5881
5882 1
    __repr__ = __str__
5883
5884
5885 1
class RelativePath(FrozenClass):
5886
    '''
5887
    A relative path constructed from reference types and browse names.
5888
5889
    :ivar Elements:
5890
    :vartype Elements: RelativePathElement
5891
    '''
5892 1
    def __init__(self, binary=None):
5893 1
        if binary is not None:
5894 1
            self._binary_init(binary)
5895 1
            self._freeze = True
5896 1
            return
5897 1
        self.Elements = []
5898 1
        self._freeze = True
5899
5900 1
    def to_binary(self):
5901 1
        packet = []
5902 1
        packet.append(uatype_Int32.pack(len(self.Elements)))
5903 1
        for fieldname in self.Elements:
5904 1
            packet.append(fieldname.to_binary())
5905 1
        return b''.join(packet)
5906
5907 1
    @staticmethod
5908
    def from_binary(data):
5909 1
        return RelativePath(data)
5910
5911 1
    def _binary_init(self, data):
5912 1
        length = uatype_Int32.unpack(data.read(4))[0]
5913 1
        array = []
5914 1
        if length != -1:
5915 1
            for _ in range(0, length):
5916 1
                array.append(RelativePathElement.from_binary(data))
5917 1
        self.Elements = array
5918
5919 1
    def __str__(self):
5920
        return 'RelativePath(' + 'Elements:' + str(self.Elements) + ')'
5921
5922 1
    __repr__ = __str__
5923
5924
5925 1
class BrowsePath(FrozenClass):
5926
    '''
5927
    A request to translate a path into a node id.
5928
5929
    :ivar StartingNode:
5930
    :vartype StartingNode: NodeId
5931
    :ivar RelativePath:
5932
    :vartype RelativePath: RelativePath
5933
    '''
5934 1
    def __init__(self, binary=None):
5935 1
        if binary is not None:
5936 1
            self._binary_init(binary)
5937 1
            self._freeze = True
5938 1
            return
5939 1
        self.StartingNode = NodeId()
5940 1
        self.RelativePath = RelativePath()
5941 1
        self._freeze = True
5942
5943 1
    def to_binary(self):
5944 1
        packet = []
5945 1
        packet.append(self.StartingNode.to_binary())
5946 1
        packet.append(self.RelativePath.to_binary())
5947 1
        return b''.join(packet)
5948
5949 1
    @staticmethod
5950
    def from_binary(data):
5951 1
        return BrowsePath(data)
5952
5953 1
    def _binary_init(self, data):
5954 1
        self.StartingNode = NodeId.from_binary(data)
5955 1
        self.RelativePath = RelativePath.from_binary(data)
5956
5957 1
    def __str__(self):
5958
        return 'BrowsePath(' + 'StartingNode:' + str(self.StartingNode) + ', ' + \
5959
               'RelativePath:' + str(self.RelativePath) + ')'
5960
5961 1
    __repr__ = __str__
5962
5963
5964 1
class BrowsePathTarget(FrozenClass):
5965
    '''
5966
    The target of the translated path.
5967
5968
    :ivar TargetId:
5969
    :vartype TargetId: ExpandedNodeId
5970
    :ivar RemainingPathIndex:
5971
    :vartype RemainingPathIndex: UInt32
5972
    '''
5973 1
    def __init__(self, binary=None):
5974 1
        if binary is not None:
5975 1
            self._binary_init(binary)
5976 1
            self._freeze = True
5977 1
            return
5978 1
        self.TargetId = ExpandedNodeId()
5979 1
        self.RemainingPathIndex = 0
5980 1
        self._freeze = True
5981
5982 1
    def to_binary(self):
5983 1
        packet = []
5984 1
        packet.append(self.TargetId.to_binary())
5985 1
        packet.append(uatype_UInt32.pack(self.RemainingPathIndex))
5986 1
        return b''.join(packet)
5987
5988 1
    @staticmethod
5989
    def from_binary(data):
5990 1
        return BrowsePathTarget(data)
5991
5992 1
    def _binary_init(self, data):
5993 1
        self.TargetId = ExpandedNodeId.from_binary(data)
5994 1
        self.RemainingPathIndex = uatype_UInt32.unpack(data.read(4))[0]
5995
5996 1
    def __str__(self):
5997
        return 'BrowsePathTarget(' + 'TargetId:' + str(self.TargetId) + ', ' + \
5998
               'RemainingPathIndex:' + str(self.RemainingPathIndex) + ')'
5999
6000 1
    __repr__ = __str__
6001
6002
6003 1
class BrowsePathResult(FrozenClass):
6004
    '''
6005
    The result of a translate opearation.
6006
6007
    :ivar StatusCode:
6008
    :vartype StatusCode: StatusCode
6009
    :ivar Targets:
6010
    :vartype Targets: BrowsePathTarget
6011
    '''
6012 1
    def __init__(self, binary=None):
6013 1
        if binary is not None:
6014 1
            self._binary_init(binary)
6015 1
            self._freeze = True
6016 1
            return
6017 1
        self.StatusCode = StatusCode()
6018 1
        self.Targets = []
6019 1
        self._freeze = True
6020
6021 1
    def to_binary(self):
6022 1
        packet = []
6023 1
        packet.append(self.StatusCode.to_binary())
6024 1
        packet.append(uatype_Int32.pack(len(self.Targets)))
6025 1
        for fieldname in self.Targets:
6026 1
            packet.append(fieldname.to_binary())
6027 1
        return b''.join(packet)
6028
6029 1
    @staticmethod
6030
    def from_binary(data):
6031 1
        return BrowsePathResult(data)
6032
6033 1
    def _binary_init(self, data):
6034 1
        self.StatusCode = StatusCode.from_binary(data)
6035 1
        length = uatype_Int32.unpack(data.read(4))[0]
6036 1
        array = []
6037 1
        if length != -1:
6038 1
            for _ in range(0, length):
6039 1
                array.append(BrowsePathTarget.from_binary(data))
6040 1
        self.Targets = array
6041
6042 1
    def __str__(self):
6043
        return 'BrowsePathResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
6044
               'Targets:' + str(self.Targets) + ')'
6045
6046 1
    __repr__ = __str__
6047
6048
6049 1
class TranslateBrowsePathsToNodeIdsParameters(FrozenClass):
6050
    '''
6051
    :ivar BrowsePaths:
6052
    :vartype BrowsePaths: BrowsePath
6053
    '''
6054 1
    def __init__(self, binary=None):
6055 1
        if binary is not None:
6056 1
            self._binary_init(binary)
6057 1
            self._freeze = True
6058 1
            return
6059 1
        self.BrowsePaths = []
6060 1
        self._freeze = True
6061
6062 1
    def to_binary(self):
6063 1
        packet = []
6064 1
        packet.append(uatype_Int32.pack(len(self.BrowsePaths)))
6065 1
        for fieldname in self.BrowsePaths:
6066 1
            packet.append(fieldname.to_binary())
6067 1
        return b''.join(packet)
6068
6069 1
    @staticmethod
6070
    def from_binary(data):
6071 1
        return TranslateBrowsePathsToNodeIdsParameters(data)
6072
6073 1
    def _binary_init(self, data):
6074 1
        length = uatype_Int32.unpack(data.read(4))[0]
6075 1
        array = []
6076 1
        if length != -1:
6077 1
            for _ in range(0, length):
6078 1
                array.append(BrowsePath.from_binary(data))
6079 1
        self.BrowsePaths = array
6080
6081 1
    def __str__(self):
6082
        return 'TranslateBrowsePathsToNodeIdsParameters(' + 'BrowsePaths:' + str(self.BrowsePaths) + ')'
6083
6084 1
    __repr__ = __str__
6085
6086
6087 1
class TranslateBrowsePathsToNodeIdsRequest(FrozenClass):
6088
    '''
6089
    Translates one or more paths in the server address space.
6090
6091
    :ivar TypeId:
6092
    :vartype TypeId: NodeId
6093
    :ivar RequestHeader:
6094
    :vartype RequestHeader: RequestHeader
6095
    :ivar Parameters:
6096
    :vartype Parameters: TranslateBrowsePathsToNodeIdsParameters
6097
    '''
6098 1
    def __init__(self, binary=None):
6099 1
        if binary is not None:
6100
            self._binary_init(binary)
6101
            self._freeze = True
6102
            return
6103 1
        self.TypeId = FourByteNodeId(ObjectIds.TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultBinary)
6104 1
        self.RequestHeader = RequestHeader()
6105 1
        self.Parameters = TranslateBrowsePathsToNodeIdsParameters()
6106 1
        self._freeze = True
6107
6108 1
    def to_binary(self):
6109 1
        packet = []
6110 1
        packet.append(self.TypeId.to_binary())
6111 1
        packet.append(self.RequestHeader.to_binary())
6112 1
        packet.append(self.Parameters.to_binary())
6113 1
        return b''.join(packet)
6114
6115 1
    @staticmethod
6116
    def from_binary(data):
6117
        return TranslateBrowsePathsToNodeIdsRequest(data)
6118
6119 1
    def _binary_init(self, data):
6120
        self.TypeId = NodeId.from_binary(data)
6121
        self.RequestHeader = RequestHeader.from_binary(data)
6122
        self.Parameters = TranslateBrowsePathsToNodeIdsParameters.from_binary(data)
6123
6124 1
    def __str__(self):
6125
        return 'TranslateBrowsePathsToNodeIdsRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
6126
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
6127
               'Parameters:' + str(self.Parameters) + ')'
6128
6129 1
    __repr__ = __str__
6130
6131
6132 1
class TranslateBrowsePathsToNodeIdsResponse(FrozenClass):
6133
    '''
6134
    Translates one or more paths in the server address space.
6135
6136
    :ivar TypeId:
6137
    :vartype TypeId: NodeId
6138
    :ivar ResponseHeader:
6139
    :vartype ResponseHeader: ResponseHeader
6140
    :ivar Results:
6141
    :vartype Results: BrowsePathResult
6142
    :ivar DiagnosticInfos:
6143
    :vartype DiagnosticInfos: DiagnosticInfo
6144
    '''
6145 1
    def __init__(self, binary=None):
6146 1
        if binary is not None:
6147 1
            self._binary_init(binary)
6148 1
            self._freeze = True
6149 1
            return
6150 1
        self.TypeId = FourByteNodeId(ObjectIds.TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultBinary)
6151 1
        self.ResponseHeader = ResponseHeader()
6152 1
        self.Results = []
6153 1
        self.DiagnosticInfos = []
6154 1
        self._freeze = True
6155
6156 1
    def to_binary(self):
6157 1
        packet = []
6158 1
        packet.append(self.TypeId.to_binary())
6159 1
        packet.append(self.ResponseHeader.to_binary())
6160 1
        packet.append(uatype_Int32.pack(len(self.Results)))
6161 1
        for fieldname in self.Results:
6162 1
            packet.append(fieldname.to_binary())
6163 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
6164 1
        for fieldname in self.DiagnosticInfos:
6165
            packet.append(fieldname.to_binary())
6166 1
        return b''.join(packet)
6167
6168 1
    @staticmethod
6169
    def from_binary(data):
6170 1
        return TranslateBrowsePathsToNodeIdsResponse(data)
6171
6172 1
    def _binary_init(self, data):
6173 1
        self.TypeId = NodeId.from_binary(data)
6174 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
6175 1
        length = uatype_Int32.unpack(data.read(4))[0]
6176 1
        array = []
6177 1
        if length != -1:
6178 1
            for _ in range(0, length):
6179 1
                array.append(BrowsePathResult.from_binary(data))
6180 1
        self.Results = array
6181 1
        length = uatype_Int32.unpack(data.read(4))[0]
6182 1
        array = []
6183 1
        if length != -1:
6184 1
            for _ in range(0, length):
6185
                array.append(DiagnosticInfo.from_binary(data))
6186 1
        self.DiagnosticInfos = array
6187
6188 1
    def __str__(self):
6189
        return 'TranslateBrowsePathsToNodeIdsResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
6190
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
6191
               'Results:' + str(self.Results) + ', ' + \
6192
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
6193
6194 1
    __repr__ = __str__
6195
6196
6197 1
class RegisterNodesParameters(FrozenClass):
6198
    '''
6199
    :ivar NodesToRegister:
6200
    :vartype NodesToRegister: NodeId
6201
    '''
6202 1
    def __init__(self, binary=None):
6203
        if binary is not None:
6204
            self._binary_init(binary)
6205
            self._freeze = True
6206
            return
6207
        self.NodesToRegister = []
6208
        self._freeze = True
6209
6210 1
    def to_binary(self):
6211
        packet = []
6212
        packet.append(uatype_Int32.pack(len(self.NodesToRegister)))
6213
        for fieldname in self.NodesToRegister:
6214
            packet.append(fieldname.to_binary())
6215
        return b''.join(packet)
6216
6217 1
    @staticmethod
6218
    def from_binary(data):
6219
        return RegisterNodesParameters(data)
6220
6221 1
    def _binary_init(self, data):
6222
        length = uatype_Int32.unpack(data.read(4))[0]
6223
        array = []
6224
        if length != -1:
6225
            for _ in range(0, length):
6226
                array.append(NodeId.from_binary(data))
6227
        self.NodesToRegister = array
6228
6229 1
    def __str__(self):
6230
        return 'RegisterNodesParameters(' + 'NodesToRegister:' + str(self.NodesToRegister) + ')'
6231
6232 1
    __repr__ = __str__
6233
6234
6235 1
class RegisterNodesRequest(FrozenClass):
6236
    '''
6237
    Registers one or more nodes for repeated use within a session.
6238
6239
    :ivar TypeId:
6240
    :vartype TypeId: NodeId
6241
    :ivar RequestHeader:
6242
    :vartype RequestHeader: RequestHeader
6243
    :ivar Parameters:
6244
    :vartype Parameters: RegisterNodesParameters
6245
    '''
6246 1
    def __init__(self, binary=None):
6247
        if binary is not None:
6248
            self._binary_init(binary)
6249
            self._freeze = True
6250
            return
6251
        self.TypeId = FourByteNodeId(ObjectIds.RegisterNodesRequest_Encoding_DefaultBinary)
6252
        self.RequestHeader = RequestHeader()
6253
        self.Parameters = RegisterNodesParameters()
6254
        self._freeze = True
6255
6256 1
    def to_binary(self):
6257
        packet = []
6258
        packet.append(self.TypeId.to_binary())
6259
        packet.append(self.RequestHeader.to_binary())
6260
        packet.append(self.Parameters.to_binary())
6261
        return b''.join(packet)
6262
6263 1
    @staticmethod
6264
    def from_binary(data):
6265
        return RegisterNodesRequest(data)
6266
6267 1
    def _binary_init(self, data):
6268
        self.TypeId = NodeId.from_binary(data)
6269
        self.RequestHeader = RequestHeader.from_binary(data)
6270
        self.Parameters = RegisterNodesParameters.from_binary(data)
6271
6272 1
    def __str__(self):
6273
        return 'RegisterNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
6274
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
6275
               'Parameters:' + str(self.Parameters) + ')'
6276
6277 1
    __repr__ = __str__
6278
6279
6280 1
class RegisterNodesResult(FrozenClass):
6281
    '''
6282
    :ivar RegisteredNodeIds:
6283
    :vartype RegisteredNodeIds: NodeId
6284
    '''
6285 1
    def __init__(self, binary=None):
6286
        if binary is not None:
6287
            self._binary_init(binary)
6288
            self._freeze = True
6289
            return
6290
        self.RegisteredNodeIds = []
6291
        self._freeze = True
6292
6293 1
    def to_binary(self):
6294
        packet = []
6295
        packet.append(uatype_Int32.pack(len(self.RegisteredNodeIds)))
6296
        for fieldname in self.RegisteredNodeIds:
6297
            packet.append(fieldname.to_binary())
6298
        return b''.join(packet)
6299
6300 1
    @staticmethod
6301
    def from_binary(data):
6302
        return RegisterNodesResult(data)
6303
6304 1
    def _binary_init(self, data):
6305
        length = uatype_Int32.unpack(data.read(4))[0]
6306
        array = []
6307
        if length != -1:
6308
            for _ in range(0, length):
6309
                array.append(NodeId.from_binary(data))
6310
        self.RegisteredNodeIds = array
6311
6312 1
    def __str__(self):
6313
        return 'RegisterNodesResult(' + 'RegisteredNodeIds:' + str(self.RegisteredNodeIds) + ')'
6314
6315 1
    __repr__ = __str__
6316
6317
6318 1
class RegisterNodesResponse(FrozenClass):
6319
    '''
6320
    Registers one or more nodes for repeated use within a session.
6321
6322
    :ivar TypeId:
6323
    :vartype TypeId: NodeId
6324
    :ivar ResponseHeader:
6325
    :vartype ResponseHeader: ResponseHeader
6326
    :ivar Parameters:
6327
    :vartype Parameters: RegisterNodesResult
6328
    '''
6329 1
    def __init__(self, binary=None):
6330
        if binary is not None:
6331
            self._binary_init(binary)
6332
            self._freeze = True
6333
            return
6334
        self.TypeId = FourByteNodeId(ObjectIds.RegisterNodesResponse_Encoding_DefaultBinary)
6335
        self.ResponseHeader = ResponseHeader()
6336
        self.Parameters = RegisterNodesResult()
6337
        self._freeze = True
6338
6339 1
    def to_binary(self):
6340
        packet = []
6341
        packet.append(self.TypeId.to_binary())
6342
        packet.append(self.ResponseHeader.to_binary())
6343
        packet.append(self.Parameters.to_binary())
6344
        return b''.join(packet)
6345
6346 1
    @staticmethod
6347
    def from_binary(data):
6348
        return RegisterNodesResponse(data)
6349
6350 1
    def _binary_init(self, data):
6351
        self.TypeId = NodeId.from_binary(data)
6352
        self.ResponseHeader = ResponseHeader.from_binary(data)
6353
        self.Parameters = RegisterNodesResult.from_binary(data)
6354
6355 1
    def __str__(self):
6356
        return 'RegisterNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
6357
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
6358
               'Parameters:' + str(self.Parameters) + ')'
6359
6360 1
    __repr__ = __str__
6361
6362
6363 1
class UnregisterNodesParameters(FrozenClass):
6364
    '''
6365
    :ivar NodesToUnregister:
6366
    :vartype NodesToUnregister: NodeId
6367
    '''
6368 1
    def __init__(self, binary=None):
6369
        if binary is not None:
6370
            self._binary_init(binary)
6371
            self._freeze = True
6372
            return
6373
        self.NodesToUnregister = []
6374
        self._freeze = True
6375
6376 1
    def to_binary(self):
6377
        packet = []
6378
        packet.append(uatype_Int32.pack(len(self.NodesToUnregister)))
6379
        for fieldname in self.NodesToUnregister:
6380
            packet.append(fieldname.to_binary())
6381
        return b''.join(packet)
6382
6383 1
    @staticmethod
6384
    def from_binary(data):
6385
        return UnregisterNodesParameters(data)
6386
6387 1
    def _binary_init(self, data):
6388
        length = uatype_Int32.unpack(data.read(4))[0]
6389
        array = []
6390
        if length != -1:
6391
            for _ in range(0, length):
6392
                array.append(NodeId.from_binary(data))
6393
        self.NodesToUnregister = array
6394
6395 1
    def __str__(self):
6396
        return 'UnregisterNodesParameters(' + 'NodesToUnregister:' + str(self.NodesToUnregister) + ')'
6397
6398 1
    __repr__ = __str__
6399
6400
6401 1
class UnregisterNodesRequest(FrozenClass):
6402
    '''
6403
    Unregisters one or more previously registered nodes.
6404
6405
    :ivar TypeId:
6406
    :vartype TypeId: NodeId
6407
    :ivar RequestHeader:
6408
    :vartype RequestHeader: RequestHeader
6409
    :ivar Parameters:
6410
    :vartype Parameters: UnregisterNodesParameters
6411
    '''
6412 1
    def __init__(self, binary=None):
6413
        if binary is not None:
6414
            self._binary_init(binary)
6415
            self._freeze = True
6416
            return
6417
        self.TypeId = FourByteNodeId(ObjectIds.UnregisterNodesRequest_Encoding_DefaultBinary)
6418
        self.RequestHeader = RequestHeader()
6419
        self.Parameters = UnregisterNodesParameters()
6420
        self._freeze = True
6421
6422 1
    def to_binary(self):
6423
        packet = []
6424
        packet.append(self.TypeId.to_binary())
6425
        packet.append(self.RequestHeader.to_binary())
6426
        packet.append(self.Parameters.to_binary())
6427
        return b''.join(packet)
6428
6429 1
    @staticmethod
6430
    def from_binary(data):
6431
        return UnregisterNodesRequest(data)
6432
6433 1
    def _binary_init(self, data):
6434
        self.TypeId = NodeId.from_binary(data)
6435
        self.RequestHeader = RequestHeader.from_binary(data)
6436
        self.Parameters = UnregisterNodesParameters.from_binary(data)
6437
6438 1
    def __str__(self):
6439
        return 'UnregisterNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
6440
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
6441
               'Parameters:' + str(self.Parameters) + ')'
6442
6443 1
    __repr__ = __str__
6444
6445
6446 1
class UnregisterNodesResponse(FrozenClass):
6447
    '''
6448
    Unregisters one or more previously registered nodes.
6449
6450
    :ivar TypeId:
6451
    :vartype TypeId: NodeId
6452
    :ivar ResponseHeader:
6453
    :vartype ResponseHeader: ResponseHeader
6454
    '''
6455 1
    def __init__(self, binary=None):
6456
        if binary is not None:
6457
            self._binary_init(binary)
6458
            self._freeze = True
6459
            return
6460
        self.TypeId = FourByteNodeId(ObjectIds.UnregisterNodesResponse_Encoding_DefaultBinary)
6461
        self.ResponseHeader = ResponseHeader()
6462
        self._freeze = True
6463
6464 1
    def to_binary(self):
6465
        packet = []
6466
        packet.append(self.TypeId.to_binary())
6467
        packet.append(self.ResponseHeader.to_binary())
6468
        return b''.join(packet)
6469
6470 1
    @staticmethod
6471
    def from_binary(data):
6472
        return UnregisterNodesResponse(data)
6473
6474 1
    def _binary_init(self, data):
6475
        self.TypeId = NodeId.from_binary(data)
6476
        self.ResponseHeader = ResponseHeader.from_binary(data)
6477
6478 1
    def __str__(self):
6479
        return 'UnregisterNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
6480
               'ResponseHeader:' + str(self.ResponseHeader) + ')'
6481
6482 1
    __repr__ = __str__
6483
6484
6485 1
class EndpointConfiguration(FrozenClass):
6486
    '''
6487
    :ivar OperationTimeout:
6488
    :vartype OperationTimeout: Int32
6489
    :ivar UseBinaryEncoding:
6490
    :vartype UseBinaryEncoding: Boolean
6491
    :ivar MaxStringLength:
6492
    :vartype MaxStringLength: Int32
6493
    :ivar MaxByteStringLength:
6494
    :vartype MaxByteStringLength: Int32
6495
    :ivar MaxArrayLength:
6496
    :vartype MaxArrayLength: Int32
6497
    :ivar MaxMessageSize:
6498
    :vartype MaxMessageSize: Int32
6499
    :ivar MaxBufferSize:
6500
    :vartype MaxBufferSize: Int32
6501
    :ivar ChannelLifetime:
6502
    :vartype ChannelLifetime: Int32
6503
    :ivar SecurityTokenLifetime:
6504
    :vartype SecurityTokenLifetime: Int32
6505
    '''
6506 1
    def __init__(self, binary=None):
6507
        if binary is not None:
6508
            self._binary_init(binary)
6509
            self._freeze = True
6510
            return
6511
        self.OperationTimeout = 0
6512
        self.UseBinaryEncoding = True
6513
        self.MaxStringLength = 0
6514
        self.MaxByteStringLength = 0
6515
        self.MaxArrayLength = 0
6516
        self.MaxMessageSize = 0
6517
        self.MaxBufferSize = 0
6518
        self.ChannelLifetime = 0
6519
        self.SecurityTokenLifetime = 0
6520
        self._freeze = True
6521
6522 1
    def to_binary(self):
6523
        packet = []
6524
        packet.append(uatype_Int32.pack(self.OperationTimeout))
6525
        packet.append(uatype_Boolean.pack(self.UseBinaryEncoding))
6526
        packet.append(uatype_Int32.pack(self.MaxStringLength))
6527
        packet.append(uatype_Int32.pack(self.MaxByteStringLength))
6528
        packet.append(uatype_Int32.pack(self.MaxArrayLength))
6529
        packet.append(uatype_Int32.pack(self.MaxMessageSize))
6530
        packet.append(uatype_Int32.pack(self.MaxBufferSize))
6531
        packet.append(uatype_Int32.pack(self.ChannelLifetime))
6532
        packet.append(uatype_Int32.pack(self.SecurityTokenLifetime))
6533
        return b''.join(packet)
6534
6535 1
    @staticmethod
6536
    def from_binary(data):
6537
        return EndpointConfiguration(data)
6538
6539 1
    def _binary_init(self, data):
6540
        self.OperationTimeout = uatype_Int32.unpack(data.read(4))[0]
6541
        self.UseBinaryEncoding = uatype_Boolean.unpack(data.read(1))[0]
6542
        self.MaxStringLength = uatype_Int32.unpack(data.read(4))[0]
6543
        self.MaxByteStringLength = uatype_Int32.unpack(data.read(4))[0]
6544
        self.MaxArrayLength = uatype_Int32.unpack(data.read(4))[0]
6545
        self.MaxMessageSize = uatype_Int32.unpack(data.read(4))[0]
6546
        self.MaxBufferSize = uatype_Int32.unpack(data.read(4))[0]
6547
        self.ChannelLifetime = uatype_Int32.unpack(data.read(4))[0]
6548
        self.SecurityTokenLifetime = uatype_Int32.unpack(data.read(4))[0]
6549
6550 1
    def __str__(self):
6551
        return 'EndpointConfiguration(' + 'OperationTimeout:' + str(self.OperationTimeout) + ', ' + \
6552
               'UseBinaryEncoding:' + str(self.UseBinaryEncoding) + ', ' + \
6553
               'MaxStringLength:' + str(self.MaxStringLength) + ', ' + \
6554
               'MaxByteStringLength:' + str(self.MaxByteStringLength) + ', ' + \
6555
               'MaxArrayLength:' + str(self.MaxArrayLength) + ', ' + \
6556
               'MaxMessageSize:' + str(self.MaxMessageSize) + ', ' + \
6557
               'MaxBufferSize:' + str(self.MaxBufferSize) + ', ' + \
6558
               'ChannelLifetime:' + str(self.ChannelLifetime) + ', ' + \
6559
               'SecurityTokenLifetime:' + str(self.SecurityTokenLifetime) + ')'
6560
6561 1
    __repr__ = __str__
6562
6563
6564 1
class SupportedProfile(FrozenClass):
6565
    '''
6566
    :ivar OrganizationUri:
6567
    :vartype OrganizationUri: String
6568
    :ivar ProfileId:
6569
    :vartype ProfileId: String
6570
    :ivar ComplianceTool:
6571
    :vartype ComplianceTool: String
6572
    :ivar ComplianceDate:
6573
    :vartype ComplianceDate: DateTime
6574
    :ivar ComplianceLevel:
6575
    :vartype ComplianceLevel: ComplianceLevel
6576
    :ivar UnsupportedUnitIds:
6577
    :vartype UnsupportedUnitIds: String
6578
    '''
6579 1
    def __init__(self, binary=None):
6580
        if binary is not None:
6581
            self._binary_init(binary)
6582
            self._freeze = True
6583
            return
6584
        self.OrganizationUri = ''
6585
        self.ProfileId = ''
6586
        self.ComplianceTool = ''
6587
        self.ComplianceDate = datetime.now()
6588
        self.ComplianceLevel = ComplianceLevel(0)
6589
        self.UnsupportedUnitIds = []
6590
        self._freeze = True
6591
6592 1
    def to_binary(self):
6593
        packet = []
6594
        packet.append(pack_string(self.OrganizationUri))
6595
        packet.append(pack_string(self.ProfileId))
6596
        packet.append(pack_string(self.ComplianceTool))
6597
        packet.append(pack_datetime(self.ComplianceDate))
6598
        packet.append(uatype_UInt32.pack(self.ComplianceLevel.value))
6599
        packet.append(uatype_Int32.pack(len(self.UnsupportedUnitIds)))
6600
        for fieldname in self.UnsupportedUnitIds:
6601
            packet.append(pack_string(fieldname))
6602
        return b''.join(packet)
6603
6604 1
    @staticmethod
6605
    def from_binary(data):
6606
        return SupportedProfile(data)
6607
6608 1
    def _binary_init(self, data):
6609
        self.OrganizationUri = unpack_string(data)
6610
        self.ProfileId = unpack_string(data)
6611
        self.ComplianceTool = unpack_string(data)
6612
        self.ComplianceDate = unpack_datetime(data)
6613
        self.ComplianceLevel = ComplianceLevel(uatype_UInt32.unpack(data.read(4))[0])
6614
        self.UnsupportedUnitIds = unpack_uatype_array('String', data)
6615
6616 1
    def __str__(self):
6617
        return 'SupportedProfile(' + 'OrganizationUri:' + str(self.OrganizationUri) + ', ' + \
6618
               'ProfileId:' + str(self.ProfileId) + ', ' + \
6619
               'ComplianceTool:' + str(self.ComplianceTool) + ', ' + \
6620
               'ComplianceDate:' + str(self.ComplianceDate) + ', ' + \
6621
               'ComplianceLevel:' + str(self.ComplianceLevel) + ', ' + \
6622
               'UnsupportedUnitIds:' + str(self.UnsupportedUnitIds) + ')'
6623
6624 1
    __repr__ = __str__
6625
6626
6627 1
class SoftwareCertificate(FrozenClass):
6628
    '''
6629
    :ivar ProductName:
6630
    :vartype ProductName: String
6631
    :ivar ProductUri:
6632
    :vartype ProductUri: String
6633
    :ivar VendorName:
6634
    :vartype VendorName: String
6635
    :ivar VendorProductCertificate:
6636
    :vartype VendorProductCertificate: ByteString
6637
    :ivar SoftwareVersion:
6638
    :vartype SoftwareVersion: String
6639
    :ivar BuildNumber:
6640
    :vartype BuildNumber: String
6641
    :ivar BuildDate:
6642
    :vartype BuildDate: DateTime
6643
    :ivar IssuedBy:
6644
    :vartype IssuedBy: String
6645
    :ivar IssueDate:
6646
    :vartype IssueDate: DateTime
6647
    :ivar SupportedProfiles:
6648
    :vartype SupportedProfiles: SupportedProfile
6649
    '''
6650 1
    def __init__(self, binary=None):
6651
        if binary is not None:
6652
            self._binary_init(binary)
6653
            self._freeze = True
6654
            return
6655
        self.ProductName = ''
6656
        self.ProductUri = ''
6657
        self.VendorName = ''
6658
        self.VendorProductCertificate = b''
6659
        self.SoftwareVersion = ''
6660
        self.BuildNumber = ''
6661
        self.BuildDate = datetime.now()
6662
        self.IssuedBy = ''
6663
        self.IssueDate = datetime.now()
6664
        self.SupportedProfiles = []
6665
        self._freeze = True
6666
6667 1
    def to_binary(self):
6668
        packet = []
6669
        packet.append(pack_string(self.ProductName))
6670
        packet.append(pack_string(self.ProductUri))
6671
        packet.append(pack_string(self.VendorName))
6672
        packet.append(pack_bytes(self.VendorProductCertificate))
6673
        packet.append(pack_string(self.SoftwareVersion))
6674
        packet.append(pack_string(self.BuildNumber))
6675
        packet.append(pack_datetime(self.BuildDate))
6676
        packet.append(pack_string(self.IssuedBy))
6677
        packet.append(pack_datetime(self.IssueDate))
6678
        packet.append(uatype_Int32.pack(len(self.SupportedProfiles)))
6679
        for fieldname in self.SupportedProfiles:
6680
            packet.append(fieldname.to_binary())
6681
        return b''.join(packet)
6682
6683 1
    @staticmethod
6684
    def from_binary(data):
6685
        return SoftwareCertificate(data)
6686
6687 1
    def _binary_init(self, data):
6688
        self.ProductName = unpack_string(data)
6689
        self.ProductUri = unpack_string(data)
6690
        self.VendorName = unpack_string(data)
6691
        self.VendorProductCertificate = unpack_bytes(data)
6692
        self.SoftwareVersion = unpack_string(data)
6693
        self.BuildNumber = unpack_string(data)
6694
        self.BuildDate = unpack_datetime(data)
6695
        self.IssuedBy = unpack_string(data)
6696
        self.IssueDate = unpack_datetime(data)
6697
        length = uatype_Int32.unpack(data.read(4))[0]
6698
        array = []
6699
        if length != -1:
6700
            for _ in range(0, length):
6701
                array.append(SupportedProfile.from_binary(data))
6702
        self.SupportedProfiles = array
6703
6704 1
    def __str__(self):
6705
        return 'SoftwareCertificate(' + 'ProductName:' + str(self.ProductName) + ', ' + \
6706
               'ProductUri:' + str(self.ProductUri) + ', ' + \
6707
               'VendorName:' + str(self.VendorName) + ', ' + \
6708
               'VendorProductCertificate:' + str(self.VendorProductCertificate) + ', ' + \
6709
               'SoftwareVersion:' + str(self.SoftwareVersion) + ', ' + \
6710
               'BuildNumber:' + str(self.BuildNumber) + ', ' + \
6711
               'BuildDate:' + str(self.BuildDate) + ', ' + \
6712
               'IssuedBy:' + str(self.IssuedBy) + ', ' + \
6713
               'IssueDate:' + str(self.IssueDate) + ', ' + \
6714
               'SupportedProfiles:' + str(self.SupportedProfiles) + ')'
6715
6716 1
    __repr__ = __str__
6717
6718
6719 1
class QueryDataDescription(FrozenClass):
6720
    '''
6721
    :ivar RelativePath:
6722
    :vartype RelativePath: RelativePath
6723
    :ivar AttributeId:
6724
    :vartype AttributeId: UInt32
6725
    :ivar IndexRange:
6726
    :vartype IndexRange: String
6727
    '''
6728 1
    def __init__(self, binary=None):
6729
        if binary is not None:
6730
            self._binary_init(binary)
6731
            self._freeze = True
6732
            return
6733
        self.RelativePath = RelativePath()
6734
        self.AttributeId = 0
6735
        self.IndexRange = ''
6736
        self._freeze = True
6737
6738 1
    def to_binary(self):
6739
        packet = []
6740
        packet.append(self.RelativePath.to_binary())
6741
        packet.append(uatype_UInt32.pack(self.AttributeId))
6742
        packet.append(pack_string(self.IndexRange))
6743
        return b''.join(packet)
6744
6745 1
    @staticmethod
6746
    def from_binary(data):
6747
        return QueryDataDescription(data)
6748
6749 1
    def _binary_init(self, data):
6750
        self.RelativePath = RelativePath.from_binary(data)
6751
        self.AttributeId = uatype_UInt32.unpack(data.read(4))[0]
6752
        self.IndexRange = unpack_string(data)
6753
6754 1
    def __str__(self):
6755
        return 'QueryDataDescription(' + 'RelativePath:' + str(self.RelativePath) + ', ' + \
6756
               'AttributeId:' + str(self.AttributeId) + ', ' + \
6757
               'IndexRange:' + str(self.IndexRange) + ')'
6758
6759 1
    __repr__ = __str__
6760
6761
6762 1
class NodeTypeDescription(FrozenClass):
6763
    '''
6764
    :ivar TypeDefinitionNode:
6765
    :vartype TypeDefinitionNode: ExpandedNodeId
6766
    :ivar IncludeSubTypes:
6767
    :vartype IncludeSubTypes: Boolean
6768
    :ivar DataToReturn:
6769
    :vartype DataToReturn: QueryDataDescription
6770
    '''
6771 1
    def __init__(self, binary=None):
6772
        if binary is not None:
6773
            self._binary_init(binary)
6774
            self._freeze = True
6775
            return
6776
        self.TypeDefinitionNode = ExpandedNodeId()
6777
        self.IncludeSubTypes = True
6778
        self.DataToReturn = []
6779
        self._freeze = True
6780
6781 1
    def to_binary(self):
6782
        packet = []
6783
        packet.append(self.TypeDefinitionNode.to_binary())
6784
        packet.append(uatype_Boolean.pack(self.IncludeSubTypes))
6785
        packet.append(uatype_Int32.pack(len(self.DataToReturn)))
6786
        for fieldname in self.DataToReturn:
6787
            packet.append(fieldname.to_binary())
6788
        return b''.join(packet)
6789
6790 1
    @staticmethod
6791
    def from_binary(data):
6792
        return NodeTypeDescription(data)
6793
6794 1
    def _binary_init(self, data):
6795
        self.TypeDefinitionNode = ExpandedNodeId.from_binary(data)
6796
        self.IncludeSubTypes = uatype_Boolean.unpack(data.read(1))[0]
6797
        length = uatype_Int32.unpack(data.read(4))[0]
6798
        array = []
6799
        if length != -1:
6800
            for _ in range(0, length):
6801
                array.append(QueryDataDescription.from_binary(data))
6802
        self.DataToReturn = array
6803
6804 1
    def __str__(self):
6805
        return 'NodeTypeDescription(' + 'TypeDefinitionNode:' + str(self.TypeDefinitionNode) + ', ' + \
6806
               'IncludeSubTypes:' + str(self.IncludeSubTypes) + ', ' + \
6807
               'DataToReturn:' + str(self.DataToReturn) + ')'
6808
6809 1
    __repr__ = __str__
6810
6811
6812 1
class QueryDataSet(FrozenClass):
6813
    '''
6814
    :ivar NodeId:
6815
    :vartype NodeId: ExpandedNodeId
6816
    :ivar TypeDefinitionNode:
6817
    :vartype TypeDefinitionNode: ExpandedNodeId
6818
    :ivar Values:
6819
    :vartype Values: Variant
6820
    '''
6821 1
    def __init__(self, binary=None):
6822
        if binary is not None:
6823
            self._binary_init(binary)
6824
            self._freeze = True
6825
            return
6826
        self.NodeId = ExpandedNodeId()
6827
        self.TypeDefinitionNode = ExpandedNodeId()
6828
        self.Values = []
6829
        self._freeze = True
6830
6831 1
    def to_binary(self):
6832
        packet = []
6833
        packet.append(self.NodeId.to_binary())
6834
        packet.append(self.TypeDefinitionNode.to_binary())
6835
        packet.append(uatype_Int32.pack(len(self.Values)))
6836
        for fieldname in self.Values:
6837
            packet.append(fieldname.to_binary())
6838
        return b''.join(packet)
6839
6840 1
    @staticmethod
6841
    def from_binary(data):
6842
        return QueryDataSet(data)
6843
6844 1
    def _binary_init(self, data):
6845
        self.NodeId = ExpandedNodeId.from_binary(data)
6846
        self.TypeDefinitionNode = ExpandedNodeId.from_binary(data)
6847
        length = uatype_Int32.unpack(data.read(4))[0]
6848
        array = []
6849
        if length != -1:
6850
            for _ in range(0, length):
6851
                array.append(Variant.from_binary(data))
6852
        self.Values = array
6853
6854 1
    def __str__(self):
6855
        return 'QueryDataSet(' + 'NodeId:' + str(self.NodeId) + ', ' + \
6856
               'TypeDefinitionNode:' + str(self.TypeDefinitionNode) + ', ' + \
6857
               'Values:' + str(self.Values) + ')'
6858
6859 1
    __repr__ = __str__
6860
6861
6862 1
class NodeReference(FrozenClass):
6863
    '''
6864
    :ivar NodeId:
6865
    :vartype NodeId: NodeId
6866
    :ivar ReferenceTypeId:
6867
    :vartype ReferenceTypeId: NodeId
6868
    :ivar IsForward:
6869
    :vartype IsForward: Boolean
6870
    :ivar ReferencedNodeIds:
6871
    :vartype ReferencedNodeIds: NodeId
6872
    '''
6873 1
    def __init__(self, binary=None):
6874
        if binary is not None:
6875
            self._binary_init(binary)
6876
            self._freeze = True
6877
            return
6878
        self.NodeId = NodeId()
6879
        self.ReferenceTypeId = NodeId()
6880
        self.IsForward = True
6881
        self.ReferencedNodeIds = []
6882
        self._freeze = True
6883
6884 1
    def to_binary(self):
6885
        packet = []
6886
        packet.append(self.NodeId.to_binary())
6887
        packet.append(self.ReferenceTypeId.to_binary())
6888
        packet.append(uatype_Boolean.pack(self.IsForward))
6889
        packet.append(uatype_Int32.pack(len(self.ReferencedNodeIds)))
6890
        for fieldname in self.ReferencedNodeIds:
6891
            packet.append(fieldname.to_binary())
6892
        return b''.join(packet)
6893
6894 1
    @staticmethod
6895
    def from_binary(data):
6896
        return NodeReference(data)
6897
6898 1
    def _binary_init(self, data):
6899
        self.NodeId = NodeId.from_binary(data)
6900
        self.ReferenceTypeId = NodeId.from_binary(data)
6901
        self.IsForward = uatype_Boolean.unpack(data.read(1))[0]
6902
        length = uatype_Int32.unpack(data.read(4))[0]
6903
        array = []
6904
        if length != -1:
6905
            for _ in range(0, length):
6906
                array.append(NodeId.from_binary(data))
6907
        self.ReferencedNodeIds = array
6908
6909 1
    def __str__(self):
6910
        return 'NodeReference(' + 'NodeId:' + str(self.NodeId) + ', ' + \
6911
               'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', ' + \
6912
               'IsForward:' + str(self.IsForward) + ', ' + \
6913
               'ReferencedNodeIds:' + str(self.ReferencedNodeIds) + ')'
6914
6915 1
    __repr__ = __str__
6916
6917
6918 1
class ContentFilterElement(FrozenClass):
6919
    '''
6920
    :ivar FilterOperator:
6921
    :vartype FilterOperator: FilterOperator
6922
    :ivar FilterOperands:
6923
    :vartype FilterOperands: ExtensionObject
6924
    '''
6925 1
    def __init__(self, binary=None):
6926
        if binary is not None:
6927
            self._binary_init(binary)
6928
            self._freeze = True
6929
            return
6930
        self.FilterOperator = FilterOperator(0)
6931
        self.FilterOperands = []
6932
        self._freeze = True
6933
6934 1
    def to_binary(self):
6935
        packet = []
6936
        packet.append(uatype_UInt32.pack(self.FilterOperator.value))
6937
        packet.append(uatype_Int32.pack(len(self.FilterOperands)))
6938
        for fieldname in self.FilterOperands:
6939
            packet.append(extensionobject_to_binary(fieldname))
6940
        return b''.join(packet)
6941
6942 1
    @staticmethod
6943
    def from_binary(data):
6944
        return ContentFilterElement(data)
6945
6946 1
    def _binary_init(self, data):
6947
        self.FilterOperator = FilterOperator(uatype_UInt32.unpack(data.read(4))[0])
6948
        length = uatype_Int32.unpack(data.read(4))[0]
6949
        array = []
6950
        if length != -1:
6951
            for _ in range(0, length):
6952
                array.append(extensionobject_from_binary(data))
6953
        self.FilterOperands = array
6954
6955 1
    def __str__(self):
6956
        return 'ContentFilterElement(' + 'FilterOperator:' + str(self.FilterOperator) + ', ' + \
6957
               'FilterOperands:' + str(self.FilterOperands) + ')'
6958
6959 1
    __repr__ = __str__
6960
6961
6962 1
class ContentFilter(FrozenClass):
6963
    '''
6964
    :ivar Elements:
6965
    :vartype Elements: ContentFilterElement
6966
    '''
6967 1
    def __init__(self, binary=None):
6968 1
        if binary is not None:
6969 1
            self._binary_init(binary)
6970 1
            self._freeze = True
6971 1
            return
6972 1
        self.Elements = []
6973 1
        self._freeze = True
6974
6975 1
    def to_binary(self):
6976 1
        packet = []
6977 1
        packet.append(uatype_Int32.pack(len(self.Elements)))
6978 1
        for fieldname in self.Elements:
6979
            packet.append(fieldname.to_binary())
6980 1
        return b''.join(packet)
6981
6982 1
    @staticmethod
6983
    def from_binary(data):
6984 1
        return ContentFilter(data)
6985
6986 1
    def _binary_init(self, data):
6987 1
        length = uatype_Int32.unpack(data.read(4))[0]
6988 1
        array = []
6989 1
        if length != -1:
6990 1
            for _ in range(0, length):
6991
                array.append(ContentFilterElement.from_binary(data))
6992 1
        self.Elements = array
6993
6994 1
    def __str__(self):
6995
        return 'ContentFilter(' + 'Elements:' + str(self.Elements) + ')'
6996
6997 1
    __repr__ = __str__
6998
6999
7000 1
class ElementOperand(FrozenClass):
7001
    '''
7002
    :ivar Index:
7003
    :vartype Index: UInt32
7004
    '''
7005 1
    def __init__(self, binary=None):
7006
        if binary is not None:
7007
            self._binary_init(binary)
7008
            self._freeze = True
7009
            return
7010
        self.Index = 0
7011
        self._freeze = True
7012
7013 1
    def to_binary(self):
7014
        packet = []
7015
        packet.append(uatype_UInt32.pack(self.Index))
7016
        return b''.join(packet)
7017
7018 1
    @staticmethod
7019
    def from_binary(data):
7020
        return ElementOperand(data)
7021
7022 1
    def _binary_init(self, data):
7023
        self.Index = uatype_UInt32.unpack(data.read(4))[0]
7024
7025 1
    def __str__(self):
7026
        return 'ElementOperand(' + 'Index:' + str(self.Index) + ')'
7027
7028 1
    __repr__ = __str__
7029
7030
7031 1
class LiteralOperand(FrozenClass):
7032
    '''
7033
    :ivar Value:
7034
    :vartype Value: Variant
7035
    '''
7036 1
    def __init__(self, binary=None):
7037
        if binary is not None:
7038
            self._binary_init(binary)
7039
            self._freeze = True
7040
            return
7041
        self.Value = Variant()
7042
        self._freeze = True
7043
7044 1
    def to_binary(self):
7045
        packet = []
7046
        packet.append(self.Value.to_binary())
7047
        return b''.join(packet)
7048
7049 1
    @staticmethod
7050
    def from_binary(data):
7051
        return LiteralOperand(data)
7052
7053 1
    def _binary_init(self, data):
7054
        self.Value = Variant.from_binary(data)
7055
7056 1
    def __str__(self):
7057
        return 'LiteralOperand(' + 'Value:' + str(self.Value) + ')'
7058
7059 1
    __repr__ = __str__
7060
7061
7062 1
class AttributeOperand(FrozenClass):
7063
    '''
7064
    :ivar NodeId:
7065
    :vartype NodeId: NodeId
7066
    :ivar Alias:
7067
    :vartype Alias: String
7068
    :ivar BrowsePath:
7069
    :vartype BrowsePath: RelativePath
7070
    :ivar AttributeId:
7071
    :vartype AttributeId: UInt32
7072
    :ivar IndexRange:
7073
    :vartype IndexRange: String
7074
    '''
7075 1
    def __init__(self, binary=None):
7076
        if binary is not None:
7077
            self._binary_init(binary)
7078
            self._freeze = True
7079
            return
7080
        self.NodeId = NodeId()
7081
        self.Alias = ''
7082
        self.BrowsePath = RelativePath()
7083
        self.AttributeId = 0
7084
        self.IndexRange = ''
7085
        self._freeze = True
7086
7087 1
    def to_binary(self):
7088
        packet = []
7089
        packet.append(self.NodeId.to_binary())
7090
        packet.append(pack_string(self.Alias))
7091
        packet.append(self.BrowsePath.to_binary())
7092
        packet.append(uatype_UInt32.pack(self.AttributeId))
7093
        packet.append(pack_string(self.IndexRange))
7094
        return b''.join(packet)
7095
7096 1
    @staticmethod
7097
    def from_binary(data):
7098
        return AttributeOperand(data)
7099
7100 1
    def _binary_init(self, data):
7101
        self.NodeId = NodeId.from_binary(data)
7102
        self.Alias = unpack_string(data)
7103
        self.BrowsePath = RelativePath.from_binary(data)
7104
        self.AttributeId = uatype_UInt32.unpack(data.read(4))[0]
7105
        self.IndexRange = unpack_string(data)
7106
7107 1
    def __str__(self):
7108
        return 'AttributeOperand(' + 'NodeId:' + str(self.NodeId) + ', ' + \
7109
               'Alias:' + str(self.Alias) + ', ' + \
7110
               'BrowsePath:' + str(self.BrowsePath) + ', ' + \
7111
               'AttributeId:' + str(self.AttributeId) + ', ' + \
7112
               'IndexRange:' + str(self.IndexRange) + ')'
7113
7114 1
    __repr__ = __str__
7115
7116
7117 1
class SimpleAttributeOperand(FrozenClass):
7118
    '''
7119
    :ivar TypeDefinitionId:
7120
    :vartype TypeDefinitionId: NodeId
7121
    :ivar BrowsePath:
7122
    :vartype BrowsePath: QualifiedName
7123
    :ivar AttributeId:
7124
    :vartype AttributeId: UInt32
7125
    :ivar IndexRange:
7126
    :vartype IndexRange: String
7127
    '''
7128 1
    def __init__(self, binary=None):
7129 1
        if binary is not None:
7130 1
            self._binary_init(binary)
7131 1
            self._freeze = True
7132 1
            return
7133 1
        self.TypeDefinitionId = NodeId()
7134 1
        self.BrowsePath = []
7135 1
        self.AttributeId = 0
7136 1
        self.IndexRange = ''
7137 1
        self._freeze = True
7138
7139 1
    def to_binary(self):
7140 1
        packet = []
7141 1
        packet.append(self.TypeDefinitionId.to_binary())
7142 1
        packet.append(uatype_Int32.pack(len(self.BrowsePath)))
7143 1
        for fieldname in self.BrowsePath:
7144 1
            packet.append(fieldname.to_binary())
7145 1
        packet.append(uatype_UInt32.pack(self.AttributeId))
7146 1
        packet.append(pack_string(self.IndexRange))
7147 1
        return b''.join(packet)
7148
7149 1
    @staticmethod
7150
    def from_binary(data):
7151 1
        return SimpleAttributeOperand(data)
7152
7153 1
    def _binary_init(self, data):
7154 1
        self.TypeDefinitionId = NodeId.from_binary(data)
7155 1
        length = uatype_Int32.unpack(data.read(4))[0]
7156 1
        array = []
7157 1
        if length != -1:
7158 1
            for _ in range(0, length):
7159 1
                array.append(QualifiedName.from_binary(data))
7160 1
        self.BrowsePath = array
7161 1
        self.AttributeId = uatype_UInt32.unpack(data.read(4))[0]
7162 1
        self.IndexRange = unpack_string(data)
7163
7164 1
    def __str__(self):
7165
        return 'SimpleAttributeOperand(' + 'TypeDefinitionId:' + str(self.TypeDefinitionId) + ', ' + \
7166
               'BrowsePath:' + str(self.BrowsePath) + ', ' + \
7167
               'AttributeId:' + str(self.AttributeId) + ', ' + \
7168
               'IndexRange:' + str(self.IndexRange) + ')'
7169
7170 1
    __repr__ = __str__
7171
7172
7173 1
class ContentFilterElementResult(FrozenClass):
7174
    '''
7175
    :ivar StatusCode:
7176
    :vartype StatusCode: StatusCode
7177
    :ivar OperandStatusCodes:
7178
    :vartype OperandStatusCodes: StatusCode
7179
    :ivar OperandDiagnosticInfos:
7180
    :vartype OperandDiagnosticInfos: DiagnosticInfo
7181
    '''
7182 1
    def __init__(self, binary=None):
7183
        if binary is not None:
7184
            self._binary_init(binary)
7185
            self._freeze = True
7186
            return
7187
        self.StatusCode = StatusCode()
7188
        self.OperandStatusCodes = []
7189
        self.OperandDiagnosticInfos = []
7190
        self._freeze = True
7191
7192 1
    def to_binary(self):
7193
        packet = []
7194
        packet.append(self.StatusCode.to_binary())
7195
        packet.append(uatype_Int32.pack(len(self.OperandStatusCodes)))
7196
        for fieldname in self.OperandStatusCodes:
7197
            packet.append(fieldname.to_binary())
7198
        packet.append(uatype_Int32.pack(len(self.OperandDiagnosticInfos)))
7199
        for fieldname in self.OperandDiagnosticInfos:
7200
            packet.append(fieldname.to_binary())
7201
        return b''.join(packet)
7202
7203 1
    @staticmethod
7204
    def from_binary(data):
7205
        return ContentFilterElementResult(data)
7206
7207 1
    def _binary_init(self, data):
7208
        self.StatusCode = StatusCode.from_binary(data)
7209
        length = uatype_Int32.unpack(data.read(4))[0]
7210
        array = []
7211
        if length != -1:
7212
            for _ in range(0, length):
7213
                array.append(StatusCode.from_binary(data))
7214
        self.OperandStatusCodes = array
7215
        length = uatype_Int32.unpack(data.read(4))[0]
7216
        array = []
7217
        if length != -1:
7218
            for _ in range(0, length):
7219
                array.append(DiagnosticInfo.from_binary(data))
7220
        self.OperandDiagnosticInfos = array
7221
7222 1
    def __str__(self):
7223
        return 'ContentFilterElementResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
7224
               'OperandStatusCodes:' + str(self.OperandStatusCodes) + ', ' + \
7225
               'OperandDiagnosticInfos:' + str(self.OperandDiagnosticInfos) + ')'
7226
7227 1
    __repr__ = __str__
7228
7229
7230 1
class ContentFilterResult(FrozenClass):
7231
    '''
7232
    :ivar ElementResults:
7233
    :vartype ElementResults: ContentFilterElementResult
7234
    :ivar ElementDiagnosticInfos:
7235
    :vartype ElementDiagnosticInfos: DiagnosticInfo
7236
    '''
7237 1
    def __init__(self, binary=None):
7238 1
        if binary is not None:
7239 1
            self._binary_init(binary)
7240 1
            self._freeze = True
7241 1
            return
7242 1
        self.ElementResults = []
7243 1
        self.ElementDiagnosticInfos = []
7244 1
        self._freeze = True
7245
7246 1
    def to_binary(self):
7247 1
        packet = []
7248 1
        packet.append(uatype_Int32.pack(len(self.ElementResults)))
7249 1
        for fieldname in self.ElementResults:
7250
            packet.append(fieldname.to_binary())
7251 1
        packet.append(uatype_Int32.pack(len(self.ElementDiagnosticInfos)))
7252 1
        for fieldname in self.ElementDiagnosticInfos:
7253
            packet.append(fieldname.to_binary())
7254 1
        return b''.join(packet)
7255
7256 1
    @staticmethod
7257
    def from_binary(data):
7258 1
        return ContentFilterResult(data)
7259
7260 1
    def _binary_init(self, data):
7261 1
        length = uatype_Int32.unpack(data.read(4))[0]
7262 1
        array = []
7263 1
        if length != -1:
7264 1
            for _ in range(0, length):
7265
                array.append(ContentFilterElementResult.from_binary(data))
7266 1
        self.ElementResults = array
7267 1
        length = uatype_Int32.unpack(data.read(4))[0]
7268 1
        array = []
7269 1
        if length != -1:
7270 1
            for _ in range(0, length):
7271
                array.append(DiagnosticInfo.from_binary(data))
7272 1
        self.ElementDiagnosticInfos = array
7273
7274 1
    def __str__(self):
7275
        return 'ContentFilterResult(' + 'ElementResults:' + str(self.ElementResults) + ', ' + \
7276
               'ElementDiagnosticInfos:' + str(self.ElementDiagnosticInfos) + ')'
7277
7278 1
    __repr__ = __str__
7279
7280
7281 1
class ParsingResult(FrozenClass):
7282
    '''
7283
    :ivar StatusCode:
7284
    :vartype StatusCode: StatusCode
7285
    :ivar DataStatusCodes:
7286
    :vartype DataStatusCodes: StatusCode
7287
    :ivar DataDiagnosticInfos:
7288
    :vartype DataDiagnosticInfos: DiagnosticInfo
7289
    '''
7290 1
    def __init__(self, binary=None):
7291
        if binary is not None:
7292
            self._binary_init(binary)
7293
            self._freeze = True
7294
            return
7295
        self.StatusCode = StatusCode()
7296
        self.DataStatusCodes = []
7297
        self.DataDiagnosticInfos = []
7298
        self._freeze = True
7299
7300 1
    def to_binary(self):
7301
        packet = []
7302
        packet.append(self.StatusCode.to_binary())
7303
        packet.append(uatype_Int32.pack(len(self.DataStatusCodes)))
7304
        for fieldname in self.DataStatusCodes:
7305
            packet.append(fieldname.to_binary())
7306
        packet.append(uatype_Int32.pack(len(self.DataDiagnosticInfos)))
7307
        for fieldname in self.DataDiagnosticInfos:
7308
            packet.append(fieldname.to_binary())
7309
        return b''.join(packet)
7310
7311 1
    @staticmethod
7312
    def from_binary(data):
7313
        return ParsingResult(data)
7314
7315 1
    def _binary_init(self, data):
7316
        self.StatusCode = StatusCode.from_binary(data)
7317
        length = uatype_Int32.unpack(data.read(4))[0]
7318
        array = []
7319
        if length != -1:
7320
            for _ in range(0, length):
7321
                array.append(StatusCode.from_binary(data))
7322
        self.DataStatusCodes = array
7323
        length = uatype_Int32.unpack(data.read(4))[0]
7324
        array = []
7325
        if length != -1:
7326
            for _ in range(0, length):
7327
                array.append(DiagnosticInfo.from_binary(data))
7328
        self.DataDiagnosticInfos = array
7329
7330 1
    def __str__(self):
7331
        return 'ParsingResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
7332
               'DataStatusCodes:' + str(self.DataStatusCodes) + ', ' + \
7333
               'DataDiagnosticInfos:' + str(self.DataDiagnosticInfos) + ')'
7334
7335 1
    __repr__ = __str__
7336
7337
7338 1
class QueryFirstParameters(FrozenClass):
7339
    '''
7340
    :ivar View:
7341
    :vartype View: ViewDescription
7342
    :ivar NodeTypes:
7343
    :vartype NodeTypes: NodeTypeDescription
7344
    :ivar Filter:
7345
    :vartype Filter: ContentFilter
7346
    :ivar MaxDataSetsToReturn:
7347
    :vartype MaxDataSetsToReturn: UInt32
7348
    :ivar MaxReferencesToReturn:
7349
    :vartype MaxReferencesToReturn: UInt32
7350
    '''
7351 1
    def __init__(self, binary=None):
7352
        if binary is not None:
7353
            self._binary_init(binary)
7354
            self._freeze = True
7355
            return
7356
        self.View = ViewDescription()
7357
        self.NodeTypes = []
7358
        self.Filter = ContentFilter()
7359
        self.MaxDataSetsToReturn = 0
7360
        self.MaxReferencesToReturn = 0
7361
        self._freeze = True
7362
7363 1
    def to_binary(self):
7364
        packet = []
7365
        packet.append(self.View.to_binary())
7366
        packet.append(uatype_Int32.pack(len(self.NodeTypes)))
7367
        for fieldname in self.NodeTypes:
7368
            packet.append(fieldname.to_binary())
7369
        packet.append(self.Filter.to_binary())
7370
        packet.append(uatype_UInt32.pack(self.MaxDataSetsToReturn))
7371
        packet.append(uatype_UInt32.pack(self.MaxReferencesToReturn))
7372
        return b''.join(packet)
7373
7374 1
    @staticmethod
7375
    def from_binary(data):
7376
        return QueryFirstParameters(data)
7377
7378 1
    def _binary_init(self, data):
7379
        self.View = ViewDescription.from_binary(data)
7380
        length = uatype_Int32.unpack(data.read(4))[0]
7381
        array = []
7382
        if length != -1:
7383
            for _ in range(0, length):
7384
                array.append(NodeTypeDescription.from_binary(data))
7385
        self.NodeTypes = array
7386
        self.Filter = ContentFilter.from_binary(data)
7387
        self.MaxDataSetsToReturn = uatype_UInt32.unpack(data.read(4))[0]
7388
        self.MaxReferencesToReturn = uatype_UInt32.unpack(data.read(4))[0]
7389
7390 1
    def __str__(self):
7391
        return 'QueryFirstParameters(' + 'View:' + str(self.View) + ', ' + \
7392
               'NodeTypes:' + str(self.NodeTypes) + ', ' + \
7393
               'Filter:' + str(self.Filter) + ', ' + \
7394
               'MaxDataSetsToReturn:' + str(self.MaxDataSetsToReturn) + ', ' + \
7395
               'MaxReferencesToReturn:' + str(self.MaxReferencesToReturn) + ')'
7396
7397 1
    __repr__ = __str__
7398
7399
7400 1
class QueryFirstRequest(FrozenClass):
7401
    '''
7402
    :ivar TypeId:
7403
    :vartype TypeId: NodeId
7404
    :ivar RequestHeader:
7405
    :vartype RequestHeader: RequestHeader
7406
    :ivar Parameters:
7407
    :vartype Parameters: QueryFirstParameters
7408
    '''
7409 1
    def __init__(self, binary=None):
7410
        if binary is not None:
7411
            self._binary_init(binary)
7412
            self._freeze = True
7413
            return
7414
        self.TypeId = FourByteNodeId(ObjectIds.QueryFirstRequest_Encoding_DefaultBinary)
7415
        self.RequestHeader = RequestHeader()
7416
        self.Parameters = QueryFirstParameters()
7417
        self._freeze = True
7418
7419 1
    def to_binary(self):
7420
        packet = []
7421
        packet.append(self.TypeId.to_binary())
7422
        packet.append(self.RequestHeader.to_binary())
7423
        packet.append(self.Parameters.to_binary())
7424
        return b''.join(packet)
7425
7426 1
    @staticmethod
7427
    def from_binary(data):
7428
        return QueryFirstRequest(data)
7429
7430 1
    def _binary_init(self, data):
7431
        self.TypeId = NodeId.from_binary(data)
7432
        self.RequestHeader = RequestHeader.from_binary(data)
7433
        self.Parameters = QueryFirstParameters.from_binary(data)
7434
7435 1
    def __str__(self):
7436
        return 'QueryFirstRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
7437
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
7438
               'Parameters:' + str(self.Parameters) + ')'
7439
7440 1
    __repr__ = __str__
7441
7442
7443 1
class QueryFirstResult(FrozenClass):
7444
    '''
7445
    :ivar QueryDataSets:
7446
    :vartype QueryDataSets: QueryDataSet
7447
    :ivar ContinuationPoint:
7448
    :vartype ContinuationPoint: ByteString
7449
    :ivar ParsingResults:
7450
    :vartype ParsingResults: ParsingResult
7451
    :ivar DiagnosticInfos:
7452
    :vartype DiagnosticInfos: DiagnosticInfo
7453
    :ivar FilterResult:
7454
    :vartype FilterResult: ContentFilterResult
7455
    '''
7456 1
    def __init__(self, binary=None):
7457
        if binary is not None:
7458
            self._binary_init(binary)
7459
            self._freeze = True
7460
            return
7461
        self.QueryDataSets = []
7462
        self.ContinuationPoint = b''
7463
        self.ParsingResults = []
7464
        self.DiagnosticInfos = []
7465
        self.FilterResult = ContentFilterResult()
7466
        self._freeze = True
7467
7468 1
    def to_binary(self):
7469
        packet = []
7470
        packet.append(uatype_Int32.pack(len(self.QueryDataSets)))
7471
        for fieldname in self.QueryDataSets:
7472
            packet.append(fieldname.to_binary())
7473
        packet.append(pack_bytes(self.ContinuationPoint))
7474
        packet.append(uatype_Int32.pack(len(self.ParsingResults)))
7475
        for fieldname in self.ParsingResults:
7476
            packet.append(fieldname.to_binary())
7477
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
7478
        for fieldname in self.DiagnosticInfos:
7479
            packet.append(fieldname.to_binary())
7480
        packet.append(self.FilterResult.to_binary())
7481
        return b''.join(packet)
7482
7483 1
    @staticmethod
7484
    def from_binary(data):
7485
        return QueryFirstResult(data)
7486
7487 1
    def _binary_init(self, data):
7488
        length = uatype_Int32.unpack(data.read(4))[0]
7489
        array = []
7490
        if length != -1:
7491
            for _ in range(0, length):
7492
                array.append(QueryDataSet.from_binary(data))
7493
        self.QueryDataSets = array
7494
        self.ContinuationPoint = unpack_bytes(data)
7495
        length = uatype_Int32.unpack(data.read(4))[0]
7496
        array = []
7497
        if length != -1:
7498
            for _ in range(0, length):
7499
                array.append(ParsingResult.from_binary(data))
7500
        self.ParsingResults = array
7501
        length = uatype_Int32.unpack(data.read(4))[0]
7502
        array = []
7503
        if length != -1:
7504
            for _ in range(0, length):
7505
                array.append(DiagnosticInfo.from_binary(data))
7506
        self.DiagnosticInfos = array
7507
        self.FilterResult = ContentFilterResult.from_binary(data)
7508
7509 1
    def __str__(self):
7510
        return 'QueryFirstResult(' + 'QueryDataSets:' + str(self.QueryDataSets) + ', ' + \
7511
               'ContinuationPoint:' + str(self.ContinuationPoint) + ', ' + \
7512
               'ParsingResults:' + str(self.ParsingResults) + ', ' + \
7513
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ', ' + \
7514
               'FilterResult:' + str(self.FilterResult) + ')'
7515
7516 1
    __repr__ = __str__
7517
7518
7519 1
class QueryFirstResponse(FrozenClass):
7520
    '''
7521
    :ivar TypeId:
7522
    :vartype TypeId: NodeId
7523
    :ivar ResponseHeader:
7524
    :vartype ResponseHeader: ResponseHeader
7525
    :ivar Parameters:
7526
    :vartype Parameters: QueryFirstResult
7527
    '''
7528 1
    def __init__(self, binary=None):
7529
        if binary is not None:
7530
            self._binary_init(binary)
7531
            self._freeze = True
7532
            return
7533
        self.TypeId = FourByteNodeId(ObjectIds.QueryFirstResponse_Encoding_DefaultBinary)
7534
        self.ResponseHeader = ResponseHeader()
7535
        self.Parameters = QueryFirstResult()
7536
        self._freeze = True
7537
7538 1
    def to_binary(self):
7539
        packet = []
7540
        packet.append(self.TypeId.to_binary())
7541
        packet.append(self.ResponseHeader.to_binary())
7542
        packet.append(self.Parameters.to_binary())
7543
        return b''.join(packet)
7544
7545 1
    @staticmethod
7546
    def from_binary(data):
7547
        return QueryFirstResponse(data)
7548
7549 1
    def _binary_init(self, data):
7550
        self.TypeId = NodeId.from_binary(data)
7551
        self.ResponseHeader = ResponseHeader.from_binary(data)
7552
        self.Parameters = QueryFirstResult.from_binary(data)
7553
7554 1
    def __str__(self):
7555
        return 'QueryFirstResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
7556
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
7557
               'Parameters:' + str(self.Parameters) + ')'
7558
7559 1
    __repr__ = __str__
7560
7561
7562 1
class QueryNextParameters(FrozenClass):
7563
    '''
7564
    :ivar ReleaseContinuationPoint:
7565
    :vartype ReleaseContinuationPoint: Boolean
7566
    :ivar ContinuationPoint:
7567
    :vartype ContinuationPoint: ByteString
7568
    '''
7569 1
    def __init__(self, binary=None):
7570
        if binary is not None:
7571
            self._binary_init(binary)
7572
            self._freeze = True
7573
            return
7574
        self.ReleaseContinuationPoint = True
7575
        self.ContinuationPoint = b''
7576
        self._freeze = True
7577
7578 1
    def to_binary(self):
7579
        packet = []
7580
        packet.append(uatype_Boolean.pack(self.ReleaseContinuationPoint))
7581
        packet.append(pack_bytes(self.ContinuationPoint))
7582
        return b''.join(packet)
7583
7584 1
    @staticmethod
7585
    def from_binary(data):
7586
        return QueryNextParameters(data)
7587
7588 1
    def _binary_init(self, data):
7589
        self.ReleaseContinuationPoint = uatype_Boolean.unpack(data.read(1))[0]
7590
        self.ContinuationPoint = unpack_bytes(data)
7591
7592 1
    def __str__(self):
7593
        return 'QueryNextParameters(' + 'ReleaseContinuationPoint:' + str(self.ReleaseContinuationPoint) + ', ' + \
7594
               'ContinuationPoint:' + str(self.ContinuationPoint) + ')'
7595
7596 1
    __repr__ = __str__
7597
7598
7599 1
class QueryNextRequest(FrozenClass):
7600
    '''
7601
    :ivar TypeId:
7602
    :vartype TypeId: NodeId
7603
    :ivar RequestHeader:
7604
    :vartype RequestHeader: RequestHeader
7605
    :ivar Parameters:
7606
    :vartype Parameters: QueryNextParameters
7607
    '''
7608 1
    def __init__(self, binary=None):
7609
        if binary is not None:
7610
            self._binary_init(binary)
7611
            self._freeze = True
7612
            return
7613
        self.TypeId = FourByteNodeId(ObjectIds.QueryNextRequest_Encoding_DefaultBinary)
7614
        self.RequestHeader = RequestHeader()
7615
        self.Parameters = QueryNextParameters()
7616
        self._freeze = True
7617
7618 1
    def to_binary(self):
7619
        packet = []
7620
        packet.append(self.TypeId.to_binary())
7621
        packet.append(self.RequestHeader.to_binary())
7622
        packet.append(self.Parameters.to_binary())
7623
        return b''.join(packet)
7624
7625 1
    @staticmethod
7626
    def from_binary(data):
7627
        return QueryNextRequest(data)
7628
7629 1
    def _binary_init(self, data):
7630
        self.TypeId = NodeId.from_binary(data)
7631
        self.RequestHeader = RequestHeader.from_binary(data)
7632
        self.Parameters = QueryNextParameters.from_binary(data)
7633
7634 1
    def __str__(self):
7635
        return 'QueryNextRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
7636
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
7637
               'Parameters:' + str(self.Parameters) + ')'
7638
7639 1
    __repr__ = __str__
7640
7641
7642 1
class QueryNextResult(FrozenClass):
7643
    '''
7644
    :ivar QueryDataSets:
7645
    :vartype QueryDataSets: QueryDataSet
7646
    :ivar RevisedContinuationPoint:
7647
    :vartype RevisedContinuationPoint: ByteString
7648
    '''
7649 1
    def __init__(self, binary=None):
7650
        if binary is not None:
7651
            self._binary_init(binary)
7652
            self._freeze = True
7653
            return
7654
        self.QueryDataSets = []
7655
        self.RevisedContinuationPoint = b''
7656
        self._freeze = True
7657
7658 1
    def to_binary(self):
7659
        packet = []
7660
        packet.append(uatype_Int32.pack(len(self.QueryDataSets)))
7661
        for fieldname in self.QueryDataSets:
7662
            packet.append(fieldname.to_binary())
7663
        packet.append(pack_bytes(self.RevisedContinuationPoint))
7664
        return b''.join(packet)
7665
7666 1
    @staticmethod
7667
    def from_binary(data):
7668
        return QueryNextResult(data)
7669
7670 1
    def _binary_init(self, data):
7671
        length = uatype_Int32.unpack(data.read(4))[0]
7672
        array = []
7673
        if length != -1:
7674
            for _ in range(0, length):
7675
                array.append(QueryDataSet.from_binary(data))
7676
        self.QueryDataSets = array
7677
        self.RevisedContinuationPoint = unpack_bytes(data)
7678
7679 1
    def __str__(self):
7680
        return 'QueryNextResult(' + 'QueryDataSets:' + str(self.QueryDataSets) + ', ' + \
7681
               'RevisedContinuationPoint:' + str(self.RevisedContinuationPoint) + ')'
7682
7683 1
    __repr__ = __str__
7684
7685
7686 1
class QueryNextResponse(FrozenClass):
7687
    '''
7688
    :ivar TypeId:
7689
    :vartype TypeId: NodeId
7690
    :ivar ResponseHeader:
7691
    :vartype ResponseHeader: ResponseHeader
7692
    :ivar Parameters:
7693
    :vartype Parameters: QueryNextResult
7694
    '''
7695 1
    def __init__(self, binary=None):
7696
        if binary is not None:
7697
            self._binary_init(binary)
7698
            self._freeze = True
7699
            return
7700
        self.TypeId = FourByteNodeId(ObjectIds.QueryNextResponse_Encoding_DefaultBinary)
7701
        self.ResponseHeader = ResponseHeader()
7702
        self.Parameters = QueryNextResult()
7703
        self._freeze = True
7704
7705 1
    def to_binary(self):
7706
        packet = []
7707
        packet.append(self.TypeId.to_binary())
7708
        packet.append(self.ResponseHeader.to_binary())
7709
        packet.append(self.Parameters.to_binary())
7710
        return b''.join(packet)
7711
7712 1
    @staticmethod
7713
    def from_binary(data):
7714
        return QueryNextResponse(data)
7715
7716 1
    def _binary_init(self, data):
7717
        self.TypeId = NodeId.from_binary(data)
7718
        self.ResponseHeader = ResponseHeader.from_binary(data)
7719
        self.Parameters = QueryNextResult.from_binary(data)
7720
7721 1
    def __str__(self):
7722
        return 'QueryNextResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
7723
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
7724
               'Parameters:' + str(self.Parameters) + ')'
7725
7726 1
    __repr__ = __str__
7727
7728
7729 1
class ReadValueId(FrozenClass):
7730
    '''
7731
    :ivar NodeId:
7732
    :vartype NodeId: NodeId
7733
    :ivar AttributeId:
7734
    :vartype AttributeId: UInt32
7735
    :ivar IndexRange:
7736
    :vartype IndexRange: String
7737
    :ivar DataEncoding:
7738
    :vartype DataEncoding: QualifiedName
7739
    '''
7740 1
    def __init__(self, binary=None):
7741 1
        if binary is not None:
7742 1
            self._binary_init(binary)
7743 1
            self._freeze = True
7744 1
            return
7745 1
        self.NodeId = NodeId()
7746 1
        self.AttributeId = 0
7747 1
        self.IndexRange = ''
7748 1
        self.DataEncoding = QualifiedName()
7749 1
        self._freeze = True
7750
7751 1
    def to_binary(self):
7752 1
        packet = []
7753 1
        packet.append(self.NodeId.to_binary())
7754 1
        packet.append(uatype_UInt32.pack(self.AttributeId))
7755 1
        packet.append(pack_string(self.IndexRange))
7756 1
        packet.append(self.DataEncoding.to_binary())
7757 1
        return b''.join(packet)
7758
7759 1
    @staticmethod
7760
    def from_binary(data):
7761 1
        return ReadValueId(data)
7762
7763 1
    def _binary_init(self, data):
7764 1
        self.NodeId = NodeId.from_binary(data)
7765 1
        self.AttributeId = uatype_UInt32.unpack(data.read(4))[0]
7766 1
        self.IndexRange = unpack_string(data)
7767 1
        self.DataEncoding = QualifiedName.from_binary(data)
7768
7769 1
    def __str__(self):
7770
        return 'ReadValueId(' + 'NodeId:' + str(self.NodeId) + ', ' + \
7771
               'AttributeId:' + str(self.AttributeId) + ', ' + \
7772
               'IndexRange:' + str(self.IndexRange) + ', ' + \
7773
               'DataEncoding:' + str(self.DataEncoding) + ')'
7774
7775 1
    __repr__ = __str__
7776
7777
7778 1
class ReadParameters(FrozenClass):
7779
    '''
7780
    :ivar MaxAge:
7781
    :vartype MaxAge: Double
7782
    :ivar TimestampsToReturn:
7783
    :vartype TimestampsToReturn: TimestampsToReturn
7784
    :ivar NodesToRead:
7785
    :vartype NodesToRead: ReadValueId
7786
    '''
7787 1
    def __init__(self, binary=None):
7788 1
        if binary is not None:
7789 1
            self._binary_init(binary)
7790 1
            self._freeze = True
7791 1
            return
7792 1
        self.MaxAge = 0
7793 1
        self.TimestampsToReturn = TimestampsToReturn(0)
7794 1
        self.NodesToRead = []
7795 1
        self._freeze = True
7796
7797 1
    def to_binary(self):
7798 1
        packet = []
7799 1
        packet.append(uatype_Double.pack(self.MaxAge))
7800 1
        packet.append(uatype_UInt32.pack(self.TimestampsToReturn.value))
7801 1
        packet.append(uatype_Int32.pack(len(self.NodesToRead)))
7802 1
        for fieldname in self.NodesToRead:
7803 1
            packet.append(fieldname.to_binary())
7804 1
        return b''.join(packet)
7805
7806 1
    @staticmethod
7807
    def from_binary(data):
7808 1
        return ReadParameters(data)
7809
7810 1
    def _binary_init(self, data):
7811 1
        self.MaxAge = uatype_Double.unpack(data.read(8))[0]
7812 1
        self.TimestampsToReturn = TimestampsToReturn(uatype_UInt32.unpack(data.read(4))[0])
7813 1
        length = uatype_Int32.unpack(data.read(4))[0]
7814 1
        array = []
7815 1
        if length != -1:
7816 1
            for _ in range(0, length):
7817 1
                array.append(ReadValueId.from_binary(data))
7818 1
        self.NodesToRead = array
7819
7820 1
    def __str__(self):
7821
        return 'ReadParameters(' + 'MaxAge:' + str(self.MaxAge) + ', ' + \
7822
               'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', ' + \
7823
               'NodesToRead:' + str(self.NodesToRead) + ')'
7824
7825 1
    __repr__ = __str__
7826
7827
7828 1
class ReadRequest(FrozenClass):
7829
    '''
7830
    :ivar TypeId:
7831
    :vartype TypeId: NodeId
7832
    :ivar RequestHeader:
7833
    :vartype RequestHeader: RequestHeader
7834
    :ivar Parameters:
7835
    :vartype Parameters: ReadParameters
7836
    '''
7837 1
    def __init__(self, binary=None):
7838 1
        if binary is not None:
7839
            self._binary_init(binary)
7840
            self._freeze = True
7841
            return
7842 1
        self.TypeId = FourByteNodeId(ObjectIds.ReadRequest_Encoding_DefaultBinary)
7843 1
        self.RequestHeader = RequestHeader()
7844 1
        self.Parameters = ReadParameters()
7845 1
        self._freeze = True
7846
7847 1
    def to_binary(self):
7848 1
        packet = []
7849 1
        packet.append(self.TypeId.to_binary())
7850 1
        packet.append(self.RequestHeader.to_binary())
7851 1
        packet.append(self.Parameters.to_binary())
7852 1
        return b''.join(packet)
7853
7854 1
    @staticmethod
7855
    def from_binary(data):
7856
        return ReadRequest(data)
7857
7858 1
    def _binary_init(self, data):
7859
        self.TypeId = NodeId.from_binary(data)
7860
        self.RequestHeader = RequestHeader.from_binary(data)
7861
        self.Parameters = ReadParameters.from_binary(data)
7862
7863 1
    def __str__(self):
7864
        return 'ReadRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
7865
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
7866
               'Parameters:' + str(self.Parameters) + ')'
7867
7868 1
    __repr__ = __str__
7869
7870
7871 1
class ReadResponse(FrozenClass):
7872
    '''
7873
    :ivar TypeId:
7874
    :vartype TypeId: NodeId
7875
    :ivar ResponseHeader:
7876
    :vartype ResponseHeader: ResponseHeader
7877
    :ivar Results:
7878
    :vartype Results: DataValue
7879
    :ivar DiagnosticInfos:
7880
    :vartype DiagnosticInfos: DiagnosticInfo
7881
    '''
7882 1
    def __init__(self, binary=None):
7883 1
        if binary is not None:
7884 1
            self._binary_init(binary)
7885 1
            self._freeze = True
7886 1
            return
7887 1
        self.TypeId = FourByteNodeId(ObjectIds.ReadResponse_Encoding_DefaultBinary)
7888 1
        self.ResponseHeader = ResponseHeader()
7889 1
        self.Results = []
7890 1
        self.DiagnosticInfos = []
7891 1
        self._freeze = True
7892
7893 1
    def to_binary(self):
7894 1
        packet = []
7895 1
        packet.append(self.TypeId.to_binary())
7896 1
        packet.append(self.ResponseHeader.to_binary())
7897 1
        packet.append(uatype_Int32.pack(len(self.Results)))
7898 1
        for fieldname in self.Results:
7899 1
            packet.append(fieldname.to_binary())
7900 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
7901 1
        for fieldname in self.DiagnosticInfos:
7902
            packet.append(fieldname.to_binary())
7903 1
        return b''.join(packet)
7904
7905 1
    @staticmethod
7906
    def from_binary(data):
7907 1
        return ReadResponse(data)
7908
7909 1
    def _binary_init(self, data):
7910 1
        self.TypeId = NodeId.from_binary(data)
7911 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
7912 1
        length = uatype_Int32.unpack(data.read(4))[0]
7913 1
        array = []
7914 1
        if length != -1:
7915 1
            for _ in range(0, length):
7916 1
                array.append(DataValue.from_binary(data))
7917 1
        self.Results = array
7918 1
        length = uatype_Int32.unpack(data.read(4))[0]
7919 1
        array = []
7920 1
        if length != -1:
7921 1
            for _ in range(0, length):
7922
                array.append(DiagnosticInfo.from_binary(data))
7923 1
        self.DiagnosticInfos = array
7924
7925 1
    def __str__(self):
7926
        return 'ReadResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
7927
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
7928
               'Results:' + str(self.Results) + ', ' + \
7929
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
7930
7931 1
    __repr__ = __str__
7932
7933
7934 1
class HistoryReadValueId(FrozenClass):
7935
    '''
7936
    :ivar NodeId:
7937
    :vartype NodeId: NodeId
7938
    :ivar IndexRange:
7939
    :vartype IndexRange: String
7940
    :ivar DataEncoding:
7941
    :vartype DataEncoding: QualifiedName
7942
    :ivar ContinuationPoint:
7943
    :vartype ContinuationPoint: ByteString
7944
    '''
7945 1
    def __init__(self, binary=None):
7946
        if binary is not None:
7947
            self._binary_init(binary)
7948
            self._freeze = True
7949
            return
7950
        self.NodeId = NodeId()
7951
        self.IndexRange = ''
7952
        self.DataEncoding = QualifiedName()
7953
        self.ContinuationPoint = b''
7954
        self._freeze = True
7955
7956 1
    def to_binary(self):
7957
        packet = []
7958
        packet.append(self.NodeId.to_binary())
7959
        packet.append(pack_string(self.IndexRange))
7960
        packet.append(self.DataEncoding.to_binary())
7961
        packet.append(pack_bytes(self.ContinuationPoint))
7962
        return b''.join(packet)
7963
7964 1
    @staticmethod
7965
    def from_binary(data):
7966
        return HistoryReadValueId(data)
7967
7968 1
    def _binary_init(self, data):
7969
        self.NodeId = NodeId.from_binary(data)
7970
        self.IndexRange = unpack_string(data)
7971
        self.DataEncoding = QualifiedName.from_binary(data)
7972
        self.ContinuationPoint = unpack_bytes(data)
7973
7974 1
    def __str__(self):
7975
        return 'HistoryReadValueId(' + 'NodeId:' + str(self.NodeId) + ', ' + \
7976
               'IndexRange:' + str(self.IndexRange) + ', ' + \
7977
               'DataEncoding:' + str(self.DataEncoding) + ', ' + \
7978
               'ContinuationPoint:' + str(self.ContinuationPoint) + ')'
7979
7980 1
    __repr__ = __str__
7981
7982
7983 1
class HistoryReadResult(FrozenClass):
7984
    '''
7985
    :ivar StatusCode:
7986
    :vartype StatusCode: StatusCode
7987
    :ivar ContinuationPoint:
7988
    :vartype ContinuationPoint: ByteString
7989
    :ivar HistoryData:
7990
    :vartype HistoryData: ExtensionObject
7991
    '''
7992 1
    def __init__(self, binary=None):
7993
        if binary is not None:
7994
            self._binary_init(binary)
7995
            self._freeze = True
7996
            return
7997
        self.StatusCode = StatusCode()
7998
        self.ContinuationPoint = b''
7999
        self.HistoryData = None
8000
        self._freeze = True
8001
8002 1
    def to_binary(self):
8003
        packet = []
8004
        packet.append(self.StatusCode.to_binary())
8005
        packet.append(pack_bytes(self.ContinuationPoint))
8006
        packet.append(extensionobject_to_binary(self.HistoryData))
8007
        return b''.join(packet)
8008
8009 1
    @staticmethod
8010
    def from_binary(data):
8011
        return HistoryReadResult(data)
8012
8013 1
    def _binary_init(self, data):
8014
        self.StatusCode = StatusCode.from_binary(data)
8015
        self.ContinuationPoint = unpack_bytes(data)
8016
        self.HistoryData = extensionobject_from_binary(data)
8017
8018 1
    def __str__(self):
8019
        return 'HistoryReadResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
8020
               'ContinuationPoint:' + str(self.ContinuationPoint) + ', ' + \
8021
               'HistoryData:' + str(self.HistoryData) + ')'
8022
8023 1
    __repr__ = __str__
8024
8025
8026 1
class HistoryReadDetails(FrozenClass):
8027
    '''
8028
    '''
8029 1
    def __init__(self, binary=None):
8030
        if binary is not None:
8031
            self._binary_init(binary)
8032
            self._freeze = True
8033
            return
8034
        self._freeze = True
8035
8036 1
    def to_binary(self):
8037
        packet = []
8038
        return b''.join(packet)
8039
8040 1
    @staticmethod
8041
    def from_binary(data):
8042
        return HistoryReadDetails(data)
8043
8044 1
    def _binary_init(self, data):
8045
        pass
8046
8047 1
    def __str__(self):
8048
        return 'HistoryReadDetails(' +  + ')'
8049
8050 1
    __repr__ = __str__
8051
8052
8053 1
class ReadEventDetails(FrozenClass):
8054
    '''
8055
    :ivar NumValuesPerNode:
8056
    :vartype NumValuesPerNode: UInt32
8057
    :ivar StartTime:
8058
    :vartype StartTime: DateTime
8059
    :ivar EndTime:
8060
    :vartype EndTime: DateTime
8061
    :ivar Filter:
8062
    :vartype Filter: EventFilter
8063
    '''
8064 1
    def __init__(self, binary=None):
8065
        if binary is not None:
8066
            self._binary_init(binary)
8067
            self._freeze = True
8068
            return
8069
        self.NumValuesPerNode = 0
8070
        self.StartTime = datetime.now()
8071
        self.EndTime = datetime.now()
8072
        self.Filter = EventFilter()
8073
        self._freeze = True
8074
8075 1
    def to_binary(self):
8076
        packet = []
8077
        packet.append(uatype_UInt32.pack(self.NumValuesPerNode))
8078
        packet.append(pack_datetime(self.StartTime))
8079
        packet.append(pack_datetime(self.EndTime))
8080
        packet.append(self.Filter.to_binary())
8081
        return b''.join(packet)
8082
8083 1
    @staticmethod
8084
    def from_binary(data):
8085
        return ReadEventDetails(data)
8086
8087 1
    def _binary_init(self, data):
8088
        self.NumValuesPerNode = uatype_UInt32.unpack(data.read(4))[0]
8089
        self.StartTime = unpack_datetime(data)
8090
        self.EndTime = unpack_datetime(data)
8091
        self.Filter = EventFilter.from_binary(data)
8092
8093 1
    def __str__(self):
8094
        return 'ReadEventDetails(' + 'NumValuesPerNode:' + str(self.NumValuesPerNode) + ', ' + \
8095
               'StartTime:' + str(self.StartTime) + ', ' + \
8096
               'EndTime:' + str(self.EndTime) + ', ' + \
8097
               'Filter:' + str(self.Filter) + ')'
8098
8099 1
    __repr__ = __str__
8100
8101
8102 1
class ReadRawModifiedDetails(FrozenClass):
8103
    '''
8104
    :ivar IsReadModified:
8105
    :vartype IsReadModified: Boolean
8106
    :ivar StartTime:
8107
    :vartype StartTime: DateTime
8108
    :ivar EndTime:
8109
    :vartype EndTime: DateTime
8110
    :ivar NumValuesPerNode:
8111
    :vartype NumValuesPerNode: UInt32
8112
    :ivar ReturnBounds:
8113
    :vartype ReturnBounds: Boolean
8114
    '''
8115 1
    def __init__(self, binary=None):
8116
        if binary is not None:
8117
            self._binary_init(binary)
8118
            self._freeze = True
8119
            return
8120
        self.IsReadModified = True
8121
        self.StartTime = datetime.now()
8122
        self.EndTime = datetime.now()
8123
        self.NumValuesPerNode = 0
8124
        self.ReturnBounds = True
8125
        self._freeze = True
8126
8127 1
    def to_binary(self):
8128
        packet = []
8129
        packet.append(uatype_Boolean.pack(self.IsReadModified))
8130
        packet.append(pack_datetime(self.StartTime))
8131
        packet.append(pack_datetime(self.EndTime))
8132
        packet.append(uatype_UInt32.pack(self.NumValuesPerNode))
8133
        packet.append(uatype_Boolean.pack(self.ReturnBounds))
8134
        return b''.join(packet)
8135
8136 1
    @staticmethod
8137
    def from_binary(data):
8138
        return ReadRawModifiedDetails(data)
8139
8140 1
    def _binary_init(self, data):
8141
        self.IsReadModified = uatype_Boolean.unpack(data.read(1))[0]
8142
        self.StartTime = unpack_datetime(data)
8143
        self.EndTime = unpack_datetime(data)
8144
        self.NumValuesPerNode = uatype_UInt32.unpack(data.read(4))[0]
8145
        self.ReturnBounds = uatype_Boolean.unpack(data.read(1))[0]
8146
8147 1
    def __str__(self):
8148
        return 'ReadRawModifiedDetails(' + 'IsReadModified:' + str(self.IsReadModified) + ', ' + \
8149
               'StartTime:' + str(self.StartTime) + ', ' + \
8150
               'EndTime:' + str(self.EndTime) + ', ' + \
8151
               'NumValuesPerNode:' + str(self.NumValuesPerNode) + ', ' + \
8152
               'ReturnBounds:' + str(self.ReturnBounds) + ')'
8153
8154 1
    __repr__ = __str__
8155
8156
8157 1
class ReadProcessedDetails(FrozenClass):
8158
    '''
8159
    :ivar StartTime:
8160
    :vartype StartTime: DateTime
8161
    :ivar EndTime:
8162
    :vartype EndTime: DateTime
8163
    :ivar ProcessingInterval:
8164
    :vartype ProcessingInterval: Double
8165
    :ivar AggregateType:
8166
    :vartype AggregateType: NodeId
8167
    :ivar AggregateConfiguration:
8168
    :vartype AggregateConfiguration: AggregateConfiguration
8169
    '''
8170 1
    def __init__(self, binary=None):
8171
        if binary is not None:
8172
            self._binary_init(binary)
8173
            self._freeze = True
8174
            return
8175
        self.StartTime = datetime.now()
8176
        self.EndTime = datetime.now()
8177
        self.ProcessingInterval = 0
8178
        self.AggregateType = []
8179
        self.AggregateConfiguration = AggregateConfiguration()
8180
        self._freeze = True
8181
8182 1
    def to_binary(self):
8183
        packet = []
8184
        packet.append(pack_datetime(self.StartTime))
8185
        packet.append(pack_datetime(self.EndTime))
8186
        packet.append(uatype_Double.pack(self.ProcessingInterval))
8187
        packet.append(uatype_Int32.pack(len(self.AggregateType)))
8188
        for fieldname in self.AggregateType:
8189
            packet.append(fieldname.to_binary())
8190
        packet.append(self.AggregateConfiguration.to_binary())
8191
        return b''.join(packet)
8192
8193 1
    @staticmethod
8194
    def from_binary(data):
8195
        return ReadProcessedDetails(data)
8196
8197 1
    def _binary_init(self, data):
8198
        self.StartTime = unpack_datetime(data)
8199
        self.EndTime = unpack_datetime(data)
8200
        self.ProcessingInterval = uatype_Double.unpack(data.read(8))[0]
8201
        length = uatype_Int32.unpack(data.read(4))[0]
8202
        array = []
8203
        if length != -1:
8204
            for _ in range(0, length):
8205
                array.append(NodeId.from_binary(data))
8206
        self.AggregateType = array
8207
        self.AggregateConfiguration = AggregateConfiguration.from_binary(data)
8208
8209 1
    def __str__(self):
8210
        return 'ReadProcessedDetails(' + 'StartTime:' + str(self.StartTime) + ', ' + \
8211
               'EndTime:' + str(self.EndTime) + ', ' + \
8212
               'ProcessingInterval:' + str(self.ProcessingInterval) + ', ' + \
8213
               'AggregateType:' + str(self.AggregateType) + ', ' + \
8214
               'AggregateConfiguration:' + str(self.AggregateConfiguration) + ')'
8215
8216 1
    __repr__ = __str__
8217
8218
8219 1
class ReadAtTimeDetails(FrozenClass):
8220
    '''
8221
    :ivar ReqTimes:
8222
    :vartype ReqTimes: DateTime
8223
    :ivar UseSimpleBounds:
8224
    :vartype UseSimpleBounds: Boolean
8225
    '''
8226 1
    def __init__(self, binary=None):
8227
        if binary is not None:
8228
            self._binary_init(binary)
8229
            self._freeze = True
8230
            return
8231
        self.ReqTimes = []
8232
        self.UseSimpleBounds = True
8233
        self._freeze = True
8234
8235 1
    def to_binary(self):
8236
        packet = []
8237
        packet.append(uatype_Int32.pack(len(self.ReqTimes)))
8238
        for fieldname in self.ReqTimes:
8239
            packet.append(pack_datetime(fieldname))
8240
        packet.append(uatype_Boolean.pack(self.UseSimpleBounds))
8241
        return b''.join(packet)
8242
8243 1
    @staticmethod
8244
    def from_binary(data):
8245
        return ReadAtTimeDetails(data)
8246
8247 1
    def _binary_init(self, data):
8248
        self.ReqTimes = unpack_uatype_array('DateTime', data)
8249
        self.UseSimpleBounds = uatype_Boolean.unpack(data.read(1))[0]
8250
8251 1
    def __str__(self):
8252
        return 'ReadAtTimeDetails(' + 'ReqTimes:' + str(self.ReqTimes) + ', ' + \
8253
               'UseSimpleBounds:' + str(self.UseSimpleBounds) + ')'
8254
8255 1
    __repr__ = __str__
8256
8257
8258 1
class HistoryData(FrozenClass):
8259
    '''
8260
    :ivar DataValues:
8261
    :vartype DataValues: DataValue
8262
    '''
8263 1
    def __init__(self, binary=None):
8264
        if binary is not None:
8265
            self._binary_init(binary)
8266
            self._freeze = True
8267
            return
8268
        self.DataValues = []
8269
        self._freeze = True
8270
8271 1
    def to_binary(self):
8272
        packet = []
8273
        packet.append(uatype_Int32.pack(len(self.DataValues)))
8274
        for fieldname in self.DataValues:
8275
            packet.append(fieldname.to_binary())
8276
        return b''.join(packet)
8277
8278 1
    @staticmethod
8279
    def from_binary(data):
8280
        return HistoryData(data)
8281
8282 1
    def _binary_init(self, data):
8283
        length = uatype_Int32.unpack(data.read(4))[0]
8284
        array = []
8285
        if length != -1:
8286
            for _ in range(0, length):
8287
                array.append(DataValue.from_binary(data))
8288
        self.DataValues = array
8289
8290 1
    def __str__(self):
8291
        return 'HistoryData(' + 'DataValues:' + str(self.DataValues) + ')'
8292
8293 1
    __repr__ = __str__
8294
8295
8296 1
class ModificationInfo(FrozenClass):
8297
    '''
8298
    :ivar ModificationTime:
8299
    :vartype ModificationTime: DateTime
8300
    :ivar UpdateType:
8301
    :vartype UpdateType: HistoryUpdateType
8302
    :ivar UserName:
8303
    :vartype UserName: String
8304
    '''
8305 1
    def __init__(self, binary=None):
8306
        if binary is not None:
8307
            self._binary_init(binary)
8308
            self._freeze = True
8309
            return
8310
        self.ModificationTime = datetime.now()
8311
        self.UpdateType = HistoryUpdateType(0)
8312
        self.UserName = ''
8313
        self._freeze = True
8314
8315 1
    def to_binary(self):
8316
        packet = []
8317
        packet.append(pack_datetime(self.ModificationTime))
8318
        packet.append(uatype_UInt32.pack(self.UpdateType.value))
8319
        packet.append(pack_string(self.UserName))
8320
        return b''.join(packet)
8321
8322 1
    @staticmethod
8323
    def from_binary(data):
8324
        return ModificationInfo(data)
8325
8326 1
    def _binary_init(self, data):
8327
        self.ModificationTime = unpack_datetime(data)
8328
        self.UpdateType = HistoryUpdateType(uatype_UInt32.unpack(data.read(4))[0])
8329
        self.UserName = unpack_string(data)
8330
8331 1
    def __str__(self):
8332
        return 'ModificationInfo(' + 'ModificationTime:' + str(self.ModificationTime) + ', ' + \
8333
               'UpdateType:' + str(self.UpdateType) + ', ' + \
8334
               'UserName:' + str(self.UserName) + ')'
8335
8336 1
    __repr__ = __str__
8337
8338
8339 1
class HistoryModifiedData(FrozenClass):
8340
    '''
8341
    :ivar DataValues:
8342
    :vartype DataValues: DataValue
8343
    :ivar ModificationInfos:
8344
    :vartype ModificationInfos: ModificationInfo
8345
    '''
8346 1
    def __init__(self, binary=None):
8347
        if binary is not None:
8348
            self._binary_init(binary)
8349
            self._freeze = True
8350
            return
8351
        self.DataValues = []
8352
        self.ModificationInfos = []
8353
        self._freeze = True
8354
8355 1
    def to_binary(self):
8356
        packet = []
8357
        packet.append(uatype_Int32.pack(len(self.DataValues)))
8358
        for fieldname in self.DataValues:
8359
            packet.append(fieldname.to_binary())
8360
        packet.append(uatype_Int32.pack(len(self.ModificationInfos)))
8361
        for fieldname in self.ModificationInfos:
8362
            packet.append(fieldname.to_binary())
8363
        return b''.join(packet)
8364
8365 1
    @staticmethod
8366
    def from_binary(data):
8367
        return HistoryModifiedData(data)
8368
8369 1
    def _binary_init(self, data):
8370
        length = uatype_Int32.unpack(data.read(4))[0]
8371
        array = []
8372
        if length != -1:
8373
            for _ in range(0, length):
8374
                array.append(DataValue.from_binary(data))
8375
        self.DataValues = array
8376
        length = uatype_Int32.unpack(data.read(4))[0]
8377
        array = []
8378
        if length != -1:
8379
            for _ in range(0, length):
8380
                array.append(ModificationInfo.from_binary(data))
8381
        self.ModificationInfos = array
8382
8383 1
    def __str__(self):
8384
        return 'HistoryModifiedData(' + 'DataValues:' + str(self.DataValues) + ', ' + \
8385
               'ModificationInfos:' + str(self.ModificationInfos) + ')'
8386
8387 1
    __repr__ = __str__
8388
8389
8390 1
class HistoryEvent(FrozenClass):
8391
    '''
8392
    :ivar Events:
8393
    :vartype Events: HistoryEventFieldList
8394
    '''
8395 1
    def __init__(self, binary=None):
8396
        if binary is not None:
8397
            self._binary_init(binary)
8398
            self._freeze = True
8399
            return
8400
        self.Events = []
8401
        self._freeze = True
8402
8403 1
    def to_binary(self):
8404
        packet = []
8405
        packet.append(uatype_Int32.pack(len(self.Events)))
8406
        for fieldname in self.Events:
8407
            packet.append(fieldname.to_binary())
8408
        return b''.join(packet)
8409
8410 1
    @staticmethod
8411
    def from_binary(data):
8412
        return HistoryEvent(data)
8413
8414 1
    def _binary_init(self, data):
8415
        length = uatype_Int32.unpack(data.read(4))[0]
8416
        array = []
8417
        if length != -1:
8418
            for _ in range(0, length):
8419
                array.append(HistoryEventFieldList.from_binary(data))
8420
        self.Events = array
8421
8422 1
    def __str__(self):
8423
        return 'HistoryEvent(' + 'Events:' + str(self.Events) + ')'
8424
8425 1
    __repr__ = __str__
8426
8427
8428 1
class HistoryReadParameters(FrozenClass):
8429
    '''
8430
    :ivar HistoryReadDetails:
8431
    :vartype HistoryReadDetails: ExtensionObject
8432
    :ivar TimestampsToReturn:
8433
    :vartype TimestampsToReturn: TimestampsToReturn
8434
    :ivar ReleaseContinuationPoints:
8435
    :vartype ReleaseContinuationPoints: Boolean
8436
    :ivar NodesToRead:
8437
    :vartype NodesToRead: HistoryReadValueId
8438
    '''
8439 1
    def __init__(self, binary=None):
8440
        if binary is not None:
8441
            self._binary_init(binary)
8442
            self._freeze = True
8443
            return
8444
        self.HistoryReadDetails = None
8445
        self.TimestampsToReturn = TimestampsToReturn(0)
8446
        self.ReleaseContinuationPoints = True
8447
        self.NodesToRead = []
8448
        self._freeze = True
8449
8450 1
    def to_binary(self):
8451
        packet = []
8452
        packet.append(extensionobject_to_binary(self.HistoryReadDetails))
8453
        packet.append(uatype_UInt32.pack(self.TimestampsToReturn.value))
8454
        packet.append(uatype_Boolean.pack(self.ReleaseContinuationPoints))
8455
        packet.append(uatype_Int32.pack(len(self.NodesToRead)))
8456
        for fieldname in self.NodesToRead:
8457
            packet.append(fieldname.to_binary())
8458
        return b''.join(packet)
8459
8460 1
    @staticmethod
8461
    def from_binary(data):
8462
        return HistoryReadParameters(data)
8463
8464 1
    def _binary_init(self, data):
8465
        self.HistoryReadDetails = extensionobject_from_binary(data)
8466
        self.TimestampsToReturn = TimestampsToReturn(uatype_UInt32.unpack(data.read(4))[0])
8467
        self.ReleaseContinuationPoints = uatype_Boolean.unpack(data.read(1))[0]
8468
        length = uatype_Int32.unpack(data.read(4))[0]
8469
        array = []
8470
        if length != -1:
8471
            for _ in range(0, length):
8472
                array.append(HistoryReadValueId.from_binary(data))
8473
        self.NodesToRead = array
8474
8475 1
    def __str__(self):
8476
        return 'HistoryReadParameters(' + 'HistoryReadDetails:' + str(self.HistoryReadDetails) + ', ' + \
8477
               'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', ' + \
8478
               'ReleaseContinuationPoints:' + str(self.ReleaseContinuationPoints) + ', ' + \
8479
               'NodesToRead:' + str(self.NodesToRead) + ')'
8480
8481 1
    __repr__ = __str__
8482
8483
8484 1
class HistoryReadRequest(FrozenClass):
8485
    '''
8486
    :ivar TypeId:
8487
    :vartype TypeId: NodeId
8488
    :ivar RequestHeader:
8489
    :vartype RequestHeader: RequestHeader
8490
    :ivar Parameters:
8491
    :vartype Parameters: HistoryReadParameters
8492
    '''
8493 1
    def __init__(self, binary=None):
8494
        if binary is not None:
8495
            self._binary_init(binary)
8496
            self._freeze = True
8497
            return
8498
        self.TypeId = FourByteNodeId(ObjectIds.HistoryReadRequest_Encoding_DefaultBinary)
8499
        self.RequestHeader = RequestHeader()
8500
        self.Parameters = HistoryReadParameters()
8501
        self._freeze = True
8502
8503 1
    def to_binary(self):
8504
        packet = []
8505
        packet.append(self.TypeId.to_binary())
8506
        packet.append(self.RequestHeader.to_binary())
8507
        packet.append(self.Parameters.to_binary())
8508
        return b''.join(packet)
8509
8510 1
    @staticmethod
8511
    def from_binary(data):
8512
        return HistoryReadRequest(data)
8513
8514 1
    def _binary_init(self, data):
8515
        self.TypeId = NodeId.from_binary(data)
8516
        self.RequestHeader = RequestHeader.from_binary(data)
8517
        self.Parameters = HistoryReadParameters.from_binary(data)
8518
8519 1
    def __str__(self):
8520
        return 'HistoryReadRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
8521
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
8522
               'Parameters:' + str(self.Parameters) + ')'
8523
8524 1
    __repr__ = __str__
8525
8526
8527 1
class HistoryReadResponse(FrozenClass):
8528
    '''
8529
    :ivar TypeId:
8530
    :vartype TypeId: NodeId
8531
    :ivar ResponseHeader:
8532
    :vartype ResponseHeader: ResponseHeader
8533
    :ivar Results:
8534
    :vartype Results: HistoryReadResult
8535
    :ivar DiagnosticInfos:
8536
    :vartype DiagnosticInfos: DiagnosticInfo
8537
    '''
8538 1
    def __init__(self, binary=None):
8539
        if binary is not None:
8540
            self._binary_init(binary)
8541
            self._freeze = True
8542
            return
8543
        self.TypeId = FourByteNodeId(ObjectIds.HistoryReadResponse_Encoding_DefaultBinary)
8544
        self.ResponseHeader = ResponseHeader()
8545
        self.Results = []
8546
        self.DiagnosticInfos = []
8547
        self._freeze = True
8548
8549 1
    def to_binary(self):
8550
        packet = []
8551
        packet.append(self.TypeId.to_binary())
8552
        packet.append(self.ResponseHeader.to_binary())
8553
        packet.append(uatype_Int32.pack(len(self.Results)))
8554
        for fieldname in self.Results:
8555
            packet.append(fieldname.to_binary())
8556
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
8557
        for fieldname in self.DiagnosticInfos:
8558
            packet.append(fieldname.to_binary())
8559
        return b''.join(packet)
8560
8561 1
    @staticmethod
8562
    def from_binary(data):
8563
        return HistoryReadResponse(data)
8564
8565 1
    def _binary_init(self, data):
8566
        self.TypeId = NodeId.from_binary(data)
8567
        self.ResponseHeader = ResponseHeader.from_binary(data)
8568
        length = uatype_Int32.unpack(data.read(4))[0]
8569
        array = []
8570
        if length != -1:
8571
            for _ in range(0, length):
8572
                array.append(HistoryReadResult.from_binary(data))
8573
        self.Results = array
8574
        length = uatype_Int32.unpack(data.read(4))[0]
8575
        array = []
8576
        if length != -1:
8577
            for _ in range(0, length):
8578
                array.append(DiagnosticInfo.from_binary(data))
8579
        self.DiagnosticInfos = array
8580
8581 1
    def __str__(self):
8582
        return 'HistoryReadResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
8583
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
8584
               'Results:' + str(self.Results) + ', ' + \
8585
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
8586
8587 1
    __repr__ = __str__
8588
8589
8590 1
class WriteValue(FrozenClass):
8591
    '''
8592
    :ivar NodeId:
8593
    :vartype NodeId: NodeId
8594
    :ivar AttributeId:
8595
    :vartype AttributeId: UInt32
8596
    :ivar IndexRange:
8597
    :vartype IndexRange: String
8598
    :ivar Value:
8599
    :vartype Value: DataValue
8600
    '''
8601 1
    def __init__(self, binary=None):
8602 1
        if binary is not None:
8603 1
            self._binary_init(binary)
8604 1
            self._freeze = True
8605 1
            return
8606 1
        self.NodeId = NodeId()
8607 1
        self.AttributeId = 0
8608 1
        self.IndexRange = ''
8609 1
        self.Value = DataValue()
8610 1
        self._freeze = True
8611
8612 1
    def to_binary(self):
8613 1
        packet = []
8614 1
        packet.append(self.NodeId.to_binary())
8615 1
        packet.append(uatype_UInt32.pack(self.AttributeId))
8616 1
        packet.append(pack_string(self.IndexRange))
8617 1
        packet.append(self.Value.to_binary())
8618 1
        return b''.join(packet)
8619
8620 1
    @staticmethod
8621
    def from_binary(data):
8622 1
        return WriteValue(data)
8623
8624 1
    def _binary_init(self, data):
8625 1
        self.NodeId = NodeId.from_binary(data)
8626 1
        self.AttributeId = uatype_UInt32.unpack(data.read(4))[0]
8627 1
        self.IndexRange = unpack_string(data)
8628 1
        self.Value = DataValue.from_binary(data)
8629
8630 1
    def __str__(self):
8631
        return 'WriteValue(' + 'NodeId:' + str(self.NodeId) + ', ' + \
8632
               'AttributeId:' + str(self.AttributeId) + ', ' + \
8633
               'IndexRange:' + str(self.IndexRange) + ', ' + \
8634
               'Value:' + str(self.Value) + ')'
8635
8636 1
    __repr__ = __str__
8637
8638
8639 1
class WriteParameters(FrozenClass):
8640
    '''
8641
    :ivar NodesToWrite:
8642
    :vartype NodesToWrite: WriteValue
8643
    '''
8644 1
    def __init__(self, binary=None):
8645 1
        if binary is not None:
8646 1
            self._binary_init(binary)
8647 1
            self._freeze = True
8648 1
            return
8649 1
        self.NodesToWrite = []
8650 1
        self._freeze = True
8651
8652 1
    def to_binary(self):
8653 1
        packet = []
8654 1
        packet.append(uatype_Int32.pack(len(self.NodesToWrite)))
8655 1
        for fieldname in self.NodesToWrite:
8656 1
            packet.append(fieldname.to_binary())
8657 1
        return b''.join(packet)
8658
8659 1
    @staticmethod
8660
    def from_binary(data):
8661 1
        return WriteParameters(data)
8662
8663 1
    def _binary_init(self, data):
8664 1
        length = uatype_Int32.unpack(data.read(4))[0]
8665 1
        array = []
8666 1
        if length != -1:
8667 1
            for _ in range(0, length):
8668 1
                array.append(WriteValue.from_binary(data))
8669 1
        self.NodesToWrite = array
8670
8671 1
    def __str__(self):
8672
        return 'WriteParameters(' + 'NodesToWrite:' + str(self.NodesToWrite) + ')'
8673
8674 1
    __repr__ = __str__
8675
8676
8677 1
class WriteRequest(FrozenClass):
8678
    '''
8679
    :ivar TypeId:
8680
    :vartype TypeId: NodeId
8681
    :ivar RequestHeader:
8682
    :vartype RequestHeader: RequestHeader
8683
    :ivar Parameters:
8684
    :vartype Parameters: WriteParameters
8685
    '''
8686 1
    def __init__(self, binary=None):
8687 1
        if binary is not None:
8688
            self._binary_init(binary)
8689
            self._freeze = True
8690
            return
8691 1
        self.TypeId = FourByteNodeId(ObjectIds.WriteRequest_Encoding_DefaultBinary)
8692 1
        self.RequestHeader = RequestHeader()
8693 1
        self.Parameters = WriteParameters()
8694 1
        self._freeze = True
8695
8696 1
    def to_binary(self):
8697 1
        packet = []
8698 1
        packet.append(self.TypeId.to_binary())
8699 1
        packet.append(self.RequestHeader.to_binary())
8700 1
        packet.append(self.Parameters.to_binary())
8701 1
        return b''.join(packet)
8702
8703 1
    @staticmethod
8704
    def from_binary(data):
8705
        return WriteRequest(data)
8706
8707 1
    def _binary_init(self, data):
8708
        self.TypeId = NodeId.from_binary(data)
8709
        self.RequestHeader = RequestHeader.from_binary(data)
8710
        self.Parameters = WriteParameters.from_binary(data)
8711
8712 1
    def __str__(self):
8713
        return 'WriteRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
8714
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
8715
               'Parameters:' + str(self.Parameters) + ')'
8716
8717 1
    __repr__ = __str__
8718
8719
8720 1
class WriteResponse(FrozenClass):
8721
    '''
8722
    :ivar TypeId:
8723
    :vartype TypeId: NodeId
8724
    :ivar ResponseHeader:
8725
    :vartype ResponseHeader: ResponseHeader
8726
    :ivar Results:
8727
    :vartype Results: StatusCode
8728
    :ivar DiagnosticInfos:
8729
    :vartype DiagnosticInfos: DiagnosticInfo
8730
    '''
8731 1
    def __init__(self, binary=None):
8732 1
        if binary is not None:
8733 1
            self._binary_init(binary)
8734 1
            self._freeze = True
8735 1
            return
8736 1
        self.TypeId = FourByteNodeId(ObjectIds.WriteResponse_Encoding_DefaultBinary)
8737 1
        self.ResponseHeader = ResponseHeader()
8738 1
        self.Results = []
8739 1
        self.DiagnosticInfos = []
8740 1
        self._freeze = True
8741
8742 1
    def to_binary(self):
8743 1
        packet = []
8744 1
        packet.append(self.TypeId.to_binary())
8745 1
        packet.append(self.ResponseHeader.to_binary())
8746 1
        packet.append(uatype_Int32.pack(len(self.Results)))
8747 1
        for fieldname in self.Results:
8748 1
            packet.append(fieldname.to_binary())
8749 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
8750 1
        for fieldname in self.DiagnosticInfos:
8751
            packet.append(fieldname.to_binary())
8752 1
        return b''.join(packet)
8753
8754 1
    @staticmethod
8755
    def from_binary(data):
8756 1
        return WriteResponse(data)
8757
8758 1
    def _binary_init(self, data):
8759 1
        self.TypeId = NodeId.from_binary(data)
8760 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
8761 1
        length = uatype_Int32.unpack(data.read(4))[0]
8762 1
        array = []
8763 1
        if length != -1:
8764 1
            for _ in range(0, length):
8765 1
                array.append(StatusCode.from_binary(data))
8766 1
        self.Results = array
8767 1
        length = uatype_Int32.unpack(data.read(4))[0]
8768 1
        array = []
8769 1
        if length != -1:
8770 1
            for _ in range(0, length):
8771
                array.append(DiagnosticInfo.from_binary(data))
8772 1
        self.DiagnosticInfos = array
8773
8774 1
    def __str__(self):
8775
        return 'WriteResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
8776
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
8777
               'Results:' + str(self.Results) + ', ' + \
8778
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
8779
8780 1
    __repr__ = __str__
8781
8782
8783 1
class HistoryUpdateDetails(FrozenClass):
8784
    '''
8785
    :ivar NodeId:
8786
    :vartype NodeId: NodeId
8787
    '''
8788 1
    def __init__(self, binary=None):
8789
        if binary is not None:
8790
            self._binary_init(binary)
8791
            self._freeze = True
8792
            return
8793
        self.NodeId = NodeId()
8794
        self._freeze = True
8795
8796 1
    def to_binary(self):
8797
        packet = []
8798
        packet.append(self.NodeId.to_binary())
8799
        return b''.join(packet)
8800
8801 1
    @staticmethod
8802
    def from_binary(data):
8803
        return HistoryUpdateDetails(data)
8804
8805 1
    def _binary_init(self, data):
8806
        self.NodeId = NodeId.from_binary(data)
8807
8808 1
    def __str__(self):
8809
        return 'HistoryUpdateDetails(' + 'NodeId:' + str(self.NodeId) + ')'
8810
8811 1
    __repr__ = __str__
8812
8813
8814 1
class UpdateDataDetails(FrozenClass):
8815
    '''
8816
    :ivar NodeId:
8817
    :vartype NodeId: NodeId
8818
    :ivar PerformInsertReplace:
8819
    :vartype PerformInsertReplace: PerformUpdateType
8820
    :ivar UpdateValues:
8821
    :vartype UpdateValues: DataValue
8822
    '''
8823 1
    def __init__(self, binary=None):
8824
        if binary is not None:
8825
            self._binary_init(binary)
8826
            self._freeze = True
8827
            return
8828
        self.NodeId = NodeId()
8829
        self.PerformInsertReplace = PerformUpdateType(0)
8830
        self.UpdateValues = []
8831
        self._freeze = True
8832
8833 1
    def to_binary(self):
8834
        packet = []
8835
        packet.append(self.NodeId.to_binary())
8836
        packet.append(uatype_UInt32.pack(self.PerformInsertReplace.value))
8837
        packet.append(uatype_Int32.pack(len(self.UpdateValues)))
8838
        for fieldname in self.UpdateValues:
8839
            packet.append(fieldname.to_binary())
8840
        return b''.join(packet)
8841
8842 1
    @staticmethod
8843
    def from_binary(data):
8844
        return UpdateDataDetails(data)
8845
8846 1
    def _binary_init(self, data):
8847
        self.NodeId = NodeId.from_binary(data)
8848
        self.PerformInsertReplace = PerformUpdateType(uatype_UInt32.unpack(data.read(4))[0])
8849
        length = uatype_Int32.unpack(data.read(4))[0]
8850
        array = []
8851
        if length != -1:
8852
            for _ in range(0, length):
8853
                array.append(DataValue.from_binary(data))
8854
        self.UpdateValues = array
8855
8856 1
    def __str__(self):
8857
        return 'UpdateDataDetails(' + 'NodeId:' + str(self.NodeId) + ', ' + \
8858
               'PerformInsertReplace:' + str(self.PerformInsertReplace) + ', ' + \
8859
               'UpdateValues:' + str(self.UpdateValues) + ')'
8860
8861 1
    __repr__ = __str__
8862
8863
8864 1
class UpdateStructureDataDetails(FrozenClass):
8865
    '''
8866
    :ivar NodeId:
8867
    :vartype NodeId: NodeId
8868
    :ivar PerformInsertReplace:
8869
    :vartype PerformInsertReplace: PerformUpdateType
8870
    :ivar UpdateValues:
8871
    :vartype UpdateValues: DataValue
8872
    '''
8873 1
    def __init__(self, binary=None):
8874
        if binary is not None:
8875
            self._binary_init(binary)
8876
            self._freeze = True
8877
            return
8878
        self.NodeId = NodeId()
8879
        self.PerformInsertReplace = PerformUpdateType(0)
8880
        self.UpdateValues = []
8881
        self._freeze = True
8882
8883 1
    def to_binary(self):
8884
        packet = []
8885
        packet.append(self.NodeId.to_binary())
8886
        packet.append(uatype_UInt32.pack(self.PerformInsertReplace.value))
8887
        packet.append(uatype_Int32.pack(len(self.UpdateValues)))
8888
        for fieldname in self.UpdateValues:
8889
            packet.append(fieldname.to_binary())
8890
        return b''.join(packet)
8891
8892 1
    @staticmethod
8893
    def from_binary(data):
8894
        return UpdateStructureDataDetails(data)
8895
8896 1
    def _binary_init(self, data):
8897
        self.NodeId = NodeId.from_binary(data)
8898
        self.PerformInsertReplace = PerformUpdateType(uatype_UInt32.unpack(data.read(4))[0])
8899
        length = uatype_Int32.unpack(data.read(4))[0]
8900
        array = []
8901
        if length != -1:
8902
            for _ in range(0, length):
8903
                array.append(DataValue.from_binary(data))
8904
        self.UpdateValues = array
8905
8906 1
    def __str__(self):
8907
        return 'UpdateStructureDataDetails(' + 'NodeId:' + str(self.NodeId) + ', ' + \
8908
               'PerformInsertReplace:' + str(self.PerformInsertReplace) + ', ' + \
8909
               'UpdateValues:' + str(self.UpdateValues) + ')'
8910
8911 1
    __repr__ = __str__
8912
8913
8914 1
class UpdateEventDetails(FrozenClass):
8915
    '''
8916
    :ivar NodeId:
8917
    :vartype NodeId: NodeId
8918
    :ivar PerformInsertReplace:
8919
    :vartype PerformInsertReplace: PerformUpdateType
8920
    :ivar Filter:
8921
    :vartype Filter: EventFilter
8922
    :ivar EventData:
8923
    :vartype EventData: HistoryEventFieldList
8924
    '''
8925 1
    def __init__(self, binary=None):
8926
        if binary is not None:
8927
            self._binary_init(binary)
8928
            self._freeze = True
8929
            return
8930
        self.NodeId = NodeId()
8931
        self.PerformInsertReplace = PerformUpdateType(0)
8932
        self.Filter = EventFilter()
8933
        self.EventData = []
8934
        self._freeze = True
8935
8936 1
    def to_binary(self):
8937
        packet = []
8938
        packet.append(self.NodeId.to_binary())
8939
        packet.append(uatype_UInt32.pack(self.PerformInsertReplace.value))
8940
        packet.append(self.Filter.to_binary())
8941
        packet.append(uatype_Int32.pack(len(self.EventData)))
8942
        for fieldname in self.EventData:
8943
            packet.append(fieldname.to_binary())
8944
        return b''.join(packet)
8945
8946 1
    @staticmethod
8947
    def from_binary(data):
8948
        return UpdateEventDetails(data)
8949
8950 1
    def _binary_init(self, data):
8951
        self.NodeId = NodeId.from_binary(data)
8952
        self.PerformInsertReplace = PerformUpdateType(uatype_UInt32.unpack(data.read(4))[0])
8953
        self.Filter = EventFilter.from_binary(data)
8954
        length = uatype_Int32.unpack(data.read(4))[0]
8955
        array = []
8956
        if length != -1:
8957
            for _ in range(0, length):
8958
                array.append(HistoryEventFieldList.from_binary(data))
8959
        self.EventData = array
8960
8961 1
    def __str__(self):
8962
        return 'UpdateEventDetails(' + 'NodeId:' + str(self.NodeId) + ', ' + \
8963
               'PerformInsertReplace:' + str(self.PerformInsertReplace) + ', ' + \
8964
               'Filter:' + str(self.Filter) + ', ' + \
8965
               'EventData:' + str(self.EventData) + ')'
8966
8967 1
    __repr__ = __str__
8968
8969
8970 1
class DeleteRawModifiedDetails(FrozenClass):
8971
    '''
8972
    :ivar NodeId:
8973
    :vartype NodeId: NodeId
8974
    :ivar IsDeleteModified:
8975
    :vartype IsDeleteModified: Boolean
8976
    :ivar StartTime:
8977
    :vartype StartTime: DateTime
8978
    :ivar EndTime:
8979
    :vartype EndTime: DateTime
8980
    '''
8981 1
    def __init__(self, binary=None):
8982
        if binary is not None:
8983
            self._binary_init(binary)
8984
            self._freeze = True
8985
            return
8986
        self.NodeId = NodeId()
8987
        self.IsDeleteModified = True
8988
        self.StartTime = datetime.now()
8989
        self.EndTime = datetime.now()
8990
        self._freeze = True
8991
8992 1
    def to_binary(self):
8993
        packet = []
8994
        packet.append(self.NodeId.to_binary())
8995
        packet.append(uatype_Boolean.pack(self.IsDeleteModified))
8996
        packet.append(pack_datetime(self.StartTime))
8997
        packet.append(pack_datetime(self.EndTime))
8998
        return b''.join(packet)
8999
9000 1
    @staticmethod
9001
    def from_binary(data):
9002
        return DeleteRawModifiedDetails(data)
9003
9004 1
    def _binary_init(self, data):
9005
        self.NodeId = NodeId.from_binary(data)
9006
        self.IsDeleteModified = uatype_Boolean.unpack(data.read(1))[0]
9007
        self.StartTime = unpack_datetime(data)
9008
        self.EndTime = unpack_datetime(data)
9009
9010 1
    def __str__(self):
9011
        return 'DeleteRawModifiedDetails(' + 'NodeId:' + str(self.NodeId) + ', ' + \
9012
               'IsDeleteModified:' + str(self.IsDeleteModified) + ', ' + \
9013
               'StartTime:' + str(self.StartTime) + ', ' + \
9014
               'EndTime:' + str(self.EndTime) + ')'
9015
9016 1
    __repr__ = __str__
9017
9018
9019 1
class DeleteAtTimeDetails(FrozenClass):
9020
    '''
9021
    :ivar NodeId:
9022
    :vartype NodeId: NodeId
9023
    :ivar ReqTimes:
9024
    :vartype ReqTimes: DateTime
9025
    '''
9026 1
    def __init__(self, binary=None):
9027
        if binary is not None:
9028
            self._binary_init(binary)
9029
            self._freeze = True
9030
            return
9031
        self.NodeId = NodeId()
9032
        self.ReqTimes = []
9033
        self._freeze = True
9034
9035 1
    def to_binary(self):
9036
        packet = []
9037
        packet.append(self.NodeId.to_binary())
9038
        packet.append(uatype_Int32.pack(len(self.ReqTimes)))
9039
        for fieldname in self.ReqTimes:
9040
            packet.append(pack_datetime(fieldname))
9041
        return b''.join(packet)
9042
9043 1
    @staticmethod
9044
    def from_binary(data):
9045
        return DeleteAtTimeDetails(data)
9046
9047 1
    def _binary_init(self, data):
9048
        self.NodeId = NodeId.from_binary(data)
9049
        self.ReqTimes = unpack_uatype_array('DateTime', data)
9050
9051 1
    def __str__(self):
9052
        return 'DeleteAtTimeDetails(' + 'NodeId:' + str(self.NodeId) + ', ' + \
9053
               'ReqTimes:' + str(self.ReqTimes) + ')'
9054
9055 1
    __repr__ = __str__
9056
9057
9058 1
class DeleteEventDetails(FrozenClass):
9059
    '''
9060
    :ivar NodeId:
9061
    :vartype NodeId: NodeId
9062
    :ivar EventIds:
9063
    :vartype EventIds: ByteString
9064
    '''
9065 1
    def __init__(self, binary=None):
9066
        if binary is not None:
9067
            self._binary_init(binary)
9068
            self._freeze = True
9069
            return
9070
        self.NodeId = NodeId()
9071
        self.EventIds = []
9072
        self._freeze = True
9073
9074 1
    def to_binary(self):
9075
        packet = []
9076
        packet.append(self.NodeId.to_binary())
9077
        packet.append(uatype_Int32.pack(len(self.EventIds)))
9078
        for fieldname in self.EventIds:
9079
            packet.append(pack_bytes(fieldname))
9080
        return b''.join(packet)
9081
9082 1
    @staticmethod
9083
    def from_binary(data):
9084
        return DeleteEventDetails(data)
9085
9086 1
    def _binary_init(self, data):
9087
        self.NodeId = NodeId.from_binary(data)
9088
        self.EventIds = unpack_uatype_array('ByteString', data)
9089
9090 1
    def __str__(self):
9091
        return 'DeleteEventDetails(' + 'NodeId:' + str(self.NodeId) + ', ' + \
9092
               'EventIds:' + str(self.EventIds) + ')'
9093
9094 1
    __repr__ = __str__
9095
9096
9097 1
class HistoryUpdateResult(FrozenClass):
9098
    '''
9099
    :ivar StatusCode:
9100
    :vartype StatusCode: StatusCode
9101
    :ivar OperationResults:
9102
    :vartype OperationResults: StatusCode
9103
    :ivar DiagnosticInfos:
9104
    :vartype DiagnosticInfos: DiagnosticInfo
9105
    '''
9106 1
    def __init__(self, binary=None):
9107
        if binary is not None:
9108
            self._binary_init(binary)
9109
            self._freeze = True
9110
            return
9111
        self.StatusCode = StatusCode()
9112
        self.OperationResults = []
9113
        self.DiagnosticInfos = []
9114
        self._freeze = True
9115
9116 1
    def to_binary(self):
9117
        packet = []
9118
        packet.append(self.StatusCode.to_binary())
9119
        packet.append(uatype_Int32.pack(len(self.OperationResults)))
9120
        for fieldname in self.OperationResults:
9121
            packet.append(fieldname.to_binary())
9122
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
9123
        for fieldname in self.DiagnosticInfos:
9124
            packet.append(fieldname.to_binary())
9125
        return b''.join(packet)
9126
9127 1
    @staticmethod
9128
    def from_binary(data):
9129
        return HistoryUpdateResult(data)
9130
9131 1
    def _binary_init(self, data):
9132
        self.StatusCode = StatusCode.from_binary(data)
9133
        length = uatype_Int32.unpack(data.read(4))[0]
9134
        array = []
9135
        if length != -1:
9136
            for _ in range(0, length):
9137
                array.append(StatusCode.from_binary(data))
9138
        self.OperationResults = array
9139
        length = uatype_Int32.unpack(data.read(4))[0]
9140
        array = []
9141
        if length != -1:
9142
            for _ in range(0, length):
9143
                array.append(DiagnosticInfo.from_binary(data))
9144
        self.DiagnosticInfos = array
9145
9146 1
    def __str__(self):
9147
        return 'HistoryUpdateResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
9148
               'OperationResults:' + str(self.OperationResults) + ', ' + \
9149
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9150
9151 1
    __repr__ = __str__
9152
9153
9154 1
class HistoryUpdateParameters(FrozenClass):
9155
    '''
9156
    :ivar HistoryUpdateDetails:
9157
    :vartype HistoryUpdateDetails: ExtensionObject
9158
    '''
9159 1
    def __init__(self, binary=None):
9160
        if binary is not None:
9161
            self._binary_init(binary)
9162
            self._freeze = True
9163
            return
9164
        self.HistoryUpdateDetails = []
9165
        self._freeze = True
9166
9167 1
    def to_binary(self):
9168
        packet = []
9169
        packet.append(uatype_Int32.pack(len(self.HistoryUpdateDetails)))
9170
        for fieldname in self.HistoryUpdateDetails:
9171
            packet.append(extensionobject_to_binary(fieldname))
9172
        return b''.join(packet)
9173
9174 1
    @staticmethod
9175
    def from_binary(data):
9176
        return HistoryUpdateParameters(data)
9177
9178 1
    def _binary_init(self, data):
9179
        length = uatype_Int32.unpack(data.read(4))[0]
9180
        array = []
9181
        if length != -1:
9182
            for _ in range(0, length):
9183
                array.append(extensionobject_from_binary(data))
9184
        self.HistoryUpdateDetails = array
9185
9186 1
    def __str__(self):
9187
        return 'HistoryUpdateParameters(' + 'HistoryUpdateDetails:' + str(self.HistoryUpdateDetails) + ')'
9188
9189 1
    __repr__ = __str__
9190
9191
9192 1
class HistoryUpdateRequest(FrozenClass):
9193
    '''
9194
    :ivar TypeId:
9195
    :vartype TypeId: NodeId
9196
    :ivar RequestHeader:
9197
    :vartype RequestHeader: RequestHeader
9198
    :ivar Parameters:
9199
    :vartype Parameters: HistoryUpdateParameters
9200
    '''
9201 1
    def __init__(self, binary=None):
9202
        if binary is not None:
9203
            self._binary_init(binary)
9204
            self._freeze = True
9205
            return
9206
        self.TypeId = FourByteNodeId(ObjectIds.HistoryUpdateRequest_Encoding_DefaultBinary)
9207
        self.RequestHeader = RequestHeader()
9208
        self.Parameters = HistoryUpdateParameters()
9209
        self._freeze = True
9210
9211 1
    def to_binary(self):
9212
        packet = []
9213
        packet.append(self.TypeId.to_binary())
9214
        packet.append(self.RequestHeader.to_binary())
9215
        packet.append(self.Parameters.to_binary())
9216
        return b''.join(packet)
9217
9218 1
    @staticmethod
9219
    def from_binary(data):
9220
        return HistoryUpdateRequest(data)
9221
9222 1
    def _binary_init(self, data):
9223
        self.TypeId = NodeId.from_binary(data)
9224
        self.RequestHeader = RequestHeader.from_binary(data)
9225
        self.Parameters = HistoryUpdateParameters.from_binary(data)
9226
9227 1
    def __str__(self):
9228
        return 'HistoryUpdateRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
9229
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
9230
               'Parameters:' + str(self.Parameters) + ')'
9231
9232 1
    __repr__ = __str__
9233
9234
9235 1
class HistoryUpdateResponse(FrozenClass):
9236
    '''
9237
    :ivar TypeId:
9238
    :vartype TypeId: NodeId
9239
    :ivar ResponseHeader:
9240
    :vartype ResponseHeader: ResponseHeader
9241
    :ivar Results:
9242
    :vartype Results: HistoryUpdateResult
9243
    :ivar DiagnosticInfos:
9244
    :vartype DiagnosticInfos: DiagnosticInfo
9245
    '''
9246 1
    def __init__(self, binary=None):
9247
        if binary is not None:
9248
            self._binary_init(binary)
9249
            self._freeze = True
9250
            return
9251
        self.TypeId = FourByteNodeId(ObjectIds.HistoryUpdateResponse_Encoding_DefaultBinary)
9252
        self.ResponseHeader = ResponseHeader()
9253
        self.Results = []
9254
        self.DiagnosticInfos = []
9255
        self._freeze = True
9256
9257 1
    def to_binary(self):
9258
        packet = []
9259
        packet.append(self.TypeId.to_binary())
9260
        packet.append(self.ResponseHeader.to_binary())
9261
        packet.append(uatype_Int32.pack(len(self.Results)))
9262
        for fieldname in self.Results:
9263
            packet.append(fieldname.to_binary())
9264
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
9265
        for fieldname in self.DiagnosticInfos:
9266
            packet.append(fieldname.to_binary())
9267
        return b''.join(packet)
9268
9269 1
    @staticmethod
9270
    def from_binary(data):
9271
        return HistoryUpdateResponse(data)
9272
9273 1
    def _binary_init(self, data):
9274
        self.TypeId = NodeId.from_binary(data)
9275
        self.ResponseHeader = ResponseHeader.from_binary(data)
9276
        length = uatype_Int32.unpack(data.read(4))[0]
9277
        array = []
9278
        if length != -1:
9279
            for _ in range(0, length):
9280
                array.append(HistoryUpdateResult.from_binary(data))
9281
        self.Results = array
9282
        length = uatype_Int32.unpack(data.read(4))[0]
9283
        array = []
9284
        if length != -1:
9285
            for _ in range(0, length):
9286
                array.append(DiagnosticInfo.from_binary(data))
9287
        self.DiagnosticInfos = array
9288
9289 1
    def __str__(self):
9290
        return 'HistoryUpdateResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
9291
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
9292
               'Results:' + str(self.Results) + ', ' + \
9293
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9294
9295 1
    __repr__ = __str__
9296
9297
9298 1
class CallMethodRequest(FrozenClass):
9299
    '''
9300
    :ivar ObjectId:
9301
    :vartype ObjectId: NodeId
9302
    :ivar MethodId:
9303
    :vartype MethodId: NodeId
9304
    :ivar InputArguments:
9305
    :vartype InputArguments: Variant
9306
    '''
9307 1
    def __init__(self, binary=None):
9308 1
        if binary is not None:
9309 1
            self._binary_init(binary)
9310 1
            self._freeze = True
9311 1
            return
9312 1
        self.ObjectId = NodeId()
9313 1
        self.MethodId = NodeId()
9314 1
        self.InputArguments = []
9315 1
        self._freeze = True
9316
9317 1
    def to_binary(self):
9318 1
        packet = []
9319 1
        packet.append(self.ObjectId.to_binary())
9320 1
        packet.append(self.MethodId.to_binary())
9321 1
        packet.append(uatype_Int32.pack(len(self.InputArguments)))
9322 1
        for fieldname in self.InputArguments:
9323 1
            packet.append(fieldname.to_binary())
9324 1
        return b''.join(packet)
9325
9326 1
    @staticmethod
9327
    def from_binary(data):
9328 1
        return CallMethodRequest(data)
9329
9330 1
    def _binary_init(self, data):
9331 1
        self.ObjectId = NodeId.from_binary(data)
9332 1
        self.MethodId = NodeId.from_binary(data)
9333 1
        length = uatype_Int32.unpack(data.read(4))[0]
9334 1
        array = []
9335 1
        if length != -1:
9336 1
            for _ in range(0, length):
9337 1
                array.append(Variant.from_binary(data))
9338 1
        self.InputArguments = array
9339
9340 1
    def __str__(self):
9341 1
        return 'CallMethodRequest(' + 'ObjectId:' + str(self.ObjectId) + ', ' + \
9342
               'MethodId:' + str(self.MethodId) + ', ' + \
9343
               'InputArguments:' + str(self.InputArguments) + ')'
9344
9345 1
    __repr__ = __str__
9346
9347
9348 1
class CallMethodResult(FrozenClass):
9349
    '''
9350
    :ivar StatusCode:
9351
    :vartype StatusCode: StatusCode
9352
    :ivar InputArgumentResults:
9353
    :vartype InputArgumentResults: StatusCode
9354
    :ivar InputArgumentDiagnosticInfos:
9355
    :vartype InputArgumentDiagnosticInfos: DiagnosticInfo
9356
    :ivar OutputArguments:
9357
    :vartype OutputArguments: Variant
9358
    '''
9359 1
    def __init__(self, binary=None):
9360 1
        if binary is not None:
9361 1
            self._binary_init(binary)
9362 1
            self._freeze = True
9363 1
            return
9364 1
        self.StatusCode = StatusCode()
9365 1
        self.InputArgumentResults = []
9366 1
        self.InputArgumentDiagnosticInfos = []
9367 1
        self.OutputArguments = []
9368 1
        self._freeze = True
9369
9370 1
    def to_binary(self):
9371 1
        packet = []
9372 1
        packet.append(self.StatusCode.to_binary())
9373 1
        packet.append(uatype_Int32.pack(len(self.InputArgumentResults)))
9374 1
        for fieldname in self.InputArgumentResults:
9375 1
            packet.append(fieldname.to_binary())
9376 1
        packet.append(uatype_Int32.pack(len(self.InputArgumentDiagnosticInfos)))
9377 1
        for fieldname in self.InputArgumentDiagnosticInfos:
9378
            packet.append(fieldname.to_binary())
9379 1
        packet.append(uatype_Int32.pack(len(self.OutputArguments)))
9380 1
        for fieldname in self.OutputArguments:
9381 1
            packet.append(fieldname.to_binary())
9382 1
        return b''.join(packet)
9383
9384 1
    @staticmethod
9385
    def from_binary(data):
9386 1
        return CallMethodResult(data)
9387
9388 1
    def _binary_init(self, data):
9389 1
        self.StatusCode = StatusCode.from_binary(data)
9390 1
        length = uatype_Int32.unpack(data.read(4))[0]
9391 1
        array = []
9392 1
        if length != -1:
9393 1
            for _ in range(0, length):
9394 1
                array.append(StatusCode.from_binary(data))
9395 1
        self.InputArgumentResults = array
9396 1
        length = uatype_Int32.unpack(data.read(4))[0]
9397 1
        array = []
9398 1
        if length != -1:
9399 1
            for _ in range(0, length):
9400
                array.append(DiagnosticInfo.from_binary(data))
9401 1
        self.InputArgumentDiagnosticInfos = array
9402 1
        length = uatype_Int32.unpack(data.read(4))[0]
9403 1
        array = []
9404 1
        if length != -1:
9405 1
            for _ in range(0, length):
9406 1
                array.append(Variant.from_binary(data))
9407 1
        self.OutputArguments = array
9408
9409 1
    def __str__(self):
9410
        return 'CallMethodResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
9411
               'InputArgumentResults:' + str(self.InputArgumentResults) + ', ' + \
9412
               'InputArgumentDiagnosticInfos:' + str(self.InputArgumentDiagnosticInfos) + ', ' + \
9413
               'OutputArguments:' + str(self.OutputArguments) + ')'
9414
9415 1
    __repr__ = __str__
9416
9417
9418 1
class CallParameters(FrozenClass):
9419
    '''
9420
    :ivar MethodsToCall:
9421
    :vartype MethodsToCall: CallMethodRequest
9422
    '''
9423 1
    def __init__(self, binary=None):
9424 1
        if binary is not None:
9425 1
            self._binary_init(binary)
9426 1
            self._freeze = True
9427 1
            return
9428 1
        self.MethodsToCall = []
9429 1
        self._freeze = True
9430
9431 1
    def to_binary(self):
9432 1
        packet = []
9433 1
        packet.append(uatype_Int32.pack(len(self.MethodsToCall)))
9434 1
        for fieldname in self.MethodsToCall:
9435 1
            packet.append(fieldname.to_binary())
9436 1
        return b''.join(packet)
9437
9438 1
    @staticmethod
9439
    def from_binary(data):
9440 1
        return CallParameters(data)
9441
9442 1
    def _binary_init(self, data):
9443 1
        length = uatype_Int32.unpack(data.read(4))[0]
9444 1
        array = []
9445 1
        if length != -1:
9446 1
            for _ in range(0, length):
9447 1
                array.append(CallMethodRequest.from_binary(data))
9448 1
        self.MethodsToCall = array
9449
9450 1
    def __str__(self):
9451
        return 'CallParameters(' + 'MethodsToCall:' + str(self.MethodsToCall) + ')'
9452
9453 1
    __repr__ = __str__
9454
9455
9456 1
class CallRequest(FrozenClass):
9457
    '''
9458
    :ivar TypeId:
9459
    :vartype TypeId: NodeId
9460
    :ivar RequestHeader:
9461
    :vartype RequestHeader: RequestHeader
9462
    :ivar Parameters:
9463
    :vartype Parameters: CallParameters
9464
    '''
9465 1
    def __init__(self, binary=None):
9466 1
        if binary is not None:
9467
            self._binary_init(binary)
9468
            self._freeze = True
9469
            return
9470 1
        self.TypeId = FourByteNodeId(ObjectIds.CallRequest_Encoding_DefaultBinary)
9471 1
        self.RequestHeader = RequestHeader()
9472 1
        self.Parameters = CallParameters()
9473 1
        self._freeze = True
9474
9475 1
    def to_binary(self):
9476 1
        packet = []
9477 1
        packet.append(self.TypeId.to_binary())
9478 1
        packet.append(self.RequestHeader.to_binary())
9479 1
        packet.append(self.Parameters.to_binary())
9480 1
        return b''.join(packet)
9481
9482 1
    @staticmethod
9483
    def from_binary(data):
9484
        return CallRequest(data)
9485
9486 1
    def _binary_init(self, data):
9487
        self.TypeId = NodeId.from_binary(data)
9488
        self.RequestHeader = RequestHeader.from_binary(data)
9489
        self.Parameters = CallParameters.from_binary(data)
9490
9491 1
    def __str__(self):
9492
        return 'CallRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
9493
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
9494
               'Parameters:' + str(self.Parameters) + ')'
9495
9496 1
    __repr__ = __str__
9497
9498
9499 1
class CallResponse(FrozenClass):
9500
    '''
9501
    :ivar TypeId:
9502
    :vartype TypeId: NodeId
9503
    :ivar ResponseHeader:
9504
    :vartype ResponseHeader: ResponseHeader
9505
    :ivar Results:
9506
    :vartype Results: CallMethodResult
9507
    :ivar DiagnosticInfos:
9508
    :vartype DiagnosticInfos: DiagnosticInfo
9509
    '''
9510 1
    def __init__(self, binary=None):
9511 1
        if binary is not None:
9512 1
            self._binary_init(binary)
9513 1
            self._freeze = True
9514 1
            return
9515 1
        self.TypeId = FourByteNodeId(ObjectIds.CallResponse_Encoding_DefaultBinary)
9516 1
        self.ResponseHeader = ResponseHeader()
9517 1
        self.Results = []
9518 1
        self.DiagnosticInfos = []
9519 1
        self._freeze = True
9520
9521 1
    def to_binary(self):
9522 1
        packet = []
9523 1
        packet.append(self.TypeId.to_binary())
9524 1
        packet.append(self.ResponseHeader.to_binary())
9525 1
        packet.append(uatype_Int32.pack(len(self.Results)))
9526 1
        for fieldname in self.Results:
9527 1
            packet.append(fieldname.to_binary())
9528 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
9529 1
        for fieldname in self.DiagnosticInfos:
9530
            packet.append(fieldname.to_binary())
9531 1
        return b''.join(packet)
9532
9533 1
    @staticmethod
9534
    def from_binary(data):
9535 1
        return CallResponse(data)
9536
9537 1
    def _binary_init(self, data):
9538 1
        self.TypeId = NodeId.from_binary(data)
9539 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
9540 1
        length = uatype_Int32.unpack(data.read(4))[0]
9541 1
        array = []
9542 1
        if length != -1:
9543 1
            for _ in range(0, length):
9544 1
                array.append(CallMethodResult.from_binary(data))
9545 1
        self.Results = array
9546 1
        length = uatype_Int32.unpack(data.read(4))[0]
9547 1
        array = []
9548 1
        if length != -1:
9549 1
            for _ in range(0, length):
9550
                array.append(DiagnosticInfo.from_binary(data))
9551 1
        self.DiagnosticInfos = array
9552
9553 1
    def __str__(self):
9554
        return 'CallResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
9555
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
9556
               'Results:' + str(self.Results) + ', ' + \
9557
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9558
9559 1
    __repr__ = __str__
9560
9561
9562 1
class MonitoringFilter(FrozenClass):
9563
    '''
9564
    '''
9565 1
    def __init__(self, binary=None):
9566
        if binary is not None:
9567
            self._binary_init(binary)
9568
            self._freeze = True
9569
            return
9570
        self._freeze = True
9571
9572 1
    def to_binary(self):
9573
        packet = []
9574
        return b''.join(packet)
9575
9576 1
    @staticmethod
9577
    def from_binary(data):
9578
        return MonitoringFilter(data)
9579
9580 1
    def _binary_init(self, data):
9581
        pass
9582
9583 1
    def __str__(self):
9584
        return 'MonitoringFilter(' +  + ')'
9585
9586 1
    __repr__ = __str__
9587
9588
9589 1
class DataChangeFilter(FrozenClass):
9590
    '''
9591
    :ivar Trigger:
9592
    :vartype Trigger: DataChangeTrigger
9593
    :ivar DeadbandType:
9594
    :vartype DeadbandType: UInt32
9595
    :ivar DeadbandValue:
9596
    :vartype DeadbandValue: Double
9597
    '''
9598 1
    def __init__(self, binary=None):
9599
        if binary is not None:
9600
            self._binary_init(binary)
9601
            self._freeze = True
9602
            return
9603
        self.Trigger = DataChangeTrigger(0)
9604
        self.DeadbandType = 0
9605
        self.DeadbandValue = 0
9606
        self._freeze = True
9607
9608 1
    def to_binary(self):
9609
        packet = []
9610
        packet.append(uatype_UInt32.pack(self.Trigger.value))
9611
        packet.append(uatype_UInt32.pack(self.DeadbandType))
9612
        packet.append(uatype_Double.pack(self.DeadbandValue))
9613
        return b''.join(packet)
9614
9615 1
    @staticmethod
9616
    def from_binary(data):
9617
        return DataChangeFilter(data)
9618
9619 1
    def _binary_init(self, data):
9620
        self.Trigger = DataChangeTrigger(uatype_UInt32.unpack(data.read(4))[0])
9621
        self.DeadbandType = uatype_UInt32.unpack(data.read(4))[0]
9622
        self.DeadbandValue = uatype_Double.unpack(data.read(8))[0]
9623
9624 1
    def __str__(self):
9625
        return 'DataChangeFilter(' + 'Trigger:' + str(self.Trigger) + ', ' + \
9626
               'DeadbandType:' + str(self.DeadbandType) + ', ' + \
9627
               'DeadbandValue:' + str(self.DeadbandValue) + ')'
9628
9629 1
    __repr__ = __str__
9630
9631
9632 1
class EventFilter(FrozenClass):
9633
    '''
9634
    :ivar SelectClauses:
9635
    :vartype SelectClauses: SimpleAttributeOperand
9636
    :ivar WhereClause:
9637
    :vartype WhereClause: ContentFilter
9638
    '''
9639 1
    def __init__(self, binary=None):
9640 1
        if binary is not None:
9641 1
            self._binary_init(binary)
9642 1
            self._freeze = True
9643 1
            return
9644 1
        self.SelectClauses = []
9645 1
        self.WhereClause = ContentFilter()
9646 1
        self._freeze = True
9647
9648 1
    def to_binary(self):
9649 1
        packet = []
9650 1
        packet.append(uatype_Int32.pack(len(self.SelectClauses)))
9651 1
        for fieldname in self.SelectClauses:
9652 1
            packet.append(fieldname.to_binary())
9653 1
        packet.append(self.WhereClause.to_binary())
9654 1
        return b''.join(packet)
9655
9656 1
    @staticmethod
9657
    def from_binary(data):
9658 1
        return EventFilter(data)
9659
9660 1
    def _binary_init(self, data):
9661 1
        length = uatype_Int32.unpack(data.read(4))[0]
9662 1
        array = []
9663 1
        if length != -1:
9664 1
            for _ in range(0, length):
9665 1
                array.append(SimpleAttributeOperand.from_binary(data))
9666 1
        self.SelectClauses = array
9667 1
        self.WhereClause = ContentFilter.from_binary(data)
9668
9669 1
    def __str__(self):
9670
        return 'EventFilter(' + 'SelectClauses:' + str(self.SelectClauses) + ', ' + \
9671
               'WhereClause:' + str(self.WhereClause) + ')'
9672
9673 1
    __repr__ = __str__
9674
9675
9676 1
class AggregateConfiguration(FrozenClass):
9677
    '''
9678
    :ivar UseServerCapabilitiesDefaults:
9679
    :vartype UseServerCapabilitiesDefaults: Boolean
9680
    :ivar TreatUncertainAsBad:
9681
    :vartype TreatUncertainAsBad: Boolean
9682
    :ivar PercentDataBad:
9683
    :vartype PercentDataBad: Byte
9684
    :ivar PercentDataGood:
9685
    :vartype PercentDataGood: Byte
9686
    :ivar UseSlopedExtrapolation:
9687
    :vartype UseSlopedExtrapolation: Boolean
9688
    '''
9689 1
    def __init__(self, binary=None):
9690
        if binary is not None:
9691
            self._binary_init(binary)
9692
            self._freeze = True
9693
            return
9694
        self.UseServerCapabilitiesDefaults = True
9695
        self.TreatUncertainAsBad = True
9696
        self.PercentDataBad = 0
9697
        self.PercentDataGood = 0
9698
        self.UseSlopedExtrapolation = True
9699
        self._freeze = True
9700
9701 1
    def to_binary(self):
9702
        packet = []
9703
        packet.append(uatype_Boolean.pack(self.UseServerCapabilitiesDefaults))
9704
        packet.append(uatype_Boolean.pack(self.TreatUncertainAsBad))
9705
        packet.append(uatype_Byte.pack(self.PercentDataBad))
9706
        packet.append(uatype_Byte.pack(self.PercentDataGood))
9707
        packet.append(uatype_Boolean.pack(self.UseSlopedExtrapolation))
9708
        return b''.join(packet)
9709
9710 1
    @staticmethod
9711
    def from_binary(data):
9712
        return AggregateConfiguration(data)
9713
9714 1
    def _binary_init(self, data):
9715
        self.UseServerCapabilitiesDefaults = uatype_Boolean.unpack(data.read(1))[0]
9716
        self.TreatUncertainAsBad = uatype_Boolean.unpack(data.read(1))[0]
9717
        self.PercentDataBad = uatype_Byte.unpack(data.read(1))[0]
9718
        self.PercentDataGood = uatype_Byte.unpack(data.read(1))[0]
9719
        self.UseSlopedExtrapolation = uatype_Boolean.unpack(data.read(1))[0]
9720
9721 1
    def __str__(self):
9722
        return 'AggregateConfiguration(' + 'UseServerCapabilitiesDefaults:' + str(self.UseServerCapabilitiesDefaults) + ', ' + \
9723
               'TreatUncertainAsBad:' + str(self.TreatUncertainAsBad) + ', ' + \
9724
               'PercentDataBad:' + str(self.PercentDataBad) + ', ' + \
9725
               'PercentDataGood:' + str(self.PercentDataGood) + ', ' + \
9726
               'UseSlopedExtrapolation:' + str(self.UseSlopedExtrapolation) + ')'
9727
9728 1
    __repr__ = __str__
9729
9730
9731 1
class AggregateFilter(FrozenClass):
9732
    '''
9733
    :ivar StartTime:
9734
    :vartype StartTime: DateTime
9735
    :ivar AggregateType:
9736
    :vartype AggregateType: NodeId
9737
    :ivar ProcessingInterval:
9738
    :vartype ProcessingInterval: Double
9739
    :ivar AggregateConfiguration:
9740
    :vartype AggregateConfiguration: AggregateConfiguration
9741
    '''
9742 1
    def __init__(self, binary=None):
9743
        if binary is not None:
9744
            self._binary_init(binary)
9745
            self._freeze = True
9746
            return
9747
        self.StartTime = datetime.now()
9748
        self.AggregateType = NodeId()
9749
        self.ProcessingInterval = 0
9750
        self.AggregateConfiguration = AggregateConfiguration()
9751
        self._freeze = True
9752
9753 1
    def to_binary(self):
9754
        packet = []
9755
        packet.append(pack_datetime(self.StartTime))
9756
        packet.append(self.AggregateType.to_binary())
9757
        packet.append(uatype_Double.pack(self.ProcessingInterval))
9758
        packet.append(self.AggregateConfiguration.to_binary())
9759
        return b''.join(packet)
9760
9761 1
    @staticmethod
9762
    def from_binary(data):
9763
        return AggregateFilter(data)
9764
9765 1
    def _binary_init(self, data):
9766
        self.StartTime = unpack_datetime(data)
9767
        self.AggregateType = NodeId.from_binary(data)
9768
        self.ProcessingInterval = uatype_Double.unpack(data.read(8))[0]
9769
        self.AggregateConfiguration = AggregateConfiguration.from_binary(data)
9770
9771 1
    def __str__(self):
9772
        return 'AggregateFilter(' + 'StartTime:' + str(self.StartTime) + ', ' + \
9773
               'AggregateType:' + str(self.AggregateType) + ', ' + \
9774
               'ProcessingInterval:' + str(self.ProcessingInterval) + ', ' + \
9775
               'AggregateConfiguration:' + str(self.AggregateConfiguration) + ')'
9776
9777 1
    __repr__ = __str__
9778
9779
9780 1
class MonitoringFilterResult(FrozenClass):
9781
    '''
9782
    '''
9783 1
    def __init__(self, binary=None):
9784
        if binary is not None:
9785
            self._binary_init(binary)
9786
            self._freeze = True
9787
            return
9788
        self._freeze = True
9789
9790 1
    def to_binary(self):
9791
        packet = []
9792
        return b''.join(packet)
9793
9794 1
    @staticmethod
9795
    def from_binary(data):
9796
        return MonitoringFilterResult(data)
9797
9798 1
    def _binary_init(self, data):
9799
        pass
9800
9801 1
    def __str__(self):
9802
        return 'MonitoringFilterResult(' +  + ')'
9803
9804 1
    __repr__ = __str__
9805
9806
9807 1
class EventFilterResult(FrozenClass):
9808
    '''
9809
    :ivar SelectClauseResults:
9810
    :vartype SelectClauseResults: StatusCode
9811
    :ivar SelectClauseDiagnosticInfos:
9812
    :vartype SelectClauseDiagnosticInfos: DiagnosticInfo
9813
    :ivar WhereClauseResult:
9814
    :vartype WhereClauseResult: ContentFilterResult
9815
    '''
9816 1
    def __init__(self, binary=None):
9817 1
        if binary is not None:
9818 1
            self._binary_init(binary)
9819 1
            self._freeze = True
9820 1
            return
9821 1
        self.SelectClauseResults = []
9822 1
        self.SelectClauseDiagnosticInfos = []
9823 1
        self.WhereClauseResult = ContentFilterResult()
9824 1
        self._freeze = True
9825
9826 1
    def to_binary(self):
9827 1
        packet = []
9828 1
        packet.append(uatype_Int32.pack(len(self.SelectClauseResults)))
9829 1
        for fieldname in self.SelectClauseResults:
9830 1
            packet.append(fieldname.to_binary())
9831 1
        packet.append(uatype_Int32.pack(len(self.SelectClauseDiagnosticInfos)))
9832 1
        for fieldname in self.SelectClauseDiagnosticInfos:
9833
            packet.append(fieldname.to_binary())
9834 1
        packet.append(self.WhereClauseResult.to_binary())
9835 1
        return b''.join(packet)
9836
9837 1
    @staticmethod
9838
    def from_binary(data):
9839 1
        return EventFilterResult(data)
9840
9841 1
    def _binary_init(self, data):
9842 1
        length = uatype_Int32.unpack(data.read(4))[0]
9843 1
        array = []
9844 1
        if length != -1:
9845 1
            for _ in range(0, length):
9846 1
                array.append(StatusCode.from_binary(data))
9847 1
        self.SelectClauseResults = array
9848 1
        length = uatype_Int32.unpack(data.read(4))[0]
9849 1
        array = []
9850 1
        if length != -1:
9851 1
            for _ in range(0, length):
9852
                array.append(DiagnosticInfo.from_binary(data))
9853 1
        self.SelectClauseDiagnosticInfos = array
9854 1
        self.WhereClauseResult = ContentFilterResult.from_binary(data)
9855
9856 1
    def __str__(self):
9857
        return 'EventFilterResult(' + 'SelectClauseResults:' + str(self.SelectClauseResults) + ', ' + \
9858
               'SelectClauseDiagnosticInfos:' + str(self.SelectClauseDiagnosticInfos) + ', ' + \
9859
               'WhereClauseResult:' + str(self.WhereClauseResult) + ')'
9860
9861 1
    __repr__ = __str__
9862
9863
9864 1
class AggregateFilterResult(FrozenClass):
9865
    '''
9866
    :ivar RevisedStartTime:
9867
    :vartype RevisedStartTime: DateTime
9868
    :ivar RevisedProcessingInterval:
9869
    :vartype RevisedProcessingInterval: Double
9870
    :ivar RevisedAggregateConfiguration:
9871
    :vartype RevisedAggregateConfiguration: AggregateConfiguration
9872
    '''
9873 1
    def __init__(self, binary=None):
9874
        if binary is not None:
9875
            self._binary_init(binary)
9876
            self._freeze = True
9877
            return
9878
        self.RevisedStartTime = datetime.now()
9879
        self.RevisedProcessingInterval = 0
9880
        self.RevisedAggregateConfiguration = AggregateConfiguration()
9881
        self._freeze = True
9882
9883 1
    def to_binary(self):
9884
        packet = []
9885
        packet.append(pack_datetime(self.RevisedStartTime))
9886
        packet.append(uatype_Double.pack(self.RevisedProcessingInterval))
9887
        packet.append(self.RevisedAggregateConfiguration.to_binary())
9888
        return b''.join(packet)
9889
9890 1
    @staticmethod
9891
    def from_binary(data):
9892
        return AggregateFilterResult(data)
9893
9894 1
    def _binary_init(self, data):
9895
        self.RevisedStartTime = unpack_datetime(data)
9896
        self.RevisedProcessingInterval = uatype_Double.unpack(data.read(8))[0]
9897
        self.RevisedAggregateConfiguration = AggregateConfiguration.from_binary(data)
9898
9899 1
    def __str__(self):
9900
        return 'AggregateFilterResult(' + 'RevisedStartTime:' + str(self.RevisedStartTime) + ', ' + \
9901
               'RevisedProcessingInterval:' + str(self.RevisedProcessingInterval) + ', ' + \
9902
               'RevisedAggregateConfiguration:' + str(self.RevisedAggregateConfiguration) + ')'
9903
9904 1
    __repr__ = __str__
9905
9906
9907 1
class MonitoringParameters(FrozenClass):
9908
    '''
9909
    :ivar ClientHandle:
9910
    :vartype ClientHandle: UInt32
9911
    :ivar SamplingInterval:
9912
    :vartype SamplingInterval: Double
9913
    :ivar Filter:
9914
    :vartype Filter: ExtensionObject
9915
    :ivar QueueSize:
9916
    :vartype QueueSize: UInt32
9917
    :ivar DiscardOldest:
9918
    :vartype DiscardOldest: Boolean
9919
    '''
9920 1
    def __init__(self, binary=None):
9921 1
        if binary is not None:
9922 1
            self._binary_init(binary)
9923 1
            self._freeze = True
9924 1
            return
9925 1
        self.ClientHandle = 0
9926 1
        self.SamplingInterval = 0
9927 1
        self.Filter = None
9928 1
        self.QueueSize = 0
9929 1
        self.DiscardOldest = True
9930 1
        self._freeze = True
9931
9932 1
    def to_binary(self):
9933 1
        packet = []
9934 1
        packet.append(uatype_UInt32.pack(self.ClientHandle))
9935 1
        packet.append(uatype_Double.pack(self.SamplingInterval))
9936 1
        packet.append(extensionobject_to_binary(self.Filter))
9937 1
        packet.append(uatype_UInt32.pack(self.QueueSize))
9938 1
        packet.append(uatype_Boolean.pack(self.DiscardOldest))
9939 1
        return b''.join(packet)
9940
9941 1
    @staticmethod
9942
    def from_binary(data):
9943 1
        return MonitoringParameters(data)
9944
9945 1
    def _binary_init(self, data):
9946 1
        self.ClientHandle = uatype_UInt32.unpack(data.read(4))[0]
9947 1
        self.SamplingInterval = uatype_Double.unpack(data.read(8))[0]
9948 1
        self.Filter = extensionobject_from_binary(data)
9949 1
        self.QueueSize = uatype_UInt32.unpack(data.read(4))[0]
9950 1
        self.DiscardOldest = uatype_Boolean.unpack(data.read(1))[0]
9951
9952 1
    def __str__(self):
9953
        return 'MonitoringParameters(' + 'ClientHandle:' + str(self.ClientHandle) + ', ' + \
9954
               'SamplingInterval:' + str(self.SamplingInterval) + ', ' + \
9955
               'Filter:' + str(self.Filter) + ', ' + \
9956
               'QueueSize:' + str(self.QueueSize) + ', ' + \
9957
               'DiscardOldest:' + str(self.DiscardOldest) + ')'
9958
9959 1
    __repr__ = __str__
9960
9961
9962 1
class MonitoredItemCreateRequest(FrozenClass):
9963
    '''
9964
    :ivar ItemToMonitor:
9965
    :vartype ItemToMonitor: ReadValueId
9966
    :ivar MonitoringMode:
9967
    :vartype MonitoringMode: MonitoringMode
9968
    :ivar RequestedParameters:
9969
    :vartype RequestedParameters: MonitoringParameters
9970
    '''
9971 1
    def __init__(self, binary=None):
9972 1
        if binary is not None:
9973 1
            self._binary_init(binary)
9974 1
            self._freeze = True
9975 1
            return
9976 1
        self.ItemToMonitor = ReadValueId()
9977 1
        self.MonitoringMode = MonitoringMode(0)
9978 1
        self.RequestedParameters = MonitoringParameters()
9979 1
        self._freeze = True
9980
9981 1
    def to_binary(self):
9982 1
        packet = []
9983 1
        packet.append(self.ItemToMonitor.to_binary())
9984 1
        packet.append(uatype_UInt32.pack(self.MonitoringMode.value))
9985 1
        packet.append(self.RequestedParameters.to_binary())
9986 1
        return b''.join(packet)
9987
9988 1
    @staticmethod
9989
    def from_binary(data):
9990 1
        return MonitoredItemCreateRequest(data)
9991
9992 1
    def _binary_init(self, data):
9993 1
        self.ItemToMonitor = ReadValueId.from_binary(data)
9994 1
        self.MonitoringMode = MonitoringMode(uatype_UInt32.unpack(data.read(4))[0])
9995 1
        self.RequestedParameters = MonitoringParameters.from_binary(data)
9996
9997 1
    def __str__(self):
9998
        return 'MonitoredItemCreateRequest(' + 'ItemToMonitor:' + str(self.ItemToMonitor) + ', ' + \
9999
               'MonitoringMode:' + str(self.MonitoringMode) + ', ' + \
10000
               'RequestedParameters:' + str(self.RequestedParameters) + ')'
10001
10002 1
    __repr__ = __str__
10003
10004
10005 1
class MonitoredItemCreateResult(FrozenClass):
10006
    '''
10007
    :ivar StatusCode:
10008
    :vartype StatusCode: StatusCode
10009
    :ivar MonitoredItemId:
10010
    :vartype MonitoredItemId: UInt32
10011
    :ivar RevisedSamplingInterval:
10012
    :vartype RevisedSamplingInterval: Double
10013
    :ivar RevisedQueueSize:
10014
    :vartype RevisedQueueSize: UInt32
10015
    :ivar FilterResult:
10016
    :vartype FilterResult: ExtensionObject
10017
    '''
10018 1
    def __init__(self, binary=None):
10019 1
        if binary is not None:
10020 1
            self._binary_init(binary)
10021 1
            self._freeze = True
10022 1
            return
10023 1
        self.StatusCode = StatusCode()
10024 1
        self.MonitoredItemId = 0
10025 1
        self.RevisedSamplingInterval = 0
10026 1
        self.RevisedQueueSize = 0
10027 1
        self.FilterResult = None
10028 1
        self._freeze = True
10029
10030 1
    def to_binary(self):
10031 1
        packet = []
10032 1
        packet.append(self.StatusCode.to_binary())
10033 1
        packet.append(uatype_UInt32.pack(self.MonitoredItemId))
10034 1
        packet.append(uatype_Double.pack(self.RevisedSamplingInterval))
10035 1
        packet.append(uatype_UInt32.pack(self.RevisedQueueSize))
10036 1
        packet.append(extensionobject_to_binary(self.FilterResult))
10037 1
        return b''.join(packet)
10038
10039 1
    @staticmethod
10040
    def from_binary(data):
10041 1
        return MonitoredItemCreateResult(data)
10042
10043 1
    def _binary_init(self, data):
10044 1
        self.StatusCode = StatusCode.from_binary(data)
10045 1
        self.MonitoredItemId = uatype_UInt32.unpack(data.read(4))[0]
10046 1
        self.RevisedSamplingInterval = uatype_Double.unpack(data.read(8))[0]
10047 1
        self.RevisedQueueSize = uatype_UInt32.unpack(data.read(4))[0]
10048 1
        self.FilterResult = extensionobject_from_binary(data)
10049
10050 1
    def __str__(self):
10051
        return 'MonitoredItemCreateResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
10052
               'MonitoredItemId:' + str(self.MonitoredItemId) + ', ' + \
10053
               'RevisedSamplingInterval:' + str(self.RevisedSamplingInterval) + ', ' + \
10054
               'RevisedQueueSize:' + str(self.RevisedQueueSize) + ', ' + \
10055
               'FilterResult:' + str(self.FilterResult) + ')'
10056
10057 1
    __repr__ = __str__
10058
10059
10060 1
class CreateMonitoredItemsParameters(FrozenClass):
10061
    '''
10062
    :ivar SubscriptionId:
10063
    :vartype SubscriptionId: UInt32
10064
    :ivar TimestampsToReturn:
10065
    :vartype TimestampsToReturn: TimestampsToReturn
10066
    :ivar ItemsToCreate:
10067
    :vartype ItemsToCreate: MonitoredItemCreateRequest
10068
    '''
10069 1
    def __init__(self, binary=None):
10070 1
        if binary is not None:
10071 1
            self._binary_init(binary)
10072 1
            self._freeze = True
10073 1
            return
10074 1
        self.SubscriptionId = 0
10075 1
        self.TimestampsToReturn = TimestampsToReturn(0)
10076 1
        self.ItemsToCreate = []
10077 1
        self._freeze = True
10078
10079 1
    def to_binary(self):
10080 1
        packet = []
10081 1
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
10082 1
        packet.append(uatype_UInt32.pack(self.TimestampsToReturn.value))
10083 1
        packet.append(uatype_Int32.pack(len(self.ItemsToCreate)))
10084 1
        for fieldname in self.ItemsToCreate:
10085 1
            packet.append(fieldname.to_binary())
10086 1
        return b''.join(packet)
10087
10088 1
    @staticmethod
10089
    def from_binary(data):
10090 1
        return CreateMonitoredItemsParameters(data)
10091
10092 1
    def _binary_init(self, data):
10093 1
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
10094 1
        self.TimestampsToReturn = TimestampsToReturn(uatype_UInt32.unpack(data.read(4))[0])
10095 1
        length = uatype_Int32.unpack(data.read(4))[0]
10096 1
        array = []
10097 1
        if length != -1:
10098 1
            for _ in range(0, length):
10099 1
                array.append(MonitoredItemCreateRequest.from_binary(data))
10100 1
        self.ItemsToCreate = array
10101
10102 1
    def __str__(self):
10103
        return 'CreateMonitoredItemsParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
10104
               'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', ' + \
10105
               'ItemsToCreate:' + str(self.ItemsToCreate) + ')'
10106
10107 1
    __repr__ = __str__
10108
10109
10110 1
class CreateMonitoredItemsRequest(FrozenClass):
10111
    '''
10112
    :ivar TypeId:
10113
    :vartype TypeId: NodeId
10114
    :ivar RequestHeader:
10115
    :vartype RequestHeader: RequestHeader
10116
    :ivar Parameters:
10117
    :vartype Parameters: CreateMonitoredItemsParameters
10118
    '''
10119 1
    def __init__(self, binary=None):
10120 1
        if binary is not None:
10121
            self._binary_init(binary)
10122
            self._freeze = True
10123
            return
10124 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateMonitoredItemsRequest_Encoding_DefaultBinary)
10125 1
        self.RequestHeader = RequestHeader()
10126 1
        self.Parameters = CreateMonitoredItemsParameters()
10127 1
        self._freeze = True
10128
10129 1
    def to_binary(self):
10130 1
        packet = []
10131 1
        packet.append(self.TypeId.to_binary())
10132 1
        packet.append(self.RequestHeader.to_binary())
10133 1
        packet.append(self.Parameters.to_binary())
10134 1
        return b''.join(packet)
10135
10136 1
    @staticmethod
10137
    def from_binary(data):
10138
        return CreateMonitoredItemsRequest(data)
10139
10140 1
    def _binary_init(self, data):
10141
        self.TypeId = NodeId.from_binary(data)
10142
        self.RequestHeader = RequestHeader.from_binary(data)
10143
        self.Parameters = CreateMonitoredItemsParameters.from_binary(data)
10144
10145 1
    def __str__(self):
10146
        return 'CreateMonitoredItemsRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10147
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
10148
               'Parameters:' + str(self.Parameters) + ')'
10149
10150 1
    __repr__ = __str__
10151
10152
10153 1
class CreateMonitoredItemsResponse(FrozenClass):
10154
    '''
10155
    :ivar TypeId:
10156
    :vartype TypeId: NodeId
10157
    :ivar ResponseHeader:
10158
    :vartype ResponseHeader: ResponseHeader
10159
    :ivar Results:
10160
    :vartype Results: MonitoredItemCreateResult
10161
    :ivar DiagnosticInfos:
10162
    :vartype DiagnosticInfos: DiagnosticInfo
10163
    '''
10164 1
    def __init__(self, binary=None):
10165 1
        if binary is not None:
10166 1
            self._binary_init(binary)
10167 1
            self._freeze = True
10168 1
            return
10169 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateMonitoredItemsResponse_Encoding_DefaultBinary)
10170 1
        self.ResponseHeader = ResponseHeader()
10171 1
        self.Results = []
10172 1
        self.DiagnosticInfos = []
10173 1
        self._freeze = True
10174
10175 1
    def to_binary(self):
10176 1
        packet = []
10177 1
        packet.append(self.TypeId.to_binary())
10178 1
        packet.append(self.ResponseHeader.to_binary())
10179 1
        packet.append(uatype_Int32.pack(len(self.Results)))
10180 1
        for fieldname in self.Results:
10181 1
            packet.append(fieldname.to_binary())
10182 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
10183 1
        for fieldname in self.DiagnosticInfos:
10184
            packet.append(fieldname.to_binary())
10185 1
        return b''.join(packet)
10186
10187 1
    @staticmethod
10188
    def from_binary(data):
10189 1
        return CreateMonitoredItemsResponse(data)
10190
10191 1
    def _binary_init(self, data):
10192 1
        self.TypeId = NodeId.from_binary(data)
10193 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
10194 1
        length = uatype_Int32.unpack(data.read(4))[0]
10195 1
        array = []
10196 1
        if length != -1:
10197 1
            for _ in range(0, length):
10198 1
                array.append(MonitoredItemCreateResult.from_binary(data))
10199 1
        self.Results = array
10200 1
        length = uatype_Int32.unpack(data.read(4))[0]
10201 1
        array = []
10202 1
        if length != -1:
10203 1
            for _ in range(0, length):
10204
                array.append(DiagnosticInfo.from_binary(data))
10205 1
        self.DiagnosticInfos = array
10206
10207 1
    def __str__(self):
10208
        return 'CreateMonitoredItemsResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10209
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
10210
               'Results:' + str(self.Results) + ', ' + \
10211
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10212
10213 1
    __repr__ = __str__
10214
10215
10216 1
class MonitoredItemModifyRequest(FrozenClass):
10217
    '''
10218
    :ivar MonitoredItemId:
10219
    :vartype MonitoredItemId: UInt32
10220
    :ivar RequestedParameters:
10221
    :vartype RequestedParameters: MonitoringParameters
10222
    '''
10223 1
    def __init__(self, binary=None):
10224
        if binary is not None:
10225
            self._binary_init(binary)
10226
            self._freeze = True
10227
            return
10228
        self.MonitoredItemId = 0
10229
        self.RequestedParameters = MonitoringParameters()
10230
        self._freeze = True
10231
10232 1
    def to_binary(self):
10233
        packet = []
10234
        packet.append(uatype_UInt32.pack(self.MonitoredItemId))
10235
        packet.append(self.RequestedParameters.to_binary())
10236
        return b''.join(packet)
10237
10238 1
    @staticmethod
10239
    def from_binary(data):
10240
        return MonitoredItemModifyRequest(data)
10241
10242 1
    def _binary_init(self, data):
10243
        self.MonitoredItemId = uatype_UInt32.unpack(data.read(4))[0]
10244
        self.RequestedParameters = MonitoringParameters.from_binary(data)
10245
10246 1
    def __str__(self):
10247
        return 'MonitoredItemModifyRequest(' + 'MonitoredItemId:' + str(self.MonitoredItemId) + ', ' + \
10248
               'RequestedParameters:' + str(self.RequestedParameters) + ')'
10249
10250 1
    __repr__ = __str__
10251
10252
10253 1
class MonitoredItemModifyResult(FrozenClass):
10254
    '''
10255
    :ivar StatusCode:
10256
    :vartype StatusCode: StatusCode
10257
    :ivar RevisedSamplingInterval:
10258
    :vartype RevisedSamplingInterval: Double
10259
    :ivar RevisedQueueSize:
10260
    :vartype RevisedQueueSize: UInt32
10261
    :ivar FilterResult:
10262
    :vartype FilterResult: ExtensionObject
10263
    '''
10264 1
    def __init__(self, binary=None):
10265
        if binary is not None:
10266
            self._binary_init(binary)
10267
            self._freeze = True
10268
            return
10269
        self.StatusCode = StatusCode()
10270
        self.RevisedSamplingInterval = 0
10271
        self.RevisedQueueSize = 0
10272
        self.FilterResult = None
10273
        self._freeze = True
10274
10275 1
    def to_binary(self):
10276
        packet = []
10277
        packet.append(self.StatusCode.to_binary())
10278
        packet.append(uatype_Double.pack(self.RevisedSamplingInterval))
10279
        packet.append(uatype_UInt32.pack(self.RevisedQueueSize))
10280
        packet.append(extensionobject_to_binary(self.FilterResult))
10281
        return b''.join(packet)
10282
10283 1
    @staticmethod
10284
    def from_binary(data):
10285
        return MonitoredItemModifyResult(data)
10286
10287 1
    def _binary_init(self, data):
10288
        self.StatusCode = StatusCode.from_binary(data)
10289
        self.RevisedSamplingInterval = uatype_Double.unpack(data.read(8))[0]
10290
        self.RevisedQueueSize = uatype_UInt32.unpack(data.read(4))[0]
10291
        self.FilterResult = extensionobject_from_binary(data)
10292
10293 1
    def __str__(self):
10294
        return 'MonitoredItemModifyResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
10295
               'RevisedSamplingInterval:' + str(self.RevisedSamplingInterval) + ', ' + \
10296
               'RevisedQueueSize:' + str(self.RevisedQueueSize) + ', ' + \
10297
               'FilterResult:' + str(self.FilterResult) + ')'
10298
10299 1
    __repr__ = __str__
10300
10301
10302 1
class ModifyMonitoredItemsParameters(FrozenClass):
10303
    '''
10304
    :ivar SubscriptionId:
10305
    :vartype SubscriptionId: UInt32
10306
    :ivar TimestampsToReturn:
10307
    :vartype TimestampsToReturn: TimestampsToReturn
10308
    :ivar ItemsToModify:
10309
    :vartype ItemsToModify: MonitoredItemModifyRequest
10310
    '''
10311 1
    def __init__(self, binary=None):
10312
        if binary is not None:
10313
            self._binary_init(binary)
10314
            self._freeze = True
10315
            return
10316
        self.SubscriptionId = 0
10317
        self.TimestampsToReturn = TimestampsToReturn(0)
10318
        self.ItemsToModify = []
10319
        self._freeze = True
10320
10321 1
    def to_binary(self):
10322
        packet = []
10323
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
10324
        packet.append(uatype_UInt32.pack(self.TimestampsToReturn.value))
10325
        packet.append(uatype_Int32.pack(len(self.ItemsToModify)))
10326
        for fieldname in self.ItemsToModify:
10327
            packet.append(fieldname.to_binary())
10328
        return b''.join(packet)
10329
10330 1
    @staticmethod
10331
    def from_binary(data):
10332
        return ModifyMonitoredItemsParameters(data)
10333
10334 1
    def _binary_init(self, data):
10335
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
10336
        self.TimestampsToReturn = TimestampsToReturn(uatype_UInt32.unpack(data.read(4))[0])
10337
        length = uatype_Int32.unpack(data.read(4))[0]
10338
        array = []
10339
        if length != -1:
10340
            for _ in range(0, length):
10341
                array.append(MonitoredItemModifyRequest.from_binary(data))
10342
        self.ItemsToModify = array
10343
10344 1
    def __str__(self):
10345
        return 'ModifyMonitoredItemsParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
10346
               'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', ' + \
10347
               'ItemsToModify:' + str(self.ItemsToModify) + ')'
10348
10349 1
    __repr__ = __str__
10350
10351
10352 1
class ModifyMonitoredItemsRequest(FrozenClass):
10353
    '''
10354
    :ivar TypeId:
10355
    :vartype TypeId: NodeId
10356
    :ivar RequestHeader:
10357
    :vartype RequestHeader: RequestHeader
10358
    :ivar Parameters:
10359
    :vartype Parameters: ModifyMonitoredItemsParameters
10360
    '''
10361 1
    def __init__(self, binary=None):
10362
        if binary is not None:
10363
            self._binary_init(binary)
10364
            self._freeze = True
10365
            return
10366
        self.TypeId = FourByteNodeId(ObjectIds.ModifyMonitoredItemsRequest_Encoding_DefaultBinary)
10367
        self.RequestHeader = RequestHeader()
10368
        self.Parameters = ModifyMonitoredItemsParameters()
10369
        self._freeze = True
10370
10371 1
    def to_binary(self):
10372
        packet = []
10373
        packet.append(self.TypeId.to_binary())
10374
        packet.append(self.RequestHeader.to_binary())
10375
        packet.append(self.Parameters.to_binary())
10376
        return b''.join(packet)
10377
10378 1
    @staticmethod
10379
    def from_binary(data):
10380
        return ModifyMonitoredItemsRequest(data)
10381
10382 1
    def _binary_init(self, data):
10383
        self.TypeId = NodeId.from_binary(data)
10384
        self.RequestHeader = RequestHeader.from_binary(data)
10385
        self.Parameters = ModifyMonitoredItemsParameters.from_binary(data)
10386
10387 1
    def __str__(self):
10388
        return 'ModifyMonitoredItemsRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10389
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
10390
               'Parameters:' + str(self.Parameters) + ')'
10391
10392 1
    __repr__ = __str__
10393
10394
10395 1
class ModifyMonitoredItemsResponse(FrozenClass):
10396
    '''
10397
    :ivar TypeId:
10398
    :vartype TypeId: NodeId
10399
    :ivar ResponseHeader:
10400
    :vartype ResponseHeader: ResponseHeader
10401
    :ivar Results:
10402
    :vartype Results: MonitoredItemModifyResult
10403
    :ivar DiagnosticInfos:
10404
    :vartype DiagnosticInfos: DiagnosticInfo
10405
    '''
10406 1
    def __init__(self, binary=None):
10407
        if binary is not None:
10408
            self._binary_init(binary)
10409
            self._freeze = True
10410
            return
10411
        self.TypeId = FourByteNodeId(ObjectIds.ModifyMonitoredItemsResponse_Encoding_DefaultBinary)
10412
        self.ResponseHeader = ResponseHeader()
10413
        self.Results = []
10414
        self.DiagnosticInfos = []
10415
        self._freeze = True
10416
10417 1
    def to_binary(self):
10418
        packet = []
10419
        packet.append(self.TypeId.to_binary())
10420
        packet.append(self.ResponseHeader.to_binary())
10421
        packet.append(uatype_Int32.pack(len(self.Results)))
10422
        for fieldname in self.Results:
10423
            packet.append(fieldname.to_binary())
10424
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
10425
        for fieldname in self.DiagnosticInfos:
10426
            packet.append(fieldname.to_binary())
10427
        return b''.join(packet)
10428
10429 1
    @staticmethod
10430
    def from_binary(data):
10431
        return ModifyMonitoredItemsResponse(data)
10432
10433 1
    def _binary_init(self, data):
10434
        self.TypeId = NodeId.from_binary(data)
10435
        self.ResponseHeader = ResponseHeader.from_binary(data)
10436
        length = uatype_Int32.unpack(data.read(4))[0]
10437
        array = []
10438
        if length != -1:
10439
            for _ in range(0, length):
10440
                array.append(MonitoredItemModifyResult.from_binary(data))
10441
        self.Results = array
10442
        length = uatype_Int32.unpack(data.read(4))[0]
10443
        array = []
10444
        if length != -1:
10445
            for _ in range(0, length):
10446
                array.append(DiagnosticInfo.from_binary(data))
10447
        self.DiagnosticInfos = array
10448
10449 1
    def __str__(self):
10450
        return 'ModifyMonitoredItemsResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10451
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
10452
               'Results:' + str(self.Results) + ', ' + \
10453
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10454
10455 1
    __repr__ = __str__
10456
10457
10458 1
class SetMonitoringModeParameters(FrozenClass):
10459
    '''
10460
    :ivar SubscriptionId:
10461
    :vartype SubscriptionId: UInt32
10462
    :ivar MonitoringMode:
10463
    :vartype MonitoringMode: MonitoringMode
10464
    :ivar MonitoredItemIds:
10465
    :vartype MonitoredItemIds: UInt32
10466
    '''
10467 1
    def __init__(self, binary=None):
10468
        if binary is not None:
10469
            self._binary_init(binary)
10470
            self._freeze = True
10471
            return
10472
        self.SubscriptionId = 0
10473
        self.MonitoringMode = MonitoringMode(0)
10474
        self.MonitoredItemIds = []
10475
        self._freeze = True
10476
10477 1
    def to_binary(self):
10478
        packet = []
10479
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
10480
        packet.append(uatype_UInt32.pack(self.MonitoringMode.value))
10481
        packet.append(uatype_Int32.pack(len(self.MonitoredItemIds)))
10482
        for fieldname in self.MonitoredItemIds:
10483
            packet.append(uatype_UInt32.pack(fieldname))
10484
        return b''.join(packet)
10485
10486 1
    @staticmethod
10487
    def from_binary(data):
10488
        return SetMonitoringModeParameters(data)
10489
10490 1
    def _binary_init(self, data):
10491
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
10492
        self.MonitoringMode = MonitoringMode(uatype_UInt32.unpack(data.read(4))[0])
10493
        self.MonitoredItemIds = unpack_uatype_array('UInt32', data)
10494
10495 1
    def __str__(self):
10496
        return 'SetMonitoringModeParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
10497
               'MonitoringMode:' + str(self.MonitoringMode) + ', ' + \
10498
               'MonitoredItemIds:' + str(self.MonitoredItemIds) + ')'
10499
10500 1
    __repr__ = __str__
10501
10502
10503 1
class SetMonitoringModeRequest(FrozenClass):
10504
    '''
10505
    :ivar TypeId:
10506
    :vartype TypeId: NodeId
10507
    :ivar RequestHeader:
10508
    :vartype RequestHeader: RequestHeader
10509
    :ivar Parameters:
10510
    :vartype Parameters: SetMonitoringModeParameters
10511
    '''
10512 1
    def __init__(self, binary=None):
10513
        if binary is not None:
10514
            self._binary_init(binary)
10515
            self._freeze = True
10516
            return
10517
        self.TypeId = FourByteNodeId(ObjectIds.SetMonitoringModeRequest_Encoding_DefaultBinary)
10518
        self.RequestHeader = RequestHeader()
10519
        self.Parameters = SetMonitoringModeParameters()
10520
        self._freeze = True
10521
10522 1
    def to_binary(self):
10523
        packet = []
10524
        packet.append(self.TypeId.to_binary())
10525
        packet.append(self.RequestHeader.to_binary())
10526
        packet.append(self.Parameters.to_binary())
10527
        return b''.join(packet)
10528
10529 1
    @staticmethod
10530
    def from_binary(data):
10531
        return SetMonitoringModeRequest(data)
10532
10533 1
    def _binary_init(self, data):
10534
        self.TypeId = NodeId.from_binary(data)
10535
        self.RequestHeader = RequestHeader.from_binary(data)
10536
        self.Parameters = SetMonitoringModeParameters.from_binary(data)
10537
10538 1
    def __str__(self):
10539
        return 'SetMonitoringModeRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10540
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
10541
               'Parameters:' + str(self.Parameters) + ')'
10542
10543 1
    __repr__ = __str__
10544
10545
10546 1
class SetMonitoringModeResult(FrozenClass):
10547
    '''
10548
    :ivar Results:
10549
    :vartype Results: StatusCode
10550
    :ivar DiagnosticInfos:
10551
    :vartype DiagnosticInfos: DiagnosticInfo
10552
    '''
10553 1
    def __init__(self, binary=None):
10554
        if binary is not None:
10555
            self._binary_init(binary)
10556
            self._freeze = True
10557
            return
10558
        self.Results = []
10559
        self.DiagnosticInfos = []
10560
        self._freeze = True
10561
10562 1
    def to_binary(self):
10563
        packet = []
10564
        packet.append(uatype_Int32.pack(len(self.Results)))
10565
        for fieldname in self.Results:
10566
            packet.append(fieldname.to_binary())
10567
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
10568
        for fieldname in self.DiagnosticInfos:
10569
            packet.append(fieldname.to_binary())
10570
        return b''.join(packet)
10571
10572 1
    @staticmethod
10573
    def from_binary(data):
10574
        return SetMonitoringModeResult(data)
10575
10576 1
    def _binary_init(self, data):
10577
        length = uatype_Int32.unpack(data.read(4))[0]
10578
        array = []
10579
        if length != -1:
10580
            for _ in range(0, length):
10581
                array.append(StatusCode.from_binary(data))
10582
        self.Results = array
10583
        length = uatype_Int32.unpack(data.read(4))[0]
10584
        array = []
10585
        if length != -1:
10586
            for _ in range(0, length):
10587
                array.append(DiagnosticInfo.from_binary(data))
10588
        self.DiagnosticInfos = array
10589
10590 1
    def __str__(self):
10591
        return 'SetMonitoringModeResult(' + 'Results:' + str(self.Results) + ', ' + \
10592
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10593
10594 1
    __repr__ = __str__
10595
10596
10597 1
class SetMonitoringModeResponse(FrozenClass):
10598
    '''
10599
    :ivar TypeId:
10600
    :vartype TypeId: NodeId
10601
    :ivar ResponseHeader:
10602
    :vartype ResponseHeader: ResponseHeader
10603
    :ivar Parameters:
10604
    :vartype Parameters: SetMonitoringModeResult
10605
    '''
10606 1
    def __init__(self, binary=None):
10607
        if binary is not None:
10608
            self._binary_init(binary)
10609
            self._freeze = True
10610
            return
10611
        self.TypeId = FourByteNodeId(ObjectIds.SetMonitoringModeResponse_Encoding_DefaultBinary)
10612
        self.ResponseHeader = ResponseHeader()
10613
        self.Parameters = SetMonitoringModeResult()
10614
        self._freeze = True
10615
10616 1
    def to_binary(self):
10617
        packet = []
10618
        packet.append(self.TypeId.to_binary())
10619
        packet.append(self.ResponseHeader.to_binary())
10620
        packet.append(self.Parameters.to_binary())
10621
        return b''.join(packet)
10622
10623 1
    @staticmethod
10624
    def from_binary(data):
10625
        return SetMonitoringModeResponse(data)
10626
10627 1
    def _binary_init(self, data):
10628
        self.TypeId = NodeId.from_binary(data)
10629
        self.ResponseHeader = ResponseHeader.from_binary(data)
10630
        self.Parameters = SetMonitoringModeResult.from_binary(data)
10631
10632 1
    def __str__(self):
10633
        return 'SetMonitoringModeResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10634
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
10635
               'Parameters:' + str(self.Parameters) + ')'
10636
10637 1
    __repr__ = __str__
10638
10639
10640 1
class SetTriggeringParameters(FrozenClass):
10641
    '''
10642
    :ivar SubscriptionId:
10643
    :vartype SubscriptionId: UInt32
10644
    :ivar TriggeringItemId:
10645
    :vartype TriggeringItemId: UInt32
10646
    :ivar LinksToAdd:
10647
    :vartype LinksToAdd: UInt32
10648
    :ivar LinksToRemove:
10649
    :vartype LinksToRemove: UInt32
10650
    '''
10651 1
    def __init__(self, binary=None):
10652
        if binary is not None:
10653
            self._binary_init(binary)
10654
            self._freeze = True
10655
            return
10656
        self.SubscriptionId = 0
10657
        self.TriggeringItemId = 0
10658
        self.LinksToAdd = []
10659
        self.LinksToRemove = []
10660
        self._freeze = True
10661
10662 1
    def to_binary(self):
10663
        packet = []
10664
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
10665
        packet.append(uatype_UInt32.pack(self.TriggeringItemId))
10666
        packet.append(uatype_Int32.pack(len(self.LinksToAdd)))
10667
        for fieldname in self.LinksToAdd:
10668
            packet.append(uatype_UInt32.pack(fieldname))
10669
        packet.append(uatype_Int32.pack(len(self.LinksToRemove)))
10670
        for fieldname in self.LinksToRemove:
10671
            packet.append(uatype_UInt32.pack(fieldname))
10672
        return b''.join(packet)
10673
10674 1
    @staticmethod
10675
    def from_binary(data):
10676
        return SetTriggeringParameters(data)
10677
10678 1
    def _binary_init(self, data):
10679
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
10680
        self.TriggeringItemId = uatype_UInt32.unpack(data.read(4))[0]
10681
        self.LinksToAdd = unpack_uatype_array('UInt32', data)
10682
        self.LinksToRemove = unpack_uatype_array('UInt32', data)
10683
10684 1
    def __str__(self):
10685
        return 'SetTriggeringParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
10686
               'TriggeringItemId:' + str(self.TriggeringItemId) + ', ' + \
10687
               'LinksToAdd:' + str(self.LinksToAdd) + ', ' + \
10688
               'LinksToRemove:' + str(self.LinksToRemove) + ')'
10689
10690 1
    __repr__ = __str__
10691
10692
10693 1
class SetTriggeringRequest(FrozenClass):
10694
    '''
10695
    :ivar TypeId:
10696
    :vartype TypeId: NodeId
10697
    :ivar RequestHeader:
10698
    :vartype RequestHeader: RequestHeader
10699
    :ivar Parameters:
10700
    :vartype Parameters: SetTriggeringParameters
10701
    '''
10702 1
    def __init__(self, binary=None):
10703
        if binary is not None:
10704
            self._binary_init(binary)
10705
            self._freeze = True
10706
            return
10707
        self.TypeId = FourByteNodeId(ObjectIds.SetTriggeringRequest_Encoding_DefaultBinary)
10708
        self.RequestHeader = RequestHeader()
10709
        self.Parameters = SetTriggeringParameters()
10710
        self._freeze = True
10711
10712 1
    def to_binary(self):
10713
        packet = []
10714
        packet.append(self.TypeId.to_binary())
10715
        packet.append(self.RequestHeader.to_binary())
10716
        packet.append(self.Parameters.to_binary())
10717
        return b''.join(packet)
10718
10719 1
    @staticmethod
10720
    def from_binary(data):
10721
        return SetTriggeringRequest(data)
10722
10723 1
    def _binary_init(self, data):
10724
        self.TypeId = NodeId.from_binary(data)
10725
        self.RequestHeader = RequestHeader.from_binary(data)
10726
        self.Parameters = SetTriggeringParameters.from_binary(data)
10727
10728 1
    def __str__(self):
10729
        return 'SetTriggeringRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10730
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
10731
               'Parameters:' + str(self.Parameters) + ')'
10732
10733 1
    __repr__ = __str__
10734
10735
10736 1
class SetTriggeringResult(FrozenClass):
10737
    '''
10738
    :ivar AddResults:
10739
    :vartype AddResults: StatusCode
10740
    :ivar AddDiagnosticInfos:
10741
    :vartype AddDiagnosticInfos: DiagnosticInfo
10742
    :ivar RemoveResults:
10743
    :vartype RemoveResults: StatusCode
10744
    :ivar RemoveDiagnosticInfos:
10745
    :vartype RemoveDiagnosticInfos: DiagnosticInfo
10746
    '''
10747 1
    def __init__(self, binary=None):
10748
        if binary is not None:
10749
            self._binary_init(binary)
10750
            self._freeze = True
10751
            return
10752
        self.AddResults = []
10753
        self.AddDiagnosticInfos = []
10754
        self.RemoveResults = []
10755
        self.RemoveDiagnosticInfos = []
10756
        self._freeze = True
10757
10758 1
    def to_binary(self):
10759
        packet = []
10760
        packet.append(uatype_Int32.pack(len(self.AddResults)))
10761
        for fieldname in self.AddResults:
10762
            packet.append(fieldname.to_binary())
10763
        packet.append(uatype_Int32.pack(len(self.AddDiagnosticInfos)))
10764
        for fieldname in self.AddDiagnosticInfos:
10765
            packet.append(fieldname.to_binary())
10766
        packet.append(uatype_Int32.pack(len(self.RemoveResults)))
10767
        for fieldname in self.RemoveResults:
10768
            packet.append(fieldname.to_binary())
10769
        packet.append(uatype_Int32.pack(len(self.RemoveDiagnosticInfos)))
10770
        for fieldname in self.RemoveDiagnosticInfos:
10771
            packet.append(fieldname.to_binary())
10772
        return b''.join(packet)
10773
10774 1
    @staticmethod
10775
    def from_binary(data):
10776
        return SetTriggeringResult(data)
10777
10778 1
    def _binary_init(self, data):
10779
        length = uatype_Int32.unpack(data.read(4))[0]
10780
        array = []
10781
        if length != -1:
10782
            for _ in range(0, length):
10783
                array.append(StatusCode.from_binary(data))
10784
        self.AddResults = array
10785
        length = uatype_Int32.unpack(data.read(4))[0]
10786
        array = []
10787
        if length != -1:
10788
            for _ in range(0, length):
10789
                array.append(DiagnosticInfo.from_binary(data))
10790
        self.AddDiagnosticInfos = array
10791
        length = uatype_Int32.unpack(data.read(4))[0]
10792
        array = []
10793
        if length != -1:
10794
            for _ in range(0, length):
10795
                array.append(StatusCode.from_binary(data))
10796
        self.RemoveResults = array
10797
        length = uatype_Int32.unpack(data.read(4))[0]
10798
        array = []
10799
        if length != -1:
10800
            for _ in range(0, length):
10801
                array.append(DiagnosticInfo.from_binary(data))
10802
        self.RemoveDiagnosticInfos = array
10803
10804 1
    def __str__(self):
10805
        return 'SetTriggeringResult(' + 'AddResults:' + str(self.AddResults) + ', ' + \
10806
               'AddDiagnosticInfos:' + str(self.AddDiagnosticInfos) + ', ' + \
10807
               'RemoveResults:' + str(self.RemoveResults) + ', ' + \
10808
               'RemoveDiagnosticInfos:' + str(self.RemoveDiagnosticInfos) + ')'
10809
10810 1
    __repr__ = __str__
10811
10812
10813 1
class SetTriggeringResponse(FrozenClass):
10814
    '''
10815
    :ivar TypeId:
10816
    :vartype TypeId: NodeId
10817
    :ivar ResponseHeader:
10818
    :vartype ResponseHeader: ResponseHeader
10819
    :ivar Parameters:
10820
    :vartype Parameters: SetTriggeringResult
10821
    '''
10822 1
    def __init__(self, binary=None):
10823
        if binary is not None:
10824
            self._binary_init(binary)
10825
            self._freeze = True
10826
            return
10827
        self.TypeId = FourByteNodeId(ObjectIds.SetTriggeringResponse_Encoding_DefaultBinary)
10828
        self.ResponseHeader = ResponseHeader()
10829
        self.Parameters = SetTriggeringResult()
10830
        self._freeze = True
10831
10832 1
    def to_binary(self):
10833
        packet = []
10834
        packet.append(self.TypeId.to_binary())
10835
        packet.append(self.ResponseHeader.to_binary())
10836
        packet.append(self.Parameters.to_binary())
10837
        return b''.join(packet)
10838
10839 1
    @staticmethod
10840
    def from_binary(data):
10841
        return SetTriggeringResponse(data)
10842
10843 1
    def _binary_init(self, data):
10844
        self.TypeId = NodeId.from_binary(data)
10845
        self.ResponseHeader = ResponseHeader.from_binary(data)
10846
        self.Parameters = SetTriggeringResult.from_binary(data)
10847
10848 1
    def __str__(self):
10849
        return 'SetTriggeringResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10850
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
10851
               'Parameters:' + str(self.Parameters) + ')'
10852
10853 1
    __repr__ = __str__
10854
10855
10856 1
class DeleteMonitoredItemsParameters(FrozenClass):
10857
    '''
10858
    :ivar SubscriptionId:
10859
    :vartype SubscriptionId: UInt32
10860
    :ivar MonitoredItemIds:
10861
    :vartype MonitoredItemIds: UInt32
10862
    '''
10863 1
    def __init__(self, binary=None):
10864 1
        if binary is not None:
10865 1
            self._binary_init(binary)
10866 1
            self._freeze = True
10867 1
            return
10868 1
        self.SubscriptionId = 0
10869 1
        self.MonitoredItemIds = []
10870 1
        self._freeze = True
10871
10872 1
    def to_binary(self):
10873 1
        packet = []
10874 1
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
10875 1
        packet.append(uatype_Int32.pack(len(self.MonitoredItemIds)))
10876 1
        for fieldname in self.MonitoredItemIds:
10877 1
            packet.append(uatype_UInt32.pack(fieldname))
10878 1
        return b''.join(packet)
10879
10880 1
    @staticmethod
10881
    def from_binary(data):
10882 1
        return DeleteMonitoredItemsParameters(data)
10883
10884 1
    def _binary_init(self, data):
10885 1
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
10886 1
        self.MonitoredItemIds = unpack_uatype_array('UInt32', data)
10887
10888 1
    def __str__(self):
10889
        return 'DeleteMonitoredItemsParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
10890
               'MonitoredItemIds:' + str(self.MonitoredItemIds) + ')'
10891
10892 1
    __repr__ = __str__
10893
10894
10895 1
class DeleteMonitoredItemsRequest(FrozenClass):
10896
    '''
10897
    :ivar TypeId:
10898
    :vartype TypeId: NodeId
10899
    :ivar RequestHeader:
10900
    :vartype RequestHeader: RequestHeader
10901
    :ivar Parameters:
10902
    :vartype Parameters: DeleteMonitoredItemsParameters
10903
    '''
10904 1
    def __init__(self, binary=None):
10905 1
        if binary is not None:
10906
            self._binary_init(binary)
10907
            self._freeze = True
10908
            return
10909 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteMonitoredItemsRequest_Encoding_DefaultBinary)
10910 1
        self.RequestHeader = RequestHeader()
10911 1
        self.Parameters = DeleteMonitoredItemsParameters()
10912 1
        self._freeze = True
10913
10914 1
    def to_binary(self):
10915 1
        packet = []
10916 1
        packet.append(self.TypeId.to_binary())
10917 1
        packet.append(self.RequestHeader.to_binary())
10918 1
        packet.append(self.Parameters.to_binary())
10919 1
        return b''.join(packet)
10920
10921 1
    @staticmethod
10922
    def from_binary(data):
10923
        return DeleteMonitoredItemsRequest(data)
10924
10925 1
    def _binary_init(self, data):
10926
        self.TypeId = NodeId.from_binary(data)
10927
        self.RequestHeader = RequestHeader.from_binary(data)
10928
        self.Parameters = DeleteMonitoredItemsParameters.from_binary(data)
10929
10930 1
    def __str__(self):
10931
        return 'DeleteMonitoredItemsRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10932
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
10933
               'Parameters:' + str(self.Parameters) + ')'
10934
10935 1
    __repr__ = __str__
10936
10937
10938 1
class DeleteMonitoredItemsResponse(FrozenClass):
10939
    '''
10940
    :ivar TypeId:
10941
    :vartype TypeId: NodeId
10942
    :ivar ResponseHeader:
10943
    :vartype ResponseHeader: ResponseHeader
10944
    :ivar Results:
10945
    :vartype Results: StatusCode
10946
    :ivar DiagnosticInfos:
10947
    :vartype DiagnosticInfos: DiagnosticInfo
10948
    '''
10949 1
    def __init__(self, binary=None):
10950 1
        if binary is not None:
10951 1
            self._binary_init(binary)
10952 1
            self._freeze = True
10953 1
            return
10954 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteMonitoredItemsResponse_Encoding_DefaultBinary)
10955 1
        self.ResponseHeader = ResponseHeader()
10956 1
        self.Results = []
10957 1
        self.DiagnosticInfos = []
10958 1
        self._freeze = True
10959
10960 1
    def to_binary(self):
10961 1
        packet = []
10962 1
        packet.append(self.TypeId.to_binary())
10963 1
        packet.append(self.ResponseHeader.to_binary())
10964 1
        packet.append(uatype_Int32.pack(len(self.Results)))
10965 1
        for fieldname in self.Results:
10966 1
            packet.append(fieldname.to_binary())
10967 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
10968 1
        for fieldname in self.DiagnosticInfos:
10969
            packet.append(fieldname.to_binary())
10970 1
        return b''.join(packet)
10971
10972 1
    @staticmethod
10973
    def from_binary(data):
10974 1
        return DeleteMonitoredItemsResponse(data)
10975
10976 1
    def _binary_init(self, data):
10977 1
        self.TypeId = NodeId.from_binary(data)
10978 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
10979 1
        length = uatype_Int32.unpack(data.read(4))[0]
10980 1
        array = []
10981 1
        if length != -1:
10982 1
            for _ in range(0, length):
10983 1
                array.append(StatusCode.from_binary(data))
10984 1
        self.Results = array
10985 1
        length = uatype_Int32.unpack(data.read(4))[0]
10986 1
        array = []
10987 1
        if length != -1:
10988 1
            for _ in range(0, length):
10989
                array.append(DiagnosticInfo.from_binary(data))
10990 1
        self.DiagnosticInfos = array
10991
10992 1
    def __str__(self):
10993
        return 'DeleteMonitoredItemsResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
10994
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
10995
               'Results:' + str(self.Results) + ', ' + \
10996
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10997
10998 1
    __repr__ = __str__
10999
11000
11001 1
class CreateSubscriptionParameters(FrozenClass):
11002
    '''
11003
    :ivar RequestedPublishingInterval:
11004
    :vartype RequestedPublishingInterval: Double
11005
    :ivar RequestedLifetimeCount:
11006
    :vartype RequestedLifetimeCount: UInt32
11007
    :ivar RequestedMaxKeepAliveCount:
11008
    :vartype RequestedMaxKeepAliveCount: UInt32
11009
    :ivar MaxNotificationsPerPublish:
11010
    :vartype MaxNotificationsPerPublish: UInt32
11011
    :ivar PublishingEnabled:
11012
    :vartype PublishingEnabled: Boolean
11013
    :ivar Priority:
11014
    :vartype Priority: Byte
11015
    '''
11016 1
    def __init__(self, binary=None):
11017 1
        if binary is not None:
11018 1
            self._binary_init(binary)
11019 1
            self._freeze = True
11020 1
            return
11021 1
        self.RequestedPublishingInterval = 0
11022 1
        self.RequestedLifetimeCount = 0
11023 1
        self.RequestedMaxKeepAliveCount = 0
11024 1
        self.MaxNotificationsPerPublish = 0
11025 1
        self.PublishingEnabled = True
11026 1
        self.Priority = 0
11027 1
        self._freeze = True
11028
11029 1
    def to_binary(self):
11030 1
        packet = []
11031 1
        packet.append(uatype_Double.pack(self.RequestedPublishingInterval))
11032 1
        packet.append(uatype_UInt32.pack(self.RequestedLifetimeCount))
11033 1
        packet.append(uatype_UInt32.pack(self.RequestedMaxKeepAliveCount))
11034 1
        packet.append(uatype_UInt32.pack(self.MaxNotificationsPerPublish))
11035 1
        packet.append(uatype_Boolean.pack(self.PublishingEnabled))
11036 1
        packet.append(uatype_Byte.pack(self.Priority))
11037 1
        return b''.join(packet)
11038
11039 1
    @staticmethod
11040
    def from_binary(data):
11041 1
        return CreateSubscriptionParameters(data)
11042
11043 1
    def _binary_init(self, data):
11044 1
        self.RequestedPublishingInterval = uatype_Double.unpack(data.read(8))[0]
11045 1
        self.RequestedLifetimeCount = uatype_UInt32.unpack(data.read(4))[0]
11046 1
        self.RequestedMaxKeepAliveCount = uatype_UInt32.unpack(data.read(4))[0]
11047 1
        self.MaxNotificationsPerPublish = uatype_UInt32.unpack(data.read(4))[0]
11048 1
        self.PublishingEnabled = uatype_Boolean.unpack(data.read(1))[0]
11049 1
        self.Priority = uatype_Byte.unpack(data.read(1))[0]
11050
11051 1
    def __str__(self):
11052
        return 'CreateSubscriptionParameters(' + 'RequestedPublishingInterval:' + str(self.RequestedPublishingInterval) + ', ' + \
11053
               'RequestedLifetimeCount:' + str(self.RequestedLifetimeCount) + ', ' + \
11054
               'RequestedMaxKeepAliveCount:' + str(self.RequestedMaxKeepAliveCount) + ', ' + \
11055
               'MaxNotificationsPerPublish:' + str(self.MaxNotificationsPerPublish) + ', ' + \
11056
               'PublishingEnabled:' + str(self.PublishingEnabled) + ', ' + \
11057
               'Priority:' + str(self.Priority) + ')'
11058
11059 1
    __repr__ = __str__
11060
11061
11062 1
class CreateSubscriptionRequest(FrozenClass):
11063
    '''
11064
    :ivar TypeId:
11065
    :vartype TypeId: NodeId
11066
    :ivar RequestHeader:
11067
    :vartype RequestHeader: RequestHeader
11068
    :ivar Parameters:
11069
    :vartype Parameters: CreateSubscriptionParameters
11070
    '''
11071 1
    def __init__(self, binary=None):
11072 1
        if binary is not None:
11073
            self._binary_init(binary)
11074
            self._freeze = True
11075
            return
11076 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSubscriptionRequest_Encoding_DefaultBinary)
11077 1
        self.RequestHeader = RequestHeader()
11078 1
        self.Parameters = CreateSubscriptionParameters()
11079 1
        self._freeze = True
11080
11081 1
    def to_binary(self):
11082 1
        packet = []
11083 1
        packet.append(self.TypeId.to_binary())
11084 1
        packet.append(self.RequestHeader.to_binary())
11085 1
        packet.append(self.Parameters.to_binary())
11086 1
        return b''.join(packet)
11087
11088 1
    @staticmethod
11089
    def from_binary(data):
11090
        return CreateSubscriptionRequest(data)
11091
11092 1
    def _binary_init(self, data):
11093
        self.TypeId = NodeId.from_binary(data)
11094
        self.RequestHeader = RequestHeader.from_binary(data)
11095
        self.Parameters = CreateSubscriptionParameters.from_binary(data)
11096
11097 1
    def __str__(self):
11098
        return 'CreateSubscriptionRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
11099
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
11100
               'Parameters:' + str(self.Parameters) + ')'
11101
11102 1
    __repr__ = __str__
11103
11104
11105 1
class CreateSubscriptionResult(FrozenClass):
11106
    '''
11107
    :ivar SubscriptionId:
11108
    :vartype SubscriptionId: UInt32
11109
    :ivar RevisedPublishingInterval:
11110
    :vartype RevisedPublishingInterval: Double
11111
    :ivar RevisedLifetimeCount:
11112
    :vartype RevisedLifetimeCount: UInt32
11113
    :ivar RevisedMaxKeepAliveCount:
11114
    :vartype RevisedMaxKeepAliveCount: UInt32
11115
    '''
11116 1
    def __init__(self, binary=None):
11117 1
        if binary is not None:
11118 1
            self._binary_init(binary)
11119 1
            self._freeze = True
11120 1
            return
11121 1
        self.SubscriptionId = 0
11122 1
        self.RevisedPublishingInterval = 0
11123 1
        self.RevisedLifetimeCount = 0
11124 1
        self.RevisedMaxKeepAliveCount = 0
11125 1
        self._freeze = True
11126
11127 1
    def to_binary(self):
11128 1
        packet = []
11129 1
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
11130 1
        packet.append(uatype_Double.pack(self.RevisedPublishingInterval))
11131 1
        packet.append(uatype_UInt32.pack(self.RevisedLifetimeCount))
11132 1
        packet.append(uatype_UInt32.pack(self.RevisedMaxKeepAliveCount))
11133 1
        return b''.join(packet)
11134
11135 1
    @staticmethod
11136
    def from_binary(data):
11137 1
        return CreateSubscriptionResult(data)
11138
11139 1
    def _binary_init(self, data):
11140 1
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
11141 1
        self.RevisedPublishingInterval = uatype_Double.unpack(data.read(8))[0]
11142 1
        self.RevisedLifetimeCount = uatype_UInt32.unpack(data.read(4))[0]
11143 1
        self.RevisedMaxKeepAliveCount = uatype_UInt32.unpack(data.read(4))[0]
11144
11145 1
    def __str__(self):
11146
        return 'CreateSubscriptionResult(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
11147
               'RevisedPublishingInterval:' + str(self.RevisedPublishingInterval) + ', ' + \
11148
               'RevisedLifetimeCount:' + str(self.RevisedLifetimeCount) + ', ' + \
11149
               'RevisedMaxKeepAliveCount:' + str(self.RevisedMaxKeepAliveCount) + ')'
11150
11151 1
    __repr__ = __str__
11152
11153
11154 1
class CreateSubscriptionResponse(FrozenClass):
11155
    '''
11156
    :ivar TypeId:
11157
    :vartype TypeId: NodeId
11158
    :ivar ResponseHeader:
11159
    :vartype ResponseHeader: ResponseHeader
11160
    :ivar Parameters:
11161
    :vartype Parameters: CreateSubscriptionResult
11162
    '''
11163 1
    def __init__(self, binary=None):
11164 1
        if binary is not None:
11165 1
            self._binary_init(binary)
11166 1
            self._freeze = True
11167 1
            return
11168 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSubscriptionResponse_Encoding_DefaultBinary)
11169 1
        self.ResponseHeader = ResponseHeader()
11170 1
        self.Parameters = CreateSubscriptionResult()
11171 1
        self._freeze = True
11172
11173 1
    def to_binary(self):
11174 1
        packet = []
11175 1
        packet.append(self.TypeId.to_binary())
11176 1
        packet.append(self.ResponseHeader.to_binary())
11177 1
        packet.append(self.Parameters.to_binary())
11178 1
        return b''.join(packet)
11179
11180 1
    @staticmethod
11181
    def from_binary(data):
11182 1
        return CreateSubscriptionResponse(data)
11183
11184 1
    def _binary_init(self, data):
11185 1
        self.TypeId = NodeId.from_binary(data)
11186 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
11187 1
        self.Parameters = CreateSubscriptionResult.from_binary(data)
11188
11189 1
    def __str__(self):
11190
        return 'CreateSubscriptionResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
11191
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
11192
               'Parameters:' + str(self.Parameters) + ')'
11193
11194 1
    __repr__ = __str__
11195
11196
11197 1
class ModifySubscriptionParameters(FrozenClass):
11198
    '''
11199
    :ivar SubscriptionId:
11200
    :vartype SubscriptionId: UInt32
11201
    :ivar RequestedPublishingInterval:
11202
    :vartype RequestedPublishingInterval: Double
11203
    :ivar RequestedLifetimeCount:
11204
    :vartype RequestedLifetimeCount: UInt32
11205
    :ivar RequestedMaxKeepAliveCount:
11206
    :vartype RequestedMaxKeepAliveCount: UInt32
11207
    :ivar MaxNotificationsPerPublish:
11208
    :vartype MaxNotificationsPerPublish: UInt32
11209
    :ivar Priority:
11210
    :vartype Priority: Byte
11211
    '''
11212 1
    def __init__(self, binary=None):
11213
        if binary is not None:
11214
            self._binary_init(binary)
11215
            self._freeze = True
11216
            return
11217
        self.SubscriptionId = 0
11218
        self.RequestedPublishingInterval = 0
11219
        self.RequestedLifetimeCount = 0
11220
        self.RequestedMaxKeepAliveCount = 0
11221
        self.MaxNotificationsPerPublish = 0
11222
        self.Priority = 0
11223
        self._freeze = True
11224
11225 1
    def to_binary(self):
11226
        packet = []
11227
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
11228
        packet.append(uatype_Double.pack(self.RequestedPublishingInterval))
11229
        packet.append(uatype_UInt32.pack(self.RequestedLifetimeCount))
11230
        packet.append(uatype_UInt32.pack(self.RequestedMaxKeepAliveCount))
11231
        packet.append(uatype_UInt32.pack(self.MaxNotificationsPerPublish))
11232
        packet.append(uatype_Byte.pack(self.Priority))
11233
        return b''.join(packet)
11234
11235 1
    @staticmethod
11236
    def from_binary(data):
11237
        return ModifySubscriptionParameters(data)
11238
11239 1
    def _binary_init(self, data):
11240
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
11241
        self.RequestedPublishingInterval = uatype_Double.unpack(data.read(8))[0]
11242
        self.RequestedLifetimeCount = uatype_UInt32.unpack(data.read(4))[0]
11243
        self.RequestedMaxKeepAliveCount = uatype_UInt32.unpack(data.read(4))[0]
11244
        self.MaxNotificationsPerPublish = uatype_UInt32.unpack(data.read(4))[0]
11245
        self.Priority = uatype_Byte.unpack(data.read(1))[0]
11246
11247 1
    def __str__(self):
11248
        return 'ModifySubscriptionParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
11249
               'RequestedPublishingInterval:' + str(self.RequestedPublishingInterval) + ', ' + \
11250
               'RequestedLifetimeCount:' + str(self.RequestedLifetimeCount) + ', ' + \
11251
               'RequestedMaxKeepAliveCount:' + str(self.RequestedMaxKeepAliveCount) + ', ' + \
11252
               'MaxNotificationsPerPublish:' + str(self.MaxNotificationsPerPublish) + ', ' + \
11253
               'Priority:' + str(self.Priority) + ')'
11254
11255 1
    __repr__ = __str__
11256
11257
11258 1
class ModifySubscriptionRequest(FrozenClass):
11259
    '''
11260
    :ivar TypeId:
11261
    :vartype TypeId: NodeId
11262
    :ivar RequestHeader:
11263
    :vartype RequestHeader: RequestHeader
11264
    :ivar Parameters:
11265
    :vartype Parameters: ModifySubscriptionParameters
11266
    '''
11267 1
    def __init__(self, binary=None):
11268
        if binary is not None:
11269
            self._binary_init(binary)
11270
            self._freeze = True
11271
            return
11272
        self.TypeId = FourByteNodeId(ObjectIds.ModifySubscriptionRequest_Encoding_DefaultBinary)
11273
        self.RequestHeader = RequestHeader()
11274
        self.Parameters = ModifySubscriptionParameters()
11275
        self._freeze = True
11276
11277 1
    def to_binary(self):
11278
        packet = []
11279
        packet.append(self.TypeId.to_binary())
11280
        packet.append(self.RequestHeader.to_binary())
11281
        packet.append(self.Parameters.to_binary())
11282
        return b''.join(packet)
11283
11284 1
    @staticmethod
11285
    def from_binary(data):
11286
        return ModifySubscriptionRequest(data)
11287
11288 1
    def _binary_init(self, data):
11289
        self.TypeId = NodeId.from_binary(data)
11290
        self.RequestHeader = RequestHeader.from_binary(data)
11291
        self.Parameters = ModifySubscriptionParameters.from_binary(data)
11292
11293 1
    def __str__(self):
11294
        return 'ModifySubscriptionRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
11295
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
11296
               'Parameters:' + str(self.Parameters) + ')'
11297
11298 1
    __repr__ = __str__
11299
11300
11301 1
class ModifySubscriptionResult(FrozenClass):
11302
    '''
11303
    :ivar RevisedPublishingInterval:
11304
    :vartype RevisedPublishingInterval: Double
11305
    :ivar RevisedLifetimeCount:
11306
    :vartype RevisedLifetimeCount: UInt32
11307
    :ivar RevisedMaxKeepAliveCount:
11308
    :vartype RevisedMaxKeepAliveCount: UInt32
11309
    '''
11310 1
    def __init__(self, binary=None):
11311
        if binary is not None:
11312
            self._binary_init(binary)
11313
            self._freeze = True
11314
            return
11315
        self.RevisedPublishingInterval = 0
11316
        self.RevisedLifetimeCount = 0
11317
        self.RevisedMaxKeepAliveCount = 0
11318
        self._freeze = True
11319
11320 1
    def to_binary(self):
11321
        packet = []
11322
        packet.append(uatype_Double.pack(self.RevisedPublishingInterval))
11323
        packet.append(uatype_UInt32.pack(self.RevisedLifetimeCount))
11324
        packet.append(uatype_UInt32.pack(self.RevisedMaxKeepAliveCount))
11325
        return b''.join(packet)
11326
11327 1
    @staticmethod
11328
    def from_binary(data):
11329
        return ModifySubscriptionResult(data)
11330
11331 1
    def _binary_init(self, data):
11332
        self.RevisedPublishingInterval = uatype_Double.unpack(data.read(8))[0]
11333
        self.RevisedLifetimeCount = uatype_UInt32.unpack(data.read(4))[0]
11334
        self.RevisedMaxKeepAliveCount = uatype_UInt32.unpack(data.read(4))[0]
11335
11336 1
    def __str__(self):
11337
        return 'ModifySubscriptionResult(' + 'RevisedPublishingInterval:' + str(self.RevisedPublishingInterval) + ', ' + \
11338
               'RevisedLifetimeCount:' + str(self.RevisedLifetimeCount) + ', ' + \
11339
               'RevisedMaxKeepAliveCount:' + str(self.RevisedMaxKeepAliveCount) + ')'
11340
11341 1
    __repr__ = __str__
11342
11343
11344 1
class ModifySubscriptionResponse(FrozenClass):
11345
    '''
11346
    :ivar TypeId:
11347
    :vartype TypeId: NodeId
11348
    :ivar ResponseHeader:
11349
    :vartype ResponseHeader: ResponseHeader
11350
    :ivar Parameters:
11351
    :vartype Parameters: ModifySubscriptionResult
11352
    '''
11353 1
    def __init__(self, binary=None):
11354
        if binary is not None:
11355
            self._binary_init(binary)
11356
            self._freeze = True
11357
            return
11358
        self.TypeId = FourByteNodeId(ObjectIds.ModifySubscriptionResponse_Encoding_DefaultBinary)
11359
        self.ResponseHeader = ResponseHeader()
11360
        self.Parameters = ModifySubscriptionResult()
11361
        self._freeze = True
11362
11363 1
    def to_binary(self):
11364
        packet = []
11365
        packet.append(self.TypeId.to_binary())
11366
        packet.append(self.ResponseHeader.to_binary())
11367
        packet.append(self.Parameters.to_binary())
11368
        return b''.join(packet)
11369
11370 1
    @staticmethod
11371
    def from_binary(data):
11372
        return ModifySubscriptionResponse(data)
11373
11374 1
    def _binary_init(self, data):
11375
        self.TypeId = NodeId.from_binary(data)
11376
        self.ResponseHeader = ResponseHeader.from_binary(data)
11377
        self.Parameters = ModifySubscriptionResult.from_binary(data)
11378
11379 1
    def __str__(self):
11380
        return 'ModifySubscriptionResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
11381
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
11382
               'Parameters:' + str(self.Parameters) + ')'
11383
11384 1
    __repr__ = __str__
11385
11386
11387 1
class SetPublishingModeParameters(FrozenClass):
11388
    '''
11389
    :ivar PublishingEnabled:
11390
    :vartype PublishingEnabled: Boolean
11391
    :ivar SubscriptionIds:
11392
    :vartype SubscriptionIds: UInt32
11393
    '''
11394 1
    def __init__(self, binary=None):
11395
        if binary is not None:
11396
            self._binary_init(binary)
11397
            self._freeze = True
11398
            return
11399
        self.PublishingEnabled = True
11400
        self.SubscriptionIds = []
11401
        self._freeze = True
11402
11403 1
    def to_binary(self):
11404
        packet = []
11405
        packet.append(uatype_Boolean.pack(self.PublishingEnabled))
11406
        packet.append(uatype_Int32.pack(len(self.SubscriptionIds)))
11407
        for fieldname in self.SubscriptionIds:
11408
            packet.append(uatype_UInt32.pack(fieldname))
11409
        return b''.join(packet)
11410
11411 1
    @staticmethod
11412
    def from_binary(data):
11413
        return SetPublishingModeParameters(data)
11414
11415 1
    def _binary_init(self, data):
11416
        self.PublishingEnabled = uatype_Boolean.unpack(data.read(1))[0]
11417
        self.SubscriptionIds = unpack_uatype_array('UInt32', data)
11418
11419 1
    def __str__(self):
11420
        return 'SetPublishingModeParameters(' + 'PublishingEnabled:' + str(self.PublishingEnabled) + ', ' + \
11421
               'SubscriptionIds:' + str(self.SubscriptionIds) + ')'
11422
11423 1
    __repr__ = __str__
11424
11425
11426 1
class SetPublishingModeRequest(FrozenClass):
11427
    '''
11428
    :ivar TypeId:
11429
    :vartype TypeId: NodeId
11430
    :ivar RequestHeader:
11431
    :vartype RequestHeader: RequestHeader
11432
    :ivar Parameters:
11433
    :vartype Parameters: SetPublishingModeParameters
11434
    '''
11435 1
    def __init__(self, binary=None):
11436
        if binary is not None:
11437
            self._binary_init(binary)
11438
            self._freeze = True
11439
            return
11440
        self.TypeId = FourByteNodeId(ObjectIds.SetPublishingModeRequest_Encoding_DefaultBinary)
11441
        self.RequestHeader = RequestHeader()
11442
        self.Parameters = SetPublishingModeParameters()
11443
        self._freeze = True
11444
11445 1
    def to_binary(self):
11446
        packet = []
11447
        packet.append(self.TypeId.to_binary())
11448
        packet.append(self.RequestHeader.to_binary())
11449
        packet.append(self.Parameters.to_binary())
11450
        return b''.join(packet)
11451
11452 1
    @staticmethod
11453
    def from_binary(data):
11454
        return SetPublishingModeRequest(data)
11455
11456 1
    def _binary_init(self, data):
11457
        self.TypeId = NodeId.from_binary(data)
11458
        self.RequestHeader = RequestHeader.from_binary(data)
11459
        self.Parameters = SetPublishingModeParameters.from_binary(data)
11460
11461 1
    def __str__(self):
11462
        return 'SetPublishingModeRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
11463
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
11464
               'Parameters:' + str(self.Parameters) + ')'
11465
11466 1
    __repr__ = __str__
11467
11468
11469 1
class SetPublishingModeResult(FrozenClass):
11470
    '''
11471
    :ivar Results:
11472
    :vartype Results: StatusCode
11473
    :ivar DiagnosticInfos:
11474
    :vartype DiagnosticInfos: DiagnosticInfo
11475
    '''
11476 1
    def __init__(self, binary=None):
11477
        if binary is not None:
11478
            self._binary_init(binary)
11479
            self._freeze = True
11480
            return
11481
        self.Results = []
11482
        self.DiagnosticInfos = []
11483
        self._freeze = True
11484
11485 1
    def to_binary(self):
11486
        packet = []
11487
        packet.append(uatype_Int32.pack(len(self.Results)))
11488
        for fieldname in self.Results:
11489
            packet.append(fieldname.to_binary())
11490
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
11491
        for fieldname in self.DiagnosticInfos:
11492
            packet.append(fieldname.to_binary())
11493
        return b''.join(packet)
11494
11495 1
    @staticmethod
11496
    def from_binary(data):
11497
        return SetPublishingModeResult(data)
11498
11499 1
    def _binary_init(self, data):
11500
        length = uatype_Int32.unpack(data.read(4))[0]
11501
        array = []
11502
        if length != -1:
11503
            for _ in range(0, length):
11504
                array.append(StatusCode.from_binary(data))
11505
        self.Results = array
11506
        length = uatype_Int32.unpack(data.read(4))[0]
11507
        array = []
11508
        if length != -1:
11509
            for _ in range(0, length):
11510
                array.append(DiagnosticInfo.from_binary(data))
11511
        self.DiagnosticInfos = array
11512
11513 1
    def __str__(self):
11514
        return 'SetPublishingModeResult(' + 'Results:' + str(self.Results) + ', ' + \
11515
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
11516
11517 1
    __repr__ = __str__
11518
11519
11520 1
class SetPublishingModeResponse(FrozenClass):
11521
    '''
11522
    :ivar TypeId:
11523
    :vartype TypeId: NodeId
11524
    :ivar ResponseHeader:
11525
    :vartype ResponseHeader: ResponseHeader
11526
    :ivar Parameters:
11527
    :vartype Parameters: SetPublishingModeResult
11528
    '''
11529 1
    def __init__(self, binary=None):
11530
        if binary is not None:
11531
            self._binary_init(binary)
11532
            self._freeze = True
11533
            return
11534
        self.TypeId = FourByteNodeId(ObjectIds.SetPublishingModeResponse_Encoding_DefaultBinary)
11535
        self.ResponseHeader = ResponseHeader()
11536
        self.Parameters = SetPublishingModeResult()
11537
        self._freeze = True
11538
11539 1
    def to_binary(self):
11540
        packet = []
11541
        packet.append(self.TypeId.to_binary())
11542
        packet.append(self.ResponseHeader.to_binary())
11543
        packet.append(self.Parameters.to_binary())
11544
        return b''.join(packet)
11545
11546 1
    @staticmethod
11547
    def from_binary(data):
11548
        return SetPublishingModeResponse(data)
11549
11550 1
    def _binary_init(self, data):
11551
        self.TypeId = NodeId.from_binary(data)
11552
        self.ResponseHeader = ResponseHeader.from_binary(data)
11553
        self.Parameters = SetPublishingModeResult.from_binary(data)
11554
11555 1
    def __str__(self):
11556
        return 'SetPublishingModeResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
11557
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
11558
               'Parameters:' + str(self.Parameters) + ')'
11559
11560 1
    __repr__ = __str__
11561
11562
11563 1
class NotificationMessage(FrozenClass):
11564
    '''
11565
    :ivar SequenceNumber:
11566
    :vartype SequenceNumber: UInt32
11567
    :ivar PublishTime:
11568
    :vartype PublishTime: DateTime
11569
    :ivar NotificationData:
11570
    :vartype NotificationData: ExtensionObject
11571
    '''
11572 1
    def __init__(self, binary=None):
11573 1
        if binary is not None:
11574 1
            self._binary_init(binary)
11575 1
            self._freeze = True
11576 1
            return
11577 1
        self.SequenceNumber = 0
11578 1
        self.PublishTime = datetime.now()
11579 1
        self.NotificationData = []
11580 1
        self._freeze = True
11581
11582 1
    def to_binary(self):
11583 1
        packet = []
11584 1
        packet.append(uatype_UInt32.pack(self.SequenceNumber))
11585 1
        packet.append(pack_datetime(self.PublishTime))
11586 1
        packet.append(uatype_Int32.pack(len(self.NotificationData)))
11587 1
        for fieldname in self.NotificationData:
11588 1
            packet.append(extensionobject_to_binary(fieldname))
11589 1
        return b''.join(packet)
11590
11591 1
    @staticmethod
11592
    def from_binary(data):
11593 1
        return NotificationMessage(data)
11594
11595 1
    def _binary_init(self, data):
11596 1
        self.SequenceNumber = uatype_UInt32.unpack(data.read(4))[0]
11597 1
        self.PublishTime = unpack_datetime(data)
11598 1
        length = uatype_Int32.unpack(data.read(4))[0]
11599 1
        array = []
11600 1
        if length != -1:
11601 1
            for _ in range(0, length):
11602 1
                array.append(extensionobject_from_binary(data))
11603 1
        self.NotificationData = array
11604
11605 1
    def __str__(self):
11606
        return 'NotificationMessage(' + 'SequenceNumber:' + str(self.SequenceNumber) + ', ' + \
11607
               'PublishTime:' + str(self.PublishTime) + ', ' + \
11608
               'NotificationData:' + str(self.NotificationData) + ')'
11609
11610 1
    __repr__ = __str__
11611
11612
11613 1
class NotificationData(FrozenClass):
11614
    '''
11615
    '''
11616 1
    def __init__(self, binary=None):
11617
        if binary is not None:
11618
            self._binary_init(binary)
11619
            self._freeze = True
11620
            return
11621
        self._freeze = True
11622
11623 1
    def to_binary(self):
11624
        packet = []
11625
        return b''.join(packet)
11626
11627 1
    @staticmethod
11628
    def from_binary(data):
11629
        return NotificationData(data)
11630
11631 1
    def _binary_init(self, data):
11632
        pass
11633
11634 1
    def __str__(self):
11635
        return 'NotificationData(' +  + ')'
11636
11637 1
    __repr__ = __str__
11638
11639
11640 1
class DataChangeNotification(FrozenClass):
11641
    '''
11642
    :ivar MonitoredItems:
11643
    :vartype MonitoredItems: MonitoredItemNotification
11644
    :ivar DiagnosticInfos:
11645
    :vartype DiagnosticInfos: DiagnosticInfo
11646
    '''
11647 1
    def __init__(self, binary=None):
11648 1
        if binary is not None:
11649 1
            self._binary_init(binary)
11650 1
            self._freeze = True
11651 1
            return
11652 1
        self.MonitoredItems = []
11653 1
        self.DiagnosticInfos = []
11654 1
        self._freeze = True
11655
11656 1
    def to_binary(self):
11657 1
        packet = []
11658 1
        packet.append(uatype_Int32.pack(len(self.MonitoredItems)))
11659 1
        for fieldname in self.MonitoredItems:
11660 1
            packet.append(fieldname.to_binary())
11661 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
11662 1
        for fieldname in self.DiagnosticInfos:
11663
            packet.append(fieldname.to_binary())
11664 1
        return b''.join(packet)
11665
11666 1
    @staticmethod
11667
    def from_binary(data):
11668 1
        return DataChangeNotification(data)
11669
11670 1
    def _binary_init(self, data):
11671 1
        length = uatype_Int32.unpack(data.read(4))[0]
11672 1
        array = []
11673 1
        if length != -1:
11674 1
            for _ in range(0, length):
11675 1
                array.append(MonitoredItemNotification.from_binary(data))
11676 1
        self.MonitoredItems = array
11677 1
        length = uatype_Int32.unpack(data.read(4))[0]
11678 1
        array = []
11679 1
        if length != -1:
11680 1
            for _ in range(0, length):
11681
                array.append(DiagnosticInfo.from_binary(data))
11682 1
        self.DiagnosticInfos = array
11683
11684 1
    def __str__(self):
11685
        return 'DataChangeNotification(' + 'MonitoredItems:' + str(self.MonitoredItems) + ', ' + \
11686
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
11687
11688 1
    __repr__ = __str__
11689
11690
11691 1
class MonitoredItemNotification(FrozenClass):
11692
    '''
11693
    :ivar ClientHandle:
11694
    :vartype ClientHandle: UInt32
11695
    :ivar Value:
11696
    :vartype Value: DataValue
11697
    '''
11698 1
    def __init__(self, binary=None):
11699 1
        if binary is not None:
11700 1
            self._binary_init(binary)
11701 1
            self._freeze = True
11702 1
            return
11703 1
        self.ClientHandle = 0
11704 1
        self.Value = DataValue()
11705 1
        self._freeze = True
11706
11707 1
    def to_binary(self):
11708 1
        packet = []
11709 1
        packet.append(uatype_UInt32.pack(self.ClientHandle))
11710 1
        packet.append(self.Value.to_binary())
11711 1
        return b''.join(packet)
11712
11713 1
    @staticmethod
11714
    def from_binary(data):
11715 1
        return MonitoredItemNotification(data)
11716
11717 1
    def _binary_init(self, data):
11718 1
        self.ClientHandle = uatype_UInt32.unpack(data.read(4))[0]
11719 1
        self.Value = DataValue.from_binary(data)
11720
11721 1
    def __str__(self):
11722
        return 'MonitoredItemNotification(' + 'ClientHandle:' + str(self.ClientHandle) + ', ' + \
11723
               'Value:' + str(self.Value) + ')'
11724
11725 1
    __repr__ = __str__
11726
11727
11728 1
class EventNotificationList(FrozenClass):
11729
    '''
11730
    :ivar Events:
11731
    :vartype Events: EventFieldList
11732
    '''
11733 1
    def __init__(self, binary=None):
11734 1
        if binary is not None:
11735 1
            self._binary_init(binary)
11736 1
            self._freeze = True
11737 1
            return
11738 1
        self.Events = []
11739 1
        self._freeze = True
11740
11741 1
    def to_binary(self):
11742 1
        packet = []
11743 1
        packet.append(uatype_Int32.pack(len(self.Events)))
11744 1
        for fieldname in self.Events:
11745 1
            packet.append(fieldname.to_binary())
11746 1
        return b''.join(packet)
11747
11748 1
    @staticmethod
11749
    def from_binary(data):
11750 1
        return EventNotificationList(data)
11751
11752 1
    def _binary_init(self, data):
11753 1
        length = uatype_Int32.unpack(data.read(4))[0]
11754 1
        array = []
11755 1
        if length != -1:
11756 1
            for _ in range(0, length):
11757 1
                array.append(EventFieldList.from_binary(data))
11758 1
        self.Events = array
11759
11760 1
    def __str__(self):
11761
        return 'EventNotificationList(' + 'Events:' + str(self.Events) + ')'
11762
11763 1
    __repr__ = __str__
11764
11765
11766 1
class EventFieldList(FrozenClass):
11767
    '''
11768
    :ivar ClientHandle:
11769
    :vartype ClientHandle: UInt32
11770
    :ivar EventFields:
11771
    :vartype EventFields: Variant
11772
    '''
11773 1
    def __init__(self, binary=None):
11774 1
        if binary is not None:
11775 1
            self._binary_init(binary)
11776 1
            self._freeze = True
11777 1
            return
11778 1
        self.ClientHandle = 0
11779 1
        self.EventFields = []
11780 1
        self._freeze = True
11781
11782 1
    def to_binary(self):
11783 1
        packet = []
11784 1
        packet.append(uatype_UInt32.pack(self.ClientHandle))
11785 1
        packet.append(uatype_Int32.pack(len(self.EventFields)))
11786 1
        for fieldname in self.EventFields:
11787 1
            packet.append(fieldname.to_binary())
11788 1
        return b''.join(packet)
11789
11790 1
    @staticmethod
11791
    def from_binary(data):
11792 1
        return EventFieldList(data)
11793
11794 1
    def _binary_init(self, data):
11795 1
        self.ClientHandle = uatype_UInt32.unpack(data.read(4))[0]
11796 1
        length = uatype_Int32.unpack(data.read(4))[0]
11797 1
        array = []
11798 1
        if length != -1:
11799 1
            for _ in range(0, length):
11800 1
                array.append(Variant.from_binary(data))
11801 1
        self.EventFields = array
11802
11803 1
    def __str__(self):
11804
        return 'EventFieldList(' + 'ClientHandle:' + str(self.ClientHandle) + ', ' + \
11805
               'EventFields:' + str(self.EventFields) + ')'
11806
11807 1
    __repr__ = __str__
11808
11809
11810 1
class HistoryEventFieldList(FrozenClass):
11811
    '''
11812
    :ivar EventFields:
11813
    :vartype EventFields: Variant
11814
    '''
11815 1
    def __init__(self, binary=None):
11816
        if binary is not None:
11817
            self._binary_init(binary)
11818
            self._freeze = True
11819
            return
11820
        self.EventFields = []
11821
        self._freeze = True
11822
11823 1
    def to_binary(self):
11824
        packet = []
11825
        packet.append(uatype_Int32.pack(len(self.EventFields)))
11826
        for fieldname in self.EventFields:
11827
            packet.append(fieldname.to_binary())
11828
        return b''.join(packet)
11829
11830 1
    @staticmethod
11831
    def from_binary(data):
11832
        return HistoryEventFieldList(data)
11833
11834 1
    def _binary_init(self, data):
11835
        length = uatype_Int32.unpack(data.read(4))[0]
11836
        array = []
11837
        if length != -1:
11838
            for _ in range(0, length):
11839
                array.append(Variant.from_binary(data))
11840
        self.EventFields = array
11841
11842 1
    def __str__(self):
11843
        return 'HistoryEventFieldList(' + 'EventFields:' + str(self.EventFields) + ')'
11844
11845 1
    __repr__ = __str__
11846
11847
11848 1
class StatusChangeNotification(FrozenClass):
11849
    '''
11850
    :ivar Status:
11851
    :vartype Status: StatusCode
11852
    :ivar DiagnosticInfo:
11853
    :vartype DiagnosticInfo: DiagnosticInfo
11854
    '''
11855 1
    def __init__(self, binary=None):
11856
        if binary is not None:
11857
            self._binary_init(binary)
11858
            self._freeze = True
11859
            return
11860
        self.Status = StatusCode()
11861
        self.DiagnosticInfo = DiagnosticInfo()
11862
        self._freeze = True
11863
11864 1
    def to_binary(self):
11865
        packet = []
11866
        packet.append(self.Status.to_binary())
11867
        packet.append(self.DiagnosticInfo.to_binary())
11868
        return b''.join(packet)
11869
11870 1
    @staticmethod
11871
    def from_binary(data):
11872
        return StatusChangeNotification(data)
11873
11874 1
    def _binary_init(self, data):
11875
        self.Status = StatusCode.from_binary(data)
11876
        self.DiagnosticInfo = DiagnosticInfo.from_binary(data)
11877
11878 1
    def __str__(self):
11879
        return 'StatusChangeNotification(' + 'Status:' + str(self.Status) + ', ' + \
11880
               'DiagnosticInfo:' + str(self.DiagnosticInfo) + ')'
11881
11882 1
    __repr__ = __str__
11883
11884
11885 1
class SubscriptionAcknowledgement(FrozenClass):
11886
    '''
11887
    :ivar SubscriptionId:
11888
    :vartype SubscriptionId: UInt32
11889
    :ivar SequenceNumber:
11890
    :vartype SequenceNumber: UInt32
11891
    '''
11892 1
    def __init__(self, binary=None):
11893 1
        if binary is not None:
11894 1
            self._binary_init(binary)
11895 1
            self._freeze = True
11896 1
            return
11897 1
        self.SubscriptionId = 0
11898 1
        self.SequenceNumber = 0
11899 1
        self._freeze = True
11900
11901 1
    def to_binary(self):
11902 1
        packet = []
11903 1
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
11904 1
        packet.append(uatype_UInt32.pack(self.SequenceNumber))
11905 1
        return b''.join(packet)
11906
11907 1
    @staticmethod
11908
    def from_binary(data):
11909 1
        return SubscriptionAcknowledgement(data)
11910
11911 1
    def _binary_init(self, data):
11912 1
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
11913 1
        self.SequenceNumber = uatype_UInt32.unpack(data.read(4))[0]
11914
11915 1
    def __str__(self):
11916
        return 'SubscriptionAcknowledgement(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
11917
               'SequenceNumber:' + str(self.SequenceNumber) + ')'
11918
11919 1
    __repr__ = __str__
11920
11921
11922 1
class PublishParameters(FrozenClass):
11923
    '''
11924
    :ivar SubscriptionAcknowledgements:
11925
    :vartype SubscriptionAcknowledgements: SubscriptionAcknowledgement
11926
    '''
11927 1
    def __init__(self, binary=None):
11928 1
        if binary is not None:
11929 1
            self._binary_init(binary)
11930 1
            self._freeze = True
11931 1
            return
11932 1
        self.SubscriptionAcknowledgements = []
11933 1
        self._freeze = True
11934
11935 1
    def to_binary(self):
11936 1
        packet = []
11937 1
        packet.append(uatype_Int32.pack(len(self.SubscriptionAcknowledgements)))
11938 1
        for fieldname in self.SubscriptionAcknowledgements:
11939 1
            packet.append(fieldname.to_binary())
11940 1
        return b''.join(packet)
11941
11942 1
    @staticmethod
11943
    def from_binary(data):
11944 1
        return PublishParameters(data)
11945
11946 1
    def _binary_init(self, data):
11947 1
        length = uatype_Int32.unpack(data.read(4))[0]
11948 1
        array = []
11949 1
        if length != -1:
11950 1
            for _ in range(0, length):
11951 1
                array.append(SubscriptionAcknowledgement.from_binary(data))
11952 1
        self.SubscriptionAcknowledgements = array
11953
11954 1
    def __str__(self):
11955
        return 'PublishParameters(' + 'SubscriptionAcknowledgements:' + str(self.SubscriptionAcknowledgements) + ')'
11956
11957 1
    __repr__ = __str__
11958
11959
11960 1
class PublishRequest(FrozenClass):
11961
    '''
11962
    :ivar TypeId:
11963
    :vartype TypeId: NodeId
11964
    :ivar RequestHeader:
11965
    :vartype RequestHeader: RequestHeader
11966
    :ivar Parameters:
11967
    :vartype Parameters: PublishParameters
11968
    '''
11969 1
    def __init__(self, binary=None):
11970 1
        if binary is not None:
11971
            self._binary_init(binary)
11972
            self._freeze = True
11973
            return
11974 1
        self.TypeId = FourByteNodeId(ObjectIds.PublishRequest_Encoding_DefaultBinary)
11975 1
        self.RequestHeader = RequestHeader()
11976 1
        self.Parameters = PublishParameters()
11977 1
        self._freeze = True
11978
11979 1
    def to_binary(self):
11980 1
        packet = []
11981 1
        packet.append(self.TypeId.to_binary())
11982 1
        packet.append(self.RequestHeader.to_binary())
11983 1
        packet.append(self.Parameters.to_binary())
11984 1
        return b''.join(packet)
11985
11986 1
    @staticmethod
11987
    def from_binary(data):
11988
        return PublishRequest(data)
11989
11990 1
    def _binary_init(self, data):
11991
        self.TypeId = NodeId.from_binary(data)
11992
        self.RequestHeader = RequestHeader.from_binary(data)
11993
        self.Parameters = PublishParameters.from_binary(data)
11994
11995 1
    def __str__(self):
11996
        return 'PublishRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
11997
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
11998
               'Parameters:' + str(self.Parameters) + ')'
11999
12000 1
    __repr__ = __str__
12001
12002
12003 1
class PublishResult(FrozenClass):
12004
    '''
12005
    :ivar SubscriptionId:
12006
    :vartype SubscriptionId: UInt32
12007
    :ivar AvailableSequenceNumbers:
12008
    :vartype AvailableSequenceNumbers: UInt32
12009
    :ivar MoreNotifications:
12010
    :vartype MoreNotifications: Boolean
12011
    :ivar NotificationMessage:
12012
    :vartype NotificationMessage: NotificationMessage
12013
    :ivar Results:
12014
    :vartype Results: StatusCode
12015
    :ivar DiagnosticInfos:
12016
    :vartype DiagnosticInfos: DiagnosticInfo
12017
    '''
12018 1
    def __init__(self, binary=None):
12019 1
        if binary is not None:
12020 1
            self._binary_init(binary)
12021 1
            self._freeze = True
12022 1
            return
12023 1
        self.SubscriptionId = 0
12024 1
        self.AvailableSequenceNumbers = []
12025 1
        self.MoreNotifications = True
12026 1
        self.NotificationMessage = NotificationMessage()
12027 1
        self.Results = []
12028 1
        self.DiagnosticInfos = []
12029 1
        self._freeze = True
12030
12031 1
    def to_binary(self):
12032 1
        packet = []
12033 1
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
12034 1
        packet.append(uatype_Int32.pack(len(self.AvailableSequenceNumbers)))
12035 1
        for fieldname in self.AvailableSequenceNumbers:
12036 1
            packet.append(uatype_UInt32.pack(fieldname))
12037 1
        packet.append(uatype_Boolean.pack(self.MoreNotifications))
12038 1
        packet.append(self.NotificationMessage.to_binary())
12039 1
        packet.append(uatype_Int32.pack(len(self.Results)))
12040 1
        for fieldname in self.Results:
12041
            packet.append(fieldname.to_binary())
12042 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
12043 1
        for fieldname in self.DiagnosticInfos:
12044
            packet.append(fieldname.to_binary())
12045 1
        return b''.join(packet)
12046
12047 1
    @staticmethod
12048
    def from_binary(data):
12049 1
        return PublishResult(data)
12050
12051 1
    def _binary_init(self, data):
12052 1
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
12053 1
        self.AvailableSequenceNumbers = unpack_uatype_array('UInt32', data)
12054 1
        self.MoreNotifications = uatype_Boolean.unpack(data.read(1))[0]
12055 1
        self.NotificationMessage = NotificationMessage.from_binary(data)
12056 1
        length = uatype_Int32.unpack(data.read(4))[0]
12057 1
        array = []
12058 1
        if length != -1:
12059 1
            for _ in range(0, length):
12060
                array.append(StatusCode.from_binary(data))
12061 1
        self.Results = array
12062 1
        length = uatype_Int32.unpack(data.read(4))[0]
12063 1
        array = []
12064 1
        if length != -1:
12065 1
            for _ in range(0, length):
12066
                array.append(DiagnosticInfo.from_binary(data))
12067 1
        self.DiagnosticInfos = array
12068
12069 1
    def __str__(self):
12070
        return 'PublishResult(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
12071
               'AvailableSequenceNumbers:' + str(self.AvailableSequenceNumbers) + ', ' + \
12072
               'MoreNotifications:' + str(self.MoreNotifications) + ', ' + \
12073
               'NotificationMessage:' + str(self.NotificationMessage) + ', ' + \
12074
               'Results:' + str(self.Results) + ', ' + \
12075
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
12076
12077 1
    __repr__ = __str__
12078
12079
12080 1
class PublishResponse(FrozenClass):
12081
    '''
12082
    :ivar TypeId:
12083
    :vartype TypeId: NodeId
12084
    :ivar ResponseHeader:
12085
    :vartype ResponseHeader: ResponseHeader
12086
    :ivar Parameters:
12087
    :vartype Parameters: PublishResult
12088
    '''
12089 1
    def __init__(self, binary=None):
12090 1
        if binary is not None:
12091 1
            self._binary_init(binary)
12092 1
            self._freeze = True
12093 1
            return
12094 1
        self.TypeId = FourByteNodeId(ObjectIds.PublishResponse_Encoding_DefaultBinary)
12095 1
        self.ResponseHeader = ResponseHeader()
12096 1
        self.Parameters = PublishResult()
12097 1
        self._freeze = True
12098
12099 1
    def to_binary(self):
12100 1
        packet = []
12101 1
        packet.append(self.TypeId.to_binary())
12102 1
        packet.append(self.ResponseHeader.to_binary())
12103 1
        packet.append(self.Parameters.to_binary())
12104 1
        return b''.join(packet)
12105
12106 1
    @staticmethod
12107
    def from_binary(data):
12108 1
        return PublishResponse(data)
12109
12110 1
    def _binary_init(self, data):
12111 1
        self.TypeId = NodeId.from_binary(data)
12112 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
12113 1
        self.Parameters = PublishResult.from_binary(data)
12114
12115 1
    def __str__(self):
12116
        return 'PublishResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
12117
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
12118
               'Parameters:' + str(self.Parameters) + ')'
12119
12120 1
    __repr__ = __str__
12121
12122
12123 1
class RepublishParameters(FrozenClass):
12124
    '''
12125
    :ivar SubscriptionId:
12126
    :vartype SubscriptionId: UInt32
12127
    :ivar RetransmitSequenceNumber:
12128
    :vartype RetransmitSequenceNumber: UInt32
12129
    '''
12130 1
    def __init__(self, binary=None):
12131
        if binary is not None:
12132
            self._binary_init(binary)
12133
            self._freeze = True
12134
            return
12135
        self.SubscriptionId = 0
12136
        self.RetransmitSequenceNumber = 0
12137
        self._freeze = True
12138
12139 1
    def to_binary(self):
12140
        packet = []
12141
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
12142
        packet.append(uatype_UInt32.pack(self.RetransmitSequenceNumber))
12143
        return b''.join(packet)
12144
12145 1
    @staticmethod
12146
    def from_binary(data):
12147
        return RepublishParameters(data)
12148
12149 1
    def _binary_init(self, data):
12150
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
12151
        self.RetransmitSequenceNumber = uatype_UInt32.unpack(data.read(4))[0]
12152
12153 1
    def __str__(self):
12154
        return 'RepublishParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
12155
               'RetransmitSequenceNumber:' + str(self.RetransmitSequenceNumber) + ')'
12156
12157 1
    __repr__ = __str__
12158
12159
12160 1
class RepublishRequest(FrozenClass):
12161
    '''
12162
    :ivar TypeId:
12163
    :vartype TypeId: NodeId
12164
    :ivar RequestHeader:
12165
    :vartype RequestHeader: RequestHeader
12166
    :ivar Parameters:
12167
    :vartype Parameters: RepublishParameters
12168
    '''
12169 1
    def __init__(self, binary=None):
12170
        if binary is not None:
12171
            self._binary_init(binary)
12172
            self._freeze = True
12173
            return
12174
        self.TypeId = FourByteNodeId(ObjectIds.RepublishRequest_Encoding_DefaultBinary)
12175
        self.RequestHeader = RequestHeader()
12176
        self.Parameters = RepublishParameters()
12177
        self._freeze = True
12178
12179 1
    def to_binary(self):
12180
        packet = []
12181
        packet.append(self.TypeId.to_binary())
12182
        packet.append(self.RequestHeader.to_binary())
12183
        packet.append(self.Parameters.to_binary())
12184
        return b''.join(packet)
12185
12186 1
    @staticmethod
12187
    def from_binary(data):
12188
        return RepublishRequest(data)
12189
12190 1
    def _binary_init(self, data):
12191
        self.TypeId = NodeId.from_binary(data)
12192
        self.RequestHeader = RequestHeader.from_binary(data)
12193
        self.Parameters = RepublishParameters.from_binary(data)
12194
12195 1
    def __str__(self):
12196
        return 'RepublishRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
12197
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
12198
               'Parameters:' + str(self.Parameters) + ')'
12199
12200 1
    __repr__ = __str__
12201
12202
12203 1
class RepublishResponse(FrozenClass):
12204
    '''
12205
    :ivar TypeId:
12206
    :vartype TypeId: NodeId
12207
    :ivar ResponseHeader:
12208
    :vartype ResponseHeader: ResponseHeader
12209
    :ivar NotificationMessage:
12210
    :vartype NotificationMessage: NotificationMessage
12211
    '''
12212 1
    def __init__(self, binary=None):
12213
        if binary is not None:
12214
            self._binary_init(binary)
12215
            self._freeze = True
12216
            return
12217
        self.TypeId = FourByteNodeId(ObjectIds.RepublishResponse_Encoding_DefaultBinary)
12218
        self.ResponseHeader = ResponseHeader()
12219
        self.NotificationMessage = NotificationMessage()
12220
        self._freeze = True
12221
12222 1
    def to_binary(self):
12223
        packet = []
12224
        packet.append(self.TypeId.to_binary())
12225
        packet.append(self.ResponseHeader.to_binary())
12226
        packet.append(self.NotificationMessage.to_binary())
12227
        return b''.join(packet)
12228
12229 1
    @staticmethod
12230
    def from_binary(data):
12231
        return RepublishResponse(data)
12232
12233 1
    def _binary_init(self, data):
12234
        self.TypeId = NodeId.from_binary(data)
12235
        self.ResponseHeader = ResponseHeader.from_binary(data)
12236
        self.NotificationMessage = NotificationMessage.from_binary(data)
12237
12238 1
    def __str__(self):
12239
        return 'RepublishResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
12240
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
12241
               'NotificationMessage:' + str(self.NotificationMessage) + ')'
12242
12243 1
    __repr__ = __str__
12244
12245
12246 1
class TransferResult(FrozenClass):
12247
    '''
12248
    :ivar StatusCode:
12249
    :vartype StatusCode: StatusCode
12250
    :ivar AvailableSequenceNumbers:
12251
    :vartype AvailableSequenceNumbers: UInt32
12252
    '''
12253 1
    def __init__(self, binary=None):
12254
        if binary is not None:
12255
            self._binary_init(binary)
12256
            self._freeze = True
12257
            return
12258
        self.StatusCode = StatusCode()
12259
        self.AvailableSequenceNumbers = []
12260
        self._freeze = True
12261
12262 1
    def to_binary(self):
12263
        packet = []
12264
        packet.append(self.StatusCode.to_binary())
12265
        packet.append(uatype_Int32.pack(len(self.AvailableSequenceNumbers)))
12266
        for fieldname in self.AvailableSequenceNumbers:
12267
            packet.append(uatype_UInt32.pack(fieldname))
12268
        return b''.join(packet)
12269
12270 1
    @staticmethod
12271
    def from_binary(data):
12272
        return TransferResult(data)
12273
12274 1
    def _binary_init(self, data):
12275
        self.StatusCode = StatusCode.from_binary(data)
12276
        self.AvailableSequenceNumbers = unpack_uatype_array('UInt32', data)
12277
12278 1
    def __str__(self):
12279
        return 'TransferResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
12280
               'AvailableSequenceNumbers:' + str(self.AvailableSequenceNumbers) + ')'
12281
12282 1
    __repr__ = __str__
12283
12284
12285 1
class TransferSubscriptionsParameters(FrozenClass):
12286
    '''
12287
    :ivar SubscriptionIds:
12288
    :vartype SubscriptionIds: UInt32
12289
    :ivar SendInitialValues:
12290
    :vartype SendInitialValues: Boolean
12291
    '''
12292 1
    def __init__(self, binary=None):
12293
        if binary is not None:
12294
            self._binary_init(binary)
12295
            self._freeze = True
12296
            return
12297
        self.SubscriptionIds = []
12298
        self.SendInitialValues = True
12299
        self._freeze = True
12300
12301 1
    def to_binary(self):
12302
        packet = []
12303
        packet.append(uatype_Int32.pack(len(self.SubscriptionIds)))
12304
        for fieldname in self.SubscriptionIds:
12305
            packet.append(uatype_UInt32.pack(fieldname))
12306
        packet.append(uatype_Boolean.pack(self.SendInitialValues))
12307
        return b''.join(packet)
12308
12309 1
    @staticmethod
12310
    def from_binary(data):
12311
        return TransferSubscriptionsParameters(data)
12312
12313 1
    def _binary_init(self, data):
12314
        self.SubscriptionIds = unpack_uatype_array('UInt32', data)
12315
        self.SendInitialValues = uatype_Boolean.unpack(data.read(1))[0]
12316
12317 1
    def __str__(self):
12318
        return 'TransferSubscriptionsParameters(' + 'SubscriptionIds:' + str(self.SubscriptionIds) + ', ' + \
12319
               'SendInitialValues:' + str(self.SendInitialValues) + ')'
12320
12321 1
    __repr__ = __str__
12322
12323
12324 1
class TransferSubscriptionsRequest(FrozenClass):
12325
    '''
12326
    :ivar TypeId:
12327
    :vartype TypeId: NodeId
12328
    :ivar RequestHeader:
12329
    :vartype RequestHeader: RequestHeader
12330
    :ivar Parameters:
12331
    :vartype Parameters: TransferSubscriptionsParameters
12332
    '''
12333 1
    def __init__(self, binary=None):
12334
        if binary is not None:
12335
            self._binary_init(binary)
12336
            self._freeze = True
12337
            return
12338
        self.TypeId = FourByteNodeId(ObjectIds.TransferSubscriptionsRequest_Encoding_DefaultBinary)
12339
        self.RequestHeader = RequestHeader()
12340
        self.Parameters = TransferSubscriptionsParameters()
12341
        self._freeze = True
12342
12343 1
    def to_binary(self):
12344
        packet = []
12345
        packet.append(self.TypeId.to_binary())
12346
        packet.append(self.RequestHeader.to_binary())
12347
        packet.append(self.Parameters.to_binary())
12348
        return b''.join(packet)
12349
12350 1
    @staticmethod
12351
    def from_binary(data):
12352
        return TransferSubscriptionsRequest(data)
12353
12354 1
    def _binary_init(self, data):
12355
        self.TypeId = NodeId.from_binary(data)
12356
        self.RequestHeader = RequestHeader.from_binary(data)
12357
        self.Parameters = TransferSubscriptionsParameters.from_binary(data)
12358
12359 1
    def __str__(self):
12360
        return 'TransferSubscriptionsRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
12361
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
12362
               'Parameters:' + str(self.Parameters) + ')'
12363
12364 1
    __repr__ = __str__
12365
12366
12367 1
class TransferSubscriptionsResult(FrozenClass):
12368
    '''
12369
    :ivar Results:
12370
    :vartype Results: TransferResult
12371
    :ivar DiagnosticInfos:
12372
    :vartype DiagnosticInfos: DiagnosticInfo
12373
    '''
12374 1
    def __init__(self, binary=None):
12375
        if binary is not None:
12376
            self._binary_init(binary)
12377
            self._freeze = True
12378
            return
12379
        self.Results = []
12380
        self.DiagnosticInfos = []
12381
        self._freeze = True
12382
12383 1
    def to_binary(self):
12384
        packet = []
12385
        packet.append(uatype_Int32.pack(len(self.Results)))
12386
        for fieldname in self.Results:
12387
            packet.append(fieldname.to_binary())
12388
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
12389
        for fieldname in self.DiagnosticInfos:
12390
            packet.append(fieldname.to_binary())
12391
        return b''.join(packet)
12392
12393 1
    @staticmethod
12394
    def from_binary(data):
12395
        return TransferSubscriptionsResult(data)
12396
12397 1
    def _binary_init(self, data):
12398
        length = uatype_Int32.unpack(data.read(4))[0]
12399
        array = []
12400
        if length != -1:
12401
            for _ in range(0, length):
12402
                array.append(TransferResult.from_binary(data))
12403
        self.Results = array
12404
        length = uatype_Int32.unpack(data.read(4))[0]
12405
        array = []
12406
        if length != -1:
12407
            for _ in range(0, length):
12408
                array.append(DiagnosticInfo.from_binary(data))
12409
        self.DiagnosticInfos = array
12410
12411 1
    def __str__(self):
12412
        return 'TransferSubscriptionsResult(' + 'Results:' + str(self.Results) + ', ' + \
12413
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
12414
12415 1
    __repr__ = __str__
12416
12417
12418 1
class TransferSubscriptionsResponse(FrozenClass):
12419
    '''
12420
    :ivar TypeId:
12421
    :vartype TypeId: NodeId
12422
    :ivar ResponseHeader:
12423
    :vartype ResponseHeader: ResponseHeader
12424
    :ivar Parameters:
12425
    :vartype Parameters: TransferSubscriptionsResult
12426
    '''
12427 1
    def __init__(self, binary=None):
12428
        if binary is not None:
12429
            self._binary_init(binary)
12430
            self._freeze = True
12431
            return
12432
        self.TypeId = FourByteNodeId(ObjectIds.TransferSubscriptionsResponse_Encoding_DefaultBinary)
12433
        self.ResponseHeader = ResponseHeader()
12434
        self.Parameters = TransferSubscriptionsResult()
12435
        self._freeze = True
12436
12437 1
    def to_binary(self):
12438
        packet = []
12439
        packet.append(self.TypeId.to_binary())
12440
        packet.append(self.ResponseHeader.to_binary())
12441
        packet.append(self.Parameters.to_binary())
12442
        return b''.join(packet)
12443
12444 1
    @staticmethod
12445
    def from_binary(data):
12446
        return TransferSubscriptionsResponse(data)
12447
12448 1
    def _binary_init(self, data):
12449
        self.TypeId = NodeId.from_binary(data)
12450
        self.ResponseHeader = ResponseHeader.from_binary(data)
12451
        self.Parameters = TransferSubscriptionsResult.from_binary(data)
12452
12453 1
    def __str__(self):
12454
        return 'TransferSubscriptionsResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
12455
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
12456
               'Parameters:' + str(self.Parameters) + ')'
12457
12458 1
    __repr__ = __str__
12459
12460
12461 1
class DeleteSubscriptionsParameters(FrozenClass):
12462
    '''
12463
    :ivar SubscriptionIds:
12464
    :vartype SubscriptionIds: UInt32
12465
    '''
12466 1
    def __init__(self, binary=None):
12467 1
        if binary is not None:
12468 1
            self._binary_init(binary)
12469 1
            self._freeze = True
12470 1
            return
12471 1
        self.SubscriptionIds = []
12472 1
        self._freeze = True
12473
12474 1
    def to_binary(self):
12475 1
        packet = []
12476 1
        packet.append(uatype_Int32.pack(len(self.SubscriptionIds)))
12477 1
        for fieldname in self.SubscriptionIds:
12478 1
            packet.append(uatype_UInt32.pack(fieldname))
12479 1
        return b''.join(packet)
12480
12481 1
    @staticmethod
12482
    def from_binary(data):
12483 1
        return DeleteSubscriptionsParameters(data)
12484
12485 1
    def _binary_init(self, data):
12486 1
        self.SubscriptionIds = unpack_uatype_array('UInt32', data)
12487
12488 1
    def __str__(self):
12489
        return 'DeleteSubscriptionsParameters(' + 'SubscriptionIds:' + str(self.SubscriptionIds) + ')'
12490
12491 1
    __repr__ = __str__
12492
12493
12494 1
class DeleteSubscriptionsRequest(FrozenClass):
12495
    '''
12496
    :ivar TypeId:
12497
    :vartype TypeId: NodeId
12498
    :ivar RequestHeader:
12499
    :vartype RequestHeader: RequestHeader
12500
    :ivar Parameters:
12501
    :vartype Parameters: DeleteSubscriptionsParameters
12502
    '''
12503 1
    def __init__(self, binary=None):
12504 1
        if binary is not None:
12505
            self._binary_init(binary)
12506
            self._freeze = True
12507
            return
12508 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteSubscriptionsRequest_Encoding_DefaultBinary)
12509 1
        self.RequestHeader = RequestHeader()
12510 1
        self.Parameters = DeleteSubscriptionsParameters()
12511 1
        self._freeze = True
12512
12513 1
    def to_binary(self):
12514 1
        packet = []
12515 1
        packet.append(self.TypeId.to_binary())
12516 1
        packet.append(self.RequestHeader.to_binary())
12517 1
        packet.append(self.Parameters.to_binary())
12518 1
        return b''.join(packet)
12519
12520 1
    @staticmethod
12521
    def from_binary(data):
12522
        return DeleteSubscriptionsRequest(data)
12523
12524 1
    def _binary_init(self, data):
12525
        self.TypeId = NodeId.from_binary(data)
12526
        self.RequestHeader = RequestHeader.from_binary(data)
12527
        self.Parameters = DeleteSubscriptionsParameters.from_binary(data)
12528
12529 1
    def __str__(self):
12530
        return 'DeleteSubscriptionsRequest(' + 'TypeId:' + str(self.TypeId) + ', ' + \
12531
               'RequestHeader:' + str(self.RequestHeader) + ', ' + \
12532
               'Parameters:' + str(self.Parameters) + ')'
12533
12534 1
    __repr__ = __str__
12535
12536
12537 1
class DeleteSubscriptionsResponse(FrozenClass):
12538
    '''
12539
    :ivar TypeId:
12540
    :vartype TypeId: NodeId
12541
    :ivar ResponseHeader:
12542
    :vartype ResponseHeader: ResponseHeader
12543
    :ivar Results:
12544
    :vartype Results: StatusCode
12545
    :ivar DiagnosticInfos:
12546
    :vartype DiagnosticInfos: DiagnosticInfo
12547
    '''
12548 1
    def __init__(self, binary=None):
12549 1
        if binary is not None:
12550 1
            self._binary_init(binary)
12551 1
            self._freeze = True
12552 1
            return
12553 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteSubscriptionsResponse_Encoding_DefaultBinary)
12554 1
        self.ResponseHeader = ResponseHeader()
12555 1
        self.Results = []
12556 1
        self.DiagnosticInfos = []
12557 1
        self._freeze = True
12558
12559 1
    def to_binary(self):
12560 1
        packet = []
12561 1
        packet.append(self.TypeId.to_binary())
12562 1
        packet.append(self.ResponseHeader.to_binary())
12563 1
        packet.append(uatype_Int32.pack(len(self.Results)))
12564 1
        for fieldname in self.Results:
12565 1
            packet.append(fieldname.to_binary())
12566 1
        packet.append(uatype_Int32.pack(len(self.DiagnosticInfos)))
12567 1
        for fieldname in self.DiagnosticInfos:
12568
            packet.append(fieldname.to_binary())
12569 1
        return b''.join(packet)
12570
12571 1
    @staticmethod
12572
    def from_binary(data):
12573 1
        return DeleteSubscriptionsResponse(data)
12574
12575 1
    def _binary_init(self, data):
12576 1
        self.TypeId = NodeId.from_binary(data)
12577 1
        self.ResponseHeader = ResponseHeader.from_binary(data)
12578 1
        length = uatype_Int32.unpack(data.read(4))[0]
12579 1
        array = []
12580 1
        if length != -1:
12581 1
            for _ in range(0, length):
12582 1
                array.append(StatusCode.from_binary(data))
12583 1
        self.Results = array
12584 1
        length = uatype_Int32.unpack(data.read(4))[0]
12585 1
        array = []
12586 1
        if length != -1:
12587 1
            for _ in range(0, length):
12588
                array.append(DiagnosticInfo.from_binary(data))
12589 1
        self.DiagnosticInfos = array
12590
12591 1
    def __str__(self):
12592
        return 'DeleteSubscriptionsResponse(' + 'TypeId:' + str(self.TypeId) + ', ' + \
12593
               'ResponseHeader:' + str(self.ResponseHeader) + ', ' + \
12594
               'Results:' + str(self.Results) + ', ' + \
12595
               'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
12596
12597 1
    __repr__ = __str__
12598
12599
12600 1
class BuildInfo(FrozenClass):
12601
    '''
12602
    :ivar ProductUri:
12603
    :vartype ProductUri: String
12604
    :ivar ManufacturerName:
12605
    :vartype ManufacturerName: String
12606
    :ivar ProductName:
12607
    :vartype ProductName: String
12608
    :ivar SoftwareVersion:
12609
    :vartype SoftwareVersion: String
12610
    :ivar BuildNumber:
12611
    :vartype BuildNumber: String
12612
    :ivar BuildDate:
12613
    :vartype BuildDate: DateTime
12614
    '''
12615 1
    def __init__(self, binary=None):
12616
        if binary is not None:
12617
            self._binary_init(binary)
12618
            self._freeze = True
12619
            return
12620
        self.ProductUri = ''
12621
        self.ManufacturerName = ''
12622
        self.ProductName = ''
12623
        self.SoftwareVersion = ''
12624
        self.BuildNumber = ''
12625
        self.BuildDate = datetime.now()
12626
        self._freeze = True
12627
12628 1
    def to_binary(self):
12629
        packet = []
12630
        packet.append(pack_string(self.ProductUri))
12631
        packet.append(pack_string(self.ManufacturerName))
12632
        packet.append(pack_string(self.ProductName))
12633
        packet.append(pack_string(self.SoftwareVersion))
12634
        packet.append(pack_string(self.BuildNumber))
12635
        packet.append(pack_datetime(self.BuildDate))
12636
        return b''.join(packet)
12637
12638 1
    @staticmethod
12639
    def from_binary(data):
12640
        return BuildInfo(data)
12641
12642 1
    def _binary_init(self, data):
12643
        self.ProductUri = unpack_string(data)
12644
        self.ManufacturerName = unpack_string(data)
12645
        self.ProductName = unpack_string(data)
12646
        self.SoftwareVersion = unpack_string(data)
12647
        self.BuildNumber = unpack_string(data)
12648
        self.BuildDate = unpack_datetime(data)
12649
12650 1
    def __str__(self):
12651
        return 'BuildInfo(' + 'ProductUri:' + str(self.ProductUri) + ', ' + \
12652
               'ManufacturerName:' + str(self.ManufacturerName) + ', ' + \
12653
               'ProductName:' + str(self.ProductName) + ', ' + \
12654
               'SoftwareVersion:' + str(self.SoftwareVersion) + ', ' + \
12655
               'BuildNumber:' + str(self.BuildNumber) + ', ' + \
12656
               'BuildDate:' + str(self.BuildDate) + ')'
12657
12658 1
    __repr__ = __str__
12659
12660
12661 1
class RedundantServerDataType(FrozenClass):
12662
    '''
12663
    :ivar ServerId:
12664
    :vartype ServerId: String
12665
    :ivar ServiceLevel:
12666
    :vartype ServiceLevel: Byte
12667
    :ivar ServerState:
12668
    :vartype ServerState: ServerState
12669
    '''
12670 1
    def __init__(self, binary=None):
12671
        if binary is not None:
12672
            self._binary_init(binary)
12673
            self._freeze = True
12674
            return
12675
        self.ServerId = ''
12676
        self.ServiceLevel = 0
12677
        self.ServerState = ServerState(0)
12678
        self._freeze = True
12679
12680 1
    def to_binary(self):
12681
        packet = []
12682
        packet.append(pack_string(self.ServerId))
12683
        packet.append(uatype_Byte.pack(self.ServiceLevel))
12684
        packet.append(uatype_UInt32.pack(self.ServerState.value))
12685
        return b''.join(packet)
12686
12687 1
    @staticmethod
12688
    def from_binary(data):
12689
        return RedundantServerDataType(data)
12690
12691 1
    def _binary_init(self, data):
12692
        self.ServerId = unpack_string(data)
12693
        self.ServiceLevel = uatype_Byte.unpack(data.read(1))[0]
12694
        self.ServerState = ServerState(uatype_UInt32.unpack(data.read(4))[0])
12695
12696 1
    def __str__(self):
12697
        return 'RedundantServerDataType(' + 'ServerId:' + str(self.ServerId) + ', ' + \
12698
               'ServiceLevel:' + str(self.ServiceLevel) + ', ' + \
12699
               'ServerState:' + str(self.ServerState) + ')'
12700
12701 1
    __repr__ = __str__
12702
12703
12704 1
class EndpointUrlListDataType(FrozenClass):
12705
    '''
12706
    :ivar EndpointUrlList:
12707
    :vartype EndpointUrlList: String
12708
    '''
12709 1
    def __init__(self, binary=None):
12710
        if binary is not None:
12711
            self._binary_init(binary)
12712
            self._freeze = True
12713
            return
12714
        self.EndpointUrlList = []
12715
        self._freeze = True
12716
12717 1
    def to_binary(self):
12718
        packet = []
12719
        packet.append(uatype_Int32.pack(len(self.EndpointUrlList)))
12720
        for fieldname in self.EndpointUrlList:
12721
            packet.append(pack_string(fieldname))
12722
        return b''.join(packet)
12723
12724 1
    @staticmethod
12725
    def from_binary(data):
12726
        return EndpointUrlListDataType(data)
12727
12728 1
    def _binary_init(self, data):
12729
        self.EndpointUrlList = unpack_uatype_array('String', data)
12730
12731 1
    def __str__(self):
12732
        return 'EndpointUrlListDataType(' + 'EndpointUrlList:' + str(self.EndpointUrlList) + ')'
12733
12734 1
    __repr__ = __str__
12735
12736
12737 1
class NetworkGroupDataType(FrozenClass):
12738
    '''
12739
    :ivar ServerUri:
12740
    :vartype ServerUri: String
12741
    :ivar NetworkPaths:
12742
    :vartype NetworkPaths: EndpointUrlListDataType
12743
    '''
12744 1
    def __init__(self, binary=None):
12745
        if binary is not None:
12746
            self._binary_init(binary)
12747
            self._freeze = True
12748
            return
12749
        self.ServerUri = ''
12750
        self.NetworkPaths = []
12751
        self._freeze = True
12752
12753 1
    def to_binary(self):
12754
        packet = []
12755
        packet.append(pack_string(self.ServerUri))
12756
        packet.append(uatype_Int32.pack(len(self.NetworkPaths)))
12757
        for fieldname in self.NetworkPaths:
12758
            packet.append(fieldname.to_binary())
12759
        return b''.join(packet)
12760
12761 1
    @staticmethod
12762
    def from_binary(data):
12763
        return NetworkGroupDataType(data)
12764
12765 1
    def _binary_init(self, data):
12766
        self.ServerUri = unpack_string(data)
12767
        length = uatype_Int32.unpack(data.read(4))[0]
12768
        array = []
12769
        if length != -1:
12770
            for _ in range(0, length):
12771
                array.append(EndpointUrlListDataType.from_binary(data))
12772
        self.NetworkPaths = array
12773
12774 1
    def __str__(self):
12775
        return 'NetworkGroupDataType(' + 'ServerUri:' + str(self.ServerUri) + ', ' + \
12776
               'NetworkPaths:' + str(self.NetworkPaths) + ')'
12777
12778 1
    __repr__ = __str__
12779
12780
12781 1
class SamplingIntervalDiagnosticsDataType(FrozenClass):
12782
    '''
12783
    :ivar SamplingInterval:
12784
    :vartype SamplingInterval: Double
12785
    :ivar MonitoredItemCount:
12786
    :vartype MonitoredItemCount: UInt32
12787
    :ivar MaxMonitoredItemCount:
12788
    :vartype MaxMonitoredItemCount: UInt32
12789
    :ivar DisabledMonitoredItemCount:
12790
    :vartype DisabledMonitoredItemCount: UInt32
12791
    '''
12792 1
    def __init__(self, binary=None):
12793
        if binary is not None:
12794
            self._binary_init(binary)
12795
            self._freeze = True
12796
            return
12797
        self.SamplingInterval = 0
12798
        self.MonitoredItemCount = 0
12799
        self.MaxMonitoredItemCount = 0
12800
        self.DisabledMonitoredItemCount = 0
12801
        self._freeze = True
12802
12803 1
    def to_binary(self):
12804
        packet = []
12805
        packet.append(uatype_Double.pack(self.SamplingInterval))
12806
        packet.append(uatype_UInt32.pack(self.MonitoredItemCount))
12807
        packet.append(uatype_UInt32.pack(self.MaxMonitoredItemCount))
12808
        packet.append(uatype_UInt32.pack(self.DisabledMonitoredItemCount))
12809
        return b''.join(packet)
12810
12811 1
    @staticmethod
12812
    def from_binary(data):
12813
        return SamplingIntervalDiagnosticsDataType(data)
12814
12815 1
    def _binary_init(self, data):
12816
        self.SamplingInterval = uatype_Double.unpack(data.read(8))[0]
12817
        self.MonitoredItemCount = uatype_UInt32.unpack(data.read(4))[0]
12818
        self.MaxMonitoredItemCount = uatype_UInt32.unpack(data.read(4))[0]
12819
        self.DisabledMonitoredItemCount = uatype_UInt32.unpack(data.read(4))[0]
12820
12821 1
    def __str__(self):
12822
        return 'SamplingIntervalDiagnosticsDataType(' + 'SamplingInterval:' + str(self.SamplingInterval) + ', ' + \
12823
               'MonitoredItemCount:' + str(self.MonitoredItemCount) + ', ' + \
12824
               'MaxMonitoredItemCount:' + str(self.MaxMonitoredItemCount) + ', ' + \
12825
               'DisabledMonitoredItemCount:' + str(self.DisabledMonitoredItemCount) + ')'
12826
12827 1
    __repr__ = __str__
12828
12829
12830 1
class ServerDiagnosticsSummaryDataType(FrozenClass):
12831
    '''
12832
    :ivar ServerViewCount:
12833
    :vartype ServerViewCount: UInt32
12834
    :ivar CurrentSessionCount:
12835
    :vartype CurrentSessionCount: UInt32
12836
    :ivar CumulatedSessionCount:
12837
    :vartype CumulatedSessionCount: UInt32
12838
    :ivar SecurityRejectedSessionCount:
12839
    :vartype SecurityRejectedSessionCount: UInt32
12840
    :ivar RejectedSessionCount:
12841
    :vartype RejectedSessionCount: UInt32
12842
    :ivar SessionTimeoutCount:
12843
    :vartype SessionTimeoutCount: UInt32
12844
    :ivar SessionAbortCount:
12845
    :vartype SessionAbortCount: UInt32
12846
    :ivar CurrentSubscriptionCount:
12847
    :vartype CurrentSubscriptionCount: UInt32
12848
    :ivar CumulatedSubscriptionCount:
12849
    :vartype CumulatedSubscriptionCount: UInt32
12850
    :ivar PublishingIntervalCount:
12851
    :vartype PublishingIntervalCount: UInt32
12852
    :ivar SecurityRejectedRequestsCount:
12853
    :vartype SecurityRejectedRequestsCount: UInt32
12854
    :ivar RejectedRequestsCount:
12855
    :vartype RejectedRequestsCount: UInt32
12856
    '''
12857 1
    def __init__(self, binary=None):
12858
        if binary is not None:
12859
            self._binary_init(binary)
12860
            self._freeze = True
12861
            return
12862
        self.ServerViewCount = 0
12863
        self.CurrentSessionCount = 0
12864
        self.CumulatedSessionCount = 0
12865
        self.SecurityRejectedSessionCount = 0
12866
        self.RejectedSessionCount = 0
12867
        self.SessionTimeoutCount = 0
12868
        self.SessionAbortCount = 0
12869
        self.CurrentSubscriptionCount = 0
12870
        self.CumulatedSubscriptionCount = 0
12871
        self.PublishingIntervalCount = 0
12872
        self.SecurityRejectedRequestsCount = 0
12873
        self.RejectedRequestsCount = 0
12874
        self._freeze = True
12875
12876 1
    def to_binary(self):
12877
        packet = []
12878
        packet.append(uatype_UInt32.pack(self.ServerViewCount))
12879
        packet.append(uatype_UInt32.pack(self.CurrentSessionCount))
12880
        packet.append(uatype_UInt32.pack(self.CumulatedSessionCount))
12881
        packet.append(uatype_UInt32.pack(self.SecurityRejectedSessionCount))
12882
        packet.append(uatype_UInt32.pack(self.RejectedSessionCount))
12883
        packet.append(uatype_UInt32.pack(self.SessionTimeoutCount))
12884
        packet.append(uatype_UInt32.pack(self.SessionAbortCount))
12885
        packet.append(uatype_UInt32.pack(self.CurrentSubscriptionCount))
12886
        packet.append(uatype_UInt32.pack(self.CumulatedSubscriptionCount))
12887
        packet.append(uatype_UInt32.pack(self.PublishingIntervalCount))
12888
        packet.append(uatype_UInt32.pack(self.SecurityRejectedRequestsCount))
12889
        packet.append(uatype_UInt32.pack(self.RejectedRequestsCount))
12890
        return b''.join(packet)
12891
12892 1
    @staticmethod
12893
    def from_binary(data):
12894
        return ServerDiagnosticsSummaryDataType(data)
12895
12896 1
    def _binary_init(self, data):
12897
        self.ServerViewCount = uatype_UInt32.unpack(data.read(4))[0]
12898
        self.CurrentSessionCount = uatype_UInt32.unpack(data.read(4))[0]
12899
        self.CumulatedSessionCount = uatype_UInt32.unpack(data.read(4))[0]
12900
        self.SecurityRejectedSessionCount = uatype_UInt32.unpack(data.read(4))[0]
12901
        self.RejectedSessionCount = uatype_UInt32.unpack(data.read(4))[0]
12902
        self.SessionTimeoutCount = uatype_UInt32.unpack(data.read(4))[0]
12903
        self.SessionAbortCount = uatype_UInt32.unpack(data.read(4))[0]
12904
        self.CurrentSubscriptionCount = uatype_UInt32.unpack(data.read(4))[0]
12905
        self.CumulatedSubscriptionCount = uatype_UInt32.unpack(data.read(4))[0]
12906
        self.PublishingIntervalCount = uatype_UInt32.unpack(data.read(4))[0]
12907
        self.SecurityRejectedRequestsCount = uatype_UInt32.unpack(data.read(4))[0]
12908
        self.RejectedRequestsCount = uatype_UInt32.unpack(data.read(4))[0]
12909
12910 1
    def __str__(self):
12911
        return 'ServerDiagnosticsSummaryDataType(' + 'ServerViewCount:' + str(self.ServerViewCount) + ', ' + \
12912
               'CurrentSessionCount:' + str(self.CurrentSessionCount) + ', ' + \
12913
               'CumulatedSessionCount:' + str(self.CumulatedSessionCount) + ', ' + \
12914
               'SecurityRejectedSessionCount:' + str(self.SecurityRejectedSessionCount) + ', ' + \
12915
               'RejectedSessionCount:' + str(self.RejectedSessionCount) + ', ' + \
12916
               'SessionTimeoutCount:' + str(self.SessionTimeoutCount) + ', ' + \
12917
               'SessionAbortCount:' + str(self.SessionAbortCount) + ', ' + \
12918
               'CurrentSubscriptionCount:' + str(self.CurrentSubscriptionCount) + ', ' + \
12919
               'CumulatedSubscriptionCount:' + str(self.CumulatedSubscriptionCount) + ', ' + \
12920
               'PublishingIntervalCount:' + str(self.PublishingIntervalCount) + ', ' + \
12921
               'SecurityRejectedRequestsCount:' + str(self.SecurityRejectedRequestsCount) + ', ' + \
12922
               'RejectedRequestsCount:' + str(self.RejectedRequestsCount) + ')'
12923
12924 1
    __repr__ = __str__
12925
12926
12927 1
class ServerStatusDataType(FrozenClass):
12928
    '''
12929
    :ivar StartTime:
12930
    :vartype StartTime: DateTime
12931
    :ivar CurrentTime:
12932
    :vartype CurrentTime: DateTime
12933
    :ivar State:
12934
    :vartype State: ServerState
12935
    :ivar BuildInfo:
12936
    :vartype BuildInfo: BuildInfo
12937
    :ivar SecondsTillShutdown:
12938
    :vartype SecondsTillShutdown: UInt32
12939
    :ivar ShutdownReason:
12940
    :vartype ShutdownReason: LocalizedText
12941
    '''
12942 1
    def __init__(self, binary=None):
12943
        if binary is not None:
12944
            self._binary_init(binary)
12945
            self._freeze = True
12946
            return
12947
        self.StartTime = datetime.now()
12948
        self.CurrentTime = datetime.now()
12949
        self.State = ServerState(0)
12950
        self.BuildInfo = BuildInfo()
12951
        self.SecondsTillShutdown = 0
12952
        self.ShutdownReason = LocalizedText()
12953
        self._freeze = True
12954
12955 1
    def to_binary(self):
12956
        packet = []
12957
        packet.append(pack_datetime(self.StartTime))
12958
        packet.append(pack_datetime(self.CurrentTime))
12959
        packet.append(uatype_UInt32.pack(self.State.value))
12960
        packet.append(self.BuildInfo.to_binary())
12961
        packet.append(uatype_UInt32.pack(self.SecondsTillShutdown))
12962
        packet.append(self.ShutdownReason.to_binary())
12963
        return b''.join(packet)
12964
12965 1
    @staticmethod
12966
    def from_binary(data):
12967
        return ServerStatusDataType(data)
12968
12969 1
    def _binary_init(self, data):
12970
        self.StartTime = unpack_datetime(data)
12971
        self.CurrentTime = unpack_datetime(data)
12972
        self.State = ServerState(uatype_UInt32.unpack(data.read(4))[0])
12973
        self.BuildInfo = BuildInfo.from_binary(data)
12974
        self.SecondsTillShutdown = uatype_UInt32.unpack(data.read(4))[0]
12975
        self.ShutdownReason = LocalizedText.from_binary(data)
12976
12977 1
    def __str__(self):
12978
        return 'ServerStatusDataType(' + 'StartTime:' + str(self.StartTime) + ', ' + \
12979
               'CurrentTime:' + str(self.CurrentTime) + ', ' + \
12980
               'State:' + str(self.State) + ', ' + \
12981
               'BuildInfo:' + str(self.BuildInfo) + ', ' + \
12982
               'SecondsTillShutdown:' + str(self.SecondsTillShutdown) + ', ' + \
12983
               'ShutdownReason:' + str(self.ShutdownReason) + ')'
12984
12985 1
    __repr__ = __str__
12986
12987
12988 1
class SessionDiagnosticsDataType(FrozenClass):
12989
    '''
12990
    :ivar SessionId:
12991
    :vartype SessionId: NodeId
12992
    :ivar SessionName:
12993
    :vartype SessionName: String
12994
    :ivar ClientDescription:
12995
    :vartype ClientDescription: ApplicationDescription
12996
    :ivar ServerUri:
12997
    :vartype ServerUri: String
12998
    :ivar EndpointUrl:
12999
    :vartype EndpointUrl: String
13000
    :ivar LocaleIds:
13001
    :vartype LocaleIds: String
13002
    :ivar ActualSessionTimeout:
13003
    :vartype ActualSessionTimeout: Double
13004
    :ivar MaxResponseMessageSize:
13005
    :vartype MaxResponseMessageSize: UInt32
13006
    :ivar ClientConnectionTime:
13007
    :vartype ClientConnectionTime: DateTime
13008
    :ivar ClientLastContactTime:
13009
    :vartype ClientLastContactTime: DateTime
13010
    :ivar CurrentSubscriptionsCount:
13011
    :vartype CurrentSubscriptionsCount: UInt32
13012
    :ivar CurrentMonitoredItemsCount:
13013
    :vartype CurrentMonitoredItemsCount: UInt32
13014
    :ivar CurrentPublishRequestsInQueue:
13015
    :vartype CurrentPublishRequestsInQueue: UInt32
13016
    :ivar TotalRequestCount:
13017
    :vartype TotalRequestCount: ServiceCounterDataType
13018
    :ivar UnauthorizedRequestCount:
13019
    :vartype UnauthorizedRequestCount: UInt32
13020
    :ivar ReadCount:
13021
    :vartype ReadCount: ServiceCounterDataType
13022
    :ivar HistoryReadCount:
13023
    :vartype HistoryReadCount: ServiceCounterDataType
13024
    :ivar WriteCount:
13025
    :vartype WriteCount: ServiceCounterDataType
13026
    :ivar HistoryUpdateCount:
13027
    :vartype HistoryUpdateCount: ServiceCounterDataType
13028
    :ivar CallCount:
13029
    :vartype CallCount: ServiceCounterDataType
13030
    :ivar CreateMonitoredItemsCount:
13031
    :vartype CreateMonitoredItemsCount: ServiceCounterDataType
13032
    :ivar ModifyMonitoredItemsCount:
13033
    :vartype ModifyMonitoredItemsCount: ServiceCounterDataType
13034
    :ivar SetMonitoringModeCount:
13035
    :vartype SetMonitoringModeCount: ServiceCounterDataType
13036
    :ivar SetTriggeringCount:
13037
    :vartype SetTriggeringCount: ServiceCounterDataType
13038
    :ivar DeleteMonitoredItemsCount:
13039
    :vartype DeleteMonitoredItemsCount: ServiceCounterDataType
13040
    :ivar CreateSubscriptionCount:
13041
    :vartype CreateSubscriptionCount: ServiceCounterDataType
13042
    :ivar ModifySubscriptionCount:
13043
    :vartype ModifySubscriptionCount: ServiceCounterDataType
13044
    :ivar SetPublishingModeCount:
13045
    :vartype SetPublishingModeCount: ServiceCounterDataType
13046
    :ivar PublishCount:
13047
    :vartype PublishCount: ServiceCounterDataType
13048
    :ivar RepublishCount:
13049
    :vartype RepublishCount: ServiceCounterDataType
13050
    :ivar TransferSubscriptionsCount:
13051
    :vartype TransferSubscriptionsCount: ServiceCounterDataType
13052
    :ivar DeleteSubscriptionsCount:
13053
    :vartype DeleteSubscriptionsCount: ServiceCounterDataType
13054
    :ivar AddNodesCount:
13055
    :vartype AddNodesCount: ServiceCounterDataType
13056
    :ivar AddReferencesCount:
13057
    :vartype AddReferencesCount: ServiceCounterDataType
13058
    :ivar DeleteNodesCount:
13059
    :vartype DeleteNodesCount: ServiceCounterDataType
13060
    :ivar DeleteReferencesCount:
13061
    :vartype DeleteReferencesCount: ServiceCounterDataType
13062
    :ivar BrowseCount:
13063
    :vartype BrowseCount: ServiceCounterDataType
13064
    :ivar BrowseNextCount:
13065
    :vartype BrowseNextCount: ServiceCounterDataType
13066
    :ivar TranslateBrowsePathsToNodeIdsCount:
13067
    :vartype TranslateBrowsePathsToNodeIdsCount: ServiceCounterDataType
13068
    :ivar QueryFirstCount:
13069
    :vartype QueryFirstCount: ServiceCounterDataType
13070
    :ivar QueryNextCount:
13071
    :vartype QueryNextCount: ServiceCounterDataType
13072
    :ivar RegisterNodesCount:
13073
    :vartype RegisterNodesCount: ServiceCounterDataType
13074
    :ivar UnregisterNodesCount:
13075
    :vartype UnregisterNodesCount: ServiceCounterDataType
13076
    '''
13077 1
    def __init__(self, binary=None):
13078
        if binary is not None:
13079
            self._binary_init(binary)
13080
            self._freeze = True
13081
            return
13082
        self.SessionId = NodeId()
13083
        self.SessionName = ''
13084
        self.ClientDescription = ApplicationDescription()
13085
        self.ServerUri = ''
13086
        self.EndpointUrl = ''
13087
        self.LocaleIds = []
13088
        self.ActualSessionTimeout = 0
13089
        self.MaxResponseMessageSize = 0
13090
        self.ClientConnectionTime = datetime.now()
13091
        self.ClientLastContactTime = datetime.now()
13092
        self.CurrentSubscriptionsCount = 0
13093
        self.CurrentMonitoredItemsCount = 0
13094
        self.CurrentPublishRequestsInQueue = 0
13095
        self.TotalRequestCount = ServiceCounterDataType()
13096
        self.UnauthorizedRequestCount = 0
13097
        self.ReadCount = ServiceCounterDataType()
13098
        self.HistoryReadCount = ServiceCounterDataType()
13099
        self.WriteCount = ServiceCounterDataType()
13100
        self.HistoryUpdateCount = ServiceCounterDataType()
13101
        self.CallCount = ServiceCounterDataType()
13102
        self.CreateMonitoredItemsCount = ServiceCounterDataType()
13103
        self.ModifyMonitoredItemsCount = ServiceCounterDataType()
13104
        self.SetMonitoringModeCount = ServiceCounterDataType()
13105
        self.SetTriggeringCount = ServiceCounterDataType()
13106
        self.DeleteMonitoredItemsCount = ServiceCounterDataType()
13107
        self.CreateSubscriptionCount = ServiceCounterDataType()
13108
        self.ModifySubscriptionCount = ServiceCounterDataType()
13109
        self.SetPublishingModeCount = ServiceCounterDataType()
13110
        self.PublishCount = ServiceCounterDataType()
13111
        self.RepublishCount = ServiceCounterDataType()
13112
        self.TransferSubscriptionsCount = ServiceCounterDataType()
13113
        self.DeleteSubscriptionsCount = ServiceCounterDataType()
13114
        self.AddNodesCount = ServiceCounterDataType()
13115
        self.AddReferencesCount = ServiceCounterDataType()
13116
        self.DeleteNodesCount = ServiceCounterDataType()
13117
        self.DeleteReferencesCount = ServiceCounterDataType()
13118
        self.BrowseCount = ServiceCounterDataType()
13119
        self.BrowseNextCount = ServiceCounterDataType()
13120
        self.TranslateBrowsePathsToNodeIdsCount = ServiceCounterDataType()
13121
        self.QueryFirstCount = ServiceCounterDataType()
13122
        self.QueryNextCount = ServiceCounterDataType()
13123
        self.RegisterNodesCount = ServiceCounterDataType()
13124
        self.UnregisterNodesCount = ServiceCounterDataType()
13125
        self._freeze = True
13126
13127 1
    def to_binary(self):
13128
        packet = []
13129
        packet.append(self.SessionId.to_binary())
13130
        packet.append(pack_string(self.SessionName))
13131
        packet.append(self.ClientDescription.to_binary())
13132
        packet.append(pack_string(self.ServerUri))
13133
        packet.append(pack_string(self.EndpointUrl))
13134
        packet.append(uatype_Int32.pack(len(self.LocaleIds)))
13135
        for fieldname in self.LocaleIds:
13136
            packet.append(pack_string(fieldname))
13137
        packet.append(uatype_Double.pack(self.ActualSessionTimeout))
13138
        packet.append(uatype_UInt32.pack(self.MaxResponseMessageSize))
13139
        packet.append(pack_datetime(self.ClientConnectionTime))
13140
        packet.append(pack_datetime(self.ClientLastContactTime))
13141
        packet.append(uatype_UInt32.pack(self.CurrentSubscriptionsCount))
13142
        packet.append(uatype_UInt32.pack(self.CurrentMonitoredItemsCount))
13143
        packet.append(uatype_UInt32.pack(self.CurrentPublishRequestsInQueue))
13144
        packet.append(self.TotalRequestCount.to_binary())
13145
        packet.append(uatype_UInt32.pack(self.UnauthorizedRequestCount))
13146
        packet.append(self.ReadCount.to_binary())
13147
        packet.append(self.HistoryReadCount.to_binary())
13148
        packet.append(self.WriteCount.to_binary())
13149
        packet.append(self.HistoryUpdateCount.to_binary())
13150
        packet.append(self.CallCount.to_binary())
13151
        packet.append(self.CreateMonitoredItemsCount.to_binary())
13152
        packet.append(self.ModifyMonitoredItemsCount.to_binary())
13153
        packet.append(self.SetMonitoringModeCount.to_binary())
13154
        packet.append(self.SetTriggeringCount.to_binary())
13155
        packet.append(self.DeleteMonitoredItemsCount.to_binary())
13156
        packet.append(self.CreateSubscriptionCount.to_binary())
13157
        packet.append(self.ModifySubscriptionCount.to_binary())
13158
        packet.append(self.SetPublishingModeCount.to_binary())
13159
        packet.append(self.PublishCount.to_binary())
13160
        packet.append(self.RepublishCount.to_binary())
13161
        packet.append(self.TransferSubscriptionsCount.to_binary())
13162
        packet.append(self.DeleteSubscriptionsCount.to_binary())
13163
        packet.append(self.AddNodesCount.to_binary())
13164
        packet.append(self.AddReferencesCount.to_binary())
13165
        packet.append(self.DeleteNodesCount.to_binary())
13166
        packet.append(self.DeleteReferencesCount.to_binary())
13167
        packet.append(self.BrowseCount.to_binary())
13168
        packet.append(self.BrowseNextCount.to_binary())
13169
        packet.append(self.TranslateBrowsePathsToNodeIdsCount.to_binary())
13170
        packet.append(self.QueryFirstCount.to_binary())
13171
        packet.append(self.QueryNextCount.to_binary())
13172
        packet.append(self.RegisterNodesCount.to_binary())
13173
        packet.append(self.UnregisterNodesCount.to_binary())
13174
        return b''.join(packet)
13175
13176 1
    @staticmethod
13177
    def from_binary(data):
13178
        return SessionDiagnosticsDataType(data)
13179
13180 1
    def _binary_init(self, data):
13181
        self.SessionId = NodeId.from_binary(data)
13182
        self.SessionName = unpack_string(data)
13183
        self.ClientDescription = ApplicationDescription.from_binary(data)
13184
        self.ServerUri = unpack_string(data)
13185
        self.EndpointUrl = unpack_string(data)
13186
        self.LocaleIds = unpack_uatype_array('String', data)
13187
        self.ActualSessionTimeout = uatype_Double.unpack(data.read(8))[0]
13188
        self.MaxResponseMessageSize = uatype_UInt32.unpack(data.read(4))[0]
13189
        self.ClientConnectionTime = unpack_datetime(data)
13190
        self.ClientLastContactTime = unpack_datetime(data)
13191
        self.CurrentSubscriptionsCount = uatype_UInt32.unpack(data.read(4))[0]
13192
        self.CurrentMonitoredItemsCount = uatype_UInt32.unpack(data.read(4))[0]
13193
        self.CurrentPublishRequestsInQueue = uatype_UInt32.unpack(data.read(4))[0]
13194
        self.TotalRequestCount = ServiceCounterDataType.from_binary(data)
13195
        self.UnauthorizedRequestCount = uatype_UInt32.unpack(data.read(4))[0]
13196
        self.ReadCount = ServiceCounterDataType.from_binary(data)
13197
        self.HistoryReadCount = ServiceCounterDataType.from_binary(data)
13198
        self.WriteCount = ServiceCounterDataType.from_binary(data)
13199
        self.HistoryUpdateCount = ServiceCounterDataType.from_binary(data)
13200
        self.CallCount = ServiceCounterDataType.from_binary(data)
13201
        self.CreateMonitoredItemsCount = ServiceCounterDataType.from_binary(data)
13202
        self.ModifyMonitoredItemsCount = ServiceCounterDataType.from_binary(data)
13203
        self.SetMonitoringModeCount = ServiceCounterDataType.from_binary(data)
13204
        self.SetTriggeringCount = ServiceCounterDataType.from_binary(data)
13205
        self.DeleteMonitoredItemsCount = ServiceCounterDataType.from_binary(data)
13206
        self.CreateSubscriptionCount = ServiceCounterDataType.from_binary(data)
13207
        self.ModifySubscriptionCount = ServiceCounterDataType.from_binary(data)
13208
        self.SetPublishingModeCount = ServiceCounterDataType.from_binary(data)
13209
        self.PublishCount = ServiceCounterDataType.from_binary(data)
13210
        self.RepublishCount = ServiceCounterDataType.from_binary(data)
13211
        self.TransferSubscriptionsCount = ServiceCounterDataType.from_binary(data)
13212
        self.DeleteSubscriptionsCount = ServiceCounterDataType.from_binary(data)
13213
        self.AddNodesCount = ServiceCounterDataType.from_binary(data)
13214
        self.AddReferencesCount = ServiceCounterDataType.from_binary(data)
13215
        self.DeleteNodesCount = ServiceCounterDataType.from_binary(data)
13216
        self.DeleteReferencesCount = ServiceCounterDataType.from_binary(data)
13217
        self.BrowseCount = ServiceCounterDataType.from_binary(data)
13218
        self.BrowseNextCount = ServiceCounterDataType.from_binary(data)
13219
        self.TranslateBrowsePathsToNodeIdsCount = ServiceCounterDataType.from_binary(data)
13220
        self.QueryFirstCount = ServiceCounterDataType.from_binary(data)
13221
        self.QueryNextCount = ServiceCounterDataType.from_binary(data)
13222
        self.RegisterNodesCount = ServiceCounterDataType.from_binary(data)
13223
        self.UnregisterNodesCount = ServiceCounterDataType.from_binary(data)
13224
13225 1
    def __str__(self):
13226
        return 'SessionDiagnosticsDataType(' + 'SessionId:' + str(self.SessionId) + ', ' + \
13227
               'SessionName:' + str(self.SessionName) + ', ' + \
13228
               'ClientDescription:' + str(self.ClientDescription) + ', ' + \
13229
               'ServerUri:' + str(self.ServerUri) + ', ' + \
13230
               'EndpointUrl:' + str(self.EndpointUrl) + ', ' + \
13231
               'LocaleIds:' + str(self.LocaleIds) + ', ' + \
13232
               'ActualSessionTimeout:' + str(self.ActualSessionTimeout) + ', ' + \
13233
               'MaxResponseMessageSize:' + str(self.MaxResponseMessageSize) + ', ' + \
13234
               'ClientConnectionTime:' + str(self.ClientConnectionTime) + ', ' + \
13235
               'ClientLastContactTime:' + str(self.ClientLastContactTime) + ', ' + \
13236
               'CurrentSubscriptionsCount:' + str(self.CurrentSubscriptionsCount) + ', ' + \
13237
               'CurrentMonitoredItemsCount:' + str(self.CurrentMonitoredItemsCount) + ', ' + \
13238
               'CurrentPublishRequestsInQueue:' + str(self.CurrentPublishRequestsInQueue) + ', ' + \
13239
               'TotalRequestCount:' + str(self.TotalRequestCount) + ', ' + \
13240
               'UnauthorizedRequestCount:' + str(self.UnauthorizedRequestCount) + ', ' + \
13241
               'ReadCount:' + str(self.ReadCount) + ', ' + \
13242
               'HistoryReadCount:' + str(self.HistoryReadCount) + ', ' + \
13243
               'WriteCount:' + str(self.WriteCount) + ', ' + \
13244
               'HistoryUpdateCount:' + str(self.HistoryUpdateCount) + ', ' + \
13245
               'CallCount:' + str(self.CallCount) + ', ' + \
13246
               'CreateMonitoredItemsCount:' + str(self.CreateMonitoredItemsCount) + ', ' + \
13247
               'ModifyMonitoredItemsCount:' + str(self.ModifyMonitoredItemsCount) + ', ' + \
13248
               'SetMonitoringModeCount:' + str(self.SetMonitoringModeCount) + ', ' + \
13249
               'SetTriggeringCount:' + str(self.SetTriggeringCount) + ', ' + \
13250
               'DeleteMonitoredItemsCount:' + str(self.DeleteMonitoredItemsCount) + ', ' + \
13251
               'CreateSubscriptionCount:' + str(self.CreateSubscriptionCount) + ', ' + \
13252
               'ModifySubscriptionCount:' + str(self.ModifySubscriptionCount) + ', ' + \
13253
               'SetPublishingModeCount:' + str(self.SetPublishingModeCount) + ', ' + \
13254
               'PublishCount:' + str(self.PublishCount) + ', ' + \
13255
               'RepublishCount:' + str(self.RepublishCount) + ', ' + \
13256
               'TransferSubscriptionsCount:' + str(self.TransferSubscriptionsCount) + ', ' + \
13257
               'DeleteSubscriptionsCount:' + str(self.DeleteSubscriptionsCount) + ', ' + \
13258
               'AddNodesCount:' + str(self.AddNodesCount) + ', ' + \
13259
               'AddReferencesCount:' + str(self.AddReferencesCount) + ', ' + \
13260
               'DeleteNodesCount:' + str(self.DeleteNodesCount) + ', ' + \
13261
               'DeleteReferencesCount:' + str(self.DeleteReferencesCount) + ', ' + \
13262
               'BrowseCount:' + str(self.BrowseCount) + ', ' + \
13263
               'BrowseNextCount:' + str(self.BrowseNextCount) + ', ' + \
13264
               'TranslateBrowsePathsToNodeIdsCount:' + str(self.TranslateBrowsePathsToNodeIdsCount) + ', ' + \
13265
               'QueryFirstCount:' + str(self.QueryFirstCount) + ', ' + \
13266
               'QueryNextCount:' + str(self.QueryNextCount) + ', ' + \
13267
               'RegisterNodesCount:' + str(self.RegisterNodesCount) + ', ' + \
13268
               'UnregisterNodesCount:' + str(self.UnregisterNodesCount) + ')'
13269
13270 1
    __repr__ = __str__
13271
13272
13273 1
class SessionSecurityDiagnosticsDataType(FrozenClass):
13274
    '''
13275
    :ivar SessionId:
13276
    :vartype SessionId: NodeId
13277
    :ivar ClientUserIdOfSession:
13278
    :vartype ClientUserIdOfSession: String
13279
    :ivar ClientUserIdHistory:
13280
    :vartype ClientUserIdHistory: String
13281
    :ivar AuthenticationMechanism:
13282
    :vartype AuthenticationMechanism: String
13283
    :ivar Encoding:
13284
    :vartype Encoding: String
13285
    :ivar TransportProtocol:
13286
    :vartype TransportProtocol: String
13287
    :ivar SecurityMode:
13288
    :vartype SecurityMode: MessageSecurityMode
13289
    :ivar SecurityPolicyUri:
13290
    :vartype SecurityPolicyUri: String
13291
    :ivar ClientCertificate:
13292
    :vartype ClientCertificate: ByteString
13293
    '''
13294 1
    def __init__(self, binary=None):
13295
        if binary is not None:
13296
            self._binary_init(binary)
13297
            self._freeze = True
13298
            return
13299
        self.SessionId = NodeId()
13300
        self.ClientUserIdOfSession = ''
13301
        self.ClientUserIdHistory = []
13302
        self.AuthenticationMechanism = ''
13303
        self.Encoding = ''
13304
        self.TransportProtocol = ''
13305
        self.SecurityMode = MessageSecurityMode(0)
13306
        self.SecurityPolicyUri = ''
13307
        self.ClientCertificate = b''
13308
        self._freeze = True
13309
13310 1
    def to_binary(self):
13311
        packet = []
13312
        packet.append(self.SessionId.to_binary())
13313
        packet.append(pack_string(self.ClientUserIdOfSession))
13314
        packet.append(uatype_Int32.pack(len(self.ClientUserIdHistory)))
13315
        for fieldname in self.ClientUserIdHistory:
13316
            packet.append(pack_string(fieldname))
13317
        packet.append(pack_string(self.AuthenticationMechanism))
13318
        packet.append(pack_string(self.Encoding))
13319
        packet.append(pack_string(self.TransportProtocol))
13320
        packet.append(uatype_UInt32.pack(self.SecurityMode.value))
13321
        packet.append(pack_string(self.SecurityPolicyUri))
13322
        packet.append(pack_bytes(self.ClientCertificate))
13323
        return b''.join(packet)
13324
13325 1
    @staticmethod
13326
    def from_binary(data):
13327
        return SessionSecurityDiagnosticsDataType(data)
13328
13329 1
    def _binary_init(self, data):
13330
        self.SessionId = NodeId.from_binary(data)
13331
        self.ClientUserIdOfSession = unpack_string(data)
13332
        self.ClientUserIdHistory = unpack_uatype_array('String', data)
13333
        self.AuthenticationMechanism = unpack_string(data)
13334
        self.Encoding = unpack_string(data)
13335
        self.TransportProtocol = unpack_string(data)
13336
        self.SecurityMode = MessageSecurityMode(uatype_UInt32.unpack(data.read(4))[0])
13337
        self.SecurityPolicyUri = unpack_string(data)
13338
        self.ClientCertificate = unpack_bytes(data)
13339
13340 1
    def __str__(self):
13341
        return 'SessionSecurityDiagnosticsDataType(' + 'SessionId:' + str(self.SessionId) + ', ' + \
13342
               'ClientUserIdOfSession:' + str(self.ClientUserIdOfSession) + ', ' + \
13343
               'ClientUserIdHistory:' + str(self.ClientUserIdHistory) + ', ' + \
13344
               'AuthenticationMechanism:' + str(self.AuthenticationMechanism) + ', ' + \
13345
               'Encoding:' + str(self.Encoding) + ', ' + \
13346
               'TransportProtocol:' + str(self.TransportProtocol) + ', ' + \
13347
               'SecurityMode:' + str(self.SecurityMode) + ', ' + \
13348
               'SecurityPolicyUri:' + str(self.SecurityPolicyUri) + ', ' + \
13349
               'ClientCertificate:' + str(self.ClientCertificate) + ')'
13350
13351 1
    __repr__ = __str__
13352
13353
13354 1
class ServiceCounterDataType(FrozenClass):
13355
    '''
13356
    :ivar TotalCount:
13357
    :vartype TotalCount: UInt32
13358
    :ivar ErrorCount:
13359
    :vartype ErrorCount: UInt32
13360
    '''
13361 1
    def __init__(self, binary=None):
13362
        if binary is not None:
13363
            self._binary_init(binary)
13364
            self._freeze = True
13365
            return
13366
        self.TotalCount = 0
13367
        self.ErrorCount = 0
13368
        self._freeze = True
13369
13370 1
    def to_binary(self):
13371
        packet = []
13372
        packet.append(uatype_UInt32.pack(self.TotalCount))
13373
        packet.append(uatype_UInt32.pack(self.ErrorCount))
13374
        return b''.join(packet)
13375
13376 1
    @staticmethod
13377
    def from_binary(data):
13378
        return ServiceCounterDataType(data)
13379
13380 1
    def _binary_init(self, data):
13381
        self.TotalCount = uatype_UInt32.unpack(data.read(4))[0]
13382
        self.ErrorCount = uatype_UInt32.unpack(data.read(4))[0]
13383
13384 1
    def __str__(self):
13385
        return 'ServiceCounterDataType(' + 'TotalCount:' + str(self.TotalCount) + ', ' + \
13386
               'ErrorCount:' + str(self.ErrorCount) + ')'
13387
13388 1
    __repr__ = __str__
13389
13390
13391 1
class StatusResult(FrozenClass):
13392
    '''
13393
    :ivar StatusCode:
13394
    :vartype StatusCode: StatusCode
13395
    :ivar DiagnosticInfo:
13396
    :vartype DiagnosticInfo: DiagnosticInfo
13397
    '''
13398 1
    def __init__(self, binary=None):
13399
        if binary is not None:
13400
            self._binary_init(binary)
13401
            self._freeze = True
13402
            return
13403
        self.StatusCode = StatusCode()
13404
        self.DiagnosticInfo = DiagnosticInfo()
13405
        self._freeze = True
13406
13407 1
    def to_binary(self):
13408
        packet = []
13409
        packet.append(self.StatusCode.to_binary())
13410
        packet.append(self.DiagnosticInfo.to_binary())
13411
        return b''.join(packet)
13412
13413 1
    @staticmethod
13414
    def from_binary(data):
13415
        return StatusResult(data)
13416
13417 1
    def _binary_init(self, data):
13418
        self.StatusCode = StatusCode.from_binary(data)
13419
        self.DiagnosticInfo = DiagnosticInfo.from_binary(data)
13420
13421 1
    def __str__(self):
13422
        return 'StatusResult(' + 'StatusCode:' + str(self.StatusCode) + ', ' + \
13423
               'DiagnosticInfo:' + str(self.DiagnosticInfo) + ')'
13424
13425 1
    __repr__ = __str__
13426
13427
13428 1
class SubscriptionDiagnosticsDataType(FrozenClass):
13429
    '''
13430
    :ivar SessionId:
13431
    :vartype SessionId: NodeId
13432
    :ivar SubscriptionId:
13433
    :vartype SubscriptionId: UInt32
13434
    :ivar Priority:
13435
    :vartype Priority: Byte
13436
    :ivar PublishingInterval:
13437
    :vartype PublishingInterval: Double
13438
    :ivar MaxKeepAliveCount:
13439
    :vartype MaxKeepAliveCount: UInt32
13440
    :ivar MaxLifetimeCount:
13441
    :vartype MaxLifetimeCount: UInt32
13442
    :ivar MaxNotificationsPerPublish:
13443
    :vartype MaxNotificationsPerPublish: UInt32
13444
    :ivar PublishingEnabled:
13445
    :vartype PublishingEnabled: Boolean
13446
    :ivar ModifyCount:
13447
    :vartype ModifyCount: UInt32
13448
    :ivar EnableCount:
13449
    :vartype EnableCount: UInt32
13450
    :ivar DisableCount:
13451
    :vartype DisableCount: UInt32
13452
    :ivar RepublishRequestCount:
13453
    :vartype RepublishRequestCount: UInt32
13454
    :ivar RepublishMessageRequestCount:
13455
    :vartype RepublishMessageRequestCount: UInt32
13456
    :ivar RepublishMessageCount:
13457
    :vartype RepublishMessageCount: UInt32
13458
    :ivar TransferRequestCount:
13459
    :vartype TransferRequestCount: UInt32
13460
    :ivar TransferredToAltClientCount:
13461
    :vartype TransferredToAltClientCount: UInt32
13462
    :ivar TransferredToSameClientCount:
13463
    :vartype TransferredToSameClientCount: UInt32
13464
    :ivar PublishRequestCount:
13465
    :vartype PublishRequestCount: UInt32
13466
    :ivar DataChangeNotificationsCount:
13467
    :vartype DataChangeNotificationsCount: UInt32
13468
    :ivar EventNotificationsCount:
13469
    :vartype EventNotificationsCount: UInt32
13470
    :ivar NotificationsCount:
13471
    :vartype NotificationsCount: UInt32
13472
    :ivar LatePublishRequestCount:
13473
    :vartype LatePublishRequestCount: UInt32
13474
    :ivar CurrentKeepAliveCount:
13475
    :vartype CurrentKeepAliveCount: UInt32
13476
    :ivar CurrentLifetimeCount:
13477
    :vartype CurrentLifetimeCount: UInt32
13478
    :ivar UnacknowledgedMessageCount:
13479
    :vartype UnacknowledgedMessageCount: UInt32
13480
    :ivar DiscardedMessageCount:
13481
    :vartype DiscardedMessageCount: UInt32
13482
    :ivar MonitoredItemCount:
13483
    :vartype MonitoredItemCount: UInt32
13484
    :ivar DisabledMonitoredItemCount:
13485
    :vartype DisabledMonitoredItemCount: UInt32
13486
    :ivar MonitoringQueueOverflowCount:
13487
    :vartype MonitoringQueueOverflowCount: UInt32
13488
    :ivar NextSequenceNumber:
13489
    :vartype NextSequenceNumber: UInt32
13490
    :ivar EventQueueOverFlowCount:
13491
    :vartype EventQueueOverFlowCount: UInt32
13492
    '''
13493 1
    def __init__(self, binary=None):
13494
        if binary is not None:
13495
            self._binary_init(binary)
13496
            self._freeze = True
13497
            return
13498
        self.SessionId = NodeId()
13499
        self.SubscriptionId = 0
13500
        self.Priority = 0
13501
        self.PublishingInterval = 0
13502
        self.MaxKeepAliveCount = 0
13503
        self.MaxLifetimeCount = 0
13504
        self.MaxNotificationsPerPublish = 0
13505
        self.PublishingEnabled = True
13506
        self.ModifyCount = 0
13507
        self.EnableCount = 0
13508
        self.DisableCount = 0
13509
        self.RepublishRequestCount = 0
13510
        self.RepublishMessageRequestCount = 0
13511
        self.RepublishMessageCount = 0
13512
        self.TransferRequestCount = 0
13513
        self.TransferredToAltClientCount = 0
13514
        self.TransferredToSameClientCount = 0
13515
        self.PublishRequestCount = 0
13516
        self.DataChangeNotificationsCount = 0
13517
        self.EventNotificationsCount = 0
13518
        self.NotificationsCount = 0
13519
        self.LatePublishRequestCount = 0
13520
        self.CurrentKeepAliveCount = 0
13521
        self.CurrentLifetimeCount = 0
13522
        self.UnacknowledgedMessageCount = 0
13523
        self.DiscardedMessageCount = 0
13524
        self.MonitoredItemCount = 0
13525
        self.DisabledMonitoredItemCount = 0
13526
        self.MonitoringQueueOverflowCount = 0
13527
        self.NextSequenceNumber = 0
13528
        self.EventQueueOverFlowCount = 0
13529
        self._freeze = True
13530
13531 1
    def to_binary(self):
13532
        packet = []
13533
        packet.append(self.SessionId.to_binary())
13534
        packet.append(uatype_UInt32.pack(self.SubscriptionId))
13535
        packet.append(uatype_Byte.pack(self.Priority))
13536
        packet.append(uatype_Double.pack(self.PublishingInterval))
13537
        packet.append(uatype_UInt32.pack(self.MaxKeepAliveCount))
13538
        packet.append(uatype_UInt32.pack(self.MaxLifetimeCount))
13539
        packet.append(uatype_UInt32.pack(self.MaxNotificationsPerPublish))
13540
        packet.append(uatype_Boolean.pack(self.PublishingEnabled))
13541
        packet.append(uatype_UInt32.pack(self.ModifyCount))
13542
        packet.append(uatype_UInt32.pack(self.EnableCount))
13543
        packet.append(uatype_UInt32.pack(self.DisableCount))
13544
        packet.append(uatype_UInt32.pack(self.RepublishRequestCount))
13545
        packet.append(uatype_UInt32.pack(self.RepublishMessageRequestCount))
13546
        packet.append(uatype_UInt32.pack(self.RepublishMessageCount))
13547
        packet.append(uatype_UInt32.pack(self.TransferRequestCount))
13548
        packet.append(uatype_UInt32.pack(self.TransferredToAltClientCount))
13549
        packet.append(uatype_UInt32.pack(self.TransferredToSameClientCount))
13550
        packet.append(uatype_UInt32.pack(self.PublishRequestCount))
13551
        packet.append(uatype_UInt32.pack(self.DataChangeNotificationsCount))
13552
        packet.append(uatype_UInt32.pack(self.EventNotificationsCount))
13553
        packet.append(uatype_UInt32.pack(self.NotificationsCount))
13554
        packet.append(uatype_UInt32.pack(self.LatePublishRequestCount))
13555
        packet.append(uatype_UInt32.pack(self.CurrentKeepAliveCount))
13556
        packet.append(uatype_UInt32.pack(self.CurrentLifetimeCount))
13557
        packet.append(uatype_UInt32.pack(self.UnacknowledgedMessageCount))
13558
        packet.append(uatype_UInt32.pack(self.DiscardedMessageCount))
13559
        packet.append(uatype_UInt32.pack(self.MonitoredItemCount))
13560
        packet.append(uatype_UInt32.pack(self.DisabledMonitoredItemCount))
13561
        packet.append(uatype_UInt32.pack(self.MonitoringQueueOverflowCount))
13562
        packet.append(uatype_UInt32.pack(self.NextSequenceNumber))
13563
        packet.append(uatype_UInt32.pack(self.EventQueueOverFlowCount))
13564
        return b''.join(packet)
13565
13566 1
    @staticmethod
13567
    def from_binary(data):
13568
        return SubscriptionDiagnosticsDataType(data)
13569
13570 1
    def _binary_init(self, data):
13571
        self.SessionId = NodeId.from_binary(data)
13572
        self.SubscriptionId = uatype_UInt32.unpack(data.read(4))[0]
13573
        self.Priority = uatype_Byte.unpack(data.read(1))[0]
13574
        self.PublishingInterval = uatype_Double.unpack(data.read(8))[0]
13575
        self.MaxKeepAliveCount = uatype_UInt32.unpack(data.read(4))[0]
13576
        self.MaxLifetimeCount = uatype_UInt32.unpack(data.read(4))[0]
13577
        self.MaxNotificationsPerPublish = uatype_UInt32.unpack(data.read(4))[0]
13578
        self.PublishingEnabled = uatype_Boolean.unpack(data.read(1))[0]
13579
        self.ModifyCount = uatype_UInt32.unpack(data.read(4))[0]
13580
        self.EnableCount = uatype_UInt32.unpack(data.read(4))[0]
13581
        self.DisableCount = uatype_UInt32.unpack(data.read(4))[0]
13582
        self.RepublishRequestCount = uatype_UInt32.unpack(data.read(4))[0]
13583
        self.RepublishMessageRequestCount = uatype_UInt32.unpack(data.read(4))[0]
13584
        self.RepublishMessageCount = uatype_UInt32.unpack(data.read(4))[0]
13585
        self.TransferRequestCount = uatype_UInt32.unpack(data.read(4))[0]
13586
        self.TransferredToAltClientCount = uatype_UInt32.unpack(data.read(4))[0]
13587
        self.TransferredToSameClientCount = uatype_UInt32.unpack(data.read(4))[0]
13588
        self.PublishRequestCount = uatype_UInt32.unpack(data.read(4))[0]
13589
        self.DataChangeNotificationsCount = uatype_UInt32.unpack(data.read(4))[0]
13590
        self.EventNotificationsCount = uatype_UInt32.unpack(data.read(4))[0]
13591
        self.NotificationsCount = uatype_UInt32.unpack(data.read(4))[0]
13592
        self.LatePublishRequestCount = uatype_UInt32.unpack(data.read(4))[0]
13593
        self.CurrentKeepAliveCount = uatype_UInt32.unpack(data.read(4))[0]
13594
        self.CurrentLifetimeCount = uatype_UInt32.unpack(data.read(4))[0]
13595
        self.UnacknowledgedMessageCount = uatype_UInt32.unpack(data.read(4))[0]
13596
        self.DiscardedMessageCount = uatype_UInt32.unpack(data.read(4))[0]
13597
        self.MonitoredItemCount = uatype_UInt32.unpack(data.read(4))[0]
13598
        self.DisabledMonitoredItemCount = uatype_UInt32.unpack(data.read(4))[0]
13599
        self.MonitoringQueueOverflowCount = uatype_UInt32.unpack(data.read(4))[0]
13600
        self.NextSequenceNumber = uatype_UInt32.unpack(data.read(4))[0]
13601
        self.EventQueueOverFlowCount = uatype_UInt32.unpack(data.read(4))[0]
13602
13603 1
    def __str__(self):
13604
        return 'SubscriptionDiagnosticsDataType(' + 'SessionId:' + str(self.SessionId) + ', ' + \
13605
               'SubscriptionId:' + str(self.SubscriptionId) + ', ' + \
13606
               'Priority:' + str(self.Priority) + ', ' + \
13607
               'PublishingInterval:' + str(self.PublishingInterval) + ', ' + \
13608
               'MaxKeepAliveCount:' + str(self.MaxKeepAliveCount) + ', ' + \
13609
               'MaxLifetimeCount:' + str(self.MaxLifetimeCount) + ', ' + \
13610
               'MaxNotificationsPerPublish:' + str(self.MaxNotificationsPerPublish) + ', ' + \
13611
               'PublishingEnabled:' + str(self.PublishingEnabled) + ', ' + \
13612
               'ModifyCount:' + str(self.ModifyCount) + ', ' + \
13613
               'EnableCount:' + str(self.EnableCount) + ', ' + \
13614
               'DisableCount:' + str(self.DisableCount) + ', ' + \
13615
               'RepublishRequestCount:' + str(self.RepublishRequestCount) + ', ' + \
13616
               'RepublishMessageRequestCount:' + str(self.RepublishMessageRequestCount) + ', ' + \
13617
               'RepublishMessageCount:' + str(self.RepublishMessageCount) + ', ' + \
13618
               'TransferRequestCount:' + str(self.TransferRequestCount) + ', ' + \
13619
               'TransferredToAltClientCount:' + str(self.TransferredToAltClientCount) + ', ' + \
13620
               'TransferredToSameClientCount:' + str(self.TransferredToSameClientCount) + ', ' + \
13621
               'PublishRequestCount:' + str(self.PublishRequestCount) + ', ' + \
13622
               'DataChangeNotificationsCount:' + str(self.DataChangeNotificationsCount) + ', ' + \
13623
               'EventNotificationsCount:' + str(self.EventNotificationsCount) + ', ' + \
13624
               'NotificationsCount:' + str(self.NotificationsCount) + ', ' + \
13625
               'LatePublishRequestCount:' + str(self.LatePublishRequestCount) + ', ' + \
13626
               'CurrentKeepAliveCount:' + str(self.CurrentKeepAliveCount) + ', ' + \
13627
               'CurrentLifetimeCount:' + str(self.CurrentLifetimeCount) + ', ' + \
13628
               'UnacknowledgedMessageCount:' + str(self.UnacknowledgedMessageCount) + ', ' + \
13629
               'DiscardedMessageCount:' + str(self.DiscardedMessageCount) + ', ' + \
13630
               'MonitoredItemCount:' + str(self.MonitoredItemCount) + ', ' + \
13631
               'DisabledMonitoredItemCount:' + str(self.DisabledMonitoredItemCount) + ', ' + \
13632
               'MonitoringQueueOverflowCount:' + str(self.MonitoringQueueOverflowCount) + ', ' + \
13633
               'NextSequenceNumber:' + str(self.NextSequenceNumber) + ', ' + \
13634
               'EventQueueOverFlowCount:' + str(self.EventQueueOverFlowCount) + ')'
13635
13636 1
    __repr__ = __str__
13637
13638
13639 1
class ModelChangeStructureDataType(FrozenClass):
13640
    '''
13641
    :ivar Affected:
13642
    :vartype Affected: NodeId
13643
    :ivar AffectedType:
13644
    :vartype AffectedType: NodeId
13645
    :ivar Verb:
13646
    :vartype Verb: Byte
13647
    '''
13648 1
    def __init__(self, binary=None):
13649
        if binary is not None:
13650
            self._binary_init(binary)
13651
            self._freeze = True
13652
            return
13653
        self.Affected = NodeId()
13654
        self.AffectedType = NodeId()
13655
        self.Verb = 0
13656
        self._freeze = True
13657
13658 1
    def to_binary(self):
13659
        packet = []
13660
        packet.append(self.Affected.to_binary())
13661
        packet.append(self.AffectedType.to_binary())
13662
        packet.append(uatype_Byte.pack(self.Verb))
13663
        return b''.join(packet)
13664
13665 1
    @staticmethod
13666
    def from_binary(data):
13667
        return ModelChangeStructureDataType(data)
13668
13669 1
    def _binary_init(self, data):
13670
        self.Affected = NodeId.from_binary(data)
13671
        self.AffectedType = NodeId.from_binary(data)
13672
        self.Verb = uatype_Byte.unpack(data.read(1))[0]
13673
13674 1
    def __str__(self):
13675
        return 'ModelChangeStructureDataType(' + 'Affected:' + str(self.Affected) + ', ' + \
13676
               'AffectedType:' + str(self.AffectedType) + ', ' + \
13677
               'Verb:' + str(self.Verb) + ')'
13678
13679 1
    __repr__ = __str__
13680
13681
13682 1
class SemanticChangeStructureDataType(FrozenClass):
13683
    '''
13684
    :ivar Affected:
13685
    :vartype Affected: NodeId
13686
    :ivar AffectedType:
13687
    :vartype AffectedType: NodeId
13688
    '''
13689 1
    def __init__(self, binary=None):
13690
        if binary is not None:
13691
            self._binary_init(binary)
13692
            self._freeze = True
13693
            return
13694
        self.Affected = NodeId()
13695
        self.AffectedType = NodeId()
13696
        self._freeze = True
13697
13698 1
    def to_binary(self):
13699
        packet = []
13700
        packet.append(self.Affected.to_binary())
13701
        packet.append(self.AffectedType.to_binary())
13702
        return b''.join(packet)
13703
13704 1
    @staticmethod
13705
    def from_binary(data):
13706
        return SemanticChangeStructureDataType(data)
13707
13708 1
    def _binary_init(self, data):
13709
        self.Affected = NodeId.from_binary(data)
13710
        self.AffectedType = NodeId.from_binary(data)
13711
13712 1
    def __str__(self):
13713
        return 'SemanticChangeStructureDataType(' + 'Affected:' + str(self.Affected) + ', ' + \
13714
               'AffectedType:' + str(self.AffectedType) + ')'
13715
13716 1
    __repr__ = __str__
13717
13718
13719 1
class Range(FrozenClass):
13720
    '''
13721
    :ivar Low:
13722
    :vartype Low: Double
13723
    :ivar High:
13724
    :vartype High: Double
13725
    '''
13726 1
    def __init__(self, binary=None):
13727
        if binary is not None:
13728
            self._binary_init(binary)
13729
            self._freeze = True
13730
            return
13731
        self.Low = 0
13732
        self.High = 0
13733
        self._freeze = True
13734
13735 1
    def to_binary(self):
13736
        packet = []
13737
        packet.append(uatype_Double.pack(self.Low))
13738
        packet.append(uatype_Double.pack(self.High))
13739
        return b''.join(packet)
13740
13741 1
    @staticmethod
13742
    def from_binary(data):
13743
        return Range(data)
13744
13745 1
    def _binary_init(self, data):
13746
        self.Low = uatype_Double.unpack(data.read(8))[0]
13747
        self.High = uatype_Double.unpack(data.read(8))[0]
13748
13749 1
    def __str__(self):
13750
        return 'Range(' + 'Low:' + str(self.Low) + ', ' + \
13751
               'High:' + str(self.High) + ')'
13752
13753 1
    __repr__ = __str__
13754
13755
13756 1
class EUInformation(FrozenClass):
13757
    '''
13758
    :ivar NamespaceUri:
13759
    :vartype NamespaceUri: String
13760
    :ivar UnitId:
13761
    :vartype UnitId: Int32
13762
    :ivar DisplayName:
13763
    :vartype DisplayName: LocalizedText
13764
    :ivar Description:
13765
    :vartype Description: LocalizedText
13766
    '''
13767 1
    def __init__(self, binary=None):
13768
        if binary is not None:
13769
            self._binary_init(binary)
13770
            self._freeze = True
13771
            return
13772
        self.NamespaceUri = ''
13773
        self.UnitId = 0
13774
        self.DisplayName = LocalizedText()
13775
        self.Description = LocalizedText()
13776
        self._freeze = True
13777
13778 1
    def to_binary(self):
13779
        packet = []
13780
        packet.append(pack_string(self.NamespaceUri))
13781
        packet.append(uatype_Int32.pack(self.UnitId))
13782
        packet.append(self.DisplayName.to_binary())
13783
        packet.append(self.Description.to_binary())
13784
        return b''.join(packet)
13785
13786 1
    @staticmethod
13787
    def from_binary(data):
13788
        return EUInformation(data)
13789
13790 1
    def _binary_init(self, data):
13791
        self.NamespaceUri = unpack_string(data)
13792
        self.UnitId = uatype_Int32.unpack(data.read(4))[0]
13793
        self.DisplayName = LocalizedText.from_binary(data)
13794
        self.Description = LocalizedText.from_binary(data)
13795
13796 1
    def __str__(self):
13797
        return 'EUInformation(' + 'NamespaceUri:' + str(self.NamespaceUri) + ', ' + \
13798
               'UnitId:' + str(self.UnitId) + ', ' + \
13799
               'DisplayName:' + str(self.DisplayName) + ', ' + \
13800
               'Description:' + str(self.Description) + ')'
13801
13802 1
    __repr__ = __str__
13803
13804
13805 1
class ComplexNumberType(FrozenClass):
13806
    '''
13807
    :ivar Real:
13808
    :vartype Real: Float
13809
    :ivar Imaginary:
13810
    :vartype Imaginary: Float
13811
    '''
13812 1
    def __init__(self, binary=None):
13813
        if binary is not None:
13814
            self._binary_init(binary)
13815
            self._freeze = True
13816
            return
13817
        self.Real = 0
13818
        self.Imaginary = 0
13819
        self._freeze = True
13820
13821 1
    def to_binary(self):
13822
        packet = []
13823
        packet.append(uatype_Float.pack(self.Real))
13824
        packet.append(uatype_Float.pack(self.Imaginary))
13825
        return b''.join(packet)
13826
13827 1
    @staticmethod
13828
    def from_binary(data):
13829
        return ComplexNumberType(data)
13830
13831 1
    def _binary_init(self, data):
13832
        self.Real = uatype_Float.unpack(data.read(4))[0]
13833
        self.Imaginary = uatype_Float.unpack(data.read(4))[0]
13834
13835 1
    def __str__(self):
13836
        return 'ComplexNumberType(' + 'Real:' + str(self.Real) + ', ' + \
13837
               'Imaginary:' + str(self.Imaginary) + ')'
13838
13839 1
    __repr__ = __str__
13840
13841
13842 1
class DoubleComplexNumberType(FrozenClass):
13843
    '''
13844
    :ivar Real:
13845
    :vartype Real: Double
13846
    :ivar Imaginary:
13847
    :vartype Imaginary: Double
13848
    '''
13849 1
    def __init__(self, binary=None):
13850
        if binary is not None:
13851
            self._binary_init(binary)
13852
            self._freeze = True
13853
            return
13854
        self.Real = 0
13855
        self.Imaginary = 0
13856
        self._freeze = True
13857
13858 1
    def to_binary(self):
13859
        packet = []
13860
        packet.append(uatype_Double.pack(self.Real))
13861
        packet.append(uatype_Double.pack(self.Imaginary))
13862
        return b''.join(packet)
13863
13864 1
    @staticmethod
13865
    def from_binary(data):
13866
        return DoubleComplexNumberType(data)
13867
13868 1
    def _binary_init(self, data):
13869
        self.Real = uatype_Double.unpack(data.read(8))[0]
13870
        self.Imaginary = uatype_Double.unpack(data.read(8))[0]
13871
13872 1
    def __str__(self):
13873
        return 'DoubleComplexNumberType(' + 'Real:' + str(self.Real) + ', ' + \
13874
               'Imaginary:' + str(self.Imaginary) + ')'
13875
13876 1
    __repr__ = __str__
13877
13878
13879 1
class AxisInformation(FrozenClass):
13880
    '''
13881
    :ivar EngineeringUnits:
13882
    :vartype EngineeringUnits: EUInformation
13883
    :ivar EURange:
13884
    :vartype EURange: Range
13885
    :ivar Title:
13886
    :vartype Title: LocalizedText
13887
    :ivar AxisScaleType:
13888
    :vartype AxisScaleType: AxisScaleEnumeration
13889
    :ivar AxisSteps:
13890
    :vartype AxisSteps: Double
13891
    '''
13892 1
    def __init__(self, binary=None):
13893
        if binary is not None:
13894
            self._binary_init(binary)
13895
            self._freeze = True
13896
            return
13897
        self.EngineeringUnits = EUInformation()
13898
        self.EURange = Range()
13899
        self.Title = LocalizedText()
13900
        self.AxisScaleType = AxisScaleEnumeration(0)
13901
        self.AxisSteps = []
13902
        self._freeze = True
13903
13904 1
    def to_binary(self):
13905
        packet = []
13906
        packet.append(self.EngineeringUnits.to_binary())
13907
        packet.append(self.EURange.to_binary())
13908
        packet.append(self.Title.to_binary())
13909
        packet.append(uatype_UInt32.pack(self.AxisScaleType.value))
13910
        packet.append(uatype_Int32.pack(len(self.AxisSteps)))
13911
        for fieldname in self.AxisSteps:
13912
            packet.append(uatype_Double.pack(fieldname))
13913
        return b''.join(packet)
13914
13915 1
    @staticmethod
13916
    def from_binary(data):
13917
        return AxisInformation(data)
13918
13919 1
    def _binary_init(self, data):
13920
        self.EngineeringUnits = EUInformation.from_binary(data)
13921
        self.EURange = Range.from_binary(data)
13922
        self.Title = LocalizedText.from_binary(data)
13923
        self.AxisScaleType = AxisScaleEnumeration(uatype_UInt32.unpack(data.read(4))[0])
13924
        self.AxisSteps = unpack_uatype_array('Double', data)
13925
13926 1
    def __str__(self):
13927
        return 'AxisInformation(' + 'EngineeringUnits:' + str(self.EngineeringUnits) + ', ' + \
13928
               'EURange:' + str(self.EURange) + ', ' + \
13929
               'Title:' + str(self.Title) + ', ' + \
13930
               'AxisScaleType:' + str(self.AxisScaleType) + ', ' + \
13931
               'AxisSteps:' + str(self.AxisSteps) + ')'
13932
13933 1
    __repr__ = __str__
13934
13935
13936 1
class XVType(FrozenClass):
13937
    '''
13938
    :ivar X:
13939
    :vartype X: Double
13940
    :ivar Value:
13941
    :vartype Value: Float
13942
    '''
13943 1
    def __init__(self, binary=None):
13944
        if binary is not None:
13945
            self._binary_init(binary)
13946
            self._freeze = True
13947
            return
13948
        self.X = 0
13949
        self.Value = 0
13950
        self._freeze = True
13951
13952 1
    def to_binary(self):
13953
        packet = []
13954
        packet.append(uatype_Double.pack(self.X))
13955
        packet.append(uatype_Float.pack(self.Value))
13956
        return b''.join(packet)
13957
13958 1
    @staticmethod
13959
    def from_binary(data):
13960
        return XVType(data)
13961
13962 1
    def _binary_init(self, data):
13963
        self.X = uatype_Double.unpack(data.read(8))[0]
13964
        self.Value = uatype_Float.unpack(data.read(4))[0]
13965
13966 1
    def __str__(self):
13967
        return 'XVType(' + 'X:' + str(self.X) + ', ' + \
13968
               'Value:' + str(self.Value) + ')'
13969
13970 1
    __repr__ = __str__
13971
13972
13973 1
class ProgramDiagnosticDataType(FrozenClass):
13974
    '''
13975
    :ivar CreateSessionId:
13976
    :vartype CreateSessionId: NodeId
13977
    :ivar CreateClientName:
13978
    :vartype CreateClientName: String
13979
    :ivar InvocationCreationTime:
13980
    :vartype InvocationCreationTime: DateTime
13981
    :ivar LastTransitionTime:
13982
    :vartype LastTransitionTime: DateTime
13983
    :ivar LastMethodCall:
13984
    :vartype LastMethodCall: String
13985
    :ivar LastMethodSessionId:
13986
    :vartype LastMethodSessionId: NodeId
13987
    :ivar LastMethodInputArguments:
13988
    :vartype LastMethodInputArguments: Argument
13989
    :ivar LastMethodOutputArguments:
13990
    :vartype LastMethodOutputArguments: Argument
13991
    :ivar LastMethodCallTime:
13992
    :vartype LastMethodCallTime: DateTime
13993
    :ivar LastMethodReturnStatus:
13994
    :vartype LastMethodReturnStatus: StatusResult
13995
    '''
13996 1
    def __init__(self, binary=None):
13997
        if binary is not None:
13998
            self._binary_init(binary)
13999
            self._freeze = True
14000
            return
14001
        self.CreateSessionId = NodeId()
14002
        self.CreateClientName = ''
14003
        self.InvocationCreationTime = datetime.now()
14004
        self.LastTransitionTime = datetime.now()
14005
        self.LastMethodCall = ''
14006
        self.LastMethodSessionId = NodeId()
14007
        self.LastMethodInputArguments = []
14008
        self.LastMethodOutputArguments = []
14009
        self.LastMethodCallTime = datetime.now()
14010
        self.LastMethodReturnStatus = StatusResult()
14011
        self._freeze = True
14012
14013 1
    def to_binary(self):
14014
        packet = []
14015
        packet.append(self.CreateSessionId.to_binary())
14016
        packet.append(pack_string(self.CreateClientName))
14017
        packet.append(pack_datetime(self.InvocationCreationTime))
14018
        packet.append(pack_datetime(self.LastTransitionTime))
14019
        packet.append(pack_string(self.LastMethodCall))
14020
        packet.append(self.LastMethodSessionId.to_binary())
14021
        packet.append(uatype_Int32.pack(len(self.LastMethodInputArguments)))
14022
        for fieldname in self.LastMethodInputArguments:
14023
            packet.append(fieldname.to_binary())
14024
        packet.append(uatype_Int32.pack(len(self.LastMethodOutputArguments)))
14025
        for fieldname in self.LastMethodOutputArguments:
14026
            packet.append(fieldname.to_binary())
14027
        packet.append(pack_datetime(self.LastMethodCallTime))
14028
        packet.append(self.LastMethodReturnStatus.to_binary())
14029
        return b''.join(packet)
14030
14031 1
    @staticmethod
14032
    def from_binary(data):
14033
        return ProgramDiagnosticDataType(data)
14034
14035 1
    def _binary_init(self, data):
14036
        self.CreateSessionId = NodeId.from_binary(data)
14037
        self.CreateClientName = unpack_string(data)
14038
        self.InvocationCreationTime = unpack_datetime(data)
14039
        self.LastTransitionTime = unpack_datetime(data)
14040
        self.LastMethodCall = unpack_string(data)
14041
        self.LastMethodSessionId = NodeId.from_binary(data)
14042
        length = uatype_Int32.unpack(data.read(4))[0]
14043
        array = []
14044
        if length != -1:
14045
            for _ in range(0, length):
14046
                array.append(Argument.from_binary(data))
14047
        self.LastMethodInputArguments = array
14048
        length = uatype_Int32.unpack(data.read(4))[0]
14049
        array = []
14050
        if length != -1:
14051
            for _ in range(0, length):
14052
                array.append(Argument.from_binary(data))
14053
        self.LastMethodOutputArguments = array
14054
        self.LastMethodCallTime = unpack_datetime(data)
14055
        self.LastMethodReturnStatus = StatusResult.from_binary(data)
14056
14057 1
    def __str__(self):
14058
        return 'ProgramDiagnosticDataType(' + 'CreateSessionId:' + str(self.CreateSessionId) + ', ' + \
14059
               'CreateClientName:' + str(self.CreateClientName) + ', ' + \
14060
               'InvocationCreationTime:' + str(self.InvocationCreationTime) + ', ' + \
14061
               'LastTransitionTime:' + str(self.LastTransitionTime) + ', ' + \
14062
               'LastMethodCall:' + str(self.LastMethodCall) + ', ' + \
14063
               'LastMethodSessionId:' + str(self.LastMethodSessionId) + ', ' + \
14064
               'LastMethodInputArguments:' + str(self.LastMethodInputArguments) + ', ' + \
14065
               'LastMethodOutputArguments:' + str(self.LastMethodOutputArguments) + ', ' + \
14066
               'LastMethodCallTime:' + str(self.LastMethodCallTime) + ', ' + \
14067
               'LastMethodReturnStatus:' + str(self.LastMethodReturnStatus) + ')'
14068
14069 1
    __repr__ = __str__
14070
14071
14072 1
class Annotation(FrozenClass):
14073
    '''
14074
    :ivar Message:
14075
    :vartype Message: String
14076
    :ivar UserName:
14077
    :vartype UserName: String
14078
    :ivar AnnotationTime:
14079
    :vartype AnnotationTime: DateTime
14080
    '''
14081 1
    def __init__(self, binary=None):
14082
        if binary is not None:
14083
            self._binary_init(binary)
14084
            self._freeze = True
14085
            return
14086
        self.Message = ''
14087
        self.UserName = ''
14088
        self.AnnotationTime = datetime.now()
14089
        self._freeze = True
14090
14091 1
    def to_binary(self):
14092
        packet = []
14093
        packet.append(pack_string(self.Message))
14094
        packet.append(pack_string(self.UserName))
14095
        packet.append(pack_datetime(self.AnnotationTime))
14096
        return b''.join(packet)
14097
14098 1
    @staticmethod
14099
    def from_binary(data):
14100
        return Annotation(data)
14101
14102 1
    def _binary_init(self, data):
14103
        self.Message = unpack_string(data)
14104
        self.UserName = unpack_string(data)
14105
        self.AnnotationTime = unpack_datetime(data)
14106
14107 1
    def __str__(self):
14108
        return 'Annotation(' + 'Message:' + str(self.Message) + ', ' + \
14109
               'UserName:' + str(self.UserName) + ', ' + \
14110
               'AnnotationTime:' + str(self.AnnotationTime) + ')'
14111
14112 1
    __repr__ = __str__
14113
14114
14115 1
ExtensionClasses = {
14116
    ObjectIds.TrustListDataType_Encoding_DefaultBinary: TrustListDataType,
14117
    ObjectIds.Argument_Encoding_DefaultBinary: Argument,
14118
    ObjectIds.EnumValueType_Encoding_DefaultBinary: EnumValueType,
14119
    ObjectIds.OptionSet_Encoding_DefaultBinary: OptionSet,
14120
    ObjectIds.Union_Encoding_DefaultBinary: Union,
14121
    ObjectIds.TimeZoneDataType_Encoding_DefaultBinary: TimeZoneDataType,
14122
    ObjectIds.ApplicationDescription_Encoding_DefaultBinary: ApplicationDescription,
14123
    ObjectIds.RequestHeader_Encoding_DefaultBinary: RequestHeader,
14124
    ObjectIds.ResponseHeader_Encoding_DefaultBinary: ResponseHeader,
14125
    ObjectIds.ServiceFault_Encoding_DefaultBinary: ServiceFault,
14126
    ObjectIds.FindServersRequest_Encoding_DefaultBinary: FindServersRequest,
14127
    ObjectIds.FindServersResponse_Encoding_DefaultBinary: FindServersResponse,
14128
    ObjectIds.ServerOnNetwork_Encoding_DefaultBinary: ServerOnNetwork,
14129
    ObjectIds.FindServersOnNetworkRequest_Encoding_DefaultBinary: FindServersOnNetworkRequest,
14130
    ObjectIds.FindServersOnNetworkResponse_Encoding_DefaultBinary: FindServersOnNetworkResponse,
14131
    ObjectIds.UserTokenPolicy_Encoding_DefaultBinary: UserTokenPolicy,
14132
    ObjectIds.EndpointDescription_Encoding_DefaultBinary: EndpointDescription,
14133
    ObjectIds.GetEndpointsRequest_Encoding_DefaultBinary: GetEndpointsRequest,
14134
    ObjectIds.GetEndpointsResponse_Encoding_DefaultBinary: GetEndpointsResponse,
14135
    ObjectIds.RegisteredServer_Encoding_DefaultBinary: RegisteredServer,
14136
    ObjectIds.RegisterServerRequest_Encoding_DefaultBinary: RegisterServerRequest,
14137
    ObjectIds.RegisterServerResponse_Encoding_DefaultBinary: RegisterServerResponse,
14138
    ObjectIds.DiscoveryConfiguration_Encoding_DefaultBinary: DiscoveryConfiguration,
14139
    ObjectIds.MdnsDiscoveryConfiguration_Encoding_DefaultBinary: MdnsDiscoveryConfiguration,
14140
    ObjectIds.RegisterServer2Request_Encoding_DefaultBinary: RegisterServer2Request,
14141
    ObjectIds.RegisterServer2Response_Encoding_DefaultBinary: RegisterServer2Response,
14142
    ObjectIds.ChannelSecurityToken_Encoding_DefaultBinary: ChannelSecurityToken,
14143
    ObjectIds.OpenSecureChannelRequest_Encoding_DefaultBinary: OpenSecureChannelRequest,
14144
    ObjectIds.OpenSecureChannelResponse_Encoding_DefaultBinary: OpenSecureChannelResponse,
14145
    ObjectIds.CloseSecureChannelRequest_Encoding_DefaultBinary: CloseSecureChannelRequest,
14146
    ObjectIds.CloseSecureChannelResponse_Encoding_DefaultBinary: CloseSecureChannelResponse,
14147
    ObjectIds.SignedSoftwareCertificate_Encoding_DefaultBinary: SignedSoftwareCertificate,
14148
    ObjectIds.SignatureData_Encoding_DefaultBinary: SignatureData,
14149
    ObjectIds.CreateSessionRequest_Encoding_DefaultBinary: CreateSessionRequest,
14150
    ObjectIds.CreateSessionResponse_Encoding_DefaultBinary: CreateSessionResponse,
14151
    ObjectIds.UserIdentityToken_Encoding_DefaultBinary: UserIdentityToken,
14152
    ObjectIds.AnonymousIdentityToken_Encoding_DefaultBinary: AnonymousIdentityToken,
14153
    ObjectIds.UserNameIdentityToken_Encoding_DefaultBinary: UserNameIdentityToken,
14154
    ObjectIds.X509IdentityToken_Encoding_DefaultBinary: X509IdentityToken,
14155
    ObjectIds.KerberosIdentityToken_Encoding_DefaultBinary: KerberosIdentityToken,
14156
    ObjectIds.IssuedIdentityToken_Encoding_DefaultBinary: IssuedIdentityToken,
14157
    ObjectIds.ActivateSessionRequest_Encoding_DefaultBinary: ActivateSessionRequest,
14158
    ObjectIds.ActivateSessionResponse_Encoding_DefaultBinary: ActivateSessionResponse,
14159
    ObjectIds.CloseSessionRequest_Encoding_DefaultBinary: CloseSessionRequest,
14160
    ObjectIds.CloseSessionResponse_Encoding_DefaultBinary: CloseSessionResponse,
14161
    ObjectIds.CancelRequest_Encoding_DefaultBinary: CancelRequest,
14162
    ObjectIds.CancelResponse_Encoding_DefaultBinary: CancelResponse,
14163
    ObjectIds.NodeAttributes_Encoding_DefaultBinary: NodeAttributes,
14164
    ObjectIds.ObjectAttributes_Encoding_DefaultBinary: ObjectAttributes,
14165
    ObjectIds.VariableAttributes_Encoding_DefaultBinary: VariableAttributes,
14166
    ObjectIds.MethodAttributes_Encoding_DefaultBinary: MethodAttributes,
14167
    ObjectIds.ObjectTypeAttributes_Encoding_DefaultBinary: ObjectTypeAttributes,
14168
    ObjectIds.VariableTypeAttributes_Encoding_DefaultBinary: VariableTypeAttributes,
14169
    ObjectIds.ReferenceTypeAttributes_Encoding_DefaultBinary: ReferenceTypeAttributes,
14170
    ObjectIds.DataTypeAttributes_Encoding_DefaultBinary: DataTypeAttributes,
14171
    ObjectIds.ViewAttributes_Encoding_DefaultBinary: ViewAttributes,
14172
    ObjectIds.AddNodesItem_Encoding_DefaultBinary: AddNodesItem,
14173
    ObjectIds.AddNodesResult_Encoding_DefaultBinary: AddNodesResult,
14174
    ObjectIds.AddNodesRequest_Encoding_DefaultBinary: AddNodesRequest,
14175
    ObjectIds.AddNodesResponse_Encoding_DefaultBinary: AddNodesResponse,
14176
    ObjectIds.AddReferencesItem_Encoding_DefaultBinary: AddReferencesItem,
14177
    ObjectIds.AddReferencesRequest_Encoding_DefaultBinary: AddReferencesRequest,
14178
    ObjectIds.AddReferencesResponse_Encoding_DefaultBinary: AddReferencesResponse,
14179
    ObjectIds.DeleteNodesItem_Encoding_DefaultBinary: DeleteNodesItem,
14180
    ObjectIds.DeleteNodesRequest_Encoding_DefaultBinary: DeleteNodesRequest,
14181
    ObjectIds.DeleteNodesResponse_Encoding_DefaultBinary: DeleteNodesResponse,
14182
    ObjectIds.DeleteReferencesItem_Encoding_DefaultBinary: DeleteReferencesItem,
14183
    ObjectIds.DeleteReferencesRequest_Encoding_DefaultBinary: DeleteReferencesRequest,
14184
    ObjectIds.DeleteReferencesResponse_Encoding_DefaultBinary: DeleteReferencesResponse,
14185
    ObjectIds.ViewDescription_Encoding_DefaultBinary: ViewDescription,
14186
    ObjectIds.BrowseDescription_Encoding_DefaultBinary: BrowseDescription,
14187
    ObjectIds.ReferenceDescription_Encoding_DefaultBinary: ReferenceDescription,
14188
    ObjectIds.BrowseResult_Encoding_DefaultBinary: BrowseResult,
14189
    ObjectIds.BrowseRequest_Encoding_DefaultBinary: BrowseRequest,
14190
    ObjectIds.BrowseResponse_Encoding_DefaultBinary: BrowseResponse,
14191
    ObjectIds.BrowseNextRequest_Encoding_DefaultBinary: BrowseNextRequest,
14192
    ObjectIds.BrowseNextResponse_Encoding_DefaultBinary: BrowseNextResponse,
14193
    ObjectIds.RelativePathElement_Encoding_DefaultBinary: RelativePathElement,
14194
    ObjectIds.RelativePath_Encoding_DefaultBinary: RelativePath,
14195
    ObjectIds.BrowsePath_Encoding_DefaultBinary: BrowsePath,
14196
    ObjectIds.BrowsePathTarget_Encoding_DefaultBinary: BrowsePathTarget,
14197
    ObjectIds.BrowsePathResult_Encoding_DefaultBinary: BrowsePathResult,
14198
    ObjectIds.TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultBinary: TranslateBrowsePathsToNodeIdsRequest,
14199
    ObjectIds.TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultBinary: TranslateBrowsePathsToNodeIdsResponse,
14200
    ObjectIds.RegisterNodesRequest_Encoding_DefaultBinary: RegisterNodesRequest,
14201
    ObjectIds.RegisterNodesResponse_Encoding_DefaultBinary: RegisterNodesResponse,
14202
    ObjectIds.UnregisterNodesRequest_Encoding_DefaultBinary: UnregisterNodesRequest,
14203
    ObjectIds.UnregisterNodesResponse_Encoding_DefaultBinary: UnregisterNodesResponse,
14204
    ObjectIds.EndpointConfiguration_Encoding_DefaultBinary: EndpointConfiguration,
14205
    ObjectIds.SupportedProfile_Encoding_DefaultBinary: SupportedProfile,
14206
    ObjectIds.SoftwareCertificate_Encoding_DefaultBinary: SoftwareCertificate,
14207
    ObjectIds.QueryDataDescription_Encoding_DefaultBinary: QueryDataDescription,
14208
    ObjectIds.NodeTypeDescription_Encoding_DefaultBinary: NodeTypeDescription,
14209
    ObjectIds.QueryDataSet_Encoding_DefaultBinary: QueryDataSet,
14210
    ObjectIds.NodeReference_Encoding_DefaultBinary: NodeReference,
14211
    ObjectIds.ContentFilterElement_Encoding_DefaultBinary: ContentFilterElement,
14212
    ObjectIds.ContentFilter_Encoding_DefaultBinary: ContentFilter,
14213
    ObjectIds.ElementOperand_Encoding_DefaultBinary: ElementOperand,
14214
    ObjectIds.LiteralOperand_Encoding_DefaultBinary: LiteralOperand,
14215
    ObjectIds.AttributeOperand_Encoding_DefaultBinary: AttributeOperand,
14216
    ObjectIds.SimpleAttributeOperand_Encoding_DefaultBinary: SimpleAttributeOperand,
14217
    ObjectIds.ContentFilterElementResult_Encoding_DefaultBinary: ContentFilterElementResult,
14218
    ObjectIds.ContentFilterResult_Encoding_DefaultBinary: ContentFilterResult,
14219
    ObjectIds.ParsingResult_Encoding_DefaultBinary: ParsingResult,
14220
    ObjectIds.QueryFirstRequest_Encoding_DefaultBinary: QueryFirstRequest,
14221
    ObjectIds.QueryFirstResponse_Encoding_DefaultBinary: QueryFirstResponse,
14222
    ObjectIds.QueryNextRequest_Encoding_DefaultBinary: QueryNextRequest,
14223
    ObjectIds.QueryNextResponse_Encoding_DefaultBinary: QueryNextResponse,
14224
    ObjectIds.ReadValueId_Encoding_DefaultBinary: ReadValueId,
14225
    ObjectIds.ReadRequest_Encoding_DefaultBinary: ReadRequest,
14226
    ObjectIds.ReadResponse_Encoding_DefaultBinary: ReadResponse,
14227
    ObjectIds.HistoryReadValueId_Encoding_DefaultBinary: HistoryReadValueId,
14228
    ObjectIds.HistoryReadResult_Encoding_DefaultBinary: HistoryReadResult,
14229
    ObjectIds.HistoryReadDetails_Encoding_DefaultBinary: HistoryReadDetails,
14230
    ObjectIds.ReadEventDetails_Encoding_DefaultBinary: ReadEventDetails,
14231
    ObjectIds.ReadRawModifiedDetails_Encoding_DefaultBinary: ReadRawModifiedDetails,
14232
    ObjectIds.ReadProcessedDetails_Encoding_DefaultBinary: ReadProcessedDetails,
14233
    ObjectIds.ReadAtTimeDetails_Encoding_DefaultBinary: ReadAtTimeDetails,
14234
    ObjectIds.HistoryData_Encoding_DefaultBinary: HistoryData,
14235
    ObjectIds.ModificationInfo_Encoding_DefaultBinary: ModificationInfo,
14236
    ObjectIds.HistoryModifiedData_Encoding_DefaultBinary: HistoryModifiedData,
14237
    ObjectIds.HistoryEvent_Encoding_DefaultBinary: HistoryEvent,
14238
    ObjectIds.HistoryReadRequest_Encoding_DefaultBinary: HistoryReadRequest,
14239
    ObjectIds.HistoryReadResponse_Encoding_DefaultBinary: HistoryReadResponse,
14240
    ObjectIds.WriteValue_Encoding_DefaultBinary: WriteValue,
14241
    ObjectIds.WriteRequest_Encoding_DefaultBinary: WriteRequest,
14242
    ObjectIds.WriteResponse_Encoding_DefaultBinary: WriteResponse,
14243
    ObjectIds.HistoryUpdateDetails_Encoding_DefaultBinary: HistoryUpdateDetails,
14244
    ObjectIds.UpdateDataDetails_Encoding_DefaultBinary: UpdateDataDetails,
14245
    ObjectIds.UpdateStructureDataDetails_Encoding_DefaultBinary: UpdateStructureDataDetails,
14246
    ObjectIds.UpdateEventDetails_Encoding_DefaultBinary: UpdateEventDetails,
14247
    ObjectIds.DeleteRawModifiedDetails_Encoding_DefaultBinary: DeleteRawModifiedDetails,
14248
    ObjectIds.DeleteAtTimeDetails_Encoding_DefaultBinary: DeleteAtTimeDetails,
14249
    ObjectIds.DeleteEventDetails_Encoding_DefaultBinary: DeleteEventDetails,
14250
    ObjectIds.HistoryUpdateResult_Encoding_DefaultBinary: HistoryUpdateResult,
14251
    ObjectIds.HistoryUpdateRequest_Encoding_DefaultBinary: HistoryUpdateRequest,
14252
    ObjectIds.HistoryUpdateResponse_Encoding_DefaultBinary: HistoryUpdateResponse,
14253
    ObjectIds.CallMethodRequest_Encoding_DefaultBinary: CallMethodRequest,
14254
    ObjectIds.CallMethodResult_Encoding_DefaultBinary: CallMethodResult,
14255
    ObjectIds.CallRequest_Encoding_DefaultBinary: CallRequest,
14256
    ObjectIds.CallResponse_Encoding_DefaultBinary: CallResponse,
14257
    ObjectIds.MonitoringFilter_Encoding_DefaultBinary: MonitoringFilter,
14258
    ObjectIds.DataChangeFilter_Encoding_DefaultBinary: DataChangeFilter,
14259
    ObjectIds.EventFilter_Encoding_DefaultBinary: EventFilter,
14260
    ObjectIds.AggregateConfiguration_Encoding_DefaultBinary: AggregateConfiguration,
14261
    ObjectIds.AggregateFilter_Encoding_DefaultBinary: AggregateFilter,
14262
    ObjectIds.MonitoringFilterResult_Encoding_DefaultBinary: MonitoringFilterResult,
14263
    ObjectIds.EventFilterResult_Encoding_DefaultBinary: EventFilterResult,
14264
    ObjectIds.AggregateFilterResult_Encoding_DefaultBinary: AggregateFilterResult,
14265
    ObjectIds.MonitoringParameters_Encoding_DefaultBinary: MonitoringParameters,
14266
    ObjectIds.MonitoredItemCreateRequest_Encoding_DefaultBinary: MonitoredItemCreateRequest,
14267
    ObjectIds.MonitoredItemCreateResult_Encoding_DefaultBinary: MonitoredItemCreateResult,
14268
    ObjectIds.CreateMonitoredItemsRequest_Encoding_DefaultBinary: CreateMonitoredItemsRequest,
14269
    ObjectIds.CreateMonitoredItemsResponse_Encoding_DefaultBinary: CreateMonitoredItemsResponse,
14270
    ObjectIds.MonitoredItemModifyRequest_Encoding_DefaultBinary: MonitoredItemModifyRequest,
14271
    ObjectIds.MonitoredItemModifyResult_Encoding_DefaultBinary: MonitoredItemModifyResult,
14272
    ObjectIds.ModifyMonitoredItemsRequest_Encoding_DefaultBinary: ModifyMonitoredItemsRequest,
14273
    ObjectIds.ModifyMonitoredItemsResponse_Encoding_DefaultBinary: ModifyMonitoredItemsResponse,
14274
    ObjectIds.SetMonitoringModeRequest_Encoding_DefaultBinary: SetMonitoringModeRequest,
14275
    ObjectIds.SetMonitoringModeResponse_Encoding_DefaultBinary: SetMonitoringModeResponse,
14276
    ObjectIds.SetTriggeringRequest_Encoding_DefaultBinary: SetTriggeringRequest,
14277
    ObjectIds.SetTriggeringResponse_Encoding_DefaultBinary: SetTriggeringResponse,
14278
    ObjectIds.DeleteMonitoredItemsRequest_Encoding_DefaultBinary: DeleteMonitoredItemsRequest,
14279
    ObjectIds.DeleteMonitoredItemsResponse_Encoding_DefaultBinary: DeleteMonitoredItemsResponse,
14280
    ObjectIds.CreateSubscriptionRequest_Encoding_DefaultBinary: CreateSubscriptionRequest,
14281
    ObjectIds.CreateSubscriptionResponse_Encoding_DefaultBinary: CreateSubscriptionResponse,
14282
    ObjectIds.ModifySubscriptionRequest_Encoding_DefaultBinary: ModifySubscriptionRequest,
14283
    ObjectIds.ModifySubscriptionResponse_Encoding_DefaultBinary: ModifySubscriptionResponse,
14284
    ObjectIds.SetPublishingModeRequest_Encoding_DefaultBinary: SetPublishingModeRequest,
14285
    ObjectIds.SetPublishingModeResponse_Encoding_DefaultBinary: SetPublishingModeResponse,
14286
    ObjectIds.NotificationMessage_Encoding_DefaultBinary: NotificationMessage,
14287
    ObjectIds.NotificationData_Encoding_DefaultBinary: NotificationData,
14288
    ObjectIds.DataChangeNotification_Encoding_DefaultBinary: DataChangeNotification,
14289
    ObjectIds.MonitoredItemNotification_Encoding_DefaultBinary: MonitoredItemNotification,
14290
    ObjectIds.EventNotificationList_Encoding_DefaultBinary: EventNotificationList,
14291
    ObjectIds.EventFieldList_Encoding_DefaultBinary: EventFieldList,
14292
    ObjectIds.HistoryEventFieldList_Encoding_DefaultBinary: HistoryEventFieldList,
14293
    ObjectIds.StatusChangeNotification_Encoding_DefaultBinary: StatusChangeNotification,
14294
    ObjectIds.SubscriptionAcknowledgement_Encoding_DefaultBinary: SubscriptionAcknowledgement,
14295
    ObjectIds.PublishRequest_Encoding_DefaultBinary: PublishRequest,
14296
    ObjectIds.PublishResponse_Encoding_DefaultBinary: PublishResponse,
14297
    ObjectIds.RepublishRequest_Encoding_DefaultBinary: RepublishRequest,
14298
    ObjectIds.RepublishResponse_Encoding_DefaultBinary: RepublishResponse,
14299
    ObjectIds.TransferResult_Encoding_DefaultBinary: TransferResult,
14300
    ObjectIds.TransferSubscriptionsRequest_Encoding_DefaultBinary: TransferSubscriptionsRequest,
14301
    ObjectIds.TransferSubscriptionsResponse_Encoding_DefaultBinary: TransferSubscriptionsResponse,
14302
    ObjectIds.DeleteSubscriptionsRequest_Encoding_DefaultBinary: DeleteSubscriptionsRequest,
14303
    ObjectIds.DeleteSubscriptionsResponse_Encoding_DefaultBinary: DeleteSubscriptionsResponse,
14304
    ObjectIds.BuildInfo_Encoding_DefaultBinary: BuildInfo,
14305
    ObjectIds.RedundantServerDataType_Encoding_DefaultBinary: RedundantServerDataType,
14306
    ObjectIds.EndpointUrlListDataType_Encoding_DefaultBinary: EndpointUrlListDataType,
14307
    ObjectIds.NetworkGroupDataType_Encoding_DefaultBinary: NetworkGroupDataType,
14308
    ObjectIds.SamplingIntervalDiagnosticsDataType_Encoding_DefaultBinary: SamplingIntervalDiagnosticsDataType,
14309
    ObjectIds.ServerDiagnosticsSummaryDataType_Encoding_DefaultBinary: ServerDiagnosticsSummaryDataType,
14310
    ObjectIds.ServerStatusDataType_Encoding_DefaultBinary: ServerStatusDataType,
14311
    ObjectIds.SessionDiagnosticsDataType_Encoding_DefaultBinary: SessionDiagnosticsDataType,
14312
    ObjectIds.SessionSecurityDiagnosticsDataType_Encoding_DefaultBinary: SessionSecurityDiagnosticsDataType,
14313
    ObjectIds.ServiceCounterDataType_Encoding_DefaultBinary: ServiceCounterDataType,
14314
    ObjectIds.StatusResult_Encoding_DefaultBinary: StatusResult,
14315
    ObjectIds.SubscriptionDiagnosticsDataType_Encoding_DefaultBinary: SubscriptionDiagnosticsDataType,
14316
    ObjectIds.ModelChangeStructureDataType_Encoding_DefaultBinary: ModelChangeStructureDataType,
14317
    ObjectIds.SemanticChangeStructureDataType_Encoding_DefaultBinary: SemanticChangeStructureDataType,
14318
    ObjectIds.Range_Encoding_DefaultBinary: Range,
14319
    ObjectIds.EUInformation_Encoding_DefaultBinary: EUInformation,
14320
    ObjectIds.ComplexNumberType_Encoding_DefaultBinary: ComplexNumberType,
14321
    ObjectIds.DoubleComplexNumberType_Encoding_DefaultBinary: DoubleComplexNumberType,
14322
    ObjectIds.AxisInformation_Encoding_DefaultBinary: AxisInformation,
14323
    ObjectIds.XVType_Encoding_DefaultBinary: XVType,
14324
    ObjectIds.ProgramDiagnosticDataType_Encoding_DefaultBinary: ProgramDiagnosticDataType,
14325
    ObjectIds.Annotation_Encoding_DefaultBinary: Annotation,
14326
}
14327
14328
14329 1
def extensionobject_from_binary(data):
14330
    """
14331
    Convert binary-coded ExtensionObject to a Python object.
14332
    Returns an object, or None if TypeId is zero
14333
    """
14334 1
    TypeId = NodeId.from_binary(data)
14335 1
    Encoding = ord(data.read(1))
14336 1
    body = None
14337 1
    if Encoding & (1 << 0):
14338 1
        length = uatype_Int32.unpack(data.read(4))[0]
14339 1
        if length < 1:
14340
            body = Buffer(b"")
14341
        else:
14342 1
            body = data.copy(length)
14343 1
            data.skip(length)
14344 1
    if TypeId.Identifier == 0:
14345 1
        return None
14346 1
    elif TypeId.Identifier not in ExtensionClasses:
14347
        raise UAError("unknown ExtensionObject Type: {}".format(TypeId))
14348 1
    klass = ExtensionClasses[TypeId.Identifier]
14349 1
    if body is None:
14350
        raise UAError("parsing ExtensionObject {} without data".format(klass.__name__))
14351 1
    return klass.from_binary(body)
14352
14353
14354 1
def extensionobject_to_binary(obj):
14355
    """
14356
    Convert Python object to binary-coded ExtensionObject.
14357
    If obj is None, convert to empty ExtensionObject (TypeId = 0, no Body).
14358
    Returns a binary string
14359
    """
14360 1
    TypeId = NodeId()
14361 1
    Encoding = 0
14362 1
    Body = None
14363 1
    if obj is not None:
14364 1
        TypeId = FourByteNodeId(getattr(ObjectIds, "{}_Encoding_DefaultBinary".format(obj.__class__.__name__)))
14365 1
        Encoding |= (1 << 0)
14366 1
        Body = obj.to_binary()
14367 1
    packet = []
14368 1
    packet.append(TypeId.to_binary())
14369 1
    packet.append(uatype_UInt8.pack(Encoding))
14370 1
    if Body:
14371 1
        packet.append(pack_bytes(Body))
14372
    return b''.join(packet)
14373