Completed
Push — master ( e443b4...ada17a )
by Olivier
03:01
created

opcua.AddReferencesResponse   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Test Coverage

Coverage 17.65%
Metric Value
wmc 10
dl 0
loc 54
ccs 6
cts 34
cp 0.1765
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A to_binary() 0 11 3
B from_binary() 0 14 5
A __str__() 0 5 1
A __init__() 0 6 1
1
'''
2
Autogenerate code from xml spec
3
'''
4
5 1
from datetime import datetime
6
7 1
from opcua.uatypes import *
8 1
from opcua.object_ids import ObjectIds
9
10
11
12 1
class OpenFileMode(object):
13
    '''
14
    :ivar Read: 
15
    :vartype Read: 1 
16
    :ivar Write: 
17
    :vartype Write: 2 
18
    :ivar EraseExisiting: 
19
    :vartype EraseExisiting: 4 
20
    :ivar Append: 
21
    :vartype Append: 8 
22
    '''
23 1
    Read = 1
24 1
    Write = 2
25 1
    EraseExisiting = 4
26 1
    Append = 8
27
28 1
class IdType(object):
29
    '''
30
    The type of identifier used in a node id.
31
    
32
    :ivar Numeric: 
33
    :vartype Numeric: 0 
34
    :ivar String: 
35
    :vartype String: 1 
36
    :ivar Guid: 
37
    :vartype Guid: 2 
38
    :ivar Opaque: 
39
    :vartype Opaque: 3 
40
    '''
41 1
    Numeric = 0
42 1
    String = 1
43 1
    Guid = 2
44 1
    Opaque = 3
45
46 1
class NodeClass(object):
47
    '''
48
    A mask specifying the class of the node.
49
    
50
    :ivar Unspecified: 
51
    :vartype Unspecified: 0 
52
    :ivar Object: 
53
    :vartype Object: 1 
54
    :ivar Variable: 
55
    :vartype Variable: 2 
56
    :ivar Method: 
57
    :vartype Method: 4 
58
    :ivar ObjectType: 
59
    :vartype ObjectType: 8 
60
    :ivar VariableType: 
61
    :vartype VariableType: 16 
62
    :ivar ReferenceType: 
63
    :vartype ReferenceType: 32 
64
    :ivar DataType: 
65
    :vartype DataType: 64 
66
    :ivar View: 
67
    :vartype View: 128 
68
    '''
69 1
    Unspecified = 0
70 1
    Object = 1
71 1
    Variable = 2
72 1
    Method = 4
73 1
    ObjectType = 8
74 1
    VariableType = 16
75 1
    ReferenceType = 32
76 1
    DataType = 64
77 1
    View = 128
78
79 1
class ApplicationType(object):
80
    '''
81
    The types of applications.
82
    
83
    :ivar Server: 
84
    :vartype Server: 0 
85
    :ivar Client: 
86
    :vartype Client: 1 
87
    :ivar ClientAndServer: 
88
    :vartype ClientAndServer: 2 
89
    :ivar DiscoveryServer: 
90
    :vartype DiscoveryServer: 3 
91
    '''
92 1
    Server = 0
93 1
    Client = 1
94 1
    ClientAndServer = 2
95 1
    DiscoveryServer = 3
96
97 1
class MessageSecurityMode(object):
98
    '''
99
    The type of security to use on a message.
100
    
101
    :ivar Invalid: 
102
    :vartype Invalid: 0 
103
    :ivar None_: 
104
    :vartype None_: 1 
105
    :ivar Sign: 
106
    :vartype Sign: 2 
107
    :ivar SignAndEncrypt: 
108
    :vartype SignAndEncrypt: 3 
109
    '''
110 1
    Invalid = 0
111 1
    None_ = 1
112 1
    Sign = 2
113 1
    SignAndEncrypt = 3
114
115 1
class UserTokenType(object):
116
    '''
117
    The possible user token types.
118
    
119
    :ivar Anonymous: 
120
    :vartype Anonymous: 0 
121
    :ivar UserName: 
122
    :vartype UserName: 1 
123
    :ivar Certificate: 
124
    :vartype Certificate: 2 
125
    :ivar IssuedToken: 
126
    :vartype IssuedToken: 3 
127
    '''
128 1
    Anonymous = 0
129 1
    UserName = 1
130 1
    Certificate = 2
131 1
    IssuedToken = 3
132
133 1
class SecurityTokenRequestType(object):
134
    '''
135
    Indicates whether a token if being created or renewed.
136
    
137
    :ivar Issue: 
138
    :vartype Issue: 0 
139
    :ivar Renew: 
140
    :vartype Renew: 1 
141
    '''
142 1
    Issue = 0
143 1
    Renew = 1
144
145 1
class NodeAttributesMask(object):
146
    '''
147
    The bits used to specify default attributes for a new node.
148
    
149
    :ivar None_: 
150
    :vartype None_: 0 
151
    :ivar AccessLevel: 
152
    :vartype AccessLevel: 1 
153
    :ivar ArrayDimensions: 
154
    :vartype ArrayDimensions: 2 
155
    :ivar BrowseName: 
156
    :vartype BrowseName: 4 
157
    :ivar ContainsNoLoops: 
158
    :vartype ContainsNoLoops: 8 
159
    :ivar DataType: 
160
    :vartype DataType: 16 
161
    :ivar Description: 
162
    :vartype Description: 32 
163
    :ivar DisplayName: 
164
    :vartype DisplayName: 64 
165
    :ivar EventNotifier: 
166
    :vartype EventNotifier: 128 
167
    :ivar Executable: 
168
    :vartype Executable: 256 
169
    :ivar Historizing: 
170
    :vartype Historizing: 512 
171
    :ivar InverseName: 
172
    :vartype InverseName: 1024 
173
    :ivar IsAbstract: 
174
    :vartype IsAbstract: 2048 
175
    :ivar MinimumSamplingInterval: 
176
    :vartype MinimumSamplingInterval: 4096 
177
    :ivar NodeClass: 
178
    :vartype NodeClass: 8192 
179
    :ivar NodeId: 
180
    :vartype NodeId: 16384 
181
    :ivar Symmetric: 
182
    :vartype Symmetric: 32768 
183
    :ivar UserAccessLevel: 
184
    :vartype UserAccessLevel: 65536 
185
    :ivar UserExecutable: 
186
    :vartype UserExecutable: 131072 
187
    :ivar UserWriteMask: 
188
    :vartype UserWriteMask: 262144 
189
    :ivar ValueRank: 
190
    :vartype ValueRank: 524288 
191
    :ivar WriteMask: 
192
    :vartype WriteMask: 1048576 
193
    :ivar Value: 
194
    :vartype Value: 2097152 
195
    :ivar All: 
196
    :vartype All: 4194303 
197
    :ivar BaseNode: 
198
    :vartype BaseNode: 1335396 
199
    :ivar Object: 
200
    :vartype Object: 1335524 
201
    :ivar ObjectTypeOrDataType: 
202
    :vartype ObjectTypeOrDataType: 1337444 
203
    :ivar Variable: 
204
    :vartype Variable: 4026999 
205
    :ivar VariableType: 
206
    :vartype VariableType: 3958902 
207
    :ivar Method: 
208
    :vartype Method: 1466724 
209
    :ivar ReferenceType: 
210
    :vartype ReferenceType: 1371236 
211
    :ivar View: 
212
    :vartype View: 1335532 
213
    '''
214 1
    None_ = 0
215 1
    AccessLevel = 1
216 1
    ArrayDimensions = 2
217 1
    BrowseName = 4
218 1
    ContainsNoLoops = 8
219 1
    DataType = 16
220 1
    Description = 32
221 1
    DisplayName = 64
222 1
    EventNotifier = 128
223 1
    Executable = 256
224 1
    Historizing = 512
225 1
    InverseName = 1024
226 1
    IsAbstract = 2048
227 1
    MinimumSamplingInterval = 4096
228 1
    NodeClass = 8192
229 1
    NodeId = 16384
230 1
    Symmetric = 32768
231 1
    UserAccessLevel = 65536
232 1
    UserExecutable = 131072
233 1
    UserWriteMask = 262144
234 1
    ValueRank = 524288
235 1
    WriteMask = 1048576
236 1
    Value = 2097152
237 1
    All = 4194303
238 1
    BaseNode = 1335396
239 1
    Object = 1335524
240 1
    ObjectTypeOrDataType = 1337444
241 1
    Variable = 4026999
242 1
    VariableType = 3958902
243 1
    Method = 1466724
244 1
    ReferenceType = 1371236
245 1
    View = 1335532
246
247 1
class AttributeWriteMask(object):
248
    '''
249
    Define bits used to indicate which attributes are writeable.
250
    
251
    :ivar None_: 
252
    :vartype None_: 0 
253
    :ivar AccessLevel: 
254
    :vartype AccessLevel: 1 
255
    :ivar ArrayDimensions: 
256
    :vartype ArrayDimensions: 2 
257
    :ivar BrowseName: 
258
    :vartype BrowseName: 4 
259
    :ivar ContainsNoLoops: 
260
    :vartype ContainsNoLoops: 8 
261
    :ivar DataType: 
262
    :vartype DataType: 16 
263
    :ivar Description: 
264
    :vartype Description: 32 
265
    :ivar DisplayName: 
266
    :vartype DisplayName: 64 
267
    :ivar EventNotifier: 
268
    :vartype EventNotifier: 128 
269
    :ivar Executable: 
270
    :vartype Executable: 256 
271
    :ivar Historizing: 
272
    :vartype Historizing: 512 
273
    :ivar InverseName: 
274
    :vartype InverseName: 1024 
275
    :ivar IsAbstract: 
276
    :vartype IsAbstract: 2048 
277
    :ivar MinimumSamplingInterval: 
278
    :vartype MinimumSamplingInterval: 4096 
279
    :ivar NodeClass: 
280
    :vartype NodeClass: 8192 
281
    :ivar NodeId: 
282
    :vartype NodeId: 16384 
283
    :ivar Symmetric: 
284
    :vartype Symmetric: 32768 
285
    :ivar UserAccessLevel: 
286
    :vartype UserAccessLevel: 65536 
287
    :ivar UserExecutable: 
288
    :vartype UserExecutable: 131072 
289
    :ivar UserWriteMask: 
290
    :vartype UserWriteMask: 262144 
291
    :ivar ValueRank: 
292
    :vartype ValueRank: 524288 
293
    :ivar WriteMask: 
294
    :vartype WriteMask: 1048576 
295
    :ivar ValueForVariableType: 
296
    :vartype ValueForVariableType: 2097152 
297
    '''
298 1
    None_ = 0
299 1
    AccessLevel = 1
300 1
    ArrayDimensions = 2
301 1
    BrowseName = 4
302 1
    ContainsNoLoops = 8
303 1
    DataType = 16
304 1
    Description = 32
305 1
    DisplayName = 64
306 1
    EventNotifier = 128
307 1
    Executable = 256
308 1
    Historizing = 512
309 1
    InverseName = 1024
310 1
    IsAbstract = 2048
311 1
    MinimumSamplingInterval = 4096
312 1
    NodeClass = 8192
313 1
    NodeId = 16384
314 1
    Symmetric = 32768
315 1
    UserAccessLevel = 65536
316 1
    UserExecutable = 131072
317 1
    UserWriteMask = 262144
318 1
    ValueRank = 524288
319 1
    WriteMask = 1048576
320 1
    ValueForVariableType = 2097152
321
322 1
class BrowseDirection(object):
323
    '''
324
    The directions of the references to return.
325
    
326
    :ivar Forward: 
327
    :vartype Forward: 0 
328
    :ivar Inverse: 
329
    :vartype Inverse: 1 
330
    :ivar Both: 
331
    :vartype Both: 2 
332
    '''
333 1
    Forward = 0
334 1
    Inverse = 1
335 1
    Both = 2
336
337 1
class BrowseResultMask(object):
338
    '''
339
    A bit mask which specifies what should be returned in a browse response.
340
    
341
    :ivar None_: 
342
    :vartype None_: 0 
343
    :ivar ReferenceTypeId: 
344
    :vartype ReferenceTypeId: 1 
345
    :ivar IsForward: 
346
    :vartype IsForward: 2 
347
    :ivar NodeClass: 
348
    :vartype NodeClass: 4 
349
    :ivar BrowseName: 
350
    :vartype BrowseName: 8 
351
    :ivar DisplayName: 
352
    :vartype DisplayName: 16 
353
    :ivar TypeDefinition: 
354
    :vartype TypeDefinition: 32 
355
    :ivar All: 
356
    :vartype All: 63 
357
    :ivar ReferenceTypeInfo: 
358
    :vartype ReferenceTypeInfo: 3 
359
    :ivar TargetInfo: 
360
    :vartype TargetInfo: 60 
361
    '''
362 1
    None_ = 0
363 1
    ReferenceTypeId = 1
364 1
    IsForward = 2
365 1
    NodeClass = 4
366 1
    BrowseName = 8
367 1
    DisplayName = 16
368 1
    TypeDefinition = 32
369 1
    All = 63
370 1
    ReferenceTypeInfo = 3
371 1
    TargetInfo = 60
372
373 1
class ComplianceLevel(object):
374
    '''
375
    :ivar Untested: 
376
    :vartype Untested: 0 
377
    :ivar Partial: 
378
    :vartype Partial: 1 
379
    :ivar SelfTested: 
380
    :vartype SelfTested: 2 
381
    :ivar Certified: 
382
    :vartype Certified: 3 
383
    '''
384 1
    Untested = 0
385 1
    Partial = 1
386 1
    SelfTested = 2
387 1
    Certified = 3
388
389 1
class FilterOperator(object):
390
    '''
391
    :ivar Equals: 
392
    :vartype Equals: 0 
393
    :ivar IsNull: 
394
    :vartype IsNull: 1 
395
    :ivar GreaterThan: 
396
    :vartype GreaterThan: 2 
397
    :ivar LessThan: 
398
    :vartype LessThan: 3 
399
    :ivar GreaterThanOrEqual: 
400
    :vartype GreaterThanOrEqual: 4 
401
    :ivar LessThanOrEqual: 
402
    :vartype LessThanOrEqual: 5 
403
    :ivar Like: 
404
    :vartype Like: 6 
405
    :ivar Not: 
406
    :vartype Not: 7 
407
    :ivar Between: 
408
    :vartype Between: 8 
409
    :ivar InList: 
410
    :vartype InList: 9 
411
    :ivar And: 
412
    :vartype And: 10 
413
    :ivar Or: 
414
    :vartype Or: 11 
415
    :ivar Cast: 
416
    :vartype Cast: 12 
417
    :ivar InView: 
418
    :vartype InView: 13 
419
    :ivar OfType: 
420
    :vartype OfType: 14 
421
    :ivar RelatedTo: 
422
    :vartype RelatedTo: 15 
423
    :ivar BitwiseAnd: 
424
    :vartype BitwiseAnd: 16 
425
    :ivar BitwiseOr: 
426
    :vartype BitwiseOr: 17 
427
    '''
428 1
    Equals = 0
429 1
    IsNull = 1
430 1
    GreaterThan = 2
431 1
    LessThan = 3
432 1
    GreaterThanOrEqual = 4
433 1
    LessThanOrEqual = 5
434 1
    Like = 6
435 1
    Not = 7
436 1
    Between = 8
437 1
    InList = 9
438 1
    And = 10
439 1
    Or = 11
440 1
    Cast = 12
441 1
    InView = 13
442 1
    OfType = 14
443 1
    RelatedTo = 15
444 1
    BitwiseAnd = 16
445 1
    BitwiseOr = 17
446
447 1
class TimestampsToReturn(object):
448
    '''
449
    :ivar Source: 
450
    :vartype Source: 0 
451
    :ivar Server: 
452
    :vartype Server: 1 
453
    :ivar Both: 
454
    :vartype Both: 2 
455
    :ivar Neither: 
456
    :vartype Neither: 3 
457
    '''
458 1
    Source = 0
459 1
    Server = 1
460 1
    Both = 2
461 1
    Neither = 3
462
463 1
class HistoryUpdateType(object):
464
    '''
465
    :ivar Insert: 
466
    :vartype Insert: 1 
467
    :ivar Replace: 
468
    :vartype Replace: 2 
469
    :ivar Update: 
470
    :vartype Update: 3 
471
    :ivar Delete: 
472
    :vartype Delete: 4 
473
    '''
474 1
    Insert = 1
475 1
    Replace = 2
476 1
    Update = 3
477 1
    Delete = 4
478
479 1
class PerformUpdateType(object):
480
    '''
481
    :ivar Insert: 
482
    :vartype Insert: 1 
483
    :ivar Replace: 
484
    :vartype Replace: 2 
485
    :ivar Update: 
486
    :vartype Update: 3 
487
    :ivar Remove: 
488
    :vartype Remove: 4 
489
    '''
490 1
    Insert = 1
491 1
    Replace = 2
492 1
    Update = 3
493 1
    Remove = 4
494
495 1
class MonitoringMode(object):
496
    '''
497
    :ivar Disabled: 
498
    :vartype Disabled: 0 
499
    :ivar Sampling: 
500
    :vartype Sampling: 1 
501
    :ivar Reporting: 
502
    :vartype Reporting: 2 
503
    '''
504 1
    Disabled = 0
505 1
    Sampling = 1
506 1
    Reporting = 2
507
508 1
class DataChangeTrigger(object):
509
    '''
510
    :ivar Status: 
511
    :vartype Status: 0 
512
    :ivar StatusValue: 
513
    :vartype StatusValue: 1 
514
    :ivar StatusValueTimestamp: 
515
    :vartype StatusValueTimestamp: 2 
516
    '''
517 1
    Status = 0
518 1
    StatusValue = 1
519 1
    StatusValueTimestamp = 2
520
521 1
class DeadbandType(object):
522
    '''
523
    :ivar None_: 
524
    :vartype None_: 0 
525
    :ivar Absolute: 
526
    :vartype Absolute: 1 
527
    :ivar Percent: 
528
    :vartype Percent: 2 
529
    '''
530 1
    None_ = 0
531 1
    Absolute = 1
532 1
    Percent = 2
533
534 1
class EnumeratedTestType(object):
535
    '''
536
    A simple enumerated type used for testing.
537
    
538
    :ivar Red: 
539
    :vartype Red: 1 
540
    :ivar Yellow: 
541
    :vartype Yellow: 4 
542
    :ivar Green: 
543
    :vartype Green: 5 
544
    '''
545 1
    Red = 1
546 1
    Yellow = 4
547 1
    Green = 5
548
549 1
class RedundancySupport(object):
550
    '''
551
    :ivar None_: 
552
    :vartype None_: 0 
553
    :ivar Cold: 
554
    :vartype Cold: 1 
555
    :ivar Warm: 
556
    :vartype Warm: 2 
557
    :ivar Hot: 
558
    :vartype Hot: 3 
559
    :ivar Transparent: 
560
    :vartype Transparent: 4 
561
    :ivar HotAndMirrored: 
562
    :vartype HotAndMirrored: 5 
563
    '''
564 1
    None_ = 0
565 1
    Cold = 1
566 1
    Warm = 2
567 1
    Hot = 3
568 1
    Transparent = 4
569 1
    HotAndMirrored = 5
570
571 1
class ServerState(object):
572
    '''
573
    :ivar Running: 
574
    :vartype Running: 0 
575
    :ivar Failed: 
576
    :vartype Failed: 1 
577
    :ivar NoConfiguration: 
578
    :vartype NoConfiguration: 2 
579
    :ivar Suspended: 
580
    :vartype Suspended: 3 
581
    :ivar Shutdown: 
582
    :vartype Shutdown: 4 
583
    :ivar Test: 
584
    :vartype Test: 5 
585
    :ivar CommunicationFault: 
586
    :vartype CommunicationFault: 6 
587
    :ivar Unknown: 
588
    :vartype Unknown: 7 
589
    '''
590 1
    Running = 0
591 1
    Failed = 1
592 1
    NoConfiguration = 2
593 1
    Suspended = 3
594 1
    Shutdown = 4
595 1
    Test = 5
596 1
    CommunicationFault = 6
597 1
    Unknown = 7
598
599 1
class ModelChangeStructureVerbMask(object):
600
    '''
601
    :ivar NodeAdded: 
602
    :vartype NodeAdded: 1 
603
    :ivar NodeDeleted: 
604
    :vartype NodeDeleted: 2 
605
    :ivar ReferenceAdded: 
606
    :vartype ReferenceAdded: 4 
607
    :ivar ReferenceDeleted: 
608
    :vartype ReferenceDeleted: 8 
609
    :ivar DataTypeChanged: 
610
    :vartype DataTypeChanged: 16 
611
    '''
612 1
    NodeAdded = 1
613 1
    NodeDeleted = 2
614 1
    ReferenceAdded = 4
615 1
    ReferenceDeleted = 8
616 1
    DataTypeChanged = 16
617
618 1
class AxisScaleEnumeration(object):
619
    '''
620
    :ivar Linear: 
621
    :vartype Linear: 0 
622
    :ivar Log: 
623
    :vartype Log: 1 
624
    :ivar Ln: 
625
    :vartype Ln: 2 
626
    '''
627 1
    Linear = 0
628 1
    Log = 1
629 1
    Ln = 2
630
631 1
class ExceptionDeviationFormat(object):
632
    '''
633
    :ivar AbsoluteValue: 
634
    :vartype AbsoluteValue: 0 
635
    :ivar PercentOfRange: 
636
    :vartype PercentOfRange: 1 
637
    :ivar PercentOfValue: 
638
    :vartype PercentOfValue: 2 
639
    :ivar PercentOfEURange: 
640
    :vartype PercentOfEURange: 3 
641
    :ivar Unknown: 
642
    :vartype Unknown: 4 
643
    '''
644 1
    AbsoluteValue = 0
645 1
    PercentOfRange = 1
646 1
    PercentOfValue = 2
647 1
    PercentOfEURange = 3
648 1
    Unknown = 4
649
650 1
class XmlElement(FrozenClass):
651
    '''
652
    An XML element encoded as a UTF-8 string.
653
    
654
    :ivar Length: 
655
    :vartype Length: Int32 
656
    :ivar Value: 
657
    :vartype Value: Char 
658
    '''
659 1
    def __init__(self):
660
        self.Length = 0
661
        self.Value = []
662
        self._freeze()
663
    
664 1
    def to_binary(self):
665
        packet = []
666
        packet.append(pack_uatype('Int32', self.Length))
667
        packet.append(struct.pack('<i', len(self.Value)))
668
        for fieldname in self.Value:
669
            packet.append(pack_uatype('Char', fieldname))
670
        return b''.join(packet)
671
        
672 1
    @staticmethod
673
    def from_binary(data):
674
        obj = XmlElement()
675
        obj.Length = unpack_uatype('Int32', data)
676
        obj.Value = unpack_uatype_array('Char', data)
677
        return obj
678
    
679 1
    def __str__(self):
680
        return 'XmlElement(' + 'Length:' + str(self.Length) + ', '  + \
681
             'Value:' + str(self.Value) + ')'
682
    
683 1
    __repr__ = __str__
684
    
685 1
class DiagnosticInfo(FrozenClass):
686
    '''
687
    A recursive structure containing diagnostic information associated with a status code.
688
    
689
    :ivar Encoding: 
690
    :vartype Encoding: UInt8 
691
    :ivar SymbolicId: 
692
    :vartype SymbolicId: Int32 
693
    :ivar NamespaceURI: 
694
    :vartype NamespaceURI: Int32 
695
    :ivar LocalizedText: 
696
    :vartype LocalizedText: Int32 
697
    :ivar AdditionalInfo: 
698
    :vartype AdditionalInfo: CharArray 
699
    :ivar InnerStatusCode: 
700
    :vartype InnerStatusCode: StatusCode 
701
    :ivar InnerDiagnosticInfo: 
702
    :vartype InnerDiagnosticInfo: DiagnosticInfo 
703
    '''
704 1
    def __init__(self):
705 1
        self.Encoding = 0
706 1
        self.SymbolicId = 0
707 1
        self.NamespaceURI = 0
708 1
        self.LocalizedText = 0
709 1
        self.AdditionalInfo = b''
710 1
        self.InnerStatusCode = StatusCode()
711 1
        self.InnerDiagnosticInfo = None
712 1
        self._freeze()
713
    
714 1
    def to_binary(self):
715 1
        packet = []
716 1
        if self.SymbolicId: self.Encoding |= (1 << 0)
717 1
        if self.NamespaceURI: self.Encoding |= (1 << 1)
718 1
        if self.LocalizedText: self.Encoding |= (1 << 2)
719 1
        if self.AdditionalInfo: self.Encoding |= (1 << 4)
720 1
        if self.InnerStatusCode: self.Encoding |= (1 << 5)
721 1
        if self.InnerDiagnosticInfo: self.Encoding |= (1 << 6)
722 1
        packet.append(pack_uatype('UInt8', self.Encoding))
723 1
        if self.SymbolicId: 
724
            packet.append(pack_uatype('Int32', self.SymbolicId))
725 1
        if self.NamespaceURI: 
726
            packet.append(pack_uatype('Int32', self.NamespaceURI))
727 1
        if self.LocalizedText: 
728
            packet.append(pack_uatype('Int32', self.LocalizedText))
729 1
        if self.AdditionalInfo: 
730
            packet.append(pack_uatype('CharArray', self.AdditionalInfo))
731 1
        if self.InnerStatusCode: 
732 1
            packet.append(self.InnerStatusCode.to_binary())
733 1
        if self.InnerDiagnosticInfo: 
734
            packet.append(self.InnerDiagnosticInfo.to_binary())
735 1
        return b''.join(packet)
736
        
737 1
    @staticmethod
738
    def from_binary(data):
739 1
        obj = DiagnosticInfo()
740 1
        obj.Encoding = unpack_uatype('UInt8', data)
741 1
        if obj.Encoding & (1 << 0):
742
            obj.SymbolicId = unpack_uatype('Int32', data)
743 1
        if obj.Encoding & (1 << 1):
744
            obj.NamespaceURI = unpack_uatype('Int32', data)
745 1
        if obj.Encoding & (1 << 2):
746
            obj.LocalizedText = unpack_uatype('Int32', data)
747 1
        if obj.Encoding & (1 << 4):
748
            obj.AdditionalInfo = unpack_uatype('CharArray', data)
749 1
        if obj.Encoding & (1 << 5):
750 1
            obj.InnerStatusCode = StatusCode.from_binary(data)
751 1
        if obj.Encoding & (1 << 6):
752
            obj.InnerDiagnosticInfo = DiagnosticInfo.from_binary(data)
753 1
        return obj
754
    
755 1
    def __str__(self):
756
        return 'DiagnosticInfo(' + 'Encoding:' + str(self.Encoding) + ', '  + \
757
             'SymbolicId:' + str(self.SymbolicId) + ', '  + \
758
             'NamespaceURI:' + str(self.NamespaceURI) + ', '  + \
759
             'LocalizedText:' + str(self.LocalizedText) + ', '  + \
760
             'AdditionalInfo:' + str(self.AdditionalInfo) + ', '  + \
761
             'InnerStatusCode:' + str(self.InnerStatusCode) + ', '  + \
762
             'InnerDiagnosticInfo:' + str(self.InnerDiagnosticInfo) + ')'
763
    
764 1
    __repr__ = __str__
765
    
766 1
class Argument(FrozenClass):
767
    '''
768
    An argument for a method.
769
    
770
    :ivar Name: 
771
    :vartype Name: String 
772
    :ivar DataType: 
773
    :vartype DataType: NodeId 
774
    :ivar ValueRank: 
775
    :vartype ValueRank: Int32 
776
    :ivar ArrayDimensions: 
777
    :vartype ArrayDimensions: UInt32 
778
    :ivar Description: 
779
    :vartype Description: LocalizedText 
780
    '''
781 1
    def __init__(self):
782 1
        self.Name = ''
783 1
        self.DataType = NodeId()
784 1
        self.ValueRank = 0
785 1
        self.ArrayDimensions = []
786 1
        self.Description = LocalizedText()
787 1
        self._freeze()
788
    
789 1
    def to_binary(self):
790 1
        packet = []
791 1
        packet.append(pack_uatype('String', self.Name))
792 1
        packet.append(self.DataType.to_binary())
793 1
        packet.append(pack_uatype('Int32', self.ValueRank))
794 1
        packet.append(struct.pack('<i', len(self.ArrayDimensions)))
795 1
        for fieldname in self.ArrayDimensions:
796
            packet.append(pack_uatype('UInt32', fieldname))
797 1
        packet.append(self.Description.to_binary())
798 1
        return b''.join(packet)
799
        
800 1
    @staticmethod
801
    def from_binary(data):
802
        obj = Argument()
803
        obj.Name = unpack_uatype('String', data)
804
        obj.DataType = NodeId.from_binary(data)
805
        obj.ValueRank = unpack_uatype('Int32', data)
806
        obj.ArrayDimensions = unpack_uatype_array('UInt32', data)
807
        obj.Description = LocalizedText.from_binary(data)
808
        return obj
809
    
810 1
    def __str__(self):
811
        return 'Argument(' + 'Name:' + str(self.Name) + ', '  + \
812
             'DataType:' + str(self.DataType) + ', '  + \
813
             'ValueRank:' + str(self.ValueRank) + ', '  + \
814
             'ArrayDimensions:' + str(self.ArrayDimensions) + ', '  + \
815
             'Description:' + str(self.Description) + ')'
816
    
817 1
    __repr__ = __str__
818
    
819 1
class EnumValueType(FrozenClass):
820
    '''
821
    A mapping between a value of an enumerated type and a name and description.
822
    
823
    :ivar Value: 
824
    :vartype Value: Int64 
825
    :ivar DisplayName: 
826
    :vartype DisplayName: LocalizedText 
827
    :ivar Description: 
828
    :vartype Description: LocalizedText 
829
    '''
830 1
    def __init__(self):
831
        self.Value = 0
832
        self.DisplayName = LocalizedText()
833
        self.Description = LocalizedText()
834
        self._freeze()
835
    
836 1
    def to_binary(self):
837
        packet = []
838
        packet.append(pack_uatype('Int64', self.Value))
839
        packet.append(self.DisplayName.to_binary())
840
        packet.append(self.Description.to_binary())
841
        return b''.join(packet)
842
        
843 1
    @staticmethod
844
    def from_binary(data):
845
        obj = EnumValueType()
846
        obj.Value = unpack_uatype('Int64', data)
847
        obj.DisplayName = LocalizedText.from_binary(data)
848
        obj.Description = LocalizedText.from_binary(data)
849
        return obj
850
    
851 1
    def __str__(self):
852
        return 'EnumValueType(' + 'Value:' + str(self.Value) + ', '  + \
853
             'DisplayName:' + str(self.DisplayName) + ', '  + \
854
             'Description:' + str(self.Description) + ')'
855
    
856 1
    __repr__ = __str__
857
    
858 1
class TimeZoneDataType(FrozenClass):
859
    '''
860
    :ivar Offset: 
861
    :vartype Offset: Int16 
862
    :ivar DaylightSavingInOffset: 
863
    :vartype DaylightSavingInOffset: Boolean 
864
    '''
865 1
    def __init__(self):
866
        self.Offset = 0
867
        self.DaylightSavingInOffset = True
868
        self._freeze()
869
    
870 1
    def to_binary(self):
871
        packet = []
872
        packet.append(pack_uatype('Int16', self.Offset))
873
        packet.append(pack_uatype('Boolean', self.DaylightSavingInOffset))
874
        return b''.join(packet)
875
        
876 1
    @staticmethod
877
    def from_binary(data):
878
        obj = TimeZoneDataType()
879
        obj.Offset = unpack_uatype('Int16', data)
880
        obj.DaylightSavingInOffset = unpack_uatype('Boolean', data)
881
        return obj
882
    
883 1
    def __str__(self):
884
        return 'TimeZoneDataType(' + 'Offset:' + str(self.Offset) + ', '  + \
885
             'DaylightSavingInOffset:' + str(self.DaylightSavingInOffset) + ')'
886
    
887 1
    __repr__ = __str__
888
    
889 1
class ApplicationDescription(FrozenClass):
890
    '''
891
    Describes an application and how to find it.
892
    
893
    :ivar ApplicationUri: 
894
    :vartype ApplicationUri: String 
895
    :ivar ProductUri: 
896
    :vartype ProductUri: String 
897
    :ivar ApplicationName: 
898
    :vartype ApplicationName: LocalizedText 
899
    :ivar ApplicationType: 
900
    :vartype ApplicationType: ApplicationType 
901
    :ivar GatewayServerUri: 
902
    :vartype GatewayServerUri: String 
903
    :ivar DiscoveryProfileUri: 
904
    :vartype DiscoveryProfileUri: String 
905
    :ivar DiscoveryUrls: 
906
    :vartype DiscoveryUrls: String 
907
    '''
908 1
    def __init__(self):
909 1
        self.ApplicationUri = ''
910 1
        self.ProductUri = ''
911 1
        self.ApplicationName = LocalizedText()
912 1
        self.ApplicationType = 0
913 1
        self.GatewayServerUri = ''
914 1
        self.DiscoveryProfileUri = ''
915 1
        self.DiscoveryUrls = []
916 1
        self._freeze()
917
    
918 1
    def to_binary(self):
919 1
        packet = []
920 1
        packet.append(pack_uatype('String', self.ApplicationUri))
921 1
        packet.append(pack_uatype('String', self.ProductUri))
922 1
        packet.append(self.ApplicationName.to_binary())
923 1
        packet.append(pack_uatype('UInt32', self.ApplicationType))
924 1
        packet.append(pack_uatype('String', self.GatewayServerUri))
925 1
        packet.append(pack_uatype('String', self.DiscoveryProfileUri))
926 1
        packet.append(struct.pack('<i', len(self.DiscoveryUrls)))
927 1
        for fieldname in self.DiscoveryUrls:
928 1
            packet.append(pack_uatype('String', fieldname))
929 1
        return b''.join(packet)
930
        
931 1
    @staticmethod
932
    def from_binary(data):
933 1
        obj = ApplicationDescription()
934 1
        obj.ApplicationUri = unpack_uatype('String', data)
935 1
        obj.ProductUri = unpack_uatype('String', data)
936 1
        obj.ApplicationName = LocalizedText.from_binary(data)
937 1
        obj.ApplicationType = unpack_uatype('UInt32', data)
938 1
        obj.GatewayServerUri = unpack_uatype('String', data)
939 1
        obj.DiscoveryProfileUri = unpack_uatype('String', data)
940 1
        obj.DiscoveryUrls = unpack_uatype_array('String', data)
941 1
        return obj
942
    
943 1
    def __str__(self):
944
        return 'ApplicationDescription(' + 'ApplicationUri:' + str(self.ApplicationUri) + ', '  + \
945
             'ProductUri:' + str(self.ProductUri) + ', '  + \
946
             'ApplicationName:' + str(self.ApplicationName) + ', '  + \
947
             'ApplicationType:' + str(self.ApplicationType) + ', '  + \
948
             'GatewayServerUri:' + str(self.GatewayServerUri) + ', '  + \
949
             'DiscoveryProfileUri:' + str(self.DiscoveryProfileUri) + ', '  + \
950
             'DiscoveryUrls:' + str(self.DiscoveryUrls) + ')'
951
    
952 1
    __repr__ = __str__
953
    
954 1
class RequestHeader(FrozenClass):
955
    '''
956
    The header passed with every server request.
957
    
958
    :ivar AuthenticationToken: 
959
    :vartype AuthenticationToken: NodeId 
960
    :ivar Timestamp: 
961
    :vartype Timestamp: DateTime 
962
    :ivar RequestHandle: 
963
    :vartype RequestHandle: UInt32 
964
    :ivar ReturnDiagnostics: 
965
    :vartype ReturnDiagnostics: UInt32 
966
    :ivar AuditEntryId: 
967
    :vartype AuditEntryId: String 
968
    :ivar TimeoutHint: 
969
    :vartype TimeoutHint: UInt32 
970
    :ivar AdditionalHeader: 
971
    :vartype AdditionalHeader: ExtensionObject 
972
    '''
973 1
    def __init__(self):
974 1
        self.AuthenticationToken = NodeId()
975 1
        self.Timestamp = datetime.now()
976 1
        self.RequestHandle = 0
977 1
        self.ReturnDiagnostics = 0
978 1
        self.AuditEntryId = ''
979 1
        self.TimeoutHint = 0
980 1
        self.AdditionalHeader = ExtensionObject()
981 1
        self._freeze()
982
    
983 1
    def to_binary(self):
984 1
        packet = []
985 1
        packet.append(self.AuthenticationToken.to_binary())
986 1
        packet.append(pack_uatype('DateTime', self.Timestamp))
987 1
        packet.append(pack_uatype('UInt32', self.RequestHandle))
988 1
        packet.append(pack_uatype('UInt32', self.ReturnDiagnostics))
989 1
        packet.append(pack_uatype('String', self.AuditEntryId))
990 1
        packet.append(pack_uatype('UInt32', self.TimeoutHint))
991 1
        packet.append(self.AdditionalHeader.to_binary())
992 1
        return b''.join(packet)
993
        
994 1
    @staticmethod
995
    def from_binary(data):
996 1
        obj = RequestHeader()
997 1
        obj.AuthenticationToken = NodeId.from_binary(data)
998 1
        obj.Timestamp = unpack_uatype('DateTime', data)
999 1
        obj.RequestHandle = unpack_uatype('UInt32', data)
1000 1
        obj.ReturnDiagnostics = unpack_uatype('UInt32', data)
1001 1
        obj.AuditEntryId = unpack_uatype('String', data)
1002 1
        obj.TimeoutHint = unpack_uatype('UInt32', data)
1003 1
        obj.AdditionalHeader = ExtensionObject.from_binary(data)
1004 1
        return obj
1005
    
1006 1
    def __str__(self):
1007
        return 'RequestHeader(' + 'AuthenticationToken:' + str(self.AuthenticationToken) + ', '  + \
1008
             'Timestamp:' + str(self.Timestamp) + ', '  + \
1009
             'RequestHandle:' + str(self.RequestHandle) + ', '  + \
1010
             'ReturnDiagnostics:' + str(self.ReturnDiagnostics) + ', '  + \
1011
             'AuditEntryId:' + str(self.AuditEntryId) + ', '  + \
1012
             'TimeoutHint:' + str(self.TimeoutHint) + ', '  + \
1013
             'AdditionalHeader:' + str(self.AdditionalHeader) + ')'
1014
    
1015 1
    __repr__ = __str__
1016
    
1017 1
class ResponseHeader(FrozenClass):
1018
    '''
1019
    The header passed with every server response.
1020
    
1021
    :ivar Timestamp: 
1022
    :vartype Timestamp: DateTime 
1023
    :ivar RequestHandle: 
1024
    :vartype RequestHandle: UInt32 
1025
    :ivar ServiceResult: 
1026
    :vartype ServiceResult: StatusCode 
1027
    :ivar ServiceDiagnostics: 
1028
    :vartype ServiceDiagnostics: DiagnosticInfo 
1029
    :ivar StringTable: 
1030
    :vartype StringTable: String 
1031
    :ivar AdditionalHeader: 
1032
    :vartype AdditionalHeader: ExtensionObject 
1033
    '''
1034 1
    def __init__(self):
1035 1
        self.Timestamp = datetime.now()
1036 1
        self.RequestHandle = 0
1037 1
        self.ServiceResult = StatusCode()
1038 1
        self.ServiceDiagnostics = DiagnosticInfo()
1039 1
        self.StringTable = []
1040 1
        self.AdditionalHeader = ExtensionObject()
1041 1
        self._freeze()
1042
    
1043 1
    def to_binary(self):
1044 1
        packet = []
1045 1
        packet.append(pack_uatype('DateTime', self.Timestamp))
1046 1
        packet.append(pack_uatype('UInt32', self.RequestHandle))
1047 1
        packet.append(self.ServiceResult.to_binary())
1048 1
        packet.append(self.ServiceDiagnostics.to_binary())
1049 1
        packet.append(struct.pack('<i', len(self.StringTable)))
1050 1
        for fieldname in self.StringTable:
1051
            packet.append(pack_uatype('String', fieldname))
1052 1
        packet.append(self.AdditionalHeader.to_binary())
1053 1
        return b''.join(packet)
1054
        
1055 1
    @staticmethod
1056
    def from_binary(data):
1057 1
        obj = ResponseHeader()
1058 1
        obj.Timestamp = unpack_uatype('DateTime', data)
1059 1
        obj.RequestHandle = unpack_uatype('UInt32', data)
1060 1
        obj.ServiceResult = StatusCode.from_binary(data)
1061 1
        obj.ServiceDiagnostics = DiagnosticInfo.from_binary(data)
1062 1
        obj.StringTable = unpack_uatype_array('String', data)
1063 1
        obj.AdditionalHeader = ExtensionObject.from_binary(data)
1064 1
        return obj
1065
    
1066 1
    def __str__(self):
1067
        return 'ResponseHeader(' + 'Timestamp:' + str(self.Timestamp) + ', '  + \
1068
             'RequestHandle:' + str(self.RequestHandle) + ', '  + \
1069
             'ServiceResult:' + str(self.ServiceResult) + ', '  + \
1070
             'ServiceDiagnostics:' + str(self.ServiceDiagnostics) + ', '  + \
1071
             'StringTable:' + str(self.StringTable) + ', '  + \
1072
             'AdditionalHeader:' + str(self.AdditionalHeader) + ')'
1073
    
1074 1
    __repr__ = __str__
1075
    
1076 1
class ServiceFault(FrozenClass):
1077
    '''
1078
    The response returned by all services when there is a service level error.
1079
    
1080
    :ivar TypeId: 
1081
    :vartype TypeId: NodeId 
1082
    :ivar ResponseHeader: 
1083
    :vartype ResponseHeader: ResponseHeader 
1084
    '''
1085 1
    def __init__(self):
1086
        self.TypeId = FourByteNodeId(ObjectIds.ServiceFault_Encoding_DefaultBinary)
1087
        self.ResponseHeader = ResponseHeader()
1088
        self._freeze()
1089
    
1090 1
    def to_binary(self):
1091
        packet = []
1092
        packet.append(self.TypeId.to_binary())
1093
        packet.append(self.ResponseHeader.to_binary())
1094
        return b''.join(packet)
1095
        
1096 1
    @staticmethod
1097
    def from_binary(data):
1098
        obj = ServiceFault()
1099
        obj.TypeId = NodeId.from_binary(data)
1100
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1101
        return obj
1102
    
1103 1
    def __str__(self):
1104
        return 'ServiceFault(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1105
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
1106
    
1107 1
    __repr__ = __str__
1108
    
1109 1
class FindServersParameters(FrozenClass):
1110
    '''
1111
    :ivar EndpointUrl: 
1112
    :vartype EndpointUrl: String 
1113
    :ivar LocaleIds: 
1114
    :vartype LocaleIds: String 
1115
    :ivar ServerUris: 
1116
    :vartype ServerUris: String 
1117
    '''
1118 1
    def __init__(self):
1119
        self.EndpointUrl = ''
1120
        self.LocaleIds = []
1121
        self.ServerUris = []
1122
        self._freeze()
1123
    
1124 1
    def to_binary(self):
1125
        packet = []
1126
        packet.append(pack_uatype('String', self.EndpointUrl))
1127
        packet.append(struct.pack('<i', len(self.LocaleIds)))
1128
        for fieldname in self.LocaleIds:
1129
            packet.append(pack_uatype('String', fieldname))
1130
        packet.append(struct.pack('<i', len(self.ServerUris)))
1131
        for fieldname in self.ServerUris:
1132
            packet.append(pack_uatype('String', fieldname))
1133
        return b''.join(packet)
1134
        
1135 1
    @staticmethod
1136
    def from_binary(data):
1137
        obj = FindServersParameters()
1138
        obj.EndpointUrl = unpack_uatype('String', data)
1139
        obj.LocaleIds = unpack_uatype_array('String', data)
1140
        obj.ServerUris = unpack_uatype_array('String', data)
1141
        return obj
1142
    
1143 1
    def __str__(self):
1144
        return 'FindServersParameters(' + 'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
1145
             'LocaleIds:' + str(self.LocaleIds) + ', '  + \
1146
             'ServerUris:' + str(self.ServerUris) + ')'
1147
    
1148 1
    __repr__ = __str__
1149
    
1150 1
class FindServersRequest(FrozenClass):
1151
    '''
1152
    Finds the servers known to the discovery server.
1153
    
1154
    :ivar TypeId: 
1155
    :vartype TypeId: NodeId 
1156
    :ivar RequestHeader: 
1157
    :vartype RequestHeader: RequestHeader 
1158
    :ivar Parameters: 
1159
    :vartype Parameters: FindServersParameters 
1160
    '''
1161 1
    def __init__(self):
1162
        self.TypeId = FourByteNodeId(ObjectIds.FindServersRequest_Encoding_DefaultBinary)
1163
        self.RequestHeader = RequestHeader()
1164
        self.Parameters = FindServersParameters()
1165
        self._freeze()
1166
    
1167 1
    def to_binary(self):
1168
        packet = []
1169
        packet.append(self.TypeId.to_binary())
1170
        packet.append(self.RequestHeader.to_binary())
1171
        packet.append(self.Parameters.to_binary())
1172
        return b''.join(packet)
1173
        
1174 1
    @staticmethod
1175
    def from_binary(data):
1176
        obj = FindServersRequest()
1177
        obj.TypeId = NodeId.from_binary(data)
1178
        obj.RequestHeader = RequestHeader.from_binary(data)
1179
        obj.Parameters = FindServersParameters.from_binary(data)
1180
        return obj
1181
    
1182 1
    def __str__(self):
1183
        return 'FindServersRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1184
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
1185
             'Parameters:' + str(self.Parameters) + ')'
1186
    
1187 1
    __repr__ = __str__
1188
    
1189 1
class FindServersResponse(FrozenClass):
1190
    '''
1191
    Finds the servers known to the discovery server.
1192
    
1193
    :ivar TypeId: 
1194
    :vartype TypeId: NodeId 
1195
    :ivar ResponseHeader: 
1196
    :vartype ResponseHeader: ResponseHeader 
1197
    :ivar Servers: 
1198
    :vartype Servers: ApplicationDescription 
1199
    '''
1200 1
    def __init__(self):
1201
        self.TypeId = FourByteNodeId(ObjectIds.FindServersResponse_Encoding_DefaultBinary)
1202
        self.ResponseHeader = ResponseHeader()
1203
        self.Servers = []
1204
        self._freeze()
1205
    
1206 1
    def to_binary(self):
1207
        packet = []
1208
        packet.append(self.TypeId.to_binary())
1209
        packet.append(self.ResponseHeader.to_binary())
1210
        packet.append(struct.pack('<i', len(self.Servers)))
1211
        for fieldname in self.Servers:
1212
            packet.append(fieldname.to_binary())
1213
        return b''.join(packet)
1214
        
1215 1
    @staticmethod
1216
    def from_binary(data):
1217
        obj = FindServersResponse()
1218
        obj.TypeId = NodeId.from_binary(data)
1219
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1220
        length = struct.unpack('<i', data.read(4))[0]
1221
        if length != -1:
1222
            for _ in range(0, length):
1223
                obj.Servers.append(ApplicationDescription.from_binary(data))
1224
        return obj
1225
    
1226 1
    def __str__(self):
1227
        return 'FindServersResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1228
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
1229
             'Servers:' + str(self.Servers) + ')'
1230
    
1231 1
    __repr__ = __str__
1232
    
1233 1
class UserTokenPolicy(FrozenClass):
1234
    '''
1235
    Describes a user token that can be used with a server.
1236
    
1237
    :ivar PolicyId: 
1238
    :vartype PolicyId: String 
1239
    :ivar TokenType: 
1240
    :vartype TokenType: UserTokenType 
1241
    :ivar IssuedTokenType: 
1242
    :vartype IssuedTokenType: String 
1243
    :ivar IssuerEndpointUrl: 
1244
    :vartype IssuerEndpointUrl: String 
1245
    :ivar SecurityPolicyUri: 
1246
    :vartype SecurityPolicyUri: String 
1247
    '''
1248 1
    def __init__(self):
1249 1
        self.PolicyId = ''
1250 1
        self.TokenType = 0
1251 1
        self.IssuedTokenType = ''
1252 1
        self.IssuerEndpointUrl = ''
1253 1
        self.SecurityPolicyUri = ''
1254 1
        self._freeze()
1255
    
1256 1
    def to_binary(self):
1257 1
        packet = []
1258 1
        packet.append(pack_uatype('String', self.PolicyId))
1259 1
        packet.append(pack_uatype('UInt32', self.TokenType))
1260 1
        packet.append(pack_uatype('String', self.IssuedTokenType))
1261 1
        packet.append(pack_uatype('String', self.IssuerEndpointUrl))
1262 1
        packet.append(pack_uatype('String', self.SecurityPolicyUri))
1263 1
        return b''.join(packet)
1264
        
1265 1
    @staticmethod
1266
    def from_binary(data):
1267 1
        obj = UserTokenPolicy()
1268 1
        obj.PolicyId = unpack_uatype('String', data)
1269 1
        obj.TokenType = unpack_uatype('UInt32', data)
1270 1
        obj.IssuedTokenType = unpack_uatype('String', data)
1271 1
        obj.IssuerEndpointUrl = unpack_uatype('String', data)
1272 1
        obj.SecurityPolicyUri = unpack_uatype('String', data)
1273 1
        return obj
1274
    
1275 1
    def __str__(self):
1276
        return 'UserTokenPolicy(' + 'PolicyId:' + str(self.PolicyId) + ', '  + \
1277
             'TokenType:' + str(self.TokenType) + ', '  + \
1278
             'IssuedTokenType:' + str(self.IssuedTokenType) + ', '  + \
1279
             'IssuerEndpointUrl:' + str(self.IssuerEndpointUrl) + ', '  + \
1280
             'SecurityPolicyUri:' + str(self.SecurityPolicyUri) + ')'
1281
    
1282 1
    __repr__ = __str__
1283
    
1284 1
class EndpointDescription(FrozenClass):
1285
    '''
1286
    The description of a endpoint that can be used to access a server.
1287
    
1288
    :ivar EndpointUrl: 
1289
    :vartype EndpointUrl: String 
1290
    :ivar Server: 
1291
    :vartype Server: ApplicationDescription 
1292
    :ivar ServerCertificate: 
1293
    :vartype ServerCertificate: ByteString 
1294
    :ivar SecurityMode: 
1295
    :vartype SecurityMode: MessageSecurityMode 
1296
    :ivar SecurityPolicyUri: 
1297
    :vartype SecurityPolicyUri: String 
1298
    :ivar UserIdentityTokens: 
1299
    :vartype UserIdentityTokens: UserTokenPolicy 
1300
    :ivar TransportProfileUri: 
1301
    :vartype TransportProfileUri: String 
1302
    :ivar SecurityLevel: 
1303
    :vartype SecurityLevel: Byte 
1304
    '''
1305 1
    def __init__(self):
1306 1
        self.EndpointUrl = ''
1307 1
        self.Server = ApplicationDescription()
1308 1
        self.ServerCertificate = b''
1309 1
        self.SecurityMode = 0
1310 1
        self.SecurityPolicyUri = ''
1311 1
        self.UserIdentityTokens = []
1312 1
        self.TransportProfileUri = ''
1313 1
        self.SecurityLevel = 0
1314 1
        self._freeze()
1315
    
1316 1
    def to_binary(self):
1317 1
        packet = []
1318 1
        packet.append(pack_uatype('String', self.EndpointUrl))
1319 1
        packet.append(self.Server.to_binary())
1320 1
        packet.append(pack_uatype('ByteString', self.ServerCertificate))
1321 1
        packet.append(pack_uatype('UInt32', self.SecurityMode))
1322 1
        packet.append(pack_uatype('String', self.SecurityPolicyUri))
1323 1
        packet.append(struct.pack('<i', len(self.UserIdentityTokens)))
1324 1
        for fieldname in self.UserIdentityTokens:
1325 1
            packet.append(fieldname.to_binary())
1326 1
        packet.append(pack_uatype('String', self.TransportProfileUri))
1327 1
        packet.append(pack_uatype('Byte', self.SecurityLevel))
1328 1
        return b''.join(packet)
1329
        
1330 1
    @staticmethod
1331
    def from_binary(data):
1332 1
        obj = EndpointDescription()
1333 1
        obj.EndpointUrl = unpack_uatype('String', data)
1334 1
        obj.Server = ApplicationDescription.from_binary(data)
1335 1
        obj.ServerCertificate = unpack_uatype('ByteString', data)
1336 1
        obj.SecurityMode = unpack_uatype('UInt32', data)
1337 1
        obj.SecurityPolicyUri = unpack_uatype('String', data)
1338 1
        length = struct.unpack('<i', data.read(4))[0]
1339 1
        if length != -1:
1340 1
            for _ in range(0, length):
1341 1
                obj.UserIdentityTokens.append(UserTokenPolicy.from_binary(data))
1342 1
        obj.TransportProfileUri = unpack_uatype('String', data)
1343 1
        obj.SecurityLevel = unpack_uatype('Byte', data)
1344 1
        return obj
1345
    
1346 1
    def __str__(self):
1347
        return 'EndpointDescription(' + 'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
1348
             'Server:' + str(self.Server) + ', '  + \
1349
             'ServerCertificate:' + str(self.ServerCertificate) + ', '  + \
1350
             'SecurityMode:' + str(self.SecurityMode) + ', '  + \
1351
             'SecurityPolicyUri:' + str(self.SecurityPolicyUri) + ', '  + \
1352
             'UserIdentityTokens:' + str(self.UserIdentityTokens) + ', '  + \
1353
             'TransportProfileUri:' + str(self.TransportProfileUri) + ', '  + \
1354
             'SecurityLevel:' + str(self.SecurityLevel) + ')'
1355
    
1356 1
    __repr__ = __str__
1357
    
1358 1
class GetEndpointsParameters(FrozenClass):
1359
    '''
1360
    :ivar EndpointUrl: 
1361
    :vartype EndpointUrl: String 
1362
    :ivar LocaleIds: 
1363
    :vartype LocaleIds: String 
1364
    :ivar ProfileUris: 
1365
    :vartype ProfileUris: String 
1366
    '''
1367 1
    def __init__(self):
1368 1
        self.EndpointUrl = ''
1369 1
        self.LocaleIds = []
1370 1
        self.ProfileUris = []
1371 1
        self._freeze()
1372
    
1373 1
    def to_binary(self):
1374 1
        packet = []
1375 1
        packet.append(pack_uatype('String', self.EndpointUrl))
1376 1
        packet.append(struct.pack('<i', len(self.LocaleIds)))
1377 1
        for fieldname in self.LocaleIds:
1378
            packet.append(pack_uatype('String', fieldname))
1379 1
        packet.append(struct.pack('<i', len(self.ProfileUris)))
1380 1
        for fieldname in self.ProfileUris:
1381
            packet.append(pack_uatype('String', fieldname))
1382 1
        return b''.join(packet)
1383
        
1384 1
    @staticmethod
1385
    def from_binary(data):
1386 1
        obj = GetEndpointsParameters()
1387 1
        obj.EndpointUrl = unpack_uatype('String', data)
1388 1
        obj.LocaleIds = unpack_uatype_array('String', data)
1389 1
        obj.ProfileUris = unpack_uatype_array('String', data)
1390 1
        return obj
1391
    
1392 1
    def __str__(self):
1393
        return 'GetEndpointsParameters(' + 'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
1394
             'LocaleIds:' + str(self.LocaleIds) + ', '  + \
1395
             'ProfileUris:' + str(self.ProfileUris) + ')'
1396
    
1397 1
    __repr__ = __str__
1398
    
1399 1
class GetEndpointsRequest(FrozenClass):
1400
    '''
1401
    Gets the endpoints used by the server.
1402
    
1403
    :ivar TypeId: 
1404
    :vartype TypeId: NodeId 
1405
    :ivar RequestHeader: 
1406
    :vartype RequestHeader: RequestHeader 
1407
    :ivar Parameters: 
1408
    :vartype Parameters: GetEndpointsParameters 
1409
    '''
1410 1
    def __init__(self):
1411 1
        self.TypeId = FourByteNodeId(ObjectIds.GetEndpointsRequest_Encoding_DefaultBinary)
1412 1
        self.RequestHeader = RequestHeader()
1413 1
        self.Parameters = GetEndpointsParameters()
1414 1
        self._freeze()
1415
    
1416 1
    def to_binary(self):
1417 1
        packet = []
1418 1
        packet.append(self.TypeId.to_binary())
1419 1
        packet.append(self.RequestHeader.to_binary())
1420 1
        packet.append(self.Parameters.to_binary())
1421 1
        return b''.join(packet)
1422
        
1423 1
    @staticmethod
1424
    def from_binary(data):
1425
        obj = GetEndpointsRequest()
1426
        obj.TypeId = NodeId.from_binary(data)
1427
        obj.RequestHeader = RequestHeader.from_binary(data)
1428
        obj.Parameters = GetEndpointsParameters.from_binary(data)
1429
        return obj
1430
    
1431 1
    def __str__(self):
1432
        return 'GetEndpointsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1433
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
1434
             'Parameters:' + str(self.Parameters) + ')'
1435
    
1436 1
    __repr__ = __str__
1437
    
1438 1
class GetEndpointsResponse(FrozenClass):
1439
    '''
1440
    Gets the endpoints used by the server.
1441
    
1442
    :ivar TypeId: 
1443
    :vartype TypeId: NodeId 
1444
    :ivar ResponseHeader: 
1445
    :vartype ResponseHeader: ResponseHeader 
1446
    :ivar Endpoints: 
1447
    :vartype Endpoints: EndpointDescription 
1448
    '''
1449 1
    def __init__(self):
1450 1
        self.TypeId = FourByteNodeId(ObjectIds.GetEndpointsResponse_Encoding_DefaultBinary)
1451 1
        self.ResponseHeader = ResponseHeader()
1452 1
        self.Endpoints = []
1453 1
        self._freeze()
1454
    
1455 1
    def to_binary(self):
1456 1
        packet = []
1457 1
        packet.append(self.TypeId.to_binary())
1458 1
        packet.append(self.ResponseHeader.to_binary())
1459 1
        packet.append(struct.pack('<i', len(self.Endpoints)))
1460 1
        for fieldname in self.Endpoints:
1461 1
            packet.append(fieldname.to_binary())
1462 1
        return b''.join(packet)
1463
        
1464 1
    @staticmethod
1465
    def from_binary(data):
1466 1
        obj = GetEndpointsResponse()
1467 1
        obj.TypeId = NodeId.from_binary(data)
1468 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1469 1
        length = struct.unpack('<i', data.read(4))[0]
1470 1
        if length != -1:
1471 1
            for _ in range(0, length):
1472 1
                obj.Endpoints.append(EndpointDescription.from_binary(data))
1473 1
        return obj
1474
    
1475 1
    def __str__(self):
1476
        return 'GetEndpointsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1477
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
1478
             'Endpoints:' + str(self.Endpoints) + ')'
1479
    
1480 1
    __repr__ = __str__
1481
    
1482 1
class RegisteredServer(FrozenClass):
1483
    '''
1484
    The information required to register a server with a discovery server.
1485
    
1486
    :ivar ServerUri: 
1487
    :vartype ServerUri: String 
1488
    :ivar ProductUri: 
1489
    :vartype ProductUri: String 
1490
    :ivar ServerNames: 
1491
    :vartype ServerNames: LocalizedText 
1492
    :ivar ServerType: 
1493
    :vartype ServerType: ApplicationType 
1494
    :ivar GatewayServerUri: 
1495
    :vartype GatewayServerUri: String 
1496
    :ivar DiscoveryUrls: 
1497
    :vartype DiscoveryUrls: String 
1498
    :ivar SemaphoreFilePath: 
1499
    :vartype SemaphoreFilePath: String 
1500
    :ivar IsOnline: 
1501
    :vartype IsOnline: Boolean 
1502
    '''
1503 1
    def __init__(self):
1504
        self.ServerUri = ''
1505
        self.ProductUri = ''
1506
        self.ServerNames = []
1507
        self.ServerType = 0
1508
        self.GatewayServerUri = ''
1509
        self.DiscoveryUrls = []
1510
        self.SemaphoreFilePath = ''
1511
        self.IsOnline = True
1512
        self._freeze()
1513
    
1514 1
    def to_binary(self):
1515
        packet = []
1516
        packet.append(pack_uatype('String', self.ServerUri))
1517
        packet.append(pack_uatype('String', self.ProductUri))
1518
        packet.append(struct.pack('<i', len(self.ServerNames)))
1519
        for fieldname in self.ServerNames:
1520
            packet.append(fieldname.to_binary())
1521
        packet.append(pack_uatype('UInt32', self.ServerType))
1522
        packet.append(pack_uatype('String', self.GatewayServerUri))
1523
        packet.append(struct.pack('<i', len(self.DiscoveryUrls)))
1524
        for fieldname in self.DiscoveryUrls:
1525
            packet.append(pack_uatype('String', fieldname))
1526
        packet.append(pack_uatype('String', self.SemaphoreFilePath))
1527
        packet.append(pack_uatype('Boolean', self.IsOnline))
1528
        return b''.join(packet)
1529
        
1530 1
    @staticmethod
1531
    def from_binary(data):
1532
        obj = RegisteredServer()
1533
        obj.ServerUri = unpack_uatype('String', data)
1534
        obj.ProductUri = unpack_uatype('String', data)
1535
        length = struct.unpack('<i', data.read(4))[0]
1536
        if length != -1:
1537
            for _ in range(0, length):
1538
                obj.ServerNames.append(LocalizedText.from_binary(data))
1539
        obj.ServerType = unpack_uatype('UInt32', data)
1540
        obj.GatewayServerUri = unpack_uatype('String', data)
1541
        obj.DiscoveryUrls = unpack_uatype_array('String', data)
1542
        obj.SemaphoreFilePath = unpack_uatype('String', data)
1543
        obj.IsOnline = unpack_uatype('Boolean', data)
1544
        return obj
1545
    
1546 1
    def __str__(self):
1547
        return 'RegisteredServer(' + 'ServerUri:' + str(self.ServerUri) + ', '  + \
1548
             'ProductUri:' + str(self.ProductUri) + ', '  + \
1549
             'ServerNames:' + str(self.ServerNames) + ', '  + \
1550
             'ServerType:' + str(self.ServerType) + ', '  + \
1551
             'GatewayServerUri:' + str(self.GatewayServerUri) + ', '  + \
1552
             'DiscoveryUrls:' + str(self.DiscoveryUrls) + ', '  + \
1553
             'SemaphoreFilePath:' + str(self.SemaphoreFilePath) + ', '  + \
1554
             'IsOnline:' + str(self.IsOnline) + ')'
1555
    
1556 1
    __repr__ = __str__
1557
    
1558 1
class RegisterServerParameters(FrozenClass):
1559
    '''
1560
    :ivar Server: 
1561
    :vartype Server: RegisteredServer 
1562
    '''
1563 1
    def __init__(self):
1564
        self.Server = RegisteredServer()
1565
        self._freeze()
1566
    
1567 1
    def to_binary(self):
1568
        packet = []
1569
        packet.append(self.Server.to_binary())
1570
        return b''.join(packet)
1571
        
1572 1
    @staticmethod
1573
    def from_binary(data):
1574
        obj = RegisterServerParameters()
1575
        obj.Server = RegisteredServer.from_binary(data)
1576
        return obj
1577
    
1578 1
    def __str__(self):
1579
        return 'RegisterServerParameters(' + 'Server:' + str(self.Server) + ')'
1580
    
1581 1
    __repr__ = __str__
1582
    
1583 1
class RegisterServerRequest(FrozenClass):
1584
    '''
1585
    Registers a server with the discovery server.
1586
    
1587
    :ivar TypeId: 
1588
    :vartype TypeId: NodeId 
1589
    :ivar RequestHeader: 
1590
    :vartype RequestHeader: RequestHeader 
1591
    :ivar Parameters: 
1592
    :vartype Parameters: RegisterServerParameters 
1593
    '''
1594 1
    def __init__(self):
1595
        self.TypeId = FourByteNodeId(ObjectIds.RegisterServerRequest_Encoding_DefaultBinary)
1596
        self.RequestHeader = RequestHeader()
1597
        self.Parameters = RegisterServerParameters()
1598
        self._freeze()
1599
    
1600 1
    def to_binary(self):
1601
        packet = []
1602
        packet.append(self.TypeId.to_binary())
1603
        packet.append(self.RequestHeader.to_binary())
1604
        packet.append(self.Parameters.to_binary())
1605
        return b''.join(packet)
1606
        
1607 1
    @staticmethod
1608
    def from_binary(data):
1609
        obj = RegisterServerRequest()
1610
        obj.TypeId = NodeId.from_binary(data)
1611
        obj.RequestHeader = RequestHeader.from_binary(data)
1612
        obj.Parameters = RegisterServerParameters.from_binary(data)
1613
        return obj
1614
    
1615 1
    def __str__(self):
1616
        return 'RegisterServerRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1617
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
1618
             'Parameters:' + str(self.Parameters) + ')'
1619
    
1620 1
    __repr__ = __str__
1621
    
1622 1
class RegisterServerResponse(FrozenClass):
1623
    '''
1624
    Registers a server with the discovery server.
1625
    
1626
    :ivar TypeId: 
1627
    :vartype TypeId: NodeId 
1628
    :ivar ResponseHeader: 
1629
    :vartype ResponseHeader: ResponseHeader 
1630
    '''
1631 1
    def __init__(self):
1632
        self.TypeId = FourByteNodeId(ObjectIds.RegisterServerResponse_Encoding_DefaultBinary)
1633
        self.ResponseHeader = ResponseHeader()
1634
        self._freeze()
1635
    
1636 1
    def to_binary(self):
1637
        packet = []
1638
        packet.append(self.TypeId.to_binary())
1639
        packet.append(self.ResponseHeader.to_binary())
1640
        return b''.join(packet)
1641
        
1642 1
    @staticmethod
1643
    def from_binary(data):
1644
        obj = RegisterServerResponse()
1645
        obj.TypeId = NodeId.from_binary(data)
1646
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1647
        return obj
1648
    
1649 1
    def __str__(self):
1650
        return 'RegisterServerResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1651
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
1652
    
1653 1
    __repr__ = __str__
1654
    
1655 1
class ChannelSecurityToken(FrozenClass):
1656
    '''
1657
    The token that identifies a set of keys for an active secure channel.
1658
    
1659
    :ivar ChannelId: 
1660
    :vartype ChannelId: UInt32 
1661
    :ivar TokenId: 
1662
    :vartype TokenId: UInt32 
1663
    :ivar CreatedAt: 
1664
    :vartype CreatedAt: DateTime 
1665
    :ivar RevisedLifetime: 
1666
    :vartype RevisedLifetime: UInt32 
1667
    '''
1668 1
    def __init__(self):
1669 1
        self.ChannelId = 0
1670 1
        self.TokenId = 0
1671 1
        self.CreatedAt = datetime.now()
1672 1
        self.RevisedLifetime = 0
1673 1
        self._freeze()
1674
    
1675 1
    def to_binary(self):
1676 1
        packet = []
1677 1
        packet.append(pack_uatype('UInt32', self.ChannelId))
1678 1
        packet.append(pack_uatype('UInt32', self.TokenId))
1679 1
        packet.append(pack_uatype('DateTime', self.CreatedAt))
1680 1
        packet.append(pack_uatype('UInt32', self.RevisedLifetime))
1681 1
        return b''.join(packet)
1682
        
1683 1
    @staticmethod
1684
    def from_binary(data):
1685 1
        obj = ChannelSecurityToken()
1686 1
        obj.ChannelId = unpack_uatype('UInt32', data)
1687 1
        obj.TokenId = unpack_uatype('UInt32', data)
1688 1
        obj.CreatedAt = unpack_uatype('DateTime', data)
1689 1
        obj.RevisedLifetime = unpack_uatype('UInt32', data)
1690 1
        return obj
1691
    
1692 1
    def __str__(self):
1693
        return 'ChannelSecurityToken(' + 'ChannelId:' + str(self.ChannelId) + ', '  + \
1694
             'TokenId:' + str(self.TokenId) + ', '  + \
1695
             'CreatedAt:' + str(self.CreatedAt) + ', '  + \
1696
             'RevisedLifetime:' + str(self.RevisedLifetime) + ')'
1697
    
1698 1
    __repr__ = __str__
1699
    
1700 1
class OpenSecureChannelParameters(FrozenClass):
1701
    '''
1702
    :ivar ClientProtocolVersion: 
1703
    :vartype ClientProtocolVersion: UInt32 
1704
    :ivar RequestType: 
1705
    :vartype RequestType: SecurityTokenRequestType 
1706
    :ivar SecurityMode: 
1707
    :vartype SecurityMode: MessageSecurityMode 
1708
    :ivar ClientNonce: 
1709
    :vartype ClientNonce: ByteString 
1710
    :ivar RequestedLifetime: 
1711
    :vartype RequestedLifetime: UInt32 
1712
    '''
1713 1
    def __init__(self):
1714 1
        self.ClientProtocolVersion = 0
1715 1
        self.RequestType = 0
1716 1
        self.SecurityMode = 0
1717 1
        self.ClientNonce = b''
1718 1
        self.RequestedLifetime = 0
1719 1
        self._freeze()
1720
    
1721 1
    def to_binary(self):
1722 1
        packet = []
1723 1
        packet.append(pack_uatype('UInt32', self.ClientProtocolVersion))
1724 1
        packet.append(pack_uatype('UInt32', self.RequestType))
1725 1
        packet.append(pack_uatype('UInt32', self.SecurityMode))
1726 1
        packet.append(pack_uatype('ByteString', self.ClientNonce))
1727 1
        packet.append(pack_uatype('UInt32', self.RequestedLifetime))
1728 1
        return b''.join(packet)
1729
        
1730 1
    @staticmethod
1731
    def from_binary(data):
1732 1
        obj = OpenSecureChannelParameters()
1733 1
        obj.ClientProtocolVersion = unpack_uatype('UInt32', data)
1734 1
        obj.RequestType = unpack_uatype('UInt32', data)
1735 1
        obj.SecurityMode = unpack_uatype('UInt32', data)
1736 1
        obj.ClientNonce = unpack_uatype('ByteString', data)
1737 1
        obj.RequestedLifetime = unpack_uatype('UInt32', data)
1738 1
        return obj
1739
    
1740 1
    def __str__(self):
1741
        return 'OpenSecureChannelParameters(' + 'ClientProtocolVersion:' + str(self.ClientProtocolVersion) + ', '  + \
1742
             'RequestType:' + str(self.RequestType) + ', '  + \
1743
             'SecurityMode:' + str(self.SecurityMode) + ', '  + \
1744
             'ClientNonce:' + str(self.ClientNonce) + ', '  + \
1745
             'RequestedLifetime:' + str(self.RequestedLifetime) + ')'
1746
    
1747 1
    __repr__ = __str__
1748
    
1749 1
class OpenSecureChannelRequest(FrozenClass):
1750
    '''
1751
    Creates a secure channel with a server.
1752
    
1753
    :ivar TypeId: 
1754
    :vartype TypeId: NodeId 
1755
    :ivar RequestHeader: 
1756
    :vartype RequestHeader: RequestHeader 
1757
    :ivar Parameters: 
1758
    :vartype Parameters: OpenSecureChannelParameters 
1759
    '''
1760 1
    def __init__(self):
1761 1
        self.TypeId = FourByteNodeId(ObjectIds.OpenSecureChannelRequest_Encoding_DefaultBinary)
1762 1
        self.RequestHeader = RequestHeader()
1763 1
        self.Parameters = OpenSecureChannelParameters()
1764 1
        self._freeze()
1765
    
1766 1
    def to_binary(self):
1767 1
        packet = []
1768 1
        packet.append(self.TypeId.to_binary())
1769 1
        packet.append(self.RequestHeader.to_binary())
1770 1
        packet.append(self.Parameters.to_binary())
1771 1
        return b''.join(packet)
1772
        
1773 1
    @staticmethod
1774
    def from_binary(data):
1775 1
        obj = OpenSecureChannelRequest()
1776 1
        obj.TypeId = NodeId.from_binary(data)
1777 1
        obj.RequestHeader = RequestHeader.from_binary(data)
1778 1
        obj.Parameters = OpenSecureChannelParameters.from_binary(data)
1779 1
        return obj
1780
    
1781 1
    def __str__(self):
1782
        return 'OpenSecureChannelRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1783
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
1784
             'Parameters:' + str(self.Parameters) + ')'
1785
    
1786 1
    __repr__ = __str__
1787
    
1788 1
class OpenSecureChannelResult(FrozenClass):
1789
    '''
1790
    :ivar ServerProtocolVersion: 
1791
    :vartype ServerProtocolVersion: UInt32 
1792
    :ivar SecurityToken: 
1793
    :vartype SecurityToken: ChannelSecurityToken 
1794
    :ivar ServerNonce: 
1795
    :vartype ServerNonce: ByteString 
1796
    '''
1797 1
    def __init__(self):
1798 1
        self.ServerProtocolVersion = 0
1799 1
        self.SecurityToken = ChannelSecurityToken()
1800 1
        self.ServerNonce = b''
1801 1
        self._freeze()
1802
    
1803 1
    def to_binary(self):
1804 1
        packet = []
1805 1
        packet.append(pack_uatype('UInt32', self.ServerProtocolVersion))
1806 1
        packet.append(self.SecurityToken.to_binary())
1807 1
        packet.append(pack_uatype('ByteString', self.ServerNonce))
1808 1
        return b''.join(packet)
1809
        
1810 1
    @staticmethod
1811
    def from_binary(data):
1812 1
        obj = OpenSecureChannelResult()
1813 1
        obj.ServerProtocolVersion = unpack_uatype('UInt32', data)
1814 1
        obj.SecurityToken = ChannelSecurityToken.from_binary(data)
1815 1
        obj.ServerNonce = unpack_uatype('ByteString', data)
1816 1
        return obj
1817
    
1818 1
    def __str__(self):
1819
        return 'OpenSecureChannelResult(' + 'ServerProtocolVersion:' + str(self.ServerProtocolVersion) + ', '  + \
1820
             'SecurityToken:' + str(self.SecurityToken) + ', '  + \
1821
             'ServerNonce:' + str(self.ServerNonce) + ')'
1822
    
1823 1
    __repr__ = __str__
1824
    
1825 1
class OpenSecureChannelResponse(FrozenClass):
1826
    '''
1827
    Creates a secure channel with a server.
1828
    
1829
    :ivar TypeId: 
1830
    :vartype TypeId: NodeId 
1831
    :ivar ResponseHeader: 
1832
    :vartype ResponseHeader: ResponseHeader 
1833
    :ivar Parameters: 
1834
    :vartype Parameters: OpenSecureChannelResult 
1835
    '''
1836 1
    def __init__(self):
1837 1
        self.TypeId = FourByteNodeId(ObjectIds.OpenSecureChannelResponse_Encoding_DefaultBinary)
1838 1
        self.ResponseHeader = ResponseHeader()
1839 1
        self.Parameters = OpenSecureChannelResult()
1840 1
        self._freeze()
1841
    
1842 1
    def to_binary(self):
1843 1
        packet = []
1844 1
        packet.append(self.TypeId.to_binary())
1845 1
        packet.append(self.ResponseHeader.to_binary())
1846 1
        packet.append(self.Parameters.to_binary())
1847 1
        return b''.join(packet)
1848
        
1849 1
    @staticmethod
1850
    def from_binary(data):
1851 1
        obj = OpenSecureChannelResponse()
1852 1
        obj.TypeId = NodeId.from_binary(data)
1853 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1854 1
        obj.Parameters = OpenSecureChannelResult.from_binary(data)
1855 1
        return obj
1856
    
1857 1
    def __str__(self):
1858
        return 'OpenSecureChannelResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1859
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
1860
             'Parameters:' + str(self.Parameters) + ')'
1861
    
1862 1
    __repr__ = __str__
1863
    
1864 1
class CloseSecureChannelRequest(FrozenClass):
1865
    '''
1866
    Closes a secure channel.
1867
    
1868
    :ivar TypeId: 
1869
    :vartype TypeId: NodeId 
1870
    :ivar RequestHeader: 
1871
    :vartype RequestHeader: RequestHeader 
1872
    '''
1873 1
    def __init__(self):
1874 1
        self.TypeId = FourByteNodeId(ObjectIds.CloseSecureChannelRequest_Encoding_DefaultBinary)
1875 1
        self.RequestHeader = RequestHeader()
1876 1
        self._freeze()
1877
    
1878 1
    def to_binary(self):
1879 1
        packet = []
1880 1
        packet.append(self.TypeId.to_binary())
1881 1
        packet.append(self.RequestHeader.to_binary())
1882 1
        return b''.join(packet)
1883
        
1884 1
    @staticmethod
1885
    def from_binary(data):
1886
        obj = CloseSecureChannelRequest()
1887
        obj.TypeId = NodeId.from_binary(data)
1888
        obj.RequestHeader = RequestHeader.from_binary(data)
1889
        return obj
1890
    
1891 1
    def __str__(self):
1892
        return 'CloseSecureChannelRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1893
             'RequestHeader:' + str(self.RequestHeader) + ')'
1894
    
1895 1
    __repr__ = __str__
1896
    
1897 1
class CloseSecureChannelResponse(FrozenClass):
1898
    '''
1899
    Closes a secure channel.
1900
    
1901
    :ivar TypeId: 
1902
    :vartype TypeId: NodeId 
1903
    :ivar ResponseHeader: 
1904
    :vartype ResponseHeader: ResponseHeader 
1905
    '''
1906 1
    def __init__(self):
1907
        self.TypeId = FourByteNodeId(ObjectIds.CloseSecureChannelResponse_Encoding_DefaultBinary)
1908
        self.ResponseHeader = ResponseHeader()
1909
        self._freeze()
1910
    
1911 1
    def to_binary(self):
1912
        packet = []
1913
        packet.append(self.TypeId.to_binary())
1914
        packet.append(self.ResponseHeader.to_binary())
1915
        return b''.join(packet)
1916
        
1917 1
    @staticmethod
1918
    def from_binary(data):
1919
        obj = CloseSecureChannelResponse()
1920
        obj.TypeId = NodeId.from_binary(data)
1921
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1922
        return obj
1923
    
1924 1
    def __str__(self):
1925
        return 'CloseSecureChannelResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1926
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
1927
    
1928 1
    __repr__ = __str__
1929
    
1930 1
class SignedSoftwareCertificate(FrozenClass):
1931
    '''
1932
    A software certificate with a digital signature.
1933
    
1934
    :ivar CertificateData: 
1935
    :vartype CertificateData: ByteString 
1936
    :ivar Signature: 
1937
    :vartype Signature: ByteString 
1938
    '''
1939 1
    def __init__(self):
1940
        self.CertificateData = b''
1941
        self.Signature = b''
1942
        self._freeze()
1943
    
1944 1
    def to_binary(self):
1945
        packet = []
1946
        packet.append(pack_uatype('ByteString', self.CertificateData))
1947
        packet.append(pack_uatype('ByteString', self.Signature))
1948
        return b''.join(packet)
1949
        
1950 1
    @staticmethod
1951
    def from_binary(data):
1952
        obj = SignedSoftwareCertificate()
1953
        obj.CertificateData = unpack_uatype('ByteString', data)
1954
        obj.Signature = unpack_uatype('ByteString', data)
1955
        return obj
1956
    
1957 1
    def __str__(self):
1958
        return 'SignedSoftwareCertificate(' + 'CertificateData:' + str(self.CertificateData) + ', '  + \
1959
             'Signature:' + str(self.Signature) + ')'
1960
    
1961 1
    __repr__ = __str__
1962
    
1963 1
class SignatureData(FrozenClass):
1964
    '''
1965
    A digital signature.
1966
    
1967
    :ivar Algorithm: 
1968
    :vartype Algorithm: String 
1969
    :ivar Signature: 
1970
    :vartype Signature: ByteString 
1971
    '''
1972 1
    def __init__(self):
1973 1
        self.Algorithm = ''
1974 1
        self.Signature = b''
1975 1
        self._freeze()
1976
    
1977 1
    def to_binary(self):
1978 1
        packet = []
1979 1
        packet.append(pack_uatype('String', self.Algorithm))
1980 1
        packet.append(pack_uatype('ByteString', self.Signature))
1981 1
        return b''.join(packet)
1982
        
1983 1
    @staticmethod
1984
    def from_binary(data):
1985 1
        obj = SignatureData()
1986 1
        obj.Algorithm = unpack_uatype('String', data)
1987 1
        obj.Signature = unpack_uatype('ByteString', data)
1988 1
        return obj
1989
    
1990 1
    def __str__(self):
1991
        return 'SignatureData(' + 'Algorithm:' + str(self.Algorithm) + ', '  + \
1992
             'Signature:' + str(self.Signature) + ')'
1993
    
1994 1
    __repr__ = __str__
1995
    
1996 1
class CreateSessionParameters(FrozenClass):
1997
    '''
1998
    :ivar ClientDescription: 
1999
    :vartype ClientDescription: ApplicationDescription 
2000
    :ivar ServerUri: 
2001
    :vartype ServerUri: String 
2002
    :ivar EndpointUrl: 
2003
    :vartype EndpointUrl: String 
2004
    :ivar SessionName: 
2005
    :vartype SessionName: String 
2006
    :ivar ClientNonce: 
2007
    :vartype ClientNonce: ByteString 
2008
    :ivar ClientCertificate: 
2009
    :vartype ClientCertificate: ByteString 
2010
    :ivar RequestedSessionTimeout: 
2011
    :vartype RequestedSessionTimeout: Double 
2012
    :ivar MaxResponseMessageSize: 
2013
    :vartype MaxResponseMessageSize: UInt32 
2014
    '''
2015 1
    def __init__(self):
2016 1
        self.ClientDescription = ApplicationDescription()
2017 1
        self.ServerUri = ''
2018 1
        self.EndpointUrl = ''
2019 1
        self.SessionName = ''
2020 1
        self.ClientNonce = b''
2021 1
        self.ClientCertificate = b''
2022 1
        self.RequestedSessionTimeout = 0
2023 1
        self.MaxResponseMessageSize = 0
2024 1
        self._freeze()
2025
    
2026 1
    def to_binary(self):
2027 1
        packet = []
2028 1
        packet.append(self.ClientDescription.to_binary())
2029 1
        packet.append(pack_uatype('String', self.ServerUri))
2030 1
        packet.append(pack_uatype('String', self.EndpointUrl))
2031 1
        packet.append(pack_uatype('String', self.SessionName))
2032 1
        packet.append(pack_uatype('ByteString', self.ClientNonce))
2033 1
        packet.append(pack_uatype('ByteString', self.ClientCertificate))
2034 1
        packet.append(pack_uatype('Double', self.RequestedSessionTimeout))
2035 1
        packet.append(pack_uatype('UInt32', self.MaxResponseMessageSize))
2036 1
        return b''.join(packet)
2037
        
2038 1
    @staticmethod
2039
    def from_binary(data):
2040 1
        obj = CreateSessionParameters()
2041 1
        obj.ClientDescription = ApplicationDescription.from_binary(data)
2042 1
        obj.ServerUri = unpack_uatype('String', data)
2043 1
        obj.EndpointUrl = unpack_uatype('String', data)
2044 1
        obj.SessionName = unpack_uatype('String', data)
2045 1
        obj.ClientNonce = unpack_uatype('ByteString', data)
2046 1
        obj.ClientCertificate = unpack_uatype('ByteString', data)
2047 1
        obj.RequestedSessionTimeout = unpack_uatype('Double', data)
2048 1
        obj.MaxResponseMessageSize = unpack_uatype('UInt32', data)
2049 1
        return obj
2050
    
2051 1
    def __str__(self):
2052
        return 'CreateSessionParameters(' + 'ClientDescription:' + str(self.ClientDescription) + ', '  + \
2053
             'ServerUri:' + str(self.ServerUri) + ', '  + \
2054
             'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
2055
             'SessionName:' + str(self.SessionName) + ', '  + \
2056
             'ClientNonce:' + str(self.ClientNonce) + ', '  + \
2057
             'ClientCertificate:' + str(self.ClientCertificate) + ', '  + \
2058
             'RequestedSessionTimeout:' + str(self.RequestedSessionTimeout) + ', '  + \
2059
             'MaxResponseMessageSize:' + str(self.MaxResponseMessageSize) + ')'
2060
    
2061 1
    __repr__ = __str__
2062
    
2063 1
class CreateSessionRequest(FrozenClass):
2064
    '''
2065
    Creates a new session with the server.
2066
    
2067
    :ivar TypeId: 
2068
    :vartype TypeId: NodeId 
2069
    :ivar RequestHeader: 
2070
    :vartype RequestHeader: RequestHeader 
2071
    :ivar Parameters: 
2072
    :vartype Parameters: CreateSessionParameters 
2073
    '''
2074 1
    def __init__(self):
2075 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSessionRequest_Encoding_DefaultBinary)
2076 1
        self.RequestHeader = RequestHeader()
2077 1
        self.Parameters = CreateSessionParameters()
2078 1
        self._freeze()
2079
    
2080 1
    def to_binary(self):
2081 1
        packet = []
2082 1
        packet.append(self.TypeId.to_binary())
2083 1
        packet.append(self.RequestHeader.to_binary())
2084 1
        packet.append(self.Parameters.to_binary())
2085 1
        return b''.join(packet)
2086
        
2087 1
    @staticmethod
2088
    def from_binary(data):
2089
        obj = CreateSessionRequest()
2090
        obj.TypeId = NodeId.from_binary(data)
2091
        obj.RequestHeader = RequestHeader.from_binary(data)
2092
        obj.Parameters = CreateSessionParameters.from_binary(data)
2093
        return obj
2094
    
2095 1
    def __str__(self):
2096
        return 'CreateSessionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2097
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
2098
             'Parameters:' + str(self.Parameters) + ')'
2099
    
2100 1
    __repr__ = __str__
2101
    
2102 1
class CreateSessionResult(FrozenClass):
2103
    '''
2104
    :ivar SessionId: 
2105
    :vartype SessionId: NodeId 
2106
    :ivar AuthenticationToken: 
2107
    :vartype AuthenticationToken: NodeId 
2108
    :ivar RevisedSessionTimeout: 
2109
    :vartype RevisedSessionTimeout: Double 
2110
    :ivar ServerNonce: 
2111
    :vartype ServerNonce: ByteString 
2112
    :ivar ServerCertificate: 
2113
    :vartype ServerCertificate: ByteString 
2114
    :ivar ServerEndpoints: 
2115
    :vartype ServerEndpoints: EndpointDescription 
2116
    :ivar ServerSoftwareCertificates: 
2117
    :vartype ServerSoftwareCertificates: SignedSoftwareCertificate 
2118
    :ivar ServerSignature: 
2119
    :vartype ServerSignature: SignatureData 
2120
    :ivar MaxRequestMessageSize: 
2121
    :vartype MaxRequestMessageSize: UInt32 
2122
    '''
2123 1
    def __init__(self):
2124 1
        self.SessionId = NodeId()
2125 1
        self.AuthenticationToken = NodeId()
2126 1
        self.RevisedSessionTimeout = 0
2127 1
        self.ServerNonce = b''
2128 1
        self.ServerCertificate = b''
2129 1
        self.ServerEndpoints = []
2130 1
        self.ServerSoftwareCertificates = []
2131 1
        self.ServerSignature = SignatureData()
2132 1
        self.MaxRequestMessageSize = 0
2133 1
        self._freeze()
2134
    
2135 1
    def to_binary(self):
2136 1
        packet = []
2137 1
        packet.append(self.SessionId.to_binary())
2138 1
        packet.append(self.AuthenticationToken.to_binary())
2139 1
        packet.append(pack_uatype('Double', self.RevisedSessionTimeout))
2140 1
        packet.append(pack_uatype('ByteString', self.ServerNonce))
2141 1
        packet.append(pack_uatype('ByteString', self.ServerCertificate))
2142 1
        packet.append(struct.pack('<i', len(self.ServerEndpoints)))
2143 1
        for fieldname in self.ServerEndpoints:
2144 1
            packet.append(fieldname.to_binary())
2145 1
        packet.append(struct.pack('<i', len(self.ServerSoftwareCertificates)))
2146 1
        for fieldname in self.ServerSoftwareCertificates:
2147
            packet.append(fieldname.to_binary())
2148 1
        packet.append(self.ServerSignature.to_binary())
2149 1
        packet.append(pack_uatype('UInt32', self.MaxRequestMessageSize))
2150 1
        return b''.join(packet)
2151
        
2152 1
    @staticmethod
2153
    def from_binary(data):
2154 1
        obj = CreateSessionResult()
2155 1
        obj.SessionId = NodeId.from_binary(data)
2156 1
        obj.AuthenticationToken = NodeId.from_binary(data)
2157 1
        obj.RevisedSessionTimeout = unpack_uatype('Double', data)
2158 1
        obj.ServerNonce = unpack_uatype('ByteString', data)
2159 1
        obj.ServerCertificate = unpack_uatype('ByteString', data)
2160 1
        length = struct.unpack('<i', data.read(4))[0]
2161 1
        if length != -1:
2162 1
            for _ in range(0, length):
2163 1
                obj.ServerEndpoints.append(EndpointDescription.from_binary(data))
2164 1
        length = struct.unpack('<i', data.read(4))[0]
2165 1
        if length != -1:
2166 1
            for _ in range(0, length):
2167
                obj.ServerSoftwareCertificates.append(SignedSoftwareCertificate.from_binary(data))
2168 1
        obj.ServerSignature = SignatureData.from_binary(data)
2169 1
        obj.MaxRequestMessageSize = unpack_uatype('UInt32', data)
2170 1
        return obj
2171
    
2172 1
    def __str__(self):
2173
        return 'CreateSessionResult(' + 'SessionId:' + str(self.SessionId) + ', '  + \
2174
             'AuthenticationToken:' + str(self.AuthenticationToken) + ', '  + \
2175
             'RevisedSessionTimeout:' + str(self.RevisedSessionTimeout) + ', '  + \
2176
             'ServerNonce:' + str(self.ServerNonce) + ', '  + \
2177
             'ServerCertificate:' + str(self.ServerCertificate) + ', '  + \
2178
             'ServerEndpoints:' + str(self.ServerEndpoints) + ', '  + \
2179
             'ServerSoftwareCertificates:' + str(self.ServerSoftwareCertificates) + ', '  + \
2180
             'ServerSignature:' + str(self.ServerSignature) + ', '  + \
2181
             'MaxRequestMessageSize:' + str(self.MaxRequestMessageSize) + ')'
2182
    
2183 1
    __repr__ = __str__
2184
    
2185 1
class CreateSessionResponse(FrozenClass):
2186
    '''
2187
    Creates a new session with the server.
2188
    
2189
    :ivar TypeId: 
2190
    :vartype TypeId: NodeId 
2191
    :ivar ResponseHeader: 
2192
    :vartype ResponseHeader: ResponseHeader 
2193
    :ivar Parameters: 
2194
    :vartype Parameters: CreateSessionResult 
2195
    '''
2196 1
    def __init__(self):
2197 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSessionResponse_Encoding_DefaultBinary)
2198 1
        self.ResponseHeader = ResponseHeader()
2199 1
        self.Parameters = CreateSessionResult()
2200 1
        self._freeze()
2201
    
2202 1
    def to_binary(self):
2203 1
        packet = []
2204 1
        packet.append(self.TypeId.to_binary())
2205 1
        packet.append(self.ResponseHeader.to_binary())
2206 1
        packet.append(self.Parameters.to_binary())
2207 1
        return b''.join(packet)
2208
        
2209 1
    @staticmethod
2210
    def from_binary(data):
2211 1
        obj = CreateSessionResponse()
2212 1
        obj.TypeId = NodeId.from_binary(data)
2213 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
2214 1
        obj.Parameters = CreateSessionResult.from_binary(data)
2215 1
        return obj
2216
    
2217 1
    def __str__(self):
2218
        return 'CreateSessionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2219
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
2220
             'Parameters:' + str(self.Parameters) + ')'
2221
    
2222 1
    __repr__ = __str__
2223
    
2224 1
class UserIdentityToken(FrozenClass):
2225
    '''
2226
    A base type for a user identity token.
2227
    
2228
    :ivar TypeId: 
2229
    :vartype TypeId: NodeId 
2230
    :ivar Encoding: 
2231
    :vartype Encoding: UInt8 
2232
    :ivar BodyLength: 
2233
    :vartype BodyLength: Int32 
2234
    :ivar PolicyId: 
2235
    :vartype PolicyId: String 
2236
    '''
2237 1
    def __init__(self):
2238
        self.TypeId = FourByteNodeId(ObjectIds.UserIdentityToken_Encoding_DefaultBinary)
2239
        self.Encoding = 1
2240
        self.BodyLength = 0
2241
        self.PolicyId = ''
2242
        self._freeze()
2243
    
2244 1
    def to_binary(self):
2245
        packet = []
2246
        body = []
2247
        packet.append(self.TypeId.to_binary())
2248
        packet.append(pack_uatype('UInt8', self.Encoding))
2249
        body.append(pack_uatype('String', self.PolicyId))
2250
        body = b''.join(body)
2251
        packet.append(struct.pack('<i', len(body)))
2252
        packet.append(body)
2253
        return b''.join(packet)
2254
        
2255 1
    @staticmethod
2256
    def from_binary(data):
2257
        obj = UserIdentityToken()
2258
        obj.TypeId = NodeId.from_binary(data)
2259
        obj.Encoding = unpack_uatype('UInt8', data)
2260
        obj.BodyLength = unpack_uatype('Int32', data)
2261
        obj.PolicyId = unpack_uatype('String', data)
2262
        return obj
2263
    
2264 1
    def __str__(self):
2265
        return 'UserIdentityToken(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2266
             'Encoding:' + str(self.Encoding) + ', '  + \
2267
             'BodyLength:' + str(self.BodyLength) + ', '  + \
2268
             'PolicyId:' + str(self.PolicyId) + ')'
2269
    
2270 1
    __repr__ = __str__
2271
    
2272 1
class AnonymousIdentityToken(FrozenClass):
2273
    '''
2274
    A token representing an anonymous user.
2275
    
2276
    :ivar TypeId: 
2277
    :vartype TypeId: NodeId 
2278
    :ivar Encoding: 
2279
    :vartype Encoding: UInt8 
2280
    :ivar BodyLength: 
2281
    :vartype BodyLength: Int32 
2282
    :ivar PolicyId: 
2283
    :vartype PolicyId: String 
2284
    '''
2285 1
    def __init__(self):
2286 1
        self.TypeId = FourByteNodeId(ObjectIds.AnonymousIdentityToken_Encoding_DefaultBinary)
2287 1
        self.Encoding = 1
2288 1
        self.BodyLength = 0
2289 1
        self.PolicyId = ''
2290 1
        self._freeze()
2291
    
2292 1
    def to_binary(self):
2293 1
        packet = []
2294 1
        body = []
2295 1
        packet.append(self.TypeId.to_binary())
2296 1
        packet.append(pack_uatype('UInt8', self.Encoding))
2297 1
        body.append(pack_uatype('String', self.PolicyId))
2298 1
        body = b''.join(body)
2299 1
        packet.append(struct.pack('<i', len(body)))
2300 1
        packet.append(body)
2301 1
        return b''.join(packet)
2302
        
2303 1
    @staticmethod
2304
    def from_binary(data):
2305 1
        obj = AnonymousIdentityToken()
2306 1
        obj.TypeId = NodeId.from_binary(data)
2307 1
        obj.Encoding = unpack_uatype('UInt8', data)
2308 1
        obj.BodyLength = unpack_uatype('Int32', data)
2309 1
        obj.PolicyId = unpack_uatype('String', data)
2310 1
        return obj
2311
    
2312 1
    def __str__(self):
2313
        return 'AnonymousIdentityToken(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2314
             'Encoding:' + str(self.Encoding) + ', '  + \
2315
             'BodyLength:' + str(self.BodyLength) + ', '  + \
2316
             'PolicyId:' + str(self.PolicyId) + ')'
2317
    
2318 1
    __repr__ = __str__
2319
    
2320 1
class UserNameIdentityToken(FrozenClass):
2321
    '''
2322
    A token representing a user identified by a user name and password.
2323
    
2324
    :ivar TypeId: 
2325
    :vartype TypeId: NodeId 
2326
    :ivar Encoding: 
2327
    :vartype Encoding: UInt8 
2328
    :ivar BodyLength: 
2329
    :vartype BodyLength: Int32 
2330
    :ivar PolicyId: 
2331
    :vartype PolicyId: String 
2332
    :ivar UserName: 
2333
    :vartype UserName: String 
2334
    :ivar Password: 
2335
    :vartype Password: ByteString 
2336
    :ivar EncryptionAlgorithm: 
2337
    :vartype EncryptionAlgorithm: String 
2338
    '''
2339 1
    def __init__(self):
2340 1
        self.TypeId = FourByteNodeId(ObjectIds.UserNameIdentityToken_Encoding_DefaultBinary)
2341 1
        self.Encoding = 1
2342 1
        self.BodyLength = 0
2343 1
        self.PolicyId = ''
2344 1
        self.UserName = ''
2345 1
        self.Password = b''
2346 1
        self.EncryptionAlgorithm = ''
2347 1
        self._freeze()
2348
    
2349 1
    def to_binary(self):
2350 1
        packet = []
2351 1
        body = []
2352 1
        packet.append(self.TypeId.to_binary())
2353 1
        packet.append(pack_uatype('UInt8', self.Encoding))
2354 1
        body.append(pack_uatype('String', self.PolicyId))
2355 1
        body.append(pack_uatype('String', self.UserName))
2356 1
        body.append(pack_uatype('ByteString', self.Password))
2357 1
        body.append(pack_uatype('String', self.EncryptionAlgorithm))
2358 1
        body = b''.join(body)
2359 1
        packet.append(struct.pack('<i', len(body)))
2360 1
        packet.append(body)
2361 1
        return b''.join(packet)
2362
        
2363 1
    @staticmethod
2364
    def from_binary(data):
2365 1
        obj = UserNameIdentityToken()
2366 1
        obj.TypeId = NodeId.from_binary(data)
2367 1
        obj.Encoding = unpack_uatype('UInt8', data)
2368 1
        obj.BodyLength = unpack_uatype('Int32', data)
2369 1
        obj.PolicyId = unpack_uatype('String', data)
2370 1
        obj.UserName = unpack_uatype('String', data)
2371 1
        obj.Password = unpack_uatype('ByteString', data)
2372 1
        obj.EncryptionAlgorithm = unpack_uatype('String', data)
2373 1
        return obj
2374
    
2375 1
    def __str__(self):
2376
        return 'UserNameIdentityToken(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2377
             'Encoding:' + str(self.Encoding) + ', '  + \
2378
             'BodyLength:' + str(self.BodyLength) + ', '  + \
2379
             'PolicyId:' + str(self.PolicyId) + ', '  + \
2380
             'UserName:' + str(self.UserName) + ', '  + \
2381
             'Password:' + str(self.Password) + ', '  + \
2382
             'EncryptionAlgorithm:' + str(self.EncryptionAlgorithm) + ')'
2383
    
2384 1
    __repr__ = __str__
2385
    
2386 1
class X509IdentityToken(FrozenClass):
2387
    '''
2388
    A token representing a user identified by an X509 certificate.
2389
    
2390
    :ivar TypeId: 
2391
    :vartype TypeId: NodeId 
2392
    :ivar Encoding: 
2393
    :vartype Encoding: UInt8 
2394
    :ivar BodyLength: 
2395
    :vartype BodyLength: Int32 
2396
    :ivar PolicyId: 
2397
    :vartype PolicyId: String 
2398
    :ivar CertificateData: 
2399
    :vartype CertificateData: ByteString 
2400
    '''
2401 1
    def __init__(self):
2402
        self.TypeId = FourByteNodeId(ObjectIds.X509IdentityToken_Encoding_DefaultBinary)
2403
        self.Encoding = 1
2404
        self.BodyLength = 0
2405
        self.PolicyId = ''
2406
        self.CertificateData = b''
2407
        self._freeze()
2408
    
2409 1
    def to_binary(self):
2410
        packet = []
2411
        body = []
2412
        packet.append(self.TypeId.to_binary())
2413
        packet.append(pack_uatype('UInt8', self.Encoding))
2414
        body.append(pack_uatype('String', self.PolicyId))
2415
        body.append(pack_uatype('ByteString', self.CertificateData))
2416
        body = b''.join(body)
2417
        packet.append(struct.pack('<i', len(body)))
2418
        packet.append(body)
2419
        return b''.join(packet)
2420
        
2421 1
    @staticmethod
2422
    def from_binary(data):
2423
        obj = X509IdentityToken()
2424
        obj.TypeId = NodeId.from_binary(data)
2425
        obj.Encoding = unpack_uatype('UInt8', data)
2426
        obj.BodyLength = unpack_uatype('Int32', data)
2427
        obj.PolicyId = unpack_uatype('String', data)
2428
        obj.CertificateData = unpack_uatype('ByteString', data)
2429
        return obj
2430
    
2431 1
    def __str__(self):
2432
        return 'X509IdentityToken(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2433
             'Encoding:' + str(self.Encoding) + ', '  + \
2434
             'BodyLength:' + str(self.BodyLength) + ', '  + \
2435
             'PolicyId:' + str(self.PolicyId) + ', '  + \
2436
             'CertificateData:' + str(self.CertificateData) + ')'
2437
    
2438 1
    __repr__ = __str__
2439
    
2440 1
class IssuedIdentityToken(FrozenClass):
2441
    '''
2442
    A token representing a user identified by a WS-Security XML token.
2443
    
2444
    :ivar TypeId: 
2445
    :vartype TypeId: NodeId 
2446
    :ivar Encoding: 
2447
    :vartype Encoding: UInt8 
2448
    :ivar BodyLength: 
2449
    :vartype BodyLength: Int32 
2450
    :ivar PolicyId: 
2451
    :vartype PolicyId: String 
2452
    :ivar TokenData: 
2453
    :vartype TokenData: ByteString 
2454
    :ivar EncryptionAlgorithm: 
2455
    :vartype EncryptionAlgorithm: String 
2456
    '''
2457 1
    def __init__(self):
2458
        self.TypeId = FourByteNodeId(ObjectIds.IssuedIdentityToken_Encoding_DefaultBinary)
2459
        self.Encoding = 1
2460
        self.BodyLength = 0
2461
        self.PolicyId = ''
2462
        self.TokenData = b''
2463
        self.EncryptionAlgorithm = ''
2464
        self._freeze()
2465
    
2466 1
    def to_binary(self):
2467
        packet = []
2468
        body = []
2469
        packet.append(self.TypeId.to_binary())
2470
        packet.append(pack_uatype('UInt8', self.Encoding))
2471
        body.append(pack_uatype('String', self.PolicyId))
2472
        body.append(pack_uatype('ByteString', self.TokenData))
2473
        body.append(pack_uatype('String', self.EncryptionAlgorithm))
2474
        body = b''.join(body)
2475
        packet.append(struct.pack('<i', len(body)))
2476
        packet.append(body)
2477
        return b''.join(packet)
2478
        
2479 1
    @staticmethod
2480
    def from_binary(data):
2481
        obj = IssuedIdentityToken()
2482
        obj.TypeId = NodeId.from_binary(data)
2483
        obj.Encoding = unpack_uatype('UInt8', data)
2484
        obj.BodyLength = unpack_uatype('Int32', data)
2485
        obj.PolicyId = unpack_uatype('String', data)
2486
        obj.TokenData = unpack_uatype('ByteString', data)
2487
        obj.EncryptionAlgorithm = unpack_uatype('String', data)
2488
        return obj
2489
    
2490 1
    def __str__(self):
2491
        return 'IssuedIdentityToken(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2492
             'Encoding:' + str(self.Encoding) + ', '  + \
2493
             'BodyLength:' + str(self.BodyLength) + ', '  + \
2494
             'PolicyId:' + str(self.PolicyId) + ', '  + \
2495
             'TokenData:' + str(self.TokenData) + ', '  + \
2496
             'EncryptionAlgorithm:' + str(self.EncryptionAlgorithm) + ')'
2497
    
2498 1
    __repr__ = __str__
2499
    
2500 1
class ActivateSessionParameters(FrozenClass):
2501
    '''
2502
    :ivar ClientSignature: 
2503
    :vartype ClientSignature: SignatureData 
2504
    :ivar ClientSoftwareCertificates: 
2505
    :vartype ClientSoftwareCertificates: SignedSoftwareCertificate 
2506
    :ivar LocaleIds: 
2507
    :vartype LocaleIds: String 
2508
    :ivar UserIdentityToken: 
2509
    :vartype UserIdentityToken: ExtensionObject 
2510
    :ivar UserTokenSignature: 
2511
    :vartype UserTokenSignature: SignatureData 
2512
    '''
2513 1
    def __init__(self):
2514 1
        self.ClientSignature = SignatureData()
2515 1
        self.ClientSoftwareCertificates = []
2516 1
        self.LocaleIds = []
2517 1
        self.UserIdentityToken = ExtensionObject()
2518 1
        self.UserTokenSignature = SignatureData()
2519 1
        self._freeze()
2520
    
2521 1
    def to_binary(self):
2522 1
        packet = []
2523 1
        packet.append(self.ClientSignature.to_binary())
2524 1
        packet.append(struct.pack('<i', len(self.ClientSoftwareCertificates)))
2525 1
        for fieldname in self.ClientSoftwareCertificates:
2526
            packet.append(fieldname.to_binary())
2527 1
        packet.append(struct.pack('<i', len(self.LocaleIds)))
2528 1
        for fieldname in self.LocaleIds:
2529 1
            packet.append(pack_uatype('String', fieldname))
2530 1
        packet.append(self.UserIdentityToken.to_binary())
2531 1
        packet.append(self.UserTokenSignature.to_binary())
2532 1
        return b''.join(packet)
2533
        
2534 1
    @staticmethod
2535
    def from_binary(data):
2536 1
        obj = ActivateSessionParameters()
2537 1
        obj.ClientSignature = SignatureData.from_binary(data)
2538 1
        length = struct.unpack('<i', data.read(4))[0]
2539 1
        if length != -1:
2540 1
            for _ in range(0, length):
2541
                obj.ClientSoftwareCertificates.append(SignedSoftwareCertificate.from_binary(data))
2542 1
        obj.LocaleIds = unpack_uatype_array('String', data)
2543 1
        obj.UserIdentityToken = ExtensionObject.from_binary(data)
2544 1
        obj.UserTokenSignature = SignatureData.from_binary(data)
2545 1
        return obj
2546
    
2547 1
    def __str__(self):
2548
        return 'ActivateSessionParameters(' + 'ClientSignature:' + str(self.ClientSignature) + ', '  + \
2549
             'ClientSoftwareCertificates:' + str(self.ClientSoftwareCertificates) + ', '  + \
2550
             'LocaleIds:' + str(self.LocaleIds) + ', '  + \
2551
             'UserIdentityToken:' + str(self.UserIdentityToken) + ', '  + \
2552
             'UserTokenSignature:' + str(self.UserTokenSignature) + ')'
2553
    
2554 1
    __repr__ = __str__
2555
    
2556 1
class ActivateSessionRequest(FrozenClass):
2557
    '''
2558
    Activates a session with the server.
2559
    
2560
    :ivar TypeId: 
2561
    :vartype TypeId: NodeId 
2562
    :ivar RequestHeader: 
2563
    :vartype RequestHeader: RequestHeader 
2564
    :ivar Parameters: 
2565
    :vartype Parameters: ActivateSessionParameters 
2566
    '''
2567 1
    def __init__(self):
2568 1
        self.TypeId = FourByteNodeId(ObjectIds.ActivateSessionRequest_Encoding_DefaultBinary)
2569 1
        self.RequestHeader = RequestHeader()
2570 1
        self.Parameters = ActivateSessionParameters()
2571 1
        self._freeze()
2572
    
2573 1
    def to_binary(self):
2574 1
        packet = []
2575 1
        packet.append(self.TypeId.to_binary())
2576 1
        packet.append(self.RequestHeader.to_binary())
2577 1
        packet.append(self.Parameters.to_binary())
2578 1
        return b''.join(packet)
2579
        
2580 1
    @staticmethod
2581
    def from_binary(data):
2582
        obj = ActivateSessionRequest()
2583
        obj.TypeId = NodeId.from_binary(data)
2584
        obj.RequestHeader = RequestHeader.from_binary(data)
2585
        obj.Parameters = ActivateSessionParameters.from_binary(data)
2586
        return obj
2587
    
2588 1
    def __str__(self):
2589
        return 'ActivateSessionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2590
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
2591
             'Parameters:' + str(self.Parameters) + ')'
2592
    
2593 1
    __repr__ = __str__
2594
    
2595 1
class ActivateSessionResult(FrozenClass):
2596
    '''
2597
    :ivar ServerNonce: 
2598
    :vartype ServerNonce: ByteString 
2599
    :ivar Results: 
2600
    :vartype Results: StatusCode 
2601
    :ivar DiagnosticInfos: 
2602
    :vartype DiagnosticInfos: DiagnosticInfo 
2603
    '''
2604 1
    def __init__(self):
2605 1
        self.ServerNonce = b''
2606 1
        self.Results = []
2607 1
        self.DiagnosticInfos = []
2608 1
        self._freeze()
2609
    
2610 1
    def to_binary(self):
2611 1
        packet = []
2612 1
        packet.append(pack_uatype('ByteString', self.ServerNonce))
2613 1
        packet.append(struct.pack('<i', len(self.Results)))
2614 1
        for fieldname in self.Results:
2615
            packet.append(fieldname.to_binary())
2616 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
2617 1
        for fieldname in self.DiagnosticInfos:
2618
            packet.append(fieldname.to_binary())
2619 1
        return b''.join(packet)
2620
        
2621 1
    @staticmethod
2622
    def from_binary(data):
2623 1
        obj = ActivateSessionResult()
2624 1
        obj.ServerNonce = unpack_uatype('ByteString', data)
2625 1
        length = struct.unpack('<i', data.read(4))[0]
2626 1
        if length != -1:
2627 1
            for _ in range(0, length):
2628
                obj.Results.append(StatusCode.from_binary(data))
2629 1
        length = struct.unpack('<i', data.read(4))[0]
2630 1
        if length != -1:
2631 1
            for _ in range(0, length):
2632
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
2633 1
        return obj
2634
    
2635 1
    def __str__(self):
2636
        return 'ActivateSessionResult(' + 'ServerNonce:' + str(self.ServerNonce) + ', '  + \
2637
             'Results:' + str(self.Results) + ', '  + \
2638
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
2639
    
2640 1
    __repr__ = __str__
2641
    
2642 1
class ActivateSessionResponse(FrozenClass):
2643
    '''
2644
    Activates a session with the server.
2645
    
2646
    :ivar TypeId: 
2647
    :vartype TypeId: NodeId 
2648
    :ivar ResponseHeader: 
2649
    :vartype ResponseHeader: ResponseHeader 
2650
    :ivar Parameters: 
2651
    :vartype Parameters: ActivateSessionResult 
2652
    '''
2653 1
    def __init__(self):
2654 1
        self.TypeId = FourByteNodeId(ObjectIds.ActivateSessionResponse_Encoding_DefaultBinary)
2655 1
        self.ResponseHeader = ResponseHeader()
2656 1
        self.Parameters = ActivateSessionResult()
2657 1
        self._freeze()
2658
    
2659 1
    def to_binary(self):
2660 1
        packet = []
2661 1
        packet.append(self.TypeId.to_binary())
2662 1
        packet.append(self.ResponseHeader.to_binary())
2663 1
        packet.append(self.Parameters.to_binary())
2664 1
        return b''.join(packet)
2665
        
2666 1
    @staticmethod
2667
    def from_binary(data):
2668 1
        obj = ActivateSessionResponse()
2669 1
        obj.TypeId = NodeId.from_binary(data)
2670 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
2671 1
        obj.Parameters = ActivateSessionResult.from_binary(data)
2672 1
        return obj
2673
    
2674 1
    def __str__(self):
2675
        return 'ActivateSessionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2676
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
2677
             'Parameters:' + str(self.Parameters) + ')'
2678
    
2679 1
    __repr__ = __str__
2680
    
2681 1
class CloseSessionRequest(FrozenClass):
2682
    '''
2683
    Closes a session with the server.
2684
    
2685
    :ivar TypeId: 
2686
    :vartype TypeId: NodeId 
2687
    :ivar RequestHeader: 
2688
    :vartype RequestHeader: RequestHeader 
2689
    :ivar DeleteSubscriptions: 
2690
    :vartype DeleteSubscriptions: Boolean 
2691
    '''
2692 1
    def __init__(self):
2693 1
        self.TypeId = FourByteNodeId(ObjectIds.CloseSessionRequest_Encoding_DefaultBinary)
2694 1
        self.RequestHeader = RequestHeader()
2695 1
        self.DeleteSubscriptions = True
2696 1
        self._freeze()
2697
    
2698 1
    def to_binary(self):
2699 1
        packet = []
2700 1
        packet.append(self.TypeId.to_binary())
2701 1
        packet.append(self.RequestHeader.to_binary())
2702 1
        packet.append(pack_uatype('Boolean', self.DeleteSubscriptions))
2703 1
        return b''.join(packet)
2704
        
2705 1
    @staticmethod
2706
    def from_binary(data):
2707
        obj = CloseSessionRequest()
2708
        obj.TypeId = NodeId.from_binary(data)
2709
        obj.RequestHeader = RequestHeader.from_binary(data)
2710
        obj.DeleteSubscriptions = unpack_uatype('Boolean', data)
2711
        return obj
2712
    
2713 1
    def __str__(self):
2714
        return 'CloseSessionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2715
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
2716
             'DeleteSubscriptions:' + str(self.DeleteSubscriptions) + ')'
2717
    
2718 1
    __repr__ = __str__
2719
    
2720 1
class CloseSessionResponse(FrozenClass):
2721
    '''
2722
    Closes a session with the server.
2723
    
2724
    :ivar TypeId: 
2725
    :vartype TypeId: NodeId 
2726
    :ivar ResponseHeader: 
2727
    :vartype ResponseHeader: ResponseHeader 
2728
    '''
2729 1
    def __init__(self):
2730 1
        self.TypeId = FourByteNodeId(ObjectIds.CloseSessionResponse_Encoding_DefaultBinary)
2731 1
        self.ResponseHeader = ResponseHeader()
2732 1
        self._freeze()
2733
    
2734 1
    def to_binary(self):
2735 1
        packet = []
2736 1
        packet.append(self.TypeId.to_binary())
2737 1
        packet.append(self.ResponseHeader.to_binary())
2738 1
        return b''.join(packet)
2739
        
2740 1
    @staticmethod
2741
    def from_binary(data):
2742 1
        obj = CloseSessionResponse()
2743 1
        obj.TypeId = NodeId.from_binary(data)
2744 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
2745 1
        return obj
2746
    
2747 1
    def __str__(self):
2748
        return 'CloseSessionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2749
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
2750
    
2751 1
    __repr__ = __str__
2752
    
2753 1
class CancelParameters(FrozenClass):
2754
    '''
2755
    :ivar RequestHandle: 
2756
    :vartype RequestHandle: UInt32 
2757
    '''
2758 1
    def __init__(self):
2759
        self.RequestHandle = 0
2760
        self._freeze()
2761
    
2762 1
    def to_binary(self):
2763
        packet = []
2764
        packet.append(pack_uatype('UInt32', self.RequestHandle))
2765
        return b''.join(packet)
2766
        
2767 1
    @staticmethod
2768
    def from_binary(data):
2769
        obj = CancelParameters()
2770
        obj.RequestHandle = unpack_uatype('UInt32', data)
2771
        return obj
2772
    
2773 1
    def __str__(self):
2774
        return 'CancelParameters(' + 'RequestHandle:' + str(self.RequestHandle) + ')'
2775
    
2776 1
    __repr__ = __str__
2777
    
2778 1
class CancelRequest(FrozenClass):
2779
    '''
2780
    Cancels an outstanding request.
2781
    
2782
    :ivar TypeId: 
2783
    :vartype TypeId: NodeId 
2784
    :ivar RequestHeader: 
2785
    :vartype RequestHeader: RequestHeader 
2786
    :ivar Parameters: 
2787
    :vartype Parameters: CancelParameters 
2788
    '''
2789 1
    def __init__(self):
2790
        self.TypeId = FourByteNodeId(ObjectIds.CancelRequest_Encoding_DefaultBinary)
2791
        self.RequestHeader = RequestHeader()
2792
        self.Parameters = CancelParameters()
2793
        self._freeze()
2794
    
2795 1
    def to_binary(self):
2796
        packet = []
2797
        packet.append(self.TypeId.to_binary())
2798
        packet.append(self.RequestHeader.to_binary())
2799
        packet.append(self.Parameters.to_binary())
2800
        return b''.join(packet)
2801
        
2802 1
    @staticmethod
2803
    def from_binary(data):
2804
        obj = CancelRequest()
2805
        obj.TypeId = NodeId.from_binary(data)
2806
        obj.RequestHeader = RequestHeader.from_binary(data)
2807
        obj.Parameters = CancelParameters.from_binary(data)
2808
        return obj
2809
    
2810 1
    def __str__(self):
2811
        return 'CancelRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2812
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
2813
             'Parameters:' + str(self.Parameters) + ')'
2814
    
2815 1
    __repr__ = __str__
2816
    
2817 1
class CancelResult(FrozenClass):
2818
    '''
2819
    :ivar CancelCount: 
2820
    :vartype CancelCount: UInt32 
2821
    '''
2822 1
    def __init__(self):
2823
        self.CancelCount = 0
2824
        self._freeze()
2825
    
2826 1
    def to_binary(self):
2827
        packet = []
2828
        packet.append(pack_uatype('UInt32', self.CancelCount))
2829
        return b''.join(packet)
2830
        
2831 1
    @staticmethod
2832
    def from_binary(data):
2833
        obj = CancelResult()
2834
        obj.CancelCount = unpack_uatype('UInt32', data)
2835
        return obj
2836
    
2837 1
    def __str__(self):
2838
        return 'CancelResult(' + 'CancelCount:' + str(self.CancelCount) + ')'
2839
    
2840 1
    __repr__ = __str__
2841
    
2842 1
class CancelResponse(FrozenClass):
2843
    '''
2844
    Cancels an outstanding request.
2845
    
2846
    :ivar TypeId: 
2847
    :vartype TypeId: NodeId 
2848
    :ivar ResponseHeader: 
2849
    :vartype ResponseHeader: ResponseHeader 
2850
    :ivar Parameters: 
2851
    :vartype Parameters: CancelResult 
2852
    '''
2853 1
    def __init__(self):
2854
        self.TypeId = FourByteNodeId(ObjectIds.CancelResponse_Encoding_DefaultBinary)
2855
        self.ResponseHeader = ResponseHeader()
2856
        self.Parameters = CancelResult()
2857
        self._freeze()
2858
    
2859 1
    def to_binary(self):
2860
        packet = []
2861
        packet.append(self.TypeId.to_binary())
2862
        packet.append(self.ResponseHeader.to_binary())
2863
        packet.append(self.Parameters.to_binary())
2864
        return b''.join(packet)
2865
        
2866 1
    @staticmethod
2867
    def from_binary(data):
2868
        obj = CancelResponse()
2869
        obj.TypeId = NodeId.from_binary(data)
2870
        obj.ResponseHeader = ResponseHeader.from_binary(data)
2871
        obj.Parameters = CancelResult.from_binary(data)
2872
        return obj
2873
    
2874 1
    def __str__(self):
2875
        return 'CancelResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2876
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
2877
             'Parameters:' + str(self.Parameters) + ')'
2878
    
2879 1
    __repr__ = __str__
2880
    
2881 1
class NodeAttributes(FrozenClass):
2882
    '''
2883
    The base attributes for all nodes.
2884
    
2885
    :ivar TypeId: 
2886
    :vartype TypeId: NodeId 
2887
    :ivar Encoding: 
2888
    :vartype Encoding: UInt8 
2889
    :ivar BodyLength: 
2890
    :vartype BodyLength: Int32 
2891
    :ivar SpecifiedAttributes: 
2892
    :vartype SpecifiedAttributes: UInt32 
2893
    :ivar DisplayName: 
2894
    :vartype DisplayName: LocalizedText 
2895
    :ivar Description: 
2896
    :vartype Description: LocalizedText 
2897
    :ivar WriteMask: 
2898
    :vartype WriteMask: UInt32 
2899
    :ivar UserWriteMask: 
2900
    :vartype UserWriteMask: UInt32 
2901
    '''
2902 1
    def __init__(self):
2903
        self.TypeId = FourByteNodeId(ObjectIds.NodeAttributes_Encoding_DefaultBinary)
2904
        self.Encoding = 1
2905
        self.BodyLength = 0
2906
        self.SpecifiedAttributes = 0
2907
        self.DisplayName = LocalizedText()
2908
        self.Description = LocalizedText()
2909
        self.WriteMask = 0
2910
        self.UserWriteMask = 0
2911
        self._freeze()
2912
    
2913 1
    def to_binary(self):
2914
        packet = []
2915
        body = []
2916
        packet.append(self.TypeId.to_binary())
2917
        packet.append(pack_uatype('UInt8', self.Encoding))
2918
        body.append(pack_uatype('UInt32', self.SpecifiedAttributes))
2919
        body.append(self.DisplayName.to_binary())
2920
        body.append(self.Description.to_binary())
2921
        body.append(pack_uatype('UInt32', self.WriteMask))
2922
        body.append(pack_uatype('UInt32', self.UserWriteMask))
2923
        body = b''.join(body)
2924
        packet.append(struct.pack('<i', len(body)))
2925
        packet.append(body)
2926
        return b''.join(packet)
2927
        
2928 1
    @staticmethod
2929
    def from_binary(data):
2930
        obj = NodeAttributes()
2931
        obj.TypeId = NodeId.from_binary(data)
2932
        obj.Encoding = unpack_uatype('UInt8', data)
2933
        obj.BodyLength = unpack_uatype('Int32', data)
2934
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
2935
        obj.DisplayName = LocalizedText.from_binary(data)
2936
        obj.Description = LocalizedText.from_binary(data)
2937
        obj.WriteMask = unpack_uatype('UInt32', data)
2938
        obj.UserWriteMask = unpack_uatype('UInt32', data)
2939
        return obj
2940
    
2941 1
    def __str__(self):
2942
        return 'NodeAttributes(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2943
             'Encoding:' + str(self.Encoding) + ', '  + \
2944
             'BodyLength:' + str(self.BodyLength) + ', '  + \
2945
             'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
2946
             'DisplayName:' + str(self.DisplayName) + ', '  + \
2947
             'Description:' + str(self.Description) + ', '  + \
2948
             'WriteMask:' + str(self.WriteMask) + ', '  + \
2949
             'UserWriteMask:' + str(self.UserWriteMask) + ')'
2950
    
2951 1
    __repr__ = __str__
2952
    
2953 1
class ObjectAttributes(FrozenClass):
2954
    '''
2955
    The attributes for an object node.
2956
    
2957
    :ivar TypeId: 
2958
    :vartype TypeId: NodeId 
2959
    :ivar Encoding: 
2960
    :vartype Encoding: UInt8 
2961
    :ivar BodyLength: 
2962
    :vartype BodyLength: Int32 
2963
    :ivar SpecifiedAttributes: 
2964
    :vartype SpecifiedAttributes: UInt32 
2965
    :ivar DisplayName: 
2966
    :vartype DisplayName: LocalizedText 
2967
    :ivar Description: 
2968
    :vartype Description: LocalizedText 
2969
    :ivar WriteMask: 
2970
    :vartype WriteMask: UInt32 
2971
    :ivar UserWriteMask: 
2972
    :vartype UserWriteMask: UInt32 
2973
    :ivar EventNotifier: 
2974
    :vartype EventNotifier: Byte 
2975
    '''
2976 1
    def __init__(self):
2977 1
        self.TypeId = FourByteNodeId(ObjectIds.ObjectAttributes_Encoding_DefaultBinary)
2978 1
        self.Encoding = 1
2979 1
        self.BodyLength = 0
2980 1
        self.SpecifiedAttributes = 0
2981 1
        self.DisplayName = LocalizedText()
2982 1
        self.Description = LocalizedText()
2983 1
        self.WriteMask = 0
2984 1
        self.UserWriteMask = 0
2985 1
        self.EventNotifier = 0
2986 1
        self._freeze()
2987
    
2988 1
    def to_binary(self):
2989 1
        packet = []
2990 1
        body = []
2991 1
        packet.append(self.TypeId.to_binary())
2992 1
        packet.append(pack_uatype('UInt8', self.Encoding))
2993 1
        body.append(pack_uatype('UInt32', self.SpecifiedAttributes))
2994 1
        body.append(self.DisplayName.to_binary())
2995 1
        body.append(self.Description.to_binary())
2996 1
        body.append(pack_uatype('UInt32', self.WriteMask))
2997 1
        body.append(pack_uatype('UInt32', self.UserWriteMask))
2998 1
        body.append(pack_uatype('Byte', self.EventNotifier))
2999 1
        body = b''.join(body)
3000 1
        packet.append(struct.pack('<i', len(body)))
3001 1
        packet.append(body)
3002 1
        return b''.join(packet)
3003
        
3004 1
    @staticmethod
3005
    def from_binary(data):
3006 1
        obj = ObjectAttributes()
3007 1
        obj.TypeId = NodeId.from_binary(data)
3008 1
        obj.Encoding = unpack_uatype('UInt8', data)
3009 1
        obj.BodyLength = unpack_uatype('Int32', data)
3010 1
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3011 1
        obj.DisplayName = LocalizedText.from_binary(data)
3012 1
        obj.Description = LocalizedText.from_binary(data)
3013 1
        obj.WriteMask = unpack_uatype('UInt32', data)
3014 1
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3015 1
        obj.EventNotifier = unpack_uatype('Byte', data)
3016 1
        return obj
3017
    
3018 1
    def __str__(self):
3019
        return 'ObjectAttributes(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3020
             'Encoding:' + str(self.Encoding) + ', '  + \
3021
             'BodyLength:' + str(self.BodyLength) + ', '  + \
3022
             'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3023
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3024
             'Description:' + str(self.Description) + ', '  + \
3025
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3026
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3027
             'EventNotifier:' + str(self.EventNotifier) + ')'
3028
    
3029 1
    __repr__ = __str__
3030
    
3031 1
class VariableAttributes(FrozenClass):
3032
    '''
3033
    The attributes for a variable node.
3034
    
3035
    :ivar TypeId: 
3036
    :vartype TypeId: NodeId 
3037
    :ivar Encoding: 
3038
    :vartype Encoding: UInt8 
3039
    :ivar BodyLength: 
3040
    :vartype BodyLength: Int32 
3041
    :ivar SpecifiedAttributes: 
3042
    :vartype SpecifiedAttributes: UInt32 
3043
    :ivar DisplayName: 
3044
    :vartype DisplayName: LocalizedText 
3045
    :ivar Description: 
3046
    :vartype Description: LocalizedText 
3047
    :ivar WriteMask: 
3048
    :vartype WriteMask: UInt32 
3049
    :ivar UserWriteMask: 
3050
    :vartype UserWriteMask: UInt32 
3051
    :ivar Value: 
3052
    :vartype Value: Variant 
3053
    :ivar DataType: 
3054
    :vartype DataType: NodeId 
3055
    :ivar ValueRank: 
3056
    :vartype ValueRank: Int32 
3057
    :ivar ArrayDimensions: 
3058
    :vartype ArrayDimensions: UInt32 
3059
    :ivar AccessLevel: 
3060
    :vartype AccessLevel: Byte 
3061
    :ivar UserAccessLevel: 
3062
    :vartype UserAccessLevel: Byte 
3063
    :ivar MinimumSamplingInterval: 
3064
    :vartype MinimumSamplingInterval: Double 
3065
    :ivar Historizing: 
3066
    :vartype Historizing: Boolean 
3067
    '''
3068 1
    def __init__(self):
3069 1
        self.TypeId = FourByteNodeId(ObjectIds.VariableAttributes_Encoding_DefaultBinary)
3070 1
        self.Encoding = 1
3071 1
        self.BodyLength = 0
3072 1
        self.SpecifiedAttributes = 0
3073 1
        self.DisplayName = LocalizedText()
3074 1
        self.Description = LocalizedText()
3075 1
        self.WriteMask = 0
3076 1
        self.UserWriteMask = 0
3077 1
        self.Value = Variant()
3078 1
        self.DataType = NodeId()
3079 1
        self.ValueRank = 0
3080 1
        self.ArrayDimensions = []
3081 1
        self.AccessLevel = 0
3082 1
        self.UserAccessLevel = 0
3083 1
        self.MinimumSamplingInterval = 0
3084 1
        self.Historizing = True
3085 1
        self._freeze()
3086
    
3087 1
    def to_binary(self):
3088 1
        packet = []
3089 1
        body = []
3090 1
        packet.append(self.TypeId.to_binary())
3091 1
        packet.append(pack_uatype('UInt8', self.Encoding))
3092 1
        body.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3093 1
        body.append(self.DisplayName.to_binary())
3094 1
        body.append(self.Description.to_binary())
3095 1
        body.append(pack_uatype('UInt32', self.WriteMask))
3096 1
        body.append(pack_uatype('UInt32', self.UserWriteMask))
3097 1
        body.append(self.Value.to_binary())
3098 1
        body.append(self.DataType.to_binary())
3099 1
        body.append(pack_uatype('Int32', self.ValueRank))
3100 1
        body.append(struct.pack('<i', len(self.ArrayDimensions)))
3101 1
        for fieldname in self.ArrayDimensions:
3102
            body.append(pack_uatype('UInt32', fieldname))
3103 1
        body.append(pack_uatype('Byte', self.AccessLevel))
3104 1
        body.append(pack_uatype('Byte', self.UserAccessLevel))
3105 1
        body.append(pack_uatype('Double', self.MinimumSamplingInterval))
3106 1
        body.append(pack_uatype('Boolean', self.Historizing))
3107 1
        body = b''.join(body)
3108 1
        packet.append(struct.pack('<i', len(body)))
3109 1
        packet.append(body)
3110 1
        return b''.join(packet)
3111
        
3112 1
    @staticmethod
3113
    def from_binary(data):
3114 1
        obj = VariableAttributes()
3115 1
        obj.TypeId = NodeId.from_binary(data)
3116 1
        obj.Encoding = unpack_uatype('UInt8', data)
3117 1
        obj.BodyLength = unpack_uatype('Int32', data)
3118 1
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3119 1
        obj.DisplayName = LocalizedText.from_binary(data)
3120 1
        obj.Description = LocalizedText.from_binary(data)
3121 1
        obj.WriteMask = unpack_uatype('UInt32', data)
3122 1
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3123 1
        obj.Value = Variant.from_binary(data)
3124 1
        obj.DataType = NodeId.from_binary(data)
3125 1
        obj.ValueRank = unpack_uatype('Int32', data)
3126 1
        obj.ArrayDimensions = unpack_uatype_array('UInt32', data)
3127 1
        obj.AccessLevel = unpack_uatype('Byte', data)
3128 1
        obj.UserAccessLevel = unpack_uatype('Byte', data)
3129 1
        obj.MinimumSamplingInterval = unpack_uatype('Double', data)
3130 1
        obj.Historizing = unpack_uatype('Boolean', data)
3131 1
        return obj
3132
    
3133 1
    def __str__(self):
3134
        return 'VariableAttributes(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3135
             'Encoding:' + str(self.Encoding) + ', '  + \
3136
             'BodyLength:' + str(self.BodyLength) + ', '  + \
3137
             'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3138
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3139
             'Description:' + str(self.Description) + ', '  + \
3140
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3141
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3142
             'Value:' + str(self.Value) + ', '  + \
3143
             'DataType:' + str(self.DataType) + ', '  + \
3144
             'ValueRank:' + str(self.ValueRank) + ', '  + \
3145
             'ArrayDimensions:' + str(self.ArrayDimensions) + ', '  + \
3146
             'AccessLevel:' + str(self.AccessLevel) + ', '  + \
3147
             'UserAccessLevel:' + str(self.UserAccessLevel) + ', '  + \
3148
             'MinimumSamplingInterval:' + str(self.MinimumSamplingInterval) + ', '  + \
3149
             'Historizing:' + str(self.Historizing) + ')'
3150
    
3151 1
    __repr__ = __str__
3152
    
3153 1
class MethodAttributes(FrozenClass):
3154
    '''
3155
    The attributes for a method node.
3156
    
3157
    :ivar TypeId: 
3158
    :vartype TypeId: NodeId 
3159
    :ivar Encoding: 
3160
    :vartype Encoding: UInt8 
3161
    :ivar BodyLength: 
3162
    :vartype BodyLength: Int32 
3163
    :ivar SpecifiedAttributes: 
3164
    :vartype SpecifiedAttributes: UInt32 
3165
    :ivar DisplayName: 
3166
    :vartype DisplayName: LocalizedText 
3167
    :ivar Description: 
3168
    :vartype Description: LocalizedText 
3169
    :ivar WriteMask: 
3170
    :vartype WriteMask: UInt32 
3171
    :ivar UserWriteMask: 
3172
    :vartype UserWriteMask: UInt32 
3173
    :ivar Executable: 
3174
    :vartype Executable: Boolean 
3175
    :ivar UserExecutable: 
3176
    :vartype UserExecutable: Boolean 
3177
    '''
3178 1
    def __init__(self):
3179 1
        self.TypeId = FourByteNodeId(ObjectIds.MethodAttributes_Encoding_DefaultBinary)
3180 1
        self.Encoding = 1
3181 1
        self.BodyLength = 0
3182 1
        self.SpecifiedAttributes = 0
3183 1
        self.DisplayName = LocalizedText()
3184 1
        self.Description = LocalizedText()
3185 1
        self.WriteMask = 0
3186 1
        self.UserWriteMask = 0
3187 1
        self.Executable = True
3188 1
        self.UserExecutable = True
3189 1
        self._freeze()
3190
    
3191 1
    def to_binary(self):
3192 1
        packet = []
3193 1
        body = []
3194 1
        packet.append(self.TypeId.to_binary())
3195 1
        packet.append(pack_uatype('UInt8', self.Encoding))
3196 1
        body.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3197 1
        body.append(self.DisplayName.to_binary())
3198 1
        body.append(self.Description.to_binary())
3199 1
        body.append(pack_uatype('UInt32', self.WriteMask))
3200 1
        body.append(pack_uatype('UInt32', self.UserWriteMask))
3201 1
        body.append(pack_uatype('Boolean', self.Executable))
3202 1
        body.append(pack_uatype('Boolean', self.UserExecutable))
3203 1
        body = b''.join(body)
3204 1
        packet.append(struct.pack('<i', len(body)))
3205 1
        packet.append(body)
3206 1
        return b''.join(packet)
3207
        
3208 1
    @staticmethod
3209
    def from_binary(data):
3210 1
        obj = MethodAttributes()
3211 1
        obj.TypeId = NodeId.from_binary(data)
3212 1
        obj.Encoding = unpack_uatype('UInt8', data)
3213 1
        obj.BodyLength = unpack_uatype('Int32', data)
3214 1
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3215 1
        obj.DisplayName = LocalizedText.from_binary(data)
3216 1
        obj.Description = LocalizedText.from_binary(data)
3217 1
        obj.WriteMask = unpack_uatype('UInt32', data)
3218 1
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3219 1
        obj.Executable = unpack_uatype('Boolean', data)
3220 1
        obj.UserExecutable = unpack_uatype('Boolean', data)
3221 1
        return obj
3222
    
3223 1
    def __str__(self):
3224
        return 'MethodAttributes(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3225
             'Encoding:' + str(self.Encoding) + ', '  + \
3226
             'BodyLength:' + str(self.BodyLength) + ', '  + \
3227
             'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3228
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3229
             'Description:' + str(self.Description) + ', '  + \
3230
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3231
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3232
             'Executable:' + str(self.Executable) + ', '  + \
3233
             'UserExecutable:' + str(self.UserExecutable) + ')'
3234
    
3235 1
    __repr__ = __str__
3236
    
3237 1
class ObjectTypeAttributes(FrozenClass):
3238
    '''
3239
    The attributes for an object type node.
3240
    
3241
    :ivar TypeId: 
3242
    :vartype TypeId: NodeId 
3243
    :ivar Encoding: 
3244
    :vartype Encoding: UInt8 
3245
    :ivar BodyLength: 
3246
    :vartype BodyLength: Int32 
3247
    :ivar SpecifiedAttributes: 
3248
    :vartype SpecifiedAttributes: UInt32 
3249
    :ivar DisplayName: 
3250
    :vartype DisplayName: LocalizedText 
3251
    :ivar Description: 
3252
    :vartype Description: LocalizedText 
3253
    :ivar WriteMask: 
3254
    :vartype WriteMask: UInt32 
3255
    :ivar UserWriteMask: 
3256
    :vartype UserWriteMask: UInt32 
3257
    :ivar IsAbstract: 
3258
    :vartype IsAbstract: Boolean 
3259
    '''
3260 1
    def __init__(self):
3261 1
        self.TypeId = FourByteNodeId(ObjectIds.ObjectTypeAttributes_Encoding_DefaultBinary)
3262 1
        self.Encoding = 1
3263 1
        self.BodyLength = 0
3264 1
        self.SpecifiedAttributes = 0
3265 1
        self.DisplayName = LocalizedText()
3266 1
        self.Description = LocalizedText()
3267 1
        self.WriteMask = 0
3268 1
        self.UserWriteMask = 0
3269 1
        self.IsAbstract = True
3270 1
        self._freeze()
3271
    
3272 1
    def to_binary(self):
3273 1
        packet = []
3274 1
        body = []
3275 1
        packet.append(self.TypeId.to_binary())
3276 1
        packet.append(pack_uatype('UInt8', self.Encoding))
3277 1
        body.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3278 1
        body.append(self.DisplayName.to_binary())
3279 1
        body.append(self.Description.to_binary())
3280 1
        body.append(pack_uatype('UInt32', self.WriteMask))
3281 1
        body.append(pack_uatype('UInt32', self.UserWriteMask))
3282 1
        body.append(pack_uatype('Boolean', self.IsAbstract))
3283 1
        body = b''.join(body)
3284 1
        packet.append(struct.pack('<i', len(body)))
3285 1
        packet.append(body)
3286 1
        return b''.join(packet)
3287
        
3288 1
    @staticmethod
3289
    def from_binary(data):
3290 1
        obj = ObjectTypeAttributes()
3291 1
        obj.TypeId = NodeId.from_binary(data)
3292 1
        obj.Encoding = unpack_uatype('UInt8', data)
3293 1
        obj.BodyLength = unpack_uatype('Int32', data)
3294 1
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3295 1
        obj.DisplayName = LocalizedText.from_binary(data)
3296 1
        obj.Description = LocalizedText.from_binary(data)
3297 1
        obj.WriteMask = unpack_uatype('UInt32', data)
3298 1
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3299 1
        obj.IsAbstract = unpack_uatype('Boolean', data)
3300 1
        return obj
3301
    
3302 1
    def __str__(self):
3303
        return 'ObjectTypeAttributes(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3304
             'Encoding:' + str(self.Encoding) + ', '  + \
3305
             'BodyLength:' + str(self.BodyLength) + ', '  + \
3306
             'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3307
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3308
             'Description:' + str(self.Description) + ', '  + \
3309
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3310
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3311
             'IsAbstract:' + str(self.IsAbstract) + ')'
3312
    
3313 1
    __repr__ = __str__
3314
    
3315 1
class VariableTypeAttributes(FrozenClass):
3316
    '''
3317
    The attributes for a variable type node.
3318
    
3319
    :ivar TypeId: 
3320
    :vartype TypeId: NodeId 
3321
    :ivar Encoding: 
3322
    :vartype Encoding: UInt8 
3323
    :ivar BodyLength: 
3324
    :vartype BodyLength: Int32 
3325
    :ivar SpecifiedAttributes: 
3326
    :vartype SpecifiedAttributes: UInt32 
3327
    :ivar DisplayName: 
3328
    :vartype DisplayName: LocalizedText 
3329
    :ivar Description: 
3330
    :vartype Description: LocalizedText 
3331
    :ivar WriteMask: 
3332
    :vartype WriteMask: UInt32 
3333
    :ivar UserWriteMask: 
3334
    :vartype UserWriteMask: UInt32 
3335
    :ivar Value: 
3336
    :vartype Value: Variant 
3337
    :ivar DataType: 
3338
    :vartype DataType: NodeId 
3339
    :ivar ValueRank: 
3340
    :vartype ValueRank: Int32 
3341
    :ivar ArrayDimensions: 
3342
    :vartype ArrayDimensions: UInt32 
3343
    :ivar IsAbstract: 
3344
    :vartype IsAbstract: Boolean 
3345
    '''
3346 1
    def __init__(self):
3347 1
        self.TypeId = FourByteNodeId(ObjectIds.VariableTypeAttributes_Encoding_DefaultBinary)
3348 1
        self.Encoding = 1
3349 1
        self.BodyLength = 0
3350 1
        self.SpecifiedAttributes = 0
3351 1
        self.DisplayName = LocalizedText()
3352 1
        self.Description = LocalizedText()
3353 1
        self.WriteMask = 0
3354 1
        self.UserWriteMask = 0
3355 1
        self.Value = Variant()
3356 1
        self.DataType = NodeId()
3357 1
        self.ValueRank = 0
3358 1
        self.ArrayDimensions = []
3359 1
        self.IsAbstract = True
3360 1
        self._freeze()
3361
    
3362 1
    def to_binary(self):
3363 1
        packet = []
3364 1
        body = []
3365 1
        packet.append(self.TypeId.to_binary())
3366 1
        packet.append(pack_uatype('UInt8', self.Encoding))
3367 1
        body.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3368 1
        body.append(self.DisplayName.to_binary())
3369 1
        body.append(self.Description.to_binary())
3370 1
        body.append(pack_uatype('UInt32', self.WriteMask))
3371 1
        body.append(pack_uatype('UInt32', self.UserWriteMask))
3372 1
        body.append(self.Value.to_binary())
3373 1
        body.append(self.DataType.to_binary())
3374 1
        body.append(pack_uatype('Int32', self.ValueRank))
3375 1
        body.append(struct.pack('<i', len(self.ArrayDimensions)))
3376 1
        for fieldname in self.ArrayDimensions:
3377 1
            body.append(pack_uatype('UInt32', fieldname))
3378 1
        body.append(pack_uatype('Boolean', self.IsAbstract))
3379 1
        body = b''.join(body)
3380 1
        packet.append(struct.pack('<i', len(body)))
3381 1
        packet.append(body)
3382 1
        return b''.join(packet)
3383
        
3384 1
    @staticmethod
3385
    def from_binary(data):
3386 1
        obj = VariableTypeAttributes()
3387 1
        obj.TypeId = NodeId.from_binary(data)
3388 1
        obj.Encoding = unpack_uatype('UInt8', data)
3389 1
        obj.BodyLength = unpack_uatype('Int32', data)
3390 1
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3391 1
        obj.DisplayName = LocalizedText.from_binary(data)
3392 1
        obj.Description = LocalizedText.from_binary(data)
3393 1
        obj.WriteMask = unpack_uatype('UInt32', data)
3394 1
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3395 1
        obj.Value = Variant.from_binary(data)
3396 1
        obj.DataType = NodeId.from_binary(data)
3397 1
        obj.ValueRank = unpack_uatype('Int32', data)
3398 1
        obj.ArrayDimensions = unpack_uatype_array('UInt32', data)
3399 1
        obj.IsAbstract = unpack_uatype('Boolean', data)
3400 1
        return obj
3401
    
3402 1
    def __str__(self):
3403
        return 'VariableTypeAttributes(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3404
             'Encoding:' + str(self.Encoding) + ', '  + \
3405
             'BodyLength:' + str(self.BodyLength) + ', '  + \
3406
             'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3407
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3408
             'Description:' + str(self.Description) + ', '  + \
3409
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3410
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3411
             'Value:' + str(self.Value) + ', '  + \
3412
             'DataType:' + str(self.DataType) + ', '  + \
3413
             'ValueRank:' + str(self.ValueRank) + ', '  + \
3414
             'ArrayDimensions:' + str(self.ArrayDimensions) + ', '  + \
3415
             'IsAbstract:' + str(self.IsAbstract) + ')'
3416
    
3417 1
    __repr__ = __str__
3418
    
3419 1
class ReferenceTypeAttributes(FrozenClass):
3420
    '''
3421
    The attributes for a reference type node.
3422
    
3423
    :ivar TypeId: 
3424
    :vartype TypeId: NodeId 
3425
    :ivar Encoding: 
3426
    :vartype Encoding: UInt8 
3427
    :ivar BodyLength: 
3428
    :vartype BodyLength: Int32 
3429
    :ivar SpecifiedAttributes: 
3430
    :vartype SpecifiedAttributes: UInt32 
3431
    :ivar DisplayName: 
3432
    :vartype DisplayName: LocalizedText 
3433
    :ivar Description: 
3434
    :vartype Description: LocalizedText 
3435
    :ivar WriteMask: 
3436
    :vartype WriteMask: UInt32 
3437
    :ivar UserWriteMask: 
3438
    :vartype UserWriteMask: UInt32 
3439
    :ivar IsAbstract: 
3440
    :vartype IsAbstract: Boolean 
3441
    :ivar Symmetric: 
3442
    :vartype Symmetric: Boolean 
3443
    :ivar InverseName: 
3444
    :vartype InverseName: LocalizedText 
3445
    '''
3446 1
    def __init__(self):
3447 1
        self.TypeId = FourByteNodeId(ObjectIds.ReferenceTypeAttributes_Encoding_DefaultBinary)
3448 1
        self.Encoding = 1
3449 1
        self.BodyLength = 0
3450 1
        self.SpecifiedAttributes = 0
3451 1
        self.DisplayName = LocalizedText()
3452 1
        self.Description = LocalizedText()
3453 1
        self.WriteMask = 0
3454 1
        self.UserWriteMask = 0
3455 1
        self.IsAbstract = True
3456 1
        self.Symmetric = True
3457 1
        self.InverseName = LocalizedText()
3458 1
        self._freeze()
3459
    
3460 1
    def to_binary(self):
3461 1
        packet = []
3462 1
        body = []
3463 1
        packet.append(self.TypeId.to_binary())
3464 1
        packet.append(pack_uatype('UInt8', self.Encoding))
3465 1
        body.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3466 1
        body.append(self.DisplayName.to_binary())
3467 1
        body.append(self.Description.to_binary())
3468 1
        body.append(pack_uatype('UInt32', self.WriteMask))
3469 1
        body.append(pack_uatype('UInt32', self.UserWriteMask))
3470 1
        body.append(pack_uatype('Boolean', self.IsAbstract))
3471 1
        body.append(pack_uatype('Boolean', self.Symmetric))
3472 1
        body.append(self.InverseName.to_binary())
3473 1
        body = b''.join(body)
3474 1
        packet.append(struct.pack('<i', len(body)))
3475 1
        packet.append(body)
3476 1
        return b''.join(packet)
3477
        
3478 1
    @staticmethod
3479
    def from_binary(data):
3480 1
        obj = ReferenceTypeAttributes()
3481 1
        obj.TypeId = NodeId.from_binary(data)
3482 1
        obj.Encoding = unpack_uatype('UInt8', data)
3483 1
        obj.BodyLength = unpack_uatype('Int32', data)
3484 1
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3485 1
        obj.DisplayName = LocalizedText.from_binary(data)
3486 1
        obj.Description = LocalizedText.from_binary(data)
3487 1
        obj.WriteMask = unpack_uatype('UInt32', data)
3488 1
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3489 1
        obj.IsAbstract = unpack_uatype('Boolean', data)
3490 1
        obj.Symmetric = unpack_uatype('Boolean', data)
3491 1
        obj.InverseName = LocalizedText.from_binary(data)
3492 1
        return obj
3493
    
3494 1
    def __str__(self):
3495
        return 'ReferenceTypeAttributes(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3496
             'Encoding:' + str(self.Encoding) + ', '  + \
3497
             'BodyLength:' + str(self.BodyLength) + ', '  + \
3498
             'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3499
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3500
             'Description:' + str(self.Description) + ', '  + \
3501
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3502
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3503
             'IsAbstract:' + str(self.IsAbstract) + ', '  + \
3504
             'Symmetric:' + str(self.Symmetric) + ', '  + \
3505
             'InverseName:' + str(self.InverseName) + ')'
3506
    
3507 1
    __repr__ = __str__
3508
    
3509 1
class DataTypeAttributes(FrozenClass):
3510
    '''
3511
    The attributes for a data type node.
3512
    
3513
    :ivar TypeId: 
3514
    :vartype TypeId: NodeId 
3515
    :ivar Encoding: 
3516
    :vartype Encoding: UInt8 
3517
    :ivar BodyLength: 
3518
    :vartype BodyLength: Int32 
3519
    :ivar SpecifiedAttributes: 
3520
    :vartype SpecifiedAttributes: UInt32 
3521
    :ivar DisplayName: 
3522
    :vartype DisplayName: LocalizedText 
3523
    :ivar Description: 
3524
    :vartype Description: LocalizedText 
3525
    :ivar WriteMask: 
3526
    :vartype WriteMask: UInt32 
3527
    :ivar UserWriteMask: 
3528
    :vartype UserWriteMask: UInt32 
3529
    :ivar IsAbstract: 
3530
    :vartype IsAbstract: Boolean 
3531
    '''
3532 1
    def __init__(self):
3533 1
        self.TypeId = FourByteNodeId(ObjectIds.DataTypeAttributes_Encoding_DefaultBinary)
3534 1
        self.Encoding = 1
3535 1
        self.BodyLength = 0
3536 1
        self.SpecifiedAttributes = 0
3537 1
        self.DisplayName = LocalizedText()
3538 1
        self.Description = LocalizedText()
3539 1
        self.WriteMask = 0
3540 1
        self.UserWriteMask = 0
3541 1
        self.IsAbstract = True
3542 1
        self._freeze()
3543
    
3544 1
    def to_binary(self):
3545 1
        packet = []
3546 1
        body = []
3547 1
        packet.append(self.TypeId.to_binary())
3548 1
        packet.append(pack_uatype('UInt8', self.Encoding))
3549 1
        body.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3550 1
        body.append(self.DisplayName.to_binary())
3551 1
        body.append(self.Description.to_binary())
3552 1
        body.append(pack_uatype('UInt32', self.WriteMask))
3553 1
        body.append(pack_uatype('UInt32', self.UserWriteMask))
3554 1
        body.append(pack_uatype('Boolean', self.IsAbstract))
3555 1
        body = b''.join(body)
3556 1
        packet.append(struct.pack('<i', len(body)))
3557 1
        packet.append(body)
3558 1
        return b''.join(packet)
3559
        
3560 1
    @staticmethod
3561
    def from_binary(data):
3562 1
        obj = DataTypeAttributes()
3563 1
        obj.TypeId = NodeId.from_binary(data)
3564 1
        obj.Encoding = unpack_uatype('UInt8', data)
3565 1
        obj.BodyLength = unpack_uatype('Int32', data)
3566 1
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3567 1
        obj.DisplayName = LocalizedText.from_binary(data)
3568 1
        obj.Description = LocalizedText.from_binary(data)
3569 1
        obj.WriteMask = unpack_uatype('UInt32', data)
3570 1
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3571 1
        obj.IsAbstract = unpack_uatype('Boolean', data)
3572 1
        return obj
3573
    
3574 1
    def __str__(self):
3575
        return 'DataTypeAttributes(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3576
             'Encoding:' + str(self.Encoding) + ', '  + \
3577
             'BodyLength:' + str(self.BodyLength) + ', '  + \
3578
             'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3579
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3580
             'Description:' + str(self.Description) + ', '  + \
3581
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3582
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3583
             'IsAbstract:' + str(self.IsAbstract) + ')'
3584
    
3585 1
    __repr__ = __str__
3586
    
3587 1
class ViewAttributes(FrozenClass):
3588
    '''
3589
    The attributes for a view node.
3590
    
3591
    :ivar TypeId: 
3592
    :vartype TypeId: NodeId 
3593
    :ivar Encoding: 
3594
    :vartype Encoding: UInt8 
3595
    :ivar BodyLength: 
3596
    :vartype BodyLength: Int32 
3597
    :ivar SpecifiedAttributes: 
3598
    :vartype SpecifiedAttributes: UInt32 
3599
    :ivar DisplayName: 
3600
    :vartype DisplayName: LocalizedText 
3601
    :ivar Description: 
3602
    :vartype Description: LocalizedText 
3603
    :ivar WriteMask: 
3604
    :vartype WriteMask: UInt32 
3605
    :ivar UserWriteMask: 
3606
    :vartype UserWriteMask: UInt32 
3607
    :ivar ContainsNoLoops: 
3608
    :vartype ContainsNoLoops: Boolean 
3609
    :ivar EventNotifier: 
3610
    :vartype EventNotifier: Byte 
3611
    '''
3612 1
    def __init__(self):
3613
        self.TypeId = FourByteNodeId(ObjectIds.ViewAttributes_Encoding_DefaultBinary)
3614
        self.Encoding = 1
3615
        self.BodyLength = 0
3616
        self.SpecifiedAttributes = 0
3617
        self.DisplayName = LocalizedText()
3618
        self.Description = LocalizedText()
3619
        self.WriteMask = 0
3620
        self.UserWriteMask = 0
3621
        self.ContainsNoLoops = True
3622
        self.EventNotifier = 0
3623
        self._freeze()
3624
    
3625 1
    def to_binary(self):
3626
        packet = []
3627
        body = []
3628
        packet.append(self.TypeId.to_binary())
3629
        packet.append(pack_uatype('UInt8', self.Encoding))
3630
        body.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3631
        body.append(self.DisplayName.to_binary())
3632
        body.append(self.Description.to_binary())
3633
        body.append(pack_uatype('UInt32', self.WriteMask))
3634
        body.append(pack_uatype('UInt32', self.UserWriteMask))
3635
        body.append(pack_uatype('Boolean', self.ContainsNoLoops))
3636
        body.append(pack_uatype('Byte', self.EventNotifier))
3637
        body = b''.join(body)
3638
        packet.append(struct.pack('<i', len(body)))
3639
        packet.append(body)
3640
        return b''.join(packet)
3641
        
3642 1
    @staticmethod
3643
    def from_binary(data):
3644
        obj = ViewAttributes()
3645
        obj.TypeId = NodeId.from_binary(data)
3646
        obj.Encoding = unpack_uatype('UInt8', data)
3647
        obj.BodyLength = unpack_uatype('Int32', data)
3648
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3649
        obj.DisplayName = LocalizedText.from_binary(data)
3650
        obj.Description = LocalizedText.from_binary(data)
3651
        obj.WriteMask = unpack_uatype('UInt32', data)
3652
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3653
        obj.ContainsNoLoops = unpack_uatype('Boolean', data)
3654
        obj.EventNotifier = unpack_uatype('Byte', data)
3655
        return obj
3656
    
3657 1
    def __str__(self):
3658
        return 'ViewAttributes(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3659
             'Encoding:' + str(self.Encoding) + ', '  + \
3660
             'BodyLength:' + str(self.BodyLength) + ', '  + \
3661
             'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3662
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3663
             'Description:' + str(self.Description) + ', '  + \
3664
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3665
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3666
             'ContainsNoLoops:' + str(self.ContainsNoLoops) + ', '  + \
3667
             'EventNotifier:' + str(self.EventNotifier) + ')'
3668
    
3669 1
    __repr__ = __str__
3670
    
3671 1
class AddNodesItem(FrozenClass):
3672
    '''
3673
    A request to add a node to the server address space.
3674
    
3675
    :ivar ParentNodeId: 
3676
    :vartype ParentNodeId: ExpandedNodeId 
3677
    :ivar ReferenceTypeId: 
3678
    :vartype ReferenceTypeId: NodeId 
3679
    :ivar RequestedNewNodeId: 
3680
    :vartype RequestedNewNodeId: ExpandedNodeId 
3681
    :ivar BrowseName: 
3682
    :vartype BrowseName: QualifiedName 
3683
    :ivar NodeClass: 
3684
    :vartype NodeClass: NodeClass 
3685
    :ivar NodeAttributes: 
3686
    :vartype NodeAttributes: ExtensionObject 
3687
    :ivar TypeDefinition: 
3688
    :vartype TypeDefinition: ExpandedNodeId 
3689
    '''
3690 1
    def __init__(self):
3691 1
        self.ParentNodeId = ExpandedNodeId()
3692 1
        self.ReferenceTypeId = NodeId()
3693 1
        self.RequestedNewNodeId = ExpandedNodeId()
3694 1
        self.BrowseName = QualifiedName()
3695 1
        self.NodeClass = 0
3696 1
        self.NodeAttributes = ExtensionObject()
3697 1
        self.TypeDefinition = ExpandedNodeId()
3698 1
        self._freeze()
3699
    
3700 1
    def to_binary(self):
3701 1
        packet = []
3702 1
        packet.append(self.ParentNodeId.to_binary())
3703 1
        packet.append(self.ReferenceTypeId.to_binary())
3704 1
        packet.append(self.RequestedNewNodeId.to_binary())
3705 1
        packet.append(self.BrowseName.to_binary())
3706 1
        packet.append(pack_uatype('UInt32', self.NodeClass))
3707 1
        packet.append(self.NodeAttributes.to_binary())
3708 1
        packet.append(self.TypeDefinition.to_binary())
3709 1
        return b''.join(packet)
3710
        
3711 1
    @staticmethod
3712
    def from_binary(data):
3713 1
        obj = AddNodesItem()
3714 1
        obj.ParentNodeId = ExpandedNodeId.from_binary(data)
3715 1
        obj.ReferenceTypeId = NodeId.from_binary(data)
3716 1
        obj.RequestedNewNodeId = ExpandedNodeId.from_binary(data)
3717 1
        obj.BrowseName = QualifiedName.from_binary(data)
3718 1
        obj.NodeClass = unpack_uatype('UInt32', data)
3719 1
        obj.NodeAttributes = ExtensionObject.from_binary(data)
3720 1
        obj.TypeDefinition = ExpandedNodeId.from_binary(data)
3721 1
        return obj
3722
    
3723 1
    def __str__(self):
3724
        return 'AddNodesItem(' + 'ParentNodeId:' + str(self.ParentNodeId) + ', '  + \
3725
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
3726
             'RequestedNewNodeId:' + str(self.RequestedNewNodeId) + ', '  + \
3727
             'BrowseName:' + str(self.BrowseName) + ', '  + \
3728
             'NodeClass:' + str(self.NodeClass) + ', '  + \
3729
             'NodeAttributes:' + str(self.NodeAttributes) + ', '  + \
3730
             'TypeDefinition:' + str(self.TypeDefinition) + ')'
3731
    
3732 1
    __repr__ = __str__
3733
    
3734 1
class AddNodesResult(FrozenClass):
3735
    '''
3736
    A result of an add node operation.
3737
    
3738
    :ivar StatusCode: 
3739
    :vartype StatusCode: StatusCode 
3740
    :ivar AddedNodeId: 
3741
    :vartype AddedNodeId: NodeId 
3742
    '''
3743 1
    def __init__(self):
3744 1
        self.StatusCode = StatusCode()
3745 1
        self.AddedNodeId = NodeId()
3746 1
        self._freeze()
3747
    
3748 1
    def to_binary(self):
3749 1
        packet = []
3750 1
        packet.append(self.StatusCode.to_binary())
3751 1
        packet.append(self.AddedNodeId.to_binary())
3752 1
        return b''.join(packet)
3753
        
3754 1
    @staticmethod
3755
    def from_binary(data):
3756 1
        obj = AddNodesResult()
3757 1
        obj.StatusCode = StatusCode.from_binary(data)
3758 1
        obj.AddedNodeId = NodeId.from_binary(data)
3759 1
        return obj
3760
    
3761 1
    def __str__(self):
3762
        return 'AddNodesResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
3763
             'AddedNodeId:' + str(self.AddedNodeId) + ')'
3764
    
3765 1
    __repr__ = __str__
3766
    
3767 1
class AddNodesParameters(FrozenClass):
3768
    '''
3769
    :ivar NodesToAdd: 
3770
    :vartype NodesToAdd: AddNodesItem 
3771
    '''
3772 1
    def __init__(self):
3773 1
        self.NodesToAdd = []
3774 1
        self._freeze()
3775
    
3776 1
    def to_binary(self):
3777 1
        packet = []
3778 1
        packet.append(struct.pack('<i', len(self.NodesToAdd)))
3779 1
        for fieldname in self.NodesToAdd:
3780 1
            packet.append(fieldname.to_binary())
3781 1
        return b''.join(packet)
3782
        
3783 1
    @staticmethod
3784
    def from_binary(data):
3785 1
        obj = AddNodesParameters()
3786 1
        length = struct.unpack('<i', data.read(4))[0]
3787 1
        if length != -1:
3788 1
            for _ in range(0, length):
3789 1
                obj.NodesToAdd.append(AddNodesItem.from_binary(data))
3790 1
        return obj
3791
    
3792 1
    def __str__(self):
3793
        return 'AddNodesParameters(' + 'NodesToAdd:' + str(self.NodesToAdd) + ')'
3794
    
3795 1
    __repr__ = __str__
3796
    
3797 1
class AddNodesRequest(FrozenClass):
3798
    '''
3799
    Adds one or more nodes to the server address space.
3800
    
3801
    :ivar TypeId: 
3802
    :vartype TypeId: NodeId 
3803
    :ivar RequestHeader: 
3804
    :vartype RequestHeader: RequestHeader 
3805
    :ivar Parameters: 
3806
    :vartype Parameters: AddNodesParameters 
3807
    '''
3808 1
    def __init__(self):
3809 1
        self.TypeId = FourByteNodeId(ObjectIds.AddNodesRequest_Encoding_DefaultBinary)
3810 1
        self.RequestHeader = RequestHeader()
3811 1
        self.Parameters = AddNodesParameters()
3812 1
        self._freeze()
3813
    
3814 1
    def to_binary(self):
3815 1
        packet = []
3816 1
        packet.append(self.TypeId.to_binary())
3817 1
        packet.append(self.RequestHeader.to_binary())
3818 1
        packet.append(self.Parameters.to_binary())
3819 1
        return b''.join(packet)
3820
        
3821 1
    @staticmethod
3822
    def from_binary(data):
3823
        obj = AddNodesRequest()
3824
        obj.TypeId = NodeId.from_binary(data)
3825
        obj.RequestHeader = RequestHeader.from_binary(data)
3826
        obj.Parameters = AddNodesParameters.from_binary(data)
3827
        return obj
3828
    
3829 1
    def __str__(self):
3830
        return 'AddNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3831
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
3832
             'Parameters:' + str(self.Parameters) + ')'
3833
    
3834 1
    __repr__ = __str__
3835
    
3836 1
class AddNodesResponse(FrozenClass):
3837
    '''
3838
    Adds one or more nodes to the server address space.
3839
    
3840
    :ivar TypeId: 
3841
    :vartype TypeId: NodeId 
3842
    :ivar ResponseHeader: 
3843
    :vartype ResponseHeader: ResponseHeader 
3844
    :ivar Results: 
3845
    :vartype Results: AddNodesResult 
3846
    :ivar DiagnosticInfos: 
3847
    :vartype DiagnosticInfos: DiagnosticInfo 
3848
    '''
3849 1
    def __init__(self):
3850 1
        self.TypeId = FourByteNodeId(ObjectIds.AddNodesResponse_Encoding_DefaultBinary)
3851 1
        self.ResponseHeader = ResponseHeader()
3852 1
        self.Results = []
3853 1
        self.DiagnosticInfos = []
3854 1
        self._freeze()
3855
    
3856 1
    def to_binary(self):
3857 1
        packet = []
3858 1
        packet.append(self.TypeId.to_binary())
3859 1
        packet.append(self.ResponseHeader.to_binary())
3860 1
        packet.append(struct.pack('<i', len(self.Results)))
3861 1
        for fieldname in self.Results:
3862 1
            packet.append(fieldname.to_binary())
3863 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
3864 1
        for fieldname in self.DiagnosticInfos:
3865
            packet.append(fieldname.to_binary())
3866 1
        return b''.join(packet)
3867
        
3868 1
    @staticmethod
3869
    def from_binary(data):
3870 1
        obj = AddNodesResponse()
3871 1
        obj.TypeId = NodeId.from_binary(data)
3872 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
3873 1
        length = struct.unpack('<i', data.read(4))[0]
3874 1
        if length != -1:
3875 1
            for _ in range(0, length):
3876 1
                obj.Results.append(AddNodesResult.from_binary(data))
3877 1
        length = struct.unpack('<i', data.read(4))[0]
3878 1
        if length != -1:
3879 1
            for _ in range(0, length):
3880
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
3881 1
        return obj
3882
    
3883 1
    def __str__(self):
3884
        return 'AddNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3885
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
3886
             'Results:' + str(self.Results) + ', '  + \
3887
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
3888
    
3889 1
    __repr__ = __str__
3890
    
3891 1
class AddReferencesItem(FrozenClass):
3892
    '''
3893
    A request to add a reference to the server address space.
3894
    
3895
    :ivar SourceNodeId: 
3896
    :vartype SourceNodeId: NodeId 
3897
    :ivar ReferenceTypeId: 
3898
    :vartype ReferenceTypeId: NodeId 
3899
    :ivar IsForward: 
3900
    :vartype IsForward: Boolean 
3901
    :ivar TargetServerUri: 
3902
    :vartype TargetServerUri: String 
3903
    :ivar TargetNodeId: 
3904
    :vartype TargetNodeId: ExpandedNodeId 
3905
    :ivar TargetNodeClass: 
3906
    :vartype TargetNodeClass: NodeClass 
3907
    '''
3908 1
    def __init__(self):
3909 1
        self.SourceNodeId = NodeId()
3910 1
        self.ReferenceTypeId = NodeId()
3911 1
        self.IsForward = True
3912 1
        self.TargetServerUri = ''
3913 1
        self.TargetNodeId = ExpandedNodeId()
3914 1
        self.TargetNodeClass = 0
3915 1
        self._freeze()
3916
    
3917 1
    def to_binary(self):
3918
        packet = []
3919
        packet.append(self.SourceNodeId.to_binary())
3920
        packet.append(self.ReferenceTypeId.to_binary())
3921
        packet.append(pack_uatype('Boolean', self.IsForward))
3922
        packet.append(pack_uatype('String', self.TargetServerUri))
3923
        packet.append(self.TargetNodeId.to_binary())
3924
        packet.append(pack_uatype('UInt32', self.TargetNodeClass))
3925
        return b''.join(packet)
3926
        
3927 1
    @staticmethod
3928
    def from_binary(data):
3929
        obj = AddReferencesItem()
3930
        obj.SourceNodeId = NodeId.from_binary(data)
3931
        obj.ReferenceTypeId = NodeId.from_binary(data)
3932
        obj.IsForward = unpack_uatype('Boolean', data)
3933
        obj.TargetServerUri = unpack_uatype('String', data)
3934
        obj.TargetNodeId = ExpandedNodeId.from_binary(data)
3935
        obj.TargetNodeClass = unpack_uatype('UInt32', data)
3936
        return obj
3937
    
3938 1
    def __str__(self):
3939
        return 'AddReferencesItem(' + 'SourceNodeId:' + str(self.SourceNodeId) + ', '  + \
3940
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
3941
             'IsForward:' + str(self.IsForward) + ', '  + \
3942
             'TargetServerUri:' + str(self.TargetServerUri) + ', '  + \
3943
             'TargetNodeId:' + str(self.TargetNodeId) + ', '  + \
3944
             'TargetNodeClass:' + str(self.TargetNodeClass) + ')'
3945
    
3946 1
    __repr__ = __str__
3947
    
3948 1
class AddReferencesRequest(FrozenClass):
3949
    '''
3950
    Adds one or more references to the server address space.
3951
    
3952
    :ivar TypeId: 
3953
    :vartype TypeId: NodeId 
3954
    :ivar RequestHeader: 
3955
    :vartype RequestHeader: RequestHeader 
3956
    :ivar ReferencesToAdd: 
3957
    :vartype ReferencesToAdd: AddReferencesItem 
3958
    '''
3959 1
    def __init__(self):
3960
        self.TypeId = FourByteNodeId(ObjectIds.AddReferencesRequest_Encoding_DefaultBinary)
3961
        self.RequestHeader = RequestHeader()
3962
        self.ReferencesToAdd = []
3963
        self._freeze()
3964
    
3965 1
    def to_binary(self):
3966
        packet = []
3967
        packet.append(self.TypeId.to_binary())
3968
        packet.append(self.RequestHeader.to_binary())
3969
        packet.append(struct.pack('<i', len(self.ReferencesToAdd)))
3970
        for fieldname in self.ReferencesToAdd:
3971
            packet.append(fieldname.to_binary())
3972
        return b''.join(packet)
3973
        
3974 1
    @staticmethod
3975
    def from_binary(data):
3976
        obj = AddReferencesRequest()
3977
        obj.TypeId = NodeId.from_binary(data)
3978
        obj.RequestHeader = RequestHeader.from_binary(data)
3979
        length = struct.unpack('<i', data.read(4))[0]
3980
        if length != -1:
3981
            for _ in range(0, length):
3982
                obj.ReferencesToAdd.append(AddReferencesItem.from_binary(data))
3983
        return obj
3984
    
3985 1
    def __str__(self):
3986
        return 'AddReferencesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3987
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
3988
             'ReferencesToAdd:' + str(self.ReferencesToAdd) + ')'
3989
    
3990 1
    __repr__ = __str__
3991
    
3992 1
class AddReferencesResponse(FrozenClass):
3993
    '''
3994
    Adds one or more references to the server address space.
3995
    
3996
    :ivar TypeId: 
3997
    :vartype TypeId: NodeId 
3998
    :ivar ResponseHeader: 
3999
    :vartype ResponseHeader: ResponseHeader 
4000
    :ivar Results: 
4001
    :vartype Results: StatusCode 
4002
    :ivar DiagnosticInfos: 
4003
    :vartype DiagnosticInfos: DiagnosticInfo 
4004
    '''
4005 1
    def __init__(self):
4006
        self.TypeId = FourByteNodeId(ObjectIds.AddReferencesResponse_Encoding_DefaultBinary)
4007
        self.ResponseHeader = ResponseHeader()
4008
        self.Results = []
4009
        self.DiagnosticInfos = []
4010
        self._freeze()
4011
    
4012 1
    def to_binary(self):
4013
        packet = []
4014
        packet.append(self.TypeId.to_binary())
4015
        packet.append(self.ResponseHeader.to_binary())
4016
        packet.append(struct.pack('<i', len(self.Results)))
4017
        for fieldname in self.Results:
4018
            packet.append(fieldname.to_binary())
4019
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
4020
        for fieldname in self.DiagnosticInfos:
4021
            packet.append(fieldname.to_binary())
4022
        return b''.join(packet)
4023
        
4024 1
    @staticmethod
4025
    def from_binary(data):
4026
        obj = AddReferencesResponse()
4027
        obj.TypeId = NodeId.from_binary(data)
4028
        obj.ResponseHeader = ResponseHeader.from_binary(data)
4029
        length = struct.unpack('<i', data.read(4))[0]
4030
        if length != -1:
4031
            for _ in range(0, length):
4032
                obj.Results.append(StatusCode.from_binary(data))
4033
        length = struct.unpack('<i', data.read(4))[0]
4034
        if length != -1:
4035
            for _ in range(0, length):
4036
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
4037
        return obj
4038
    
4039 1
    def __str__(self):
4040
        return 'AddReferencesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4041
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
4042
             'Results:' + str(self.Results) + ', '  + \
4043
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4044
    
4045 1
    __repr__ = __str__
4046
    
4047 1
class DeleteNodesItem(FrozenClass):
4048
    '''
4049
    A request to delete a node to the server address space.
4050
    
4051
    :ivar NodeId: 
4052
    :vartype NodeId: NodeId 
4053
    :ivar DeleteTargetReferences: 
4054
    :vartype DeleteTargetReferences: Boolean 
4055
    '''
4056 1
    def __init__(self):
4057
        self.NodeId = NodeId()
4058
        self.DeleteTargetReferences = True
4059
        self._freeze()
4060
    
4061 1
    def to_binary(self):
4062
        packet = []
4063
        packet.append(self.NodeId.to_binary())
4064
        packet.append(pack_uatype('Boolean', self.DeleteTargetReferences))
4065
        return b''.join(packet)
4066
        
4067 1
    @staticmethod
4068
    def from_binary(data):
4069
        obj = DeleteNodesItem()
4070
        obj.NodeId = NodeId.from_binary(data)
4071
        obj.DeleteTargetReferences = unpack_uatype('Boolean', data)
4072
        return obj
4073
    
4074 1
    def __str__(self):
4075
        return 'DeleteNodesItem(' + 'NodeId:' + str(self.NodeId) + ', '  + \
4076
             'DeleteTargetReferences:' + str(self.DeleteTargetReferences) + ')'
4077
    
4078 1
    __repr__ = __str__
4079
    
4080 1
class DeleteNodesParameters(FrozenClass):
4081
    '''
4082
    :ivar NodesToDelete: 
4083
    :vartype NodesToDelete: DeleteNodesItem 
4084
    '''
4085 1
    def __init__(self):
4086
        self.NodesToDelete = []
4087
        self._freeze()
4088
    
4089 1
    def to_binary(self):
4090
        packet = []
4091
        packet.append(struct.pack('<i', len(self.NodesToDelete)))
4092
        for fieldname in self.NodesToDelete:
4093
            packet.append(fieldname.to_binary())
4094
        return b''.join(packet)
4095
        
4096 1
    @staticmethod
4097
    def from_binary(data):
4098
        obj = DeleteNodesParameters()
4099
        length = struct.unpack('<i', data.read(4))[0]
4100
        if length != -1:
4101
            for _ in range(0, length):
4102
                obj.NodesToDelete.append(DeleteNodesItem.from_binary(data))
4103
        return obj
4104
    
4105 1
    def __str__(self):
4106
        return 'DeleteNodesParameters(' + 'NodesToDelete:' + str(self.NodesToDelete) + ')'
4107
    
4108 1
    __repr__ = __str__
4109
    
4110 1
class DeleteNodesRequest(FrozenClass):
4111
    '''
4112
    Delete one or more nodes from the server address space.
4113
    
4114
    :ivar TypeId: 
4115
    :vartype TypeId: NodeId 
4116
    :ivar RequestHeader: 
4117
    :vartype RequestHeader: RequestHeader 
4118
    :ivar Parameters: 
4119
    :vartype Parameters: DeleteNodesParameters 
4120
    '''
4121 1
    def __init__(self):
4122
        self.TypeId = FourByteNodeId(ObjectIds.DeleteNodesRequest_Encoding_DefaultBinary)
4123
        self.RequestHeader = RequestHeader()
4124
        self.Parameters = DeleteNodesParameters()
4125
        self._freeze()
4126
    
4127 1
    def to_binary(self):
4128
        packet = []
4129
        packet.append(self.TypeId.to_binary())
4130
        packet.append(self.RequestHeader.to_binary())
4131
        packet.append(self.Parameters.to_binary())
4132
        return b''.join(packet)
4133
        
4134 1
    @staticmethod
4135
    def from_binary(data):
4136
        obj = DeleteNodesRequest()
4137
        obj.TypeId = NodeId.from_binary(data)
4138
        obj.RequestHeader = RequestHeader.from_binary(data)
4139
        obj.Parameters = DeleteNodesParameters.from_binary(data)
4140
        return obj
4141
    
4142 1
    def __str__(self):
4143
        return 'DeleteNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4144
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
4145
             'Parameters:' + str(self.Parameters) + ')'
4146
    
4147 1
    __repr__ = __str__
4148
    
4149 1
class DeleteNodesResult(FrozenClass):
4150
    '''
4151
    :ivar Results: 
4152
    :vartype Results: StatusCode 
4153
    :ivar DiagnosticInfos: 
4154
    :vartype DiagnosticInfos: DiagnosticInfo 
4155
    '''
4156 1
    def __init__(self):
4157
        self.Results = []
4158
        self.DiagnosticInfos = []
4159
        self._freeze()
4160
    
4161 1
    def to_binary(self):
4162
        packet = []
4163
        packet.append(struct.pack('<i', len(self.Results)))
4164
        for fieldname in self.Results:
4165
            packet.append(fieldname.to_binary())
4166
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
4167
        for fieldname in self.DiagnosticInfos:
4168
            packet.append(fieldname.to_binary())
4169
        return b''.join(packet)
4170
        
4171 1
    @staticmethod
4172
    def from_binary(data):
4173
        obj = DeleteNodesResult()
4174
        length = struct.unpack('<i', data.read(4))[0]
4175
        if length != -1:
4176
            for _ in range(0, length):
4177
                obj.Results.append(StatusCode.from_binary(data))
4178
        length = struct.unpack('<i', data.read(4))[0]
4179
        if length != -1:
4180
            for _ in range(0, length):
4181
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
4182
        return obj
4183
    
4184 1
    def __str__(self):
4185
        return 'DeleteNodesResult(' + 'Results:' + str(self.Results) + ', '  + \
4186
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4187
    
4188 1
    __repr__ = __str__
4189
    
4190 1
class DeleteNodesResponse(FrozenClass):
4191
    '''
4192
    Delete one or more nodes from the server address space.
4193
    
4194
    :ivar TypeId: 
4195
    :vartype TypeId: NodeId 
4196
    :ivar ResponseHeader: 
4197
    :vartype ResponseHeader: ResponseHeader 
4198
    :ivar Parameters: 
4199
    :vartype Parameters: DeleteNodesResult 
4200
    '''
4201 1
    def __init__(self):
4202
        self.TypeId = FourByteNodeId(ObjectIds.DeleteNodesResponse_Encoding_DefaultBinary)
4203
        self.ResponseHeader = ResponseHeader()
4204
        self.Parameters = DeleteNodesResult()
4205
        self._freeze()
4206
    
4207 1
    def to_binary(self):
4208
        packet = []
4209
        packet.append(self.TypeId.to_binary())
4210
        packet.append(self.ResponseHeader.to_binary())
4211
        packet.append(self.Parameters.to_binary())
4212
        return b''.join(packet)
4213
        
4214 1
    @staticmethod
4215
    def from_binary(data):
4216
        obj = DeleteNodesResponse()
4217
        obj.TypeId = NodeId.from_binary(data)
4218
        obj.ResponseHeader = ResponseHeader.from_binary(data)
4219
        obj.Parameters = DeleteNodesResult.from_binary(data)
4220
        return obj
4221
    
4222 1
    def __str__(self):
4223
        return 'DeleteNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4224
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
4225
             'Parameters:' + str(self.Parameters) + ')'
4226
    
4227 1
    __repr__ = __str__
4228
    
4229 1
class DeleteReferencesItem(FrozenClass):
4230
    '''
4231
    A request to delete a node from the server address space.
4232
    
4233
    :ivar SourceNodeId: 
4234
    :vartype SourceNodeId: NodeId 
4235
    :ivar ReferenceTypeId: 
4236
    :vartype ReferenceTypeId: NodeId 
4237
    :ivar IsForward: 
4238
    :vartype IsForward: Boolean 
4239
    :ivar TargetNodeId: 
4240
    :vartype TargetNodeId: ExpandedNodeId 
4241
    :ivar DeleteBidirectional: 
4242
    :vartype DeleteBidirectional: Boolean 
4243
    '''
4244 1
    def __init__(self):
4245
        self.SourceNodeId = NodeId()
4246
        self.ReferenceTypeId = NodeId()
4247
        self.IsForward = True
4248
        self.TargetNodeId = ExpandedNodeId()
4249
        self.DeleteBidirectional = True
4250
        self._freeze()
4251
    
4252 1
    def to_binary(self):
4253
        packet = []
4254
        packet.append(self.SourceNodeId.to_binary())
4255
        packet.append(self.ReferenceTypeId.to_binary())
4256
        packet.append(pack_uatype('Boolean', self.IsForward))
4257
        packet.append(self.TargetNodeId.to_binary())
4258
        packet.append(pack_uatype('Boolean', self.DeleteBidirectional))
4259
        return b''.join(packet)
4260
        
4261 1
    @staticmethod
4262
    def from_binary(data):
4263
        obj = DeleteReferencesItem()
4264
        obj.SourceNodeId = NodeId.from_binary(data)
4265
        obj.ReferenceTypeId = NodeId.from_binary(data)
4266
        obj.IsForward = unpack_uatype('Boolean', data)
4267
        obj.TargetNodeId = ExpandedNodeId.from_binary(data)
4268
        obj.DeleteBidirectional = unpack_uatype('Boolean', data)
4269
        return obj
4270
    
4271 1
    def __str__(self):
4272
        return 'DeleteReferencesItem(' + 'SourceNodeId:' + str(self.SourceNodeId) + ', '  + \
4273
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
4274
             'IsForward:' + str(self.IsForward) + ', '  + \
4275
             'TargetNodeId:' + str(self.TargetNodeId) + ', '  + \
4276
             'DeleteBidirectional:' + str(self.DeleteBidirectional) + ')'
4277
    
4278 1
    __repr__ = __str__
4279
    
4280 1
class DeleteReferencesParameters(FrozenClass):
4281
    '''
4282
    :ivar ReferencesToDelete: 
4283
    :vartype ReferencesToDelete: DeleteReferencesItem 
4284
    '''
4285 1
    def __init__(self):
4286
        self.ReferencesToDelete = []
4287
        self._freeze()
4288
    
4289 1
    def to_binary(self):
4290
        packet = []
4291
        packet.append(struct.pack('<i', len(self.ReferencesToDelete)))
4292
        for fieldname in self.ReferencesToDelete:
4293
            packet.append(fieldname.to_binary())
4294
        return b''.join(packet)
4295
        
4296 1
    @staticmethod
4297
    def from_binary(data):
4298
        obj = DeleteReferencesParameters()
4299
        length = struct.unpack('<i', data.read(4))[0]
4300
        if length != -1:
4301
            for _ in range(0, length):
4302
                obj.ReferencesToDelete.append(DeleteReferencesItem.from_binary(data))
4303
        return obj
4304
    
4305 1
    def __str__(self):
4306
        return 'DeleteReferencesParameters(' + 'ReferencesToDelete:' + str(self.ReferencesToDelete) + ')'
4307
    
4308 1
    __repr__ = __str__
4309
    
4310 1
class DeleteReferencesRequest(FrozenClass):
4311
    '''
4312
    Delete one or more references from the server address space.
4313
    
4314
    :ivar TypeId: 
4315
    :vartype TypeId: NodeId 
4316
    :ivar RequestHeader: 
4317
    :vartype RequestHeader: RequestHeader 
4318
    :ivar Parameters: 
4319
    :vartype Parameters: DeleteReferencesParameters 
4320
    '''
4321 1
    def __init__(self):
4322
        self.TypeId = FourByteNodeId(ObjectIds.DeleteReferencesRequest_Encoding_DefaultBinary)
4323
        self.RequestHeader = RequestHeader()
4324
        self.Parameters = DeleteReferencesParameters()
4325
        self._freeze()
4326
    
4327 1
    def to_binary(self):
4328
        packet = []
4329
        packet.append(self.TypeId.to_binary())
4330
        packet.append(self.RequestHeader.to_binary())
4331
        packet.append(self.Parameters.to_binary())
4332
        return b''.join(packet)
4333
        
4334 1
    @staticmethod
4335
    def from_binary(data):
4336
        obj = DeleteReferencesRequest()
4337
        obj.TypeId = NodeId.from_binary(data)
4338
        obj.RequestHeader = RequestHeader.from_binary(data)
4339
        obj.Parameters = DeleteReferencesParameters.from_binary(data)
4340
        return obj
4341
    
4342 1
    def __str__(self):
4343
        return 'DeleteReferencesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4344
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
4345
             'Parameters:' + str(self.Parameters) + ')'
4346
    
4347 1
    __repr__ = __str__
4348
    
4349 1
class DeleteReferencesResult(FrozenClass):
4350
    '''
4351
    :ivar Results: 
4352
    :vartype Results: StatusCode 
4353
    :ivar DiagnosticInfos: 
4354
    :vartype DiagnosticInfos: DiagnosticInfo 
4355
    '''
4356 1
    def __init__(self):
4357
        self.Results = []
4358
        self.DiagnosticInfos = []
4359
        self._freeze()
4360
    
4361 1
    def to_binary(self):
4362
        packet = []
4363
        packet.append(struct.pack('<i', len(self.Results)))
4364
        for fieldname in self.Results:
4365
            packet.append(fieldname.to_binary())
4366
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
4367
        for fieldname in self.DiagnosticInfos:
4368
            packet.append(fieldname.to_binary())
4369
        return b''.join(packet)
4370
        
4371 1
    @staticmethod
4372
    def from_binary(data):
4373
        obj = DeleteReferencesResult()
4374
        length = struct.unpack('<i', data.read(4))[0]
4375
        if length != -1:
4376
            for _ in range(0, length):
4377
                obj.Results.append(StatusCode.from_binary(data))
4378
        length = struct.unpack('<i', data.read(4))[0]
4379
        if length != -1:
4380
            for _ in range(0, length):
4381
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
4382
        return obj
4383
    
4384 1
    def __str__(self):
4385
        return 'DeleteReferencesResult(' + 'Results:' + str(self.Results) + ', '  + \
4386
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4387
    
4388 1
    __repr__ = __str__
4389
    
4390 1
class DeleteReferencesResponse(FrozenClass):
4391
    '''
4392
    Delete one or more references from the server address space.
4393
    
4394
    :ivar TypeId: 
4395
    :vartype TypeId: NodeId 
4396
    :ivar ResponseHeader: 
4397
    :vartype ResponseHeader: ResponseHeader 
4398
    :ivar Parameters: 
4399
    :vartype Parameters: DeleteReferencesResult 
4400
    '''
4401 1
    def __init__(self):
4402
        self.TypeId = FourByteNodeId(ObjectIds.DeleteReferencesResponse_Encoding_DefaultBinary)
4403
        self.ResponseHeader = ResponseHeader()
4404
        self.Parameters = DeleteReferencesResult()
4405
        self._freeze()
4406
    
4407 1
    def to_binary(self):
4408
        packet = []
4409
        packet.append(self.TypeId.to_binary())
4410
        packet.append(self.ResponseHeader.to_binary())
4411
        packet.append(self.Parameters.to_binary())
4412
        return b''.join(packet)
4413
        
4414 1
    @staticmethod
4415
    def from_binary(data):
4416
        obj = DeleteReferencesResponse()
4417
        obj.TypeId = NodeId.from_binary(data)
4418
        obj.ResponseHeader = ResponseHeader.from_binary(data)
4419
        obj.Parameters = DeleteReferencesResult.from_binary(data)
4420
        return obj
4421
    
4422 1
    def __str__(self):
4423
        return 'DeleteReferencesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4424
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
4425
             'Parameters:' + str(self.Parameters) + ')'
4426
    
4427 1
    __repr__ = __str__
4428
    
4429 1
class ViewDescription(FrozenClass):
4430
    '''
4431
    The view to browse.
4432
    
4433
    :ivar ViewId: 
4434
    :vartype ViewId: NodeId 
4435
    :ivar Timestamp: 
4436
    :vartype Timestamp: DateTime 
4437
    :ivar ViewVersion: 
4438
    :vartype ViewVersion: UInt32 
4439
    '''
4440 1
    def __init__(self):
4441 1
        self.ViewId = NodeId()
4442 1
        self.Timestamp = datetime.now()
4443 1
        self.ViewVersion = 0
4444 1
        self._freeze()
4445
    
4446 1
    def to_binary(self):
4447 1
        packet = []
4448 1
        packet.append(self.ViewId.to_binary())
4449 1
        packet.append(pack_uatype('DateTime', self.Timestamp))
4450 1
        packet.append(pack_uatype('UInt32', self.ViewVersion))
4451 1
        return b''.join(packet)
4452
        
4453 1
    @staticmethod
4454
    def from_binary(data):
4455 1
        obj = ViewDescription()
4456 1
        obj.ViewId = NodeId.from_binary(data)
4457 1
        obj.Timestamp = unpack_uatype('DateTime', data)
4458 1
        obj.ViewVersion = unpack_uatype('UInt32', data)
4459 1
        return obj
4460
    
4461 1
    def __str__(self):
4462
        return 'ViewDescription(' + 'ViewId:' + str(self.ViewId) + ', '  + \
4463
             'Timestamp:' + str(self.Timestamp) + ', '  + \
4464
             'ViewVersion:' + str(self.ViewVersion) + ')'
4465
    
4466 1
    __repr__ = __str__
4467
    
4468 1
class BrowseDescription(FrozenClass):
4469
    '''
4470
    A request to browse the the references from a node.
4471
    
4472
    :ivar NodeId: 
4473
    :vartype NodeId: NodeId 
4474
    :ivar BrowseDirection: 
4475
    :vartype BrowseDirection: BrowseDirection 
4476
    :ivar ReferenceTypeId: 
4477
    :vartype ReferenceTypeId: NodeId 
4478
    :ivar IncludeSubtypes: 
4479
    :vartype IncludeSubtypes: Boolean 
4480
    :ivar NodeClassMask: 
4481
    :vartype NodeClassMask: UInt32 
4482
    :ivar ResultMask: 
4483
    :vartype ResultMask: UInt32 
4484
    '''
4485 1
    def __init__(self):
4486 1
        self.NodeId = NodeId()
4487 1
        self.BrowseDirection = 0
4488 1
        self.ReferenceTypeId = NodeId()
4489 1
        self.IncludeSubtypes = True
4490 1
        self.NodeClassMask = 0
4491 1
        self.ResultMask = 0
4492 1
        self._freeze()
4493
    
4494 1
    def to_binary(self):
4495 1
        packet = []
4496 1
        packet.append(self.NodeId.to_binary())
4497 1
        packet.append(pack_uatype('UInt32', self.BrowseDirection))
4498 1
        packet.append(self.ReferenceTypeId.to_binary())
4499 1
        packet.append(pack_uatype('Boolean', self.IncludeSubtypes))
4500 1
        packet.append(pack_uatype('UInt32', self.NodeClassMask))
4501 1
        packet.append(pack_uatype('UInt32', self.ResultMask))
4502 1
        return b''.join(packet)
4503
        
4504 1
    @staticmethod
4505
    def from_binary(data):
4506 1
        obj = BrowseDescription()
4507 1
        obj.NodeId = NodeId.from_binary(data)
4508 1
        obj.BrowseDirection = unpack_uatype('UInt32', data)
4509 1
        obj.ReferenceTypeId = NodeId.from_binary(data)
4510 1
        obj.IncludeSubtypes = unpack_uatype('Boolean', data)
4511 1
        obj.NodeClassMask = unpack_uatype('UInt32', data)
4512 1
        obj.ResultMask = unpack_uatype('UInt32', data)
4513 1
        return obj
4514
    
4515 1
    def __str__(self):
4516
        return 'BrowseDescription(' + 'NodeId:' + str(self.NodeId) + ', '  + \
4517
             'BrowseDirection:' + str(self.BrowseDirection) + ', '  + \
4518
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
4519
             'IncludeSubtypes:' + str(self.IncludeSubtypes) + ', '  + \
4520
             'NodeClassMask:' + str(self.NodeClassMask) + ', '  + \
4521
             'ResultMask:' + str(self.ResultMask) + ')'
4522
    
4523 1
    __repr__ = __str__
4524
    
4525 1
class ReferenceDescription(FrozenClass):
4526
    '''
4527
    The description of a reference.
4528
    
4529
    :ivar ReferenceTypeId: 
4530
    :vartype ReferenceTypeId: NodeId 
4531
    :ivar IsForward: 
4532
    :vartype IsForward: Boolean 
4533
    :ivar NodeId: 
4534
    :vartype NodeId: ExpandedNodeId 
4535
    :ivar BrowseName: 
4536
    :vartype BrowseName: QualifiedName 
4537
    :ivar DisplayName: 
4538
    :vartype DisplayName: LocalizedText 
4539
    :ivar NodeClass: 
4540
    :vartype NodeClass: NodeClass 
4541
    :ivar TypeDefinition: 
4542
    :vartype TypeDefinition: ExpandedNodeId 
4543
    '''
4544 1
    def __init__(self):
4545 1
        self.ReferenceTypeId = NodeId()
4546 1
        self.IsForward = True
4547 1
        self.NodeId = ExpandedNodeId()
4548 1
        self.BrowseName = QualifiedName()
4549 1
        self.DisplayName = LocalizedText()
4550 1
        self.NodeClass = 0
4551 1
        self.TypeDefinition = ExpandedNodeId()
4552 1
        self._freeze()
4553
    
4554 1
    def to_binary(self):
4555 1
        packet = []
4556 1
        packet.append(self.ReferenceTypeId.to_binary())
4557 1
        packet.append(pack_uatype('Boolean', self.IsForward))
4558 1
        packet.append(self.NodeId.to_binary())
4559 1
        packet.append(self.BrowseName.to_binary())
4560 1
        packet.append(self.DisplayName.to_binary())
4561 1
        packet.append(pack_uatype('UInt32', self.NodeClass))
4562 1
        packet.append(self.TypeDefinition.to_binary())
4563 1
        return b''.join(packet)
4564
        
4565 1
    @staticmethod
4566
    def from_binary(data):
4567 1
        obj = ReferenceDescription()
4568 1
        obj.ReferenceTypeId = NodeId.from_binary(data)
4569 1
        obj.IsForward = unpack_uatype('Boolean', data)
4570 1
        obj.NodeId = ExpandedNodeId.from_binary(data)
4571 1
        obj.BrowseName = QualifiedName.from_binary(data)
4572 1
        obj.DisplayName = LocalizedText.from_binary(data)
4573 1
        obj.NodeClass = unpack_uatype('UInt32', data)
4574 1
        obj.TypeDefinition = ExpandedNodeId.from_binary(data)
4575 1
        return obj
4576
    
4577 1
    def __str__(self):
4578
        return 'ReferenceDescription(' + 'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
4579
             'IsForward:' + str(self.IsForward) + ', '  + \
4580
             'NodeId:' + str(self.NodeId) + ', '  + \
4581
             'BrowseName:' + str(self.BrowseName) + ', '  + \
4582
             'DisplayName:' + str(self.DisplayName) + ', '  + \
4583
             'NodeClass:' + str(self.NodeClass) + ', '  + \
4584
             'TypeDefinition:' + str(self.TypeDefinition) + ')'
4585
    
4586 1
    __repr__ = __str__
4587
    
4588 1
class BrowseResult(FrozenClass):
4589
    '''
4590
    The result of a browse operation.
4591
    
4592
    :ivar StatusCode: 
4593
    :vartype StatusCode: StatusCode 
4594
    :ivar ContinuationPoint: 
4595
    :vartype ContinuationPoint: ByteString 
4596
    :ivar References: 
4597
    :vartype References: ReferenceDescription 
4598
    '''
4599 1
    def __init__(self):
4600 1
        self.StatusCode = StatusCode()
4601 1
        self.ContinuationPoint = b''
4602 1
        self.References = []
4603 1
        self._freeze()
4604
    
4605 1
    def to_binary(self):
4606 1
        packet = []
4607 1
        packet.append(self.StatusCode.to_binary())
4608 1
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
4609 1
        packet.append(struct.pack('<i', len(self.References)))
4610 1
        for fieldname in self.References:
4611 1
            packet.append(fieldname.to_binary())
4612 1
        return b''.join(packet)
4613
        
4614 1
    @staticmethod
4615
    def from_binary(data):
4616 1
        obj = BrowseResult()
4617 1
        obj.StatusCode = StatusCode.from_binary(data)
4618 1
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
4619 1
        length = struct.unpack('<i', data.read(4))[0]
4620 1
        if length != -1:
4621 1
            for _ in range(0, length):
4622 1
                obj.References.append(ReferenceDescription.from_binary(data))
4623 1
        return obj
4624
    
4625 1
    def __str__(self):
4626
        return 'BrowseResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
4627
             'ContinuationPoint:' + str(self.ContinuationPoint) + ', '  + \
4628
             'References:' + str(self.References) + ')'
4629
    
4630 1
    __repr__ = __str__
4631
    
4632 1
class BrowseParameters(FrozenClass):
4633
    '''
4634
    :ivar View: 
4635
    :vartype View: ViewDescription 
4636
    :ivar RequestedMaxReferencesPerNode: 
4637
    :vartype RequestedMaxReferencesPerNode: UInt32 
4638
    :ivar NodesToBrowse: 
4639
    :vartype NodesToBrowse: BrowseDescription 
4640
    '''
4641 1
    def __init__(self):
4642 1
        self.View = ViewDescription()
4643 1
        self.RequestedMaxReferencesPerNode = 0
4644 1
        self.NodesToBrowse = []
4645 1
        self._freeze()
4646
    
4647 1
    def to_binary(self):
4648 1
        packet = []
4649 1
        packet.append(self.View.to_binary())
4650 1
        packet.append(pack_uatype('UInt32', self.RequestedMaxReferencesPerNode))
4651 1
        packet.append(struct.pack('<i', len(self.NodesToBrowse)))
4652 1
        for fieldname in self.NodesToBrowse:
4653 1
            packet.append(fieldname.to_binary())
4654 1
        return b''.join(packet)
4655
        
4656 1
    @staticmethod
4657
    def from_binary(data):
4658 1
        obj = BrowseParameters()
4659 1
        obj.View = ViewDescription.from_binary(data)
4660 1
        obj.RequestedMaxReferencesPerNode = unpack_uatype('UInt32', data)
4661 1
        length = struct.unpack('<i', data.read(4))[0]
4662 1
        if length != -1:
4663 1
            for _ in range(0, length):
4664 1
                obj.NodesToBrowse.append(BrowseDescription.from_binary(data))
4665 1
        return obj
4666
    
4667 1
    def __str__(self):
4668
        return 'BrowseParameters(' + 'View:' + str(self.View) + ', '  + \
4669
             'RequestedMaxReferencesPerNode:' + str(self.RequestedMaxReferencesPerNode) + ', '  + \
4670
             'NodesToBrowse:' + str(self.NodesToBrowse) + ')'
4671
    
4672 1
    __repr__ = __str__
4673
    
4674 1
class BrowseRequest(FrozenClass):
4675
    '''
4676
    Browse the references for one or more nodes from the server address space.
4677
    
4678
    :ivar TypeId: 
4679
    :vartype TypeId: NodeId 
4680
    :ivar RequestHeader: 
4681
    :vartype RequestHeader: RequestHeader 
4682
    :ivar Parameters: 
4683
    :vartype Parameters: BrowseParameters 
4684
    '''
4685 1
    def __init__(self):
4686 1
        self.TypeId = FourByteNodeId(ObjectIds.BrowseRequest_Encoding_DefaultBinary)
4687 1
        self.RequestHeader = RequestHeader()
4688 1
        self.Parameters = BrowseParameters()
4689 1
        self._freeze()
4690
    
4691 1
    def to_binary(self):
4692 1
        packet = []
4693 1
        packet.append(self.TypeId.to_binary())
4694 1
        packet.append(self.RequestHeader.to_binary())
4695 1
        packet.append(self.Parameters.to_binary())
4696 1
        return b''.join(packet)
4697
        
4698 1
    @staticmethod
4699
    def from_binary(data):
4700
        obj = BrowseRequest()
4701
        obj.TypeId = NodeId.from_binary(data)
4702
        obj.RequestHeader = RequestHeader.from_binary(data)
4703
        obj.Parameters = BrowseParameters.from_binary(data)
4704
        return obj
4705
    
4706 1
    def __str__(self):
4707
        return 'BrowseRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4708
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
4709
             'Parameters:' + str(self.Parameters) + ')'
4710
    
4711 1
    __repr__ = __str__
4712
    
4713 1
class BrowseResponse(FrozenClass):
4714
    '''
4715
    Browse the references for one or more nodes from the server address space.
4716
    
4717
    :ivar TypeId: 
4718
    :vartype TypeId: NodeId 
4719
    :ivar ResponseHeader: 
4720
    :vartype ResponseHeader: ResponseHeader 
4721
    :ivar Results: 
4722
    :vartype Results: BrowseResult 
4723
    :ivar DiagnosticInfos: 
4724
    :vartype DiagnosticInfos: DiagnosticInfo 
4725
    '''
4726 1
    def __init__(self):
4727 1
        self.TypeId = FourByteNodeId(ObjectIds.BrowseResponse_Encoding_DefaultBinary)
4728 1
        self.ResponseHeader = ResponseHeader()
4729 1
        self.Results = []
4730 1
        self.DiagnosticInfos = []
4731 1
        self._freeze()
4732
    
4733 1
    def to_binary(self):
4734 1
        packet = []
4735 1
        packet.append(self.TypeId.to_binary())
4736 1
        packet.append(self.ResponseHeader.to_binary())
4737 1
        packet.append(struct.pack('<i', len(self.Results)))
4738 1
        for fieldname in self.Results:
4739 1
            packet.append(fieldname.to_binary())
4740 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
4741 1
        for fieldname in self.DiagnosticInfos:
4742
            packet.append(fieldname.to_binary())
4743 1
        return b''.join(packet)
4744
        
4745 1
    @staticmethod
4746
    def from_binary(data):
4747 1
        obj = BrowseResponse()
4748 1
        obj.TypeId = NodeId.from_binary(data)
4749 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
4750 1
        length = struct.unpack('<i', data.read(4))[0]
4751 1
        if length != -1:
4752 1
            for _ in range(0, length):
4753 1
                obj.Results.append(BrowseResult.from_binary(data))
4754 1
        length = struct.unpack('<i', data.read(4))[0]
4755 1
        if length != -1:
4756 1
            for _ in range(0, length):
4757
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
4758 1
        return obj
4759
    
4760 1
    def __str__(self):
4761
        return 'BrowseResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4762
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
4763
             'Results:' + str(self.Results) + ', '  + \
4764
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4765
    
4766 1
    __repr__ = __str__
4767
    
4768 1
class BrowseNextParameters(FrozenClass):
4769
    '''
4770
    :ivar ReleaseContinuationPoints: 
4771
    :vartype ReleaseContinuationPoints: Boolean 
4772
    :ivar ContinuationPoints: 
4773
    :vartype ContinuationPoints: ByteString 
4774
    '''
4775 1
    def __init__(self):
4776
        self.ReleaseContinuationPoints = True
4777
        self.ContinuationPoints = []
4778
        self._freeze()
4779
    
4780 1
    def to_binary(self):
4781
        packet = []
4782
        packet.append(pack_uatype('Boolean', self.ReleaseContinuationPoints))
4783
        packet.append(struct.pack('<i', len(self.ContinuationPoints)))
4784
        for fieldname in self.ContinuationPoints:
4785
            packet.append(pack_uatype('ByteString', fieldname))
4786
        return b''.join(packet)
4787
        
4788 1
    @staticmethod
4789
    def from_binary(data):
4790
        obj = BrowseNextParameters()
4791
        obj.ReleaseContinuationPoints = unpack_uatype('Boolean', data)
4792
        obj.ContinuationPoints = unpack_uatype_array('ByteString', data)
4793
        return obj
4794
    
4795 1
    def __str__(self):
4796
        return 'BrowseNextParameters(' + 'ReleaseContinuationPoints:' + str(self.ReleaseContinuationPoints) + ', '  + \
4797
             'ContinuationPoints:' + str(self.ContinuationPoints) + ')'
4798
    
4799 1
    __repr__ = __str__
4800
    
4801 1
class BrowseNextRequest(FrozenClass):
4802
    '''
4803
    Continues one or more browse operations.
4804
    
4805
    :ivar TypeId: 
4806
    :vartype TypeId: NodeId 
4807
    :ivar RequestHeader: 
4808
    :vartype RequestHeader: RequestHeader 
4809
    :ivar Parameters: 
4810
    :vartype Parameters: BrowseNextParameters 
4811
    '''
4812 1
    def __init__(self):
4813
        self.TypeId = FourByteNodeId(ObjectIds.BrowseNextRequest_Encoding_DefaultBinary)
4814
        self.RequestHeader = RequestHeader()
4815
        self.Parameters = BrowseNextParameters()
4816
        self._freeze()
4817
    
4818 1
    def to_binary(self):
4819
        packet = []
4820
        packet.append(self.TypeId.to_binary())
4821
        packet.append(self.RequestHeader.to_binary())
4822
        packet.append(self.Parameters.to_binary())
4823
        return b''.join(packet)
4824
        
4825 1
    @staticmethod
4826
    def from_binary(data):
4827
        obj = BrowseNextRequest()
4828
        obj.TypeId = NodeId.from_binary(data)
4829
        obj.RequestHeader = RequestHeader.from_binary(data)
4830
        obj.Parameters = BrowseNextParameters.from_binary(data)
4831
        return obj
4832
    
4833 1
    def __str__(self):
4834
        return 'BrowseNextRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4835
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
4836
             'Parameters:' + str(self.Parameters) + ')'
4837
    
4838 1
    __repr__ = __str__
4839
    
4840 1
class BrowseNextResult(FrozenClass):
4841
    '''
4842
    :ivar Results: 
4843
    :vartype Results: BrowseResult 
4844
    :ivar DiagnosticInfos: 
4845
    :vartype DiagnosticInfos: DiagnosticInfo 
4846
    '''
4847 1
    def __init__(self):
4848
        self.Results = []
4849
        self.DiagnosticInfos = []
4850
        self._freeze()
4851
    
4852 1
    def to_binary(self):
4853
        packet = []
4854
        packet.append(struct.pack('<i', len(self.Results)))
4855
        for fieldname in self.Results:
4856
            packet.append(fieldname.to_binary())
4857
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
4858
        for fieldname in self.DiagnosticInfos:
4859
            packet.append(fieldname.to_binary())
4860
        return b''.join(packet)
4861
        
4862 1
    @staticmethod
4863
    def from_binary(data):
4864
        obj = BrowseNextResult()
4865
        length = struct.unpack('<i', data.read(4))[0]
4866
        if length != -1:
4867
            for _ in range(0, length):
4868
                obj.Results.append(BrowseResult.from_binary(data))
4869
        length = struct.unpack('<i', data.read(4))[0]
4870
        if length != -1:
4871
            for _ in range(0, length):
4872
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
4873
        return obj
4874
    
4875 1
    def __str__(self):
4876
        return 'BrowseNextResult(' + 'Results:' + str(self.Results) + ', '  + \
4877
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4878
    
4879 1
    __repr__ = __str__
4880
    
4881 1
class BrowseNextResponse(FrozenClass):
4882
    '''
4883
    Continues one or more browse operations.
4884
    
4885
    :ivar TypeId: 
4886
    :vartype TypeId: NodeId 
4887
    :ivar ResponseHeader: 
4888
    :vartype ResponseHeader: ResponseHeader 
4889
    :ivar Parameters: 
4890
    :vartype Parameters: BrowseNextResult 
4891
    '''
4892 1
    def __init__(self):
4893
        self.TypeId = FourByteNodeId(ObjectIds.BrowseNextResponse_Encoding_DefaultBinary)
4894
        self.ResponseHeader = ResponseHeader()
4895
        self.Parameters = BrowseNextResult()
4896
        self._freeze()
4897
    
4898 1
    def to_binary(self):
4899
        packet = []
4900
        packet.append(self.TypeId.to_binary())
4901
        packet.append(self.ResponseHeader.to_binary())
4902
        packet.append(self.Parameters.to_binary())
4903
        return b''.join(packet)
4904
        
4905 1
    @staticmethod
4906
    def from_binary(data):
4907
        obj = BrowseNextResponse()
4908
        obj.TypeId = NodeId.from_binary(data)
4909
        obj.ResponseHeader = ResponseHeader.from_binary(data)
4910
        obj.Parameters = BrowseNextResult.from_binary(data)
4911
        return obj
4912
    
4913 1
    def __str__(self):
4914
        return 'BrowseNextResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4915
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
4916
             'Parameters:' + str(self.Parameters) + ')'
4917
    
4918 1
    __repr__ = __str__
4919
    
4920 1
class RelativePathElement(FrozenClass):
4921
    '''
4922
    An element in a relative path.
4923
    
4924
    :ivar ReferenceTypeId: 
4925
    :vartype ReferenceTypeId: NodeId 
4926
    :ivar IsInverse: 
4927
    :vartype IsInverse: Boolean 
4928
    :ivar IncludeSubtypes: 
4929
    :vartype IncludeSubtypes: Boolean 
4930
    :ivar TargetName: 
4931
    :vartype TargetName: QualifiedName 
4932
    '''
4933 1
    def __init__(self):
4934 1
        self.ReferenceTypeId = NodeId()
4935 1
        self.IsInverse = True
4936 1
        self.IncludeSubtypes = True
4937 1
        self.TargetName = QualifiedName()
4938 1
        self._freeze()
4939
    
4940 1
    def to_binary(self):
4941 1
        packet = []
4942 1
        packet.append(self.ReferenceTypeId.to_binary())
4943 1
        packet.append(pack_uatype('Boolean', self.IsInverse))
4944 1
        packet.append(pack_uatype('Boolean', self.IncludeSubtypes))
4945 1
        packet.append(self.TargetName.to_binary())
4946 1
        return b''.join(packet)
4947
        
4948 1
    @staticmethod
4949
    def from_binary(data):
4950 1
        obj = RelativePathElement()
4951 1
        obj.ReferenceTypeId = NodeId.from_binary(data)
4952 1
        obj.IsInverse = unpack_uatype('Boolean', data)
4953 1
        obj.IncludeSubtypes = unpack_uatype('Boolean', data)
4954 1
        obj.TargetName = QualifiedName.from_binary(data)
4955 1
        return obj
4956
    
4957 1
    def __str__(self):
4958
        return 'RelativePathElement(' + 'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
4959
             'IsInverse:' + str(self.IsInverse) + ', '  + \
4960
             'IncludeSubtypes:' + str(self.IncludeSubtypes) + ', '  + \
4961
             'TargetName:' + str(self.TargetName) + ')'
4962
    
4963 1
    __repr__ = __str__
4964
    
4965 1
class RelativePath(FrozenClass):
4966
    '''
4967
    A relative path constructed from reference types and browse names.
4968
    
4969
    :ivar Elements: 
4970
    :vartype Elements: RelativePathElement 
4971
    '''
4972 1
    def __init__(self):
4973 1
        self.Elements = []
4974 1
        self._freeze()
4975
    
4976 1
    def to_binary(self):
4977 1
        packet = []
4978 1
        packet.append(struct.pack('<i', len(self.Elements)))
4979 1
        for fieldname in self.Elements:
4980 1
            packet.append(fieldname.to_binary())
4981 1
        return b''.join(packet)
4982
        
4983 1
    @staticmethod
4984
    def from_binary(data):
4985 1
        obj = RelativePath()
4986 1
        length = struct.unpack('<i', data.read(4))[0]
4987 1
        if length != -1:
4988 1
            for _ in range(0, length):
4989 1
                obj.Elements.append(RelativePathElement.from_binary(data))
4990 1
        return obj
4991
    
4992 1
    def __str__(self):
4993
        return 'RelativePath(' + 'Elements:' + str(self.Elements) + ')'
4994
    
4995 1
    __repr__ = __str__
4996
    
4997 1
class BrowsePath(FrozenClass):
4998
    '''
4999
    A request to translate a path into a node id.
5000
    
5001
    :ivar StartingNode: 
5002
    :vartype StartingNode: NodeId 
5003
    :ivar RelativePath: 
5004
    :vartype RelativePath: RelativePath 
5005
    '''
5006 1
    def __init__(self):
5007 1
        self.StartingNode = NodeId()
5008 1
        self.RelativePath = RelativePath()
5009 1
        self._freeze()
5010
    
5011 1
    def to_binary(self):
5012 1
        packet = []
5013 1
        packet.append(self.StartingNode.to_binary())
5014 1
        packet.append(self.RelativePath.to_binary())
5015 1
        return b''.join(packet)
5016
        
5017 1
    @staticmethod
5018
    def from_binary(data):
5019 1
        obj = BrowsePath()
5020 1
        obj.StartingNode = NodeId.from_binary(data)
5021 1
        obj.RelativePath = RelativePath.from_binary(data)
5022 1
        return obj
5023
    
5024 1
    def __str__(self):
5025
        return 'BrowsePath(' + 'StartingNode:' + str(self.StartingNode) + ', '  + \
5026
             'RelativePath:' + str(self.RelativePath) + ')'
5027
    
5028 1
    __repr__ = __str__
5029
    
5030 1
class BrowsePathTarget(FrozenClass):
5031
    '''
5032
    The target of the translated path.
5033
    
5034
    :ivar TargetId: 
5035
    :vartype TargetId: ExpandedNodeId 
5036
    :ivar RemainingPathIndex: 
5037
    :vartype RemainingPathIndex: UInt32 
5038
    '''
5039 1
    def __init__(self):
5040 1
        self.TargetId = ExpandedNodeId()
5041 1
        self.RemainingPathIndex = 0
5042 1
        self._freeze()
5043
    
5044 1
    def to_binary(self):
5045 1
        packet = []
5046 1
        packet.append(self.TargetId.to_binary())
5047 1
        packet.append(pack_uatype('UInt32', self.RemainingPathIndex))
5048 1
        return b''.join(packet)
5049
        
5050 1
    @staticmethod
5051
    def from_binary(data):
5052 1
        obj = BrowsePathTarget()
5053 1
        obj.TargetId = ExpandedNodeId.from_binary(data)
5054 1
        obj.RemainingPathIndex = unpack_uatype('UInt32', data)
5055 1
        return obj
5056
    
5057 1
    def __str__(self):
5058
        return 'BrowsePathTarget(' + 'TargetId:' + str(self.TargetId) + ', '  + \
5059
             'RemainingPathIndex:' + str(self.RemainingPathIndex) + ')'
5060
    
5061 1
    __repr__ = __str__
5062
    
5063 1
class BrowsePathResult(FrozenClass):
5064
    '''
5065
    The result of a translate opearation.
5066
    
5067
    :ivar StatusCode: 
5068
    :vartype StatusCode: StatusCode 
5069
    :ivar Targets: 
5070
    :vartype Targets: BrowsePathTarget 
5071
    '''
5072 1
    def __init__(self):
5073 1
        self.StatusCode = StatusCode()
5074 1
        self.Targets = []
5075 1
        self._freeze()
5076
    
5077 1
    def to_binary(self):
5078 1
        packet = []
5079 1
        packet.append(self.StatusCode.to_binary())
5080 1
        packet.append(struct.pack('<i', len(self.Targets)))
5081 1
        for fieldname in self.Targets:
5082 1
            packet.append(fieldname.to_binary())
5083 1
        return b''.join(packet)
5084
        
5085 1
    @staticmethod
5086
    def from_binary(data):
5087 1
        obj = BrowsePathResult()
5088 1
        obj.StatusCode = StatusCode.from_binary(data)
5089 1
        length = struct.unpack('<i', data.read(4))[0]
5090 1
        if length != -1:
5091 1
            for _ in range(0, length):
5092 1
                obj.Targets.append(BrowsePathTarget.from_binary(data))
5093 1
        return obj
5094
    
5095 1
    def __str__(self):
5096
        return 'BrowsePathResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
5097
             'Targets:' + str(self.Targets) + ')'
5098
    
5099 1
    __repr__ = __str__
5100
    
5101 1
class TranslateBrowsePathsToNodeIdsParameters(FrozenClass):
5102
    '''
5103
    :ivar BrowsePaths: 
5104
    :vartype BrowsePaths: BrowsePath 
5105
    '''
5106 1
    def __init__(self):
5107 1
        self.BrowsePaths = []
5108 1
        self._freeze()
5109
    
5110 1
    def to_binary(self):
5111 1
        packet = []
5112 1
        packet.append(struct.pack('<i', len(self.BrowsePaths)))
5113 1
        for fieldname in self.BrowsePaths:
5114 1
            packet.append(fieldname.to_binary())
5115 1
        return b''.join(packet)
5116
        
5117 1
    @staticmethod
5118
    def from_binary(data):
5119 1
        obj = TranslateBrowsePathsToNodeIdsParameters()
5120 1
        length = struct.unpack('<i', data.read(4))[0]
5121 1
        if length != -1:
5122 1
            for _ in range(0, length):
5123 1
                obj.BrowsePaths.append(BrowsePath.from_binary(data))
5124 1
        return obj
5125
    
5126 1
    def __str__(self):
5127
        return 'TranslateBrowsePathsToNodeIdsParameters(' + 'BrowsePaths:' + str(self.BrowsePaths) + ')'
5128
    
5129 1
    __repr__ = __str__
5130
    
5131 1
class TranslateBrowsePathsToNodeIdsRequest(FrozenClass):
5132
    '''
5133
    Translates one or more paths in the server address space.
5134
    
5135
    :ivar TypeId: 
5136
    :vartype TypeId: NodeId 
5137
    :ivar RequestHeader: 
5138
    :vartype RequestHeader: RequestHeader 
5139
    :ivar Parameters: 
5140
    :vartype Parameters: TranslateBrowsePathsToNodeIdsParameters 
5141
    '''
5142 1
    def __init__(self):
5143 1
        self.TypeId = FourByteNodeId(ObjectIds.TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultBinary)
5144 1
        self.RequestHeader = RequestHeader()
5145 1
        self.Parameters = TranslateBrowsePathsToNodeIdsParameters()
5146 1
        self._freeze()
5147
    
5148 1
    def to_binary(self):
5149 1
        packet = []
5150 1
        packet.append(self.TypeId.to_binary())
5151 1
        packet.append(self.RequestHeader.to_binary())
5152 1
        packet.append(self.Parameters.to_binary())
5153 1
        return b''.join(packet)
5154
        
5155 1
    @staticmethod
5156
    def from_binary(data):
5157
        obj = TranslateBrowsePathsToNodeIdsRequest()
5158
        obj.TypeId = NodeId.from_binary(data)
5159
        obj.RequestHeader = RequestHeader.from_binary(data)
5160
        obj.Parameters = TranslateBrowsePathsToNodeIdsParameters.from_binary(data)
5161
        return obj
5162
    
5163 1
    def __str__(self):
5164
        return 'TranslateBrowsePathsToNodeIdsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5165
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
5166
             'Parameters:' + str(self.Parameters) + ')'
5167
    
5168 1
    __repr__ = __str__
5169
    
5170 1
class TranslateBrowsePathsToNodeIdsResponse(FrozenClass):
5171
    '''
5172
    Translates one or more paths in the server address space.
5173
    
5174
    :ivar TypeId: 
5175
    :vartype TypeId: NodeId 
5176
    :ivar ResponseHeader: 
5177
    :vartype ResponseHeader: ResponseHeader 
5178
    :ivar Results: 
5179
    :vartype Results: BrowsePathResult 
5180
    :ivar DiagnosticInfos: 
5181
    :vartype DiagnosticInfos: DiagnosticInfo 
5182
    '''
5183 1
    def __init__(self):
5184 1
        self.TypeId = FourByteNodeId(ObjectIds.TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultBinary)
5185 1
        self.ResponseHeader = ResponseHeader()
5186 1
        self.Results = []
5187 1
        self.DiagnosticInfos = []
5188 1
        self._freeze()
5189
    
5190 1
    def to_binary(self):
5191 1
        packet = []
5192 1
        packet.append(self.TypeId.to_binary())
5193 1
        packet.append(self.ResponseHeader.to_binary())
5194 1
        packet.append(struct.pack('<i', len(self.Results)))
5195 1
        for fieldname in self.Results:
5196 1
            packet.append(fieldname.to_binary())
5197 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
5198 1
        for fieldname in self.DiagnosticInfos:
5199
            packet.append(fieldname.to_binary())
5200 1
        return b''.join(packet)
5201
        
5202 1
    @staticmethod
5203
    def from_binary(data):
5204 1
        obj = TranslateBrowsePathsToNodeIdsResponse()
5205 1
        obj.TypeId = NodeId.from_binary(data)
5206 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
5207 1
        length = struct.unpack('<i', data.read(4))[0]
5208 1
        if length != -1:
5209 1
            for _ in range(0, length):
5210 1
                obj.Results.append(BrowsePathResult.from_binary(data))
5211 1
        length = struct.unpack('<i', data.read(4))[0]
5212 1
        if length != -1:
5213 1
            for _ in range(0, length):
5214
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
5215 1
        return obj
5216
    
5217 1
    def __str__(self):
5218
        return 'TranslateBrowsePathsToNodeIdsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5219
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
5220
             'Results:' + str(self.Results) + ', '  + \
5221
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
5222
    
5223 1
    __repr__ = __str__
5224
    
5225 1
class RegisterNodesParameters(FrozenClass):
5226
    '''
5227
    :ivar NodesToRegister: 
5228
    :vartype NodesToRegister: NodeId 
5229
    '''
5230 1
    def __init__(self):
5231
        self.NodesToRegister = []
5232
        self._freeze()
5233
    
5234 1
    def to_binary(self):
5235
        packet = []
5236
        packet.append(struct.pack('<i', len(self.NodesToRegister)))
5237
        for fieldname in self.NodesToRegister:
5238
            packet.append(fieldname.to_binary())
5239
        return b''.join(packet)
5240
        
5241 1
    @staticmethod
5242
    def from_binary(data):
5243
        obj = RegisterNodesParameters()
5244
        length = struct.unpack('<i', data.read(4))[0]
5245
        if length != -1:
5246
            for _ in range(0, length):
5247
                obj.NodesToRegister.append(NodeId.from_binary(data))
5248
        return obj
5249
    
5250 1
    def __str__(self):
5251
        return 'RegisterNodesParameters(' + 'NodesToRegister:' + str(self.NodesToRegister) + ')'
5252
    
5253 1
    __repr__ = __str__
5254
    
5255 1
class RegisterNodesRequest(FrozenClass):
5256
    '''
5257
    Registers one or more nodes for repeated use within a session.
5258
    
5259
    :ivar TypeId: 
5260
    :vartype TypeId: NodeId 
5261
    :ivar RequestHeader: 
5262
    :vartype RequestHeader: RequestHeader 
5263
    :ivar Parameters: 
5264
    :vartype Parameters: RegisterNodesParameters 
5265
    '''
5266 1
    def __init__(self):
5267
        self.TypeId = FourByteNodeId(ObjectIds.RegisterNodesRequest_Encoding_DefaultBinary)
5268
        self.RequestHeader = RequestHeader()
5269
        self.Parameters = RegisterNodesParameters()
5270
        self._freeze()
5271
    
5272 1
    def to_binary(self):
5273
        packet = []
5274
        packet.append(self.TypeId.to_binary())
5275
        packet.append(self.RequestHeader.to_binary())
5276
        packet.append(self.Parameters.to_binary())
5277
        return b''.join(packet)
5278
        
5279 1
    @staticmethod
5280
    def from_binary(data):
5281
        obj = RegisterNodesRequest()
5282
        obj.TypeId = NodeId.from_binary(data)
5283
        obj.RequestHeader = RequestHeader.from_binary(data)
5284
        obj.Parameters = RegisterNodesParameters.from_binary(data)
5285
        return obj
5286
    
5287 1
    def __str__(self):
5288
        return 'RegisterNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5289
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
5290
             'Parameters:' + str(self.Parameters) + ')'
5291
    
5292 1
    __repr__ = __str__
5293
    
5294 1
class RegisterNodesResult(FrozenClass):
5295
    '''
5296
    :ivar RegisteredNodeIds: 
5297
    :vartype RegisteredNodeIds: NodeId 
5298
    '''
5299 1
    def __init__(self):
5300
        self.RegisteredNodeIds = []
5301
        self._freeze()
5302
    
5303 1
    def to_binary(self):
5304
        packet = []
5305
        packet.append(struct.pack('<i', len(self.RegisteredNodeIds)))
5306
        for fieldname in self.RegisteredNodeIds:
5307
            packet.append(fieldname.to_binary())
5308
        return b''.join(packet)
5309
        
5310 1
    @staticmethod
5311
    def from_binary(data):
5312
        obj = RegisterNodesResult()
5313
        length = struct.unpack('<i', data.read(4))[0]
5314
        if length != -1:
5315
            for _ in range(0, length):
5316
                obj.RegisteredNodeIds.append(NodeId.from_binary(data))
5317
        return obj
5318
    
5319 1
    def __str__(self):
5320
        return 'RegisterNodesResult(' + 'RegisteredNodeIds:' + str(self.RegisteredNodeIds) + ')'
5321
    
5322 1
    __repr__ = __str__
5323
    
5324 1
class RegisterNodesResponse(FrozenClass):
5325
    '''
5326
    Registers one or more nodes for repeated use within a session.
5327
    
5328
    :ivar TypeId: 
5329
    :vartype TypeId: NodeId 
5330
    :ivar ResponseHeader: 
5331
    :vartype ResponseHeader: ResponseHeader 
5332
    :ivar Parameters: 
5333
    :vartype Parameters: RegisterNodesResult 
5334
    '''
5335 1
    def __init__(self):
5336
        self.TypeId = FourByteNodeId(ObjectIds.RegisterNodesResponse_Encoding_DefaultBinary)
5337
        self.ResponseHeader = ResponseHeader()
5338
        self.Parameters = RegisterNodesResult()
5339
        self._freeze()
5340
    
5341 1
    def to_binary(self):
5342
        packet = []
5343
        packet.append(self.TypeId.to_binary())
5344
        packet.append(self.ResponseHeader.to_binary())
5345
        packet.append(self.Parameters.to_binary())
5346
        return b''.join(packet)
5347
        
5348 1
    @staticmethod
5349
    def from_binary(data):
5350
        obj = RegisterNodesResponse()
5351
        obj.TypeId = NodeId.from_binary(data)
5352
        obj.ResponseHeader = ResponseHeader.from_binary(data)
5353
        obj.Parameters = RegisterNodesResult.from_binary(data)
5354
        return obj
5355
    
5356 1
    def __str__(self):
5357
        return 'RegisterNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5358
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
5359
             'Parameters:' + str(self.Parameters) + ')'
5360
    
5361 1
    __repr__ = __str__
5362
    
5363 1
class UnregisterNodesParameters(FrozenClass):
5364
    '''
5365
    :ivar NodesToUnregister: 
5366
    :vartype NodesToUnregister: NodeId 
5367
    '''
5368 1
    def __init__(self):
5369
        self.NodesToUnregister = []
5370
        self._freeze()
5371
    
5372 1
    def to_binary(self):
5373
        packet = []
5374
        packet.append(struct.pack('<i', len(self.NodesToUnregister)))
5375
        for fieldname in self.NodesToUnregister:
5376
            packet.append(fieldname.to_binary())
5377
        return b''.join(packet)
5378
        
5379 1
    @staticmethod
5380
    def from_binary(data):
5381
        obj = UnregisterNodesParameters()
5382
        length = struct.unpack('<i', data.read(4))[0]
5383
        if length != -1:
5384
            for _ in range(0, length):
5385
                obj.NodesToUnregister.append(NodeId.from_binary(data))
5386
        return obj
5387
    
5388 1
    def __str__(self):
5389
        return 'UnregisterNodesParameters(' + 'NodesToUnregister:' + str(self.NodesToUnregister) + ')'
5390
    
5391 1
    __repr__ = __str__
5392
    
5393 1
class UnregisterNodesRequest(FrozenClass):
5394
    '''
5395
    Unregisters one or more previously registered nodes.
5396
    
5397
    :ivar TypeId: 
5398
    :vartype TypeId: NodeId 
5399
    :ivar RequestHeader: 
5400
    :vartype RequestHeader: RequestHeader 
5401
    :ivar Parameters: 
5402
    :vartype Parameters: UnregisterNodesParameters 
5403
    '''
5404 1
    def __init__(self):
5405
        self.TypeId = FourByteNodeId(ObjectIds.UnregisterNodesRequest_Encoding_DefaultBinary)
5406
        self.RequestHeader = RequestHeader()
5407
        self.Parameters = UnregisterNodesParameters()
5408
        self._freeze()
5409
    
5410 1
    def to_binary(self):
5411
        packet = []
5412
        packet.append(self.TypeId.to_binary())
5413
        packet.append(self.RequestHeader.to_binary())
5414
        packet.append(self.Parameters.to_binary())
5415
        return b''.join(packet)
5416
        
5417 1
    @staticmethod
5418
    def from_binary(data):
5419
        obj = UnregisterNodesRequest()
5420
        obj.TypeId = NodeId.from_binary(data)
5421
        obj.RequestHeader = RequestHeader.from_binary(data)
5422
        obj.Parameters = UnregisterNodesParameters.from_binary(data)
5423
        return obj
5424
    
5425 1
    def __str__(self):
5426
        return 'UnregisterNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5427
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
5428
             'Parameters:' + str(self.Parameters) + ')'
5429
    
5430 1
    __repr__ = __str__
5431
    
5432 1
class UnregisterNodesResponse(FrozenClass):
5433
    '''
5434
    Unregisters one or more previously registered nodes.
5435
    
5436
    :ivar TypeId: 
5437
    :vartype TypeId: NodeId 
5438
    :ivar ResponseHeader: 
5439
    :vartype ResponseHeader: ResponseHeader 
5440
    '''
5441 1
    def __init__(self):
5442
        self.TypeId = FourByteNodeId(ObjectIds.UnregisterNodesResponse_Encoding_DefaultBinary)
5443
        self.ResponseHeader = ResponseHeader()
5444
        self._freeze()
5445
    
5446 1
    def to_binary(self):
5447
        packet = []
5448
        packet.append(self.TypeId.to_binary())
5449
        packet.append(self.ResponseHeader.to_binary())
5450
        return b''.join(packet)
5451
        
5452 1
    @staticmethod
5453
    def from_binary(data):
5454
        obj = UnregisterNodesResponse()
5455
        obj.TypeId = NodeId.from_binary(data)
5456
        obj.ResponseHeader = ResponseHeader.from_binary(data)
5457
        return obj
5458
    
5459 1
    def __str__(self):
5460
        return 'UnregisterNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5461
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
5462
    
5463 1
    __repr__ = __str__
5464
    
5465 1
class EndpointConfiguration(FrozenClass):
5466
    '''
5467
    :ivar OperationTimeout: 
5468
    :vartype OperationTimeout: Int32 
5469
    :ivar UseBinaryEncoding: 
5470
    :vartype UseBinaryEncoding: Boolean 
5471
    :ivar MaxStringLength: 
5472
    :vartype MaxStringLength: Int32 
5473
    :ivar MaxByteStringLength: 
5474
    :vartype MaxByteStringLength: Int32 
5475
    :ivar MaxArrayLength: 
5476
    :vartype MaxArrayLength: Int32 
5477
    :ivar MaxMessageSize: 
5478
    :vartype MaxMessageSize: Int32 
5479
    :ivar MaxBufferSize: 
5480
    :vartype MaxBufferSize: Int32 
5481
    :ivar ChannelLifetime: 
5482
    :vartype ChannelLifetime: Int32 
5483
    :ivar SecurityTokenLifetime: 
5484
    :vartype SecurityTokenLifetime: Int32 
5485
    '''
5486 1
    def __init__(self):
5487
        self.OperationTimeout = 0
5488
        self.UseBinaryEncoding = True
5489
        self.MaxStringLength = 0
5490
        self.MaxByteStringLength = 0
5491
        self.MaxArrayLength = 0
5492
        self.MaxMessageSize = 0
5493
        self.MaxBufferSize = 0
5494
        self.ChannelLifetime = 0
5495
        self.SecurityTokenLifetime = 0
5496
        self._freeze()
5497
    
5498 1
    def to_binary(self):
5499
        packet = []
5500
        packet.append(pack_uatype('Int32', self.OperationTimeout))
5501
        packet.append(pack_uatype('Boolean', self.UseBinaryEncoding))
5502
        packet.append(pack_uatype('Int32', self.MaxStringLength))
5503
        packet.append(pack_uatype('Int32', self.MaxByteStringLength))
5504
        packet.append(pack_uatype('Int32', self.MaxArrayLength))
5505
        packet.append(pack_uatype('Int32', self.MaxMessageSize))
5506
        packet.append(pack_uatype('Int32', self.MaxBufferSize))
5507
        packet.append(pack_uatype('Int32', self.ChannelLifetime))
5508
        packet.append(pack_uatype('Int32', self.SecurityTokenLifetime))
5509
        return b''.join(packet)
5510
        
5511 1
    @staticmethod
5512
    def from_binary(data):
5513
        obj = EndpointConfiguration()
5514
        obj.OperationTimeout = unpack_uatype('Int32', data)
5515
        obj.UseBinaryEncoding = unpack_uatype('Boolean', data)
5516
        obj.MaxStringLength = unpack_uatype('Int32', data)
5517
        obj.MaxByteStringLength = unpack_uatype('Int32', data)
5518
        obj.MaxArrayLength = unpack_uatype('Int32', data)
5519
        obj.MaxMessageSize = unpack_uatype('Int32', data)
5520
        obj.MaxBufferSize = unpack_uatype('Int32', data)
5521
        obj.ChannelLifetime = unpack_uatype('Int32', data)
5522
        obj.SecurityTokenLifetime = unpack_uatype('Int32', data)
5523
        return obj
5524
    
5525 1
    def __str__(self):
5526
        return 'EndpointConfiguration(' + 'OperationTimeout:' + str(self.OperationTimeout) + ', '  + \
5527
             'UseBinaryEncoding:' + str(self.UseBinaryEncoding) + ', '  + \
5528
             'MaxStringLength:' + str(self.MaxStringLength) + ', '  + \
5529
             'MaxByteStringLength:' + str(self.MaxByteStringLength) + ', '  + \
5530
             'MaxArrayLength:' + str(self.MaxArrayLength) + ', '  + \
5531
             'MaxMessageSize:' + str(self.MaxMessageSize) + ', '  + \
5532
             'MaxBufferSize:' + str(self.MaxBufferSize) + ', '  + \
5533
             'ChannelLifetime:' + str(self.ChannelLifetime) + ', '  + \
5534
             'SecurityTokenLifetime:' + str(self.SecurityTokenLifetime) + ')'
5535
    
5536 1
    __repr__ = __str__
5537
    
5538 1
class SupportedProfile(FrozenClass):
5539
    '''
5540
    :ivar OrganizationUri: 
5541
    :vartype OrganizationUri: String 
5542
    :ivar ProfileId: 
5543
    :vartype ProfileId: String 
5544
    :ivar ComplianceTool: 
5545
    :vartype ComplianceTool: String 
5546
    :ivar ComplianceDate: 
5547
    :vartype ComplianceDate: DateTime 
5548
    :ivar ComplianceLevel: 
5549
    :vartype ComplianceLevel: ComplianceLevel 
5550
    :ivar UnsupportedUnitIds: 
5551
    :vartype UnsupportedUnitIds: String 
5552
    '''
5553 1
    def __init__(self):
5554
        self.OrganizationUri = ''
5555
        self.ProfileId = ''
5556
        self.ComplianceTool = ''
5557
        self.ComplianceDate = datetime.now()
5558
        self.ComplianceLevel = 0
5559
        self.UnsupportedUnitIds = []
5560
        self._freeze()
5561
    
5562 1
    def to_binary(self):
5563
        packet = []
5564
        packet.append(pack_uatype('String', self.OrganizationUri))
5565
        packet.append(pack_uatype('String', self.ProfileId))
5566
        packet.append(pack_uatype('String', self.ComplianceTool))
5567
        packet.append(pack_uatype('DateTime', self.ComplianceDate))
5568
        packet.append(pack_uatype('UInt32', self.ComplianceLevel))
5569
        packet.append(struct.pack('<i', len(self.UnsupportedUnitIds)))
5570
        for fieldname in self.UnsupportedUnitIds:
5571
            packet.append(pack_uatype('String', fieldname))
5572
        return b''.join(packet)
5573
        
5574 1
    @staticmethod
5575
    def from_binary(data):
5576
        obj = SupportedProfile()
5577
        obj.OrganizationUri = unpack_uatype('String', data)
5578
        obj.ProfileId = unpack_uatype('String', data)
5579
        obj.ComplianceTool = unpack_uatype('String', data)
5580
        obj.ComplianceDate = unpack_uatype('DateTime', data)
5581
        obj.ComplianceLevel = unpack_uatype('UInt32', data)
5582
        obj.UnsupportedUnitIds = unpack_uatype_array('String', data)
5583
        return obj
5584
    
5585 1
    def __str__(self):
5586
        return 'SupportedProfile(' + 'OrganizationUri:' + str(self.OrganizationUri) + ', '  + \
5587
             'ProfileId:' + str(self.ProfileId) + ', '  + \
5588
             'ComplianceTool:' + str(self.ComplianceTool) + ', '  + \
5589
             'ComplianceDate:' + str(self.ComplianceDate) + ', '  + \
5590
             'ComplianceLevel:' + str(self.ComplianceLevel) + ', '  + \
5591
             'UnsupportedUnitIds:' + str(self.UnsupportedUnitIds) + ')'
5592
    
5593 1
    __repr__ = __str__
5594
    
5595 1
class SoftwareCertificate(FrozenClass):
5596
    '''
5597
    :ivar ProductName: 
5598
    :vartype ProductName: String 
5599
    :ivar ProductUri: 
5600
    :vartype ProductUri: String 
5601
    :ivar VendorName: 
5602
    :vartype VendorName: String 
5603
    :ivar VendorProductCertificate: 
5604
    :vartype VendorProductCertificate: ByteString 
5605
    :ivar SoftwareVersion: 
5606
    :vartype SoftwareVersion: String 
5607
    :ivar BuildNumber: 
5608
    :vartype BuildNumber: String 
5609
    :ivar BuildDate: 
5610
    :vartype BuildDate: DateTime 
5611
    :ivar IssuedBy: 
5612
    :vartype IssuedBy: String 
5613
    :ivar IssueDate: 
5614
    :vartype IssueDate: DateTime 
5615
    :ivar SupportedProfiles: 
5616
    :vartype SupportedProfiles: SupportedProfile 
5617
    '''
5618 1
    def __init__(self):
5619
        self.ProductName = ''
5620
        self.ProductUri = ''
5621
        self.VendorName = ''
5622
        self.VendorProductCertificate = b''
5623
        self.SoftwareVersion = ''
5624
        self.BuildNumber = ''
5625
        self.BuildDate = datetime.now()
5626
        self.IssuedBy = ''
5627
        self.IssueDate = datetime.now()
5628
        self.SupportedProfiles = []
5629
        self._freeze()
5630
    
5631 1
    def to_binary(self):
5632
        packet = []
5633
        packet.append(pack_uatype('String', self.ProductName))
5634
        packet.append(pack_uatype('String', self.ProductUri))
5635
        packet.append(pack_uatype('String', self.VendorName))
5636
        packet.append(pack_uatype('ByteString', self.VendorProductCertificate))
5637
        packet.append(pack_uatype('String', self.SoftwareVersion))
5638
        packet.append(pack_uatype('String', self.BuildNumber))
5639
        packet.append(pack_uatype('DateTime', self.BuildDate))
5640
        packet.append(pack_uatype('String', self.IssuedBy))
5641
        packet.append(pack_uatype('DateTime', self.IssueDate))
5642
        packet.append(struct.pack('<i', len(self.SupportedProfiles)))
5643
        for fieldname in self.SupportedProfiles:
5644
            packet.append(fieldname.to_binary())
5645
        return b''.join(packet)
5646
        
5647 1
    @staticmethod
5648
    def from_binary(data):
5649
        obj = SoftwareCertificate()
5650
        obj.ProductName = unpack_uatype('String', data)
5651
        obj.ProductUri = unpack_uatype('String', data)
5652
        obj.VendorName = unpack_uatype('String', data)
5653
        obj.VendorProductCertificate = unpack_uatype('ByteString', data)
5654
        obj.SoftwareVersion = unpack_uatype('String', data)
5655
        obj.BuildNumber = unpack_uatype('String', data)
5656
        obj.BuildDate = unpack_uatype('DateTime', data)
5657
        obj.IssuedBy = unpack_uatype('String', data)
5658
        obj.IssueDate = unpack_uatype('DateTime', data)
5659
        length = struct.unpack('<i', data.read(4))[0]
5660
        if length != -1:
5661
            for _ in range(0, length):
5662
                obj.SupportedProfiles.append(SupportedProfile.from_binary(data))
5663
        return obj
5664
    
5665 1
    def __str__(self):
5666
        return 'SoftwareCertificate(' + 'ProductName:' + str(self.ProductName) + ', '  + \
5667
             'ProductUri:' + str(self.ProductUri) + ', '  + \
5668
             'VendorName:' + str(self.VendorName) + ', '  + \
5669
             'VendorProductCertificate:' + str(self.VendorProductCertificate) + ', '  + \
5670
             'SoftwareVersion:' + str(self.SoftwareVersion) + ', '  + \
5671
             'BuildNumber:' + str(self.BuildNumber) + ', '  + \
5672
             'BuildDate:' + str(self.BuildDate) + ', '  + \
5673
             'IssuedBy:' + str(self.IssuedBy) + ', '  + \
5674
             'IssueDate:' + str(self.IssueDate) + ', '  + \
5675
             'SupportedProfiles:' + str(self.SupportedProfiles) + ')'
5676
    
5677 1
    __repr__ = __str__
5678
    
5679 1
class QueryDataDescription(FrozenClass):
5680
    '''
5681
    :ivar RelativePath: 
5682
    :vartype RelativePath: RelativePath 
5683
    :ivar AttributeId: 
5684
    :vartype AttributeId: UInt32 
5685
    :ivar IndexRange: 
5686
    :vartype IndexRange: String 
5687
    '''
5688 1
    def __init__(self):
5689
        self.RelativePath = RelativePath()
5690
        self.AttributeId = 0
5691
        self.IndexRange = ''
5692
        self._freeze()
5693
    
5694 1
    def to_binary(self):
5695
        packet = []
5696
        packet.append(self.RelativePath.to_binary())
5697
        packet.append(pack_uatype('UInt32', self.AttributeId))
5698
        packet.append(pack_uatype('String', self.IndexRange))
5699
        return b''.join(packet)
5700
        
5701 1
    @staticmethod
5702
    def from_binary(data):
5703
        obj = QueryDataDescription()
5704
        obj.RelativePath = RelativePath.from_binary(data)
5705
        obj.AttributeId = unpack_uatype('UInt32', data)
5706
        obj.IndexRange = unpack_uatype('String', data)
5707
        return obj
5708
    
5709 1
    def __str__(self):
5710
        return 'QueryDataDescription(' + 'RelativePath:' + str(self.RelativePath) + ', '  + \
5711
             'AttributeId:' + str(self.AttributeId) + ', '  + \
5712
             'IndexRange:' + str(self.IndexRange) + ')'
5713
    
5714 1
    __repr__ = __str__
5715
    
5716 1
class NodeTypeDescription(FrozenClass):
5717
    '''
5718
    :ivar TypeDefinitionNode: 
5719
    :vartype TypeDefinitionNode: ExpandedNodeId 
5720
    :ivar IncludeSubTypes: 
5721
    :vartype IncludeSubTypes: Boolean 
5722
    :ivar DataToReturn: 
5723
    :vartype DataToReturn: QueryDataDescription 
5724
    '''
5725 1
    def __init__(self):
5726
        self.TypeDefinitionNode = ExpandedNodeId()
5727
        self.IncludeSubTypes = True
5728
        self.DataToReturn = []
5729
        self._freeze()
5730
    
5731 1
    def to_binary(self):
5732
        packet = []
5733
        packet.append(self.TypeDefinitionNode.to_binary())
5734
        packet.append(pack_uatype('Boolean', self.IncludeSubTypes))
5735
        packet.append(struct.pack('<i', len(self.DataToReturn)))
5736
        for fieldname in self.DataToReturn:
5737
            packet.append(fieldname.to_binary())
5738
        return b''.join(packet)
5739
        
5740 1
    @staticmethod
5741
    def from_binary(data):
5742
        obj = NodeTypeDescription()
5743
        obj.TypeDefinitionNode = ExpandedNodeId.from_binary(data)
5744
        obj.IncludeSubTypes = unpack_uatype('Boolean', data)
5745
        length = struct.unpack('<i', data.read(4))[0]
5746
        if length != -1:
5747
            for _ in range(0, length):
5748
                obj.DataToReturn.append(QueryDataDescription.from_binary(data))
5749
        return obj
5750
    
5751 1
    def __str__(self):
5752
        return 'NodeTypeDescription(' + 'TypeDefinitionNode:' + str(self.TypeDefinitionNode) + ', '  + \
5753
             'IncludeSubTypes:' + str(self.IncludeSubTypes) + ', '  + \
5754
             'DataToReturn:' + str(self.DataToReturn) + ')'
5755
    
5756 1
    __repr__ = __str__
5757
    
5758 1
class QueryDataSet(FrozenClass):
5759
    '''
5760
    :ivar NodeId: 
5761
    :vartype NodeId: ExpandedNodeId 
5762
    :ivar TypeDefinitionNode: 
5763
    :vartype TypeDefinitionNode: ExpandedNodeId 
5764
    :ivar Values: 
5765
    :vartype Values: Variant 
5766
    '''
5767 1
    def __init__(self):
5768
        self.NodeId = ExpandedNodeId()
5769
        self.TypeDefinitionNode = ExpandedNodeId()
5770
        self.Values = []
5771
        self._freeze()
5772
    
5773 1
    def to_binary(self):
5774
        packet = []
5775
        packet.append(self.NodeId.to_binary())
5776
        packet.append(self.TypeDefinitionNode.to_binary())
5777
        packet.append(struct.pack('<i', len(self.Values)))
5778
        for fieldname in self.Values:
5779
            packet.append(fieldname.to_binary())
5780
        return b''.join(packet)
5781
        
5782 1
    @staticmethod
5783
    def from_binary(data):
5784
        obj = QueryDataSet()
5785
        obj.NodeId = ExpandedNodeId.from_binary(data)
5786
        obj.TypeDefinitionNode = ExpandedNodeId.from_binary(data)
5787
        length = struct.unpack('<i', data.read(4))[0]
5788
        if length != -1:
5789
            for _ in range(0, length):
5790
                obj.Values.append(Variant.from_binary(data))
5791
        return obj
5792
    
5793 1
    def __str__(self):
5794
        return 'QueryDataSet(' + 'NodeId:' + str(self.NodeId) + ', '  + \
5795
             'TypeDefinitionNode:' + str(self.TypeDefinitionNode) + ', '  + \
5796
             'Values:' + str(self.Values) + ')'
5797
    
5798 1
    __repr__ = __str__
5799
    
5800 1
class NodeReference(FrozenClass):
5801
    '''
5802
    :ivar NodeId: 
5803
    :vartype NodeId: NodeId 
5804
    :ivar ReferenceTypeId: 
5805
    :vartype ReferenceTypeId: NodeId 
5806
    :ivar IsForward: 
5807
    :vartype IsForward: Boolean 
5808
    :ivar ReferencedNodeIds: 
5809
    :vartype ReferencedNodeIds: NodeId 
5810
    '''
5811 1
    def __init__(self):
5812
        self.NodeId = NodeId()
5813
        self.ReferenceTypeId = NodeId()
5814
        self.IsForward = True
5815
        self.ReferencedNodeIds = []
5816
        self._freeze()
5817
    
5818 1
    def to_binary(self):
5819
        packet = []
5820
        packet.append(self.NodeId.to_binary())
5821
        packet.append(self.ReferenceTypeId.to_binary())
5822
        packet.append(pack_uatype('Boolean', self.IsForward))
5823
        packet.append(struct.pack('<i', len(self.ReferencedNodeIds)))
5824
        for fieldname in self.ReferencedNodeIds:
5825
            packet.append(fieldname.to_binary())
5826
        return b''.join(packet)
5827
        
5828 1
    @staticmethod
5829
    def from_binary(data):
5830
        obj = NodeReference()
5831
        obj.NodeId = NodeId.from_binary(data)
5832
        obj.ReferenceTypeId = NodeId.from_binary(data)
5833
        obj.IsForward = unpack_uatype('Boolean', data)
5834
        length = struct.unpack('<i', data.read(4))[0]
5835
        if length != -1:
5836
            for _ in range(0, length):
5837
                obj.ReferencedNodeIds.append(NodeId.from_binary(data))
5838
        return obj
5839
    
5840 1
    def __str__(self):
5841
        return 'NodeReference(' + 'NodeId:' + str(self.NodeId) + ', '  + \
5842
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
5843
             'IsForward:' + str(self.IsForward) + ', '  + \
5844
             'ReferencedNodeIds:' + str(self.ReferencedNodeIds) + ')'
5845
    
5846 1
    __repr__ = __str__
5847
    
5848 1
class ContentFilterElement(FrozenClass):
5849
    '''
5850
    :ivar FilterOperator: 
5851
    :vartype FilterOperator: FilterOperator 
5852
    :ivar FilterOperands: 
5853
    :vartype FilterOperands: ExtensionObject 
5854
    '''
5855 1
    def __init__(self):
5856
        self.FilterOperator = 0
5857
        self.FilterOperands = []
5858
        self._freeze()
5859
    
5860 1
    def to_binary(self):
5861
        packet = []
5862
        packet.append(pack_uatype('UInt32', self.FilterOperator))
5863
        packet.append(struct.pack('<i', len(self.FilterOperands)))
5864
        for fieldname in self.FilterOperands:
5865
            packet.append(fieldname.to_binary())
5866
        return b''.join(packet)
5867
        
5868 1
    @staticmethod
5869
    def from_binary(data):
5870
        obj = ContentFilterElement()
5871
        obj.FilterOperator = unpack_uatype('UInt32', data)
5872
        length = struct.unpack('<i', data.read(4))[0]
5873
        if length != -1:
5874
            for _ in range(0, length):
5875
                obj.FilterOperands.append(ExtensionObject.from_binary(data))
5876
        return obj
5877
    
5878 1
    def __str__(self):
5879
        return 'ContentFilterElement(' + 'FilterOperator:' + str(self.FilterOperator) + ', '  + \
5880
             'FilterOperands:' + str(self.FilterOperands) + ')'
5881
    
5882 1
    __repr__ = __str__
5883
    
5884 1
class ContentFilter(FrozenClass):
5885
    '''
5886
    :ivar Elements: 
5887
    :vartype Elements: ContentFilterElement 
5888
    '''
5889 1
    def __init__(self):
5890 1
        self.Elements = []
5891 1
        self._freeze()
5892
    
5893 1
    def to_binary(self):
5894 1
        packet = []
5895 1
        packet.append(struct.pack('<i', len(self.Elements)))
5896 1
        for fieldname in self.Elements:
5897
            packet.append(fieldname.to_binary())
5898 1
        return b''.join(packet)
5899
        
5900 1
    @staticmethod
5901
    def from_binary(data):
5902 1
        obj = ContentFilter()
5903 1
        length = struct.unpack('<i', data.read(4))[0]
5904 1
        if length != -1:
5905 1
            for _ in range(0, length):
5906
                obj.Elements.append(ContentFilterElement.from_binary(data))
5907 1
        return obj
5908
    
5909 1
    def __str__(self):
5910
        return 'ContentFilter(' + 'Elements:' + str(self.Elements) + ')'
5911
    
5912 1
    __repr__ = __str__
5913
    
5914 1
class ElementOperand(FrozenClass):
5915
    '''
5916
    :ivar Index: 
5917
    :vartype Index: UInt32 
5918
    '''
5919 1
    def __init__(self):
5920
        self.Index = 0
5921
        self._freeze()
5922
    
5923 1
    def to_binary(self):
5924
        packet = []
5925
        packet.append(pack_uatype('UInt32', self.Index))
5926
        return b''.join(packet)
5927
        
5928 1
    @staticmethod
5929
    def from_binary(data):
5930
        obj = ElementOperand()
5931
        obj.Index = unpack_uatype('UInt32', data)
5932
        return obj
5933
    
5934 1
    def __str__(self):
5935
        return 'ElementOperand(' + 'Index:' + str(self.Index) + ')'
5936
    
5937 1
    __repr__ = __str__
5938
    
5939 1
class LiteralOperand(FrozenClass):
5940
    '''
5941
    :ivar Value: 
5942
    :vartype Value: Variant 
5943
    '''
5944 1
    def __init__(self):
5945
        self.Value = Variant()
5946
        self._freeze()
5947
    
5948 1
    def to_binary(self):
5949
        packet = []
5950
        packet.append(self.Value.to_binary())
5951
        return b''.join(packet)
5952
        
5953 1
    @staticmethod
5954
    def from_binary(data):
5955
        obj = LiteralOperand()
5956
        obj.Value = Variant.from_binary(data)
5957
        return obj
5958
    
5959 1
    def __str__(self):
5960
        return 'LiteralOperand(' + 'Value:' + str(self.Value) + ')'
5961
    
5962 1
    __repr__ = __str__
5963
    
5964 1
class AttributeOperand(FrozenClass):
5965
    '''
5966
    :ivar NodeId: 
5967
    :vartype NodeId: NodeId 
5968
    :ivar Alias: 
5969
    :vartype Alias: String 
5970
    :ivar BrowsePath: 
5971
    :vartype BrowsePath: RelativePath 
5972
    :ivar AttributeId: 
5973
    :vartype AttributeId: UInt32 
5974
    :ivar IndexRange: 
5975
    :vartype IndexRange: String 
5976
    '''
5977 1
    def __init__(self):
5978
        self.NodeId = NodeId()
5979
        self.Alias = ''
5980
        self.BrowsePath = RelativePath()
5981
        self.AttributeId = 0
5982
        self.IndexRange = ''
5983
        self._freeze()
5984
    
5985 1
    def to_binary(self):
5986
        packet = []
5987
        packet.append(self.NodeId.to_binary())
5988
        packet.append(pack_uatype('String', self.Alias))
5989
        packet.append(self.BrowsePath.to_binary())
5990
        packet.append(pack_uatype('UInt32', self.AttributeId))
5991
        packet.append(pack_uatype('String', self.IndexRange))
5992
        return b''.join(packet)
5993
        
5994 1
    @staticmethod
5995
    def from_binary(data):
5996
        obj = AttributeOperand()
5997
        obj.NodeId = NodeId.from_binary(data)
5998
        obj.Alias = unpack_uatype('String', data)
5999
        obj.BrowsePath = RelativePath.from_binary(data)
6000
        obj.AttributeId = unpack_uatype('UInt32', data)
6001
        obj.IndexRange = unpack_uatype('String', data)
6002
        return obj
6003
    
6004 1
    def __str__(self):
6005
        return 'AttributeOperand(' + 'NodeId:' + str(self.NodeId) + ', '  + \
6006
             'Alias:' + str(self.Alias) + ', '  + \
6007
             'BrowsePath:' + str(self.BrowsePath) + ', '  + \
6008
             'AttributeId:' + str(self.AttributeId) + ', '  + \
6009
             'IndexRange:' + str(self.IndexRange) + ')'
6010
    
6011 1
    __repr__ = __str__
6012
    
6013 1
class SimpleAttributeOperand(FrozenClass):
6014
    '''
6015
    :ivar TypeDefinitionId: 
6016
    :vartype TypeDefinitionId: NodeId 
6017
    :ivar BrowsePath: 
6018
    :vartype BrowsePath: QualifiedName 
6019
    :ivar AttributeId: 
6020
    :vartype AttributeId: UInt32 
6021
    :ivar IndexRange: 
6022
    :vartype IndexRange: String 
6023
    '''
6024 1
    def __init__(self):
6025 1
        self.TypeDefinitionId = NodeId()
6026 1
        self.BrowsePath = []
6027 1
        self.AttributeId = 0
6028 1
        self.IndexRange = ''
6029 1
        self._freeze()
6030
    
6031 1
    def to_binary(self):
6032 1
        packet = []
6033 1
        packet.append(self.TypeDefinitionId.to_binary())
6034 1
        packet.append(struct.pack('<i', len(self.BrowsePath)))
6035 1
        for fieldname in self.BrowsePath:
6036 1
            packet.append(fieldname.to_binary())
6037 1
        packet.append(pack_uatype('UInt32', self.AttributeId))
6038 1
        packet.append(pack_uatype('String', self.IndexRange))
6039 1
        return b''.join(packet)
6040
        
6041 1
    @staticmethod
6042
    def from_binary(data):
6043 1
        obj = SimpleAttributeOperand()
6044 1
        obj.TypeDefinitionId = NodeId.from_binary(data)
6045 1
        length = struct.unpack('<i', data.read(4))[0]
6046 1
        if length != -1:
6047 1
            for _ in range(0, length):
6048 1
                obj.BrowsePath.append(QualifiedName.from_binary(data))
6049 1
        obj.AttributeId = unpack_uatype('UInt32', data)
6050 1
        obj.IndexRange = unpack_uatype('String', data)
6051 1
        return obj
6052
    
6053 1
    def __str__(self):
6054
        return 'SimpleAttributeOperand(' + 'TypeDefinitionId:' + str(self.TypeDefinitionId) + ', '  + \
6055
             'BrowsePath:' + str(self.BrowsePath) + ', '  + \
6056
             'AttributeId:' + str(self.AttributeId) + ', '  + \
6057
             'IndexRange:' + str(self.IndexRange) + ')'
6058
    
6059 1
    __repr__ = __str__
6060
    
6061 1
class ContentFilterElementResult(FrozenClass):
6062
    '''
6063
    :ivar StatusCode: 
6064
    :vartype StatusCode: StatusCode 
6065
    :ivar OperandStatusCodes: 
6066
    :vartype OperandStatusCodes: StatusCode 
6067
    :ivar OperandDiagnosticInfos: 
6068
    :vartype OperandDiagnosticInfos: DiagnosticInfo 
6069
    '''
6070 1
    def __init__(self):
6071
        self.StatusCode = StatusCode()
6072
        self.OperandStatusCodes = []
6073
        self.OperandDiagnosticInfos = []
6074
        self._freeze()
6075
    
6076 1
    def to_binary(self):
6077
        packet = []
6078
        packet.append(self.StatusCode.to_binary())
6079
        packet.append(struct.pack('<i', len(self.OperandStatusCodes)))
6080
        for fieldname in self.OperandStatusCodes:
6081
            packet.append(fieldname.to_binary())
6082
        packet.append(struct.pack('<i', len(self.OperandDiagnosticInfos)))
6083
        for fieldname in self.OperandDiagnosticInfos:
6084
            packet.append(fieldname.to_binary())
6085
        return b''.join(packet)
6086
        
6087 1
    @staticmethod
6088
    def from_binary(data):
6089
        obj = ContentFilterElementResult()
6090
        obj.StatusCode = StatusCode.from_binary(data)
6091
        length = struct.unpack('<i', data.read(4))[0]
6092
        if length != -1:
6093
            for _ in range(0, length):
6094
                obj.OperandStatusCodes.append(StatusCode.from_binary(data))
6095
        length = struct.unpack('<i', data.read(4))[0]
6096
        if length != -1:
6097
            for _ in range(0, length):
6098
                obj.OperandDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
6099
        return obj
6100
    
6101 1
    def __str__(self):
6102
        return 'ContentFilterElementResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
6103
             'OperandStatusCodes:' + str(self.OperandStatusCodes) + ', '  + \
6104
             'OperandDiagnosticInfos:' + str(self.OperandDiagnosticInfos) + ')'
6105
    
6106 1
    __repr__ = __str__
6107
    
6108 1
class ContentFilterResult(FrozenClass):
6109
    '''
6110
    :ivar ElementResults: 
6111
    :vartype ElementResults: ContentFilterElementResult 
6112
    :ivar ElementDiagnosticInfos: 
6113
    :vartype ElementDiagnosticInfos: DiagnosticInfo 
6114
    '''
6115 1
    def __init__(self):
6116
        self.ElementResults = []
6117
        self.ElementDiagnosticInfos = []
6118
        self._freeze()
6119
    
6120 1
    def to_binary(self):
6121
        packet = []
6122
        packet.append(struct.pack('<i', len(self.ElementResults)))
6123
        for fieldname in self.ElementResults:
6124
            packet.append(fieldname.to_binary())
6125
        packet.append(struct.pack('<i', len(self.ElementDiagnosticInfos)))
6126
        for fieldname in self.ElementDiagnosticInfos:
6127
            packet.append(fieldname.to_binary())
6128
        return b''.join(packet)
6129
        
6130 1
    @staticmethod
6131
    def from_binary(data):
6132
        obj = ContentFilterResult()
6133
        length = struct.unpack('<i', data.read(4))[0]
6134
        if length != -1:
6135
            for _ in range(0, length):
6136
                obj.ElementResults.append(ContentFilterElementResult.from_binary(data))
6137
        length = struct.unpack('<i', data.read(4))[0]
6138
        if length != -1:
6139
            for _ in range(0, length):
6140
                obj.ElementDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
6141
        return obj
6142
    
6143 1
    def __str__(self):
6144
        return 'ContentFilterResult(' + 'ElementResults:' + str(self.ElementResults) + ', '  + \
6145
             'ElementDiagnosticInfos:' + str(self.ElementDiagnosticInfos) + ')'
6146
    
6147 1
    __repr__ = __str__
6148
    
6149 1
class ParsingResult(FrozenClass):
6150
    '''
6151
    :ivar StatusCode: 
6152
    :vartype StatusCode: StatusCode 
6153
    :ivar DataStatusCodes: 
6154
    :vartype DataStatusCodes: StatusCode 
6155
    :ivar DataDiagnosticInfos: 
6156
    :vartype DataDiagnosticInfos: DiagnosticInfo 
6157
    '''
6158 1
    def __init__(self):
6159
        self.StatusCode = StatusCode()
6160
        self.DataStatusCodes = []
6161
        self.DataDiagnosticInfos = []
6162
        self._freeze()
6163
    
6164 1
    def to_binary(self):
6165
        packet = []
6166
        packet.append(self.StatusCode.to_binary())
6167
        packet.append(struct.pack('<i', len(self.DataStatusCodes)))
6168
        for fieldname in self.DataStatusCodes:
6169
            packet.append(fieldname.to_binary())
6170
        packet.append(struct.pack('<i', len(self.DataDiagnosticInfos)))
6171
        for fieldname in self.DataDiagnosticInfos:
6172
            packet.append(fieldname.to_binary())
6173
        return b''.join(packet)
6174
        
6175 1
    @staticmethod
6176
    def from_binary(data):
6177
        obj = ParsingResult()
6178
        obj.StatusCode = StatusCode.from_binary(data)
6179
        length = struct.unpack('<i', data.read(4))[0]
6180
        if length != -1:
6181
            for _ in range(0, length):
6182
                obj.DataStatusCodes.append(StatusCode.from_binary(data))
6183
        length = struct.unpack('<i', data.read(4))[0]
6184
        if length != -1:
6185
            for _ in range(0, length):
6186
                obj.DataDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
6187
        return obj
6188
    
6189 1
    def __str__(self):
6190
        return 'ParsingResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
6191
             'DataStatusCodes:' + str(self.DataStatusCodes) + ', '  + \
6192
             'DataDiagnosticInfos:' + str(self.DataDiagnosticInfos) + ')'
6193
    
6194 1
    __repr__ = __str__
6195
    
6196 1
class QueryFirstParameters(FrozenClass):
6197
    '''
6198
    :ivar View: 
6199
    :vartype View: ViewDescription 
6200
    :ivar NodeTypes: 
6201
    :vartype NodeTypes: NodeTypeDescription 
6202
    :ivar Filter: 
6203
    :vartype Filter: ContentFilter 
6204
    :ivar MaxDataSetsToReturn: 
6205
    :vartype MaxDataSetsToReturn: UInt32 
6206
    :ivar MaxReferencesToReturn: 
6207
    :vartype MaxReferencesToReturn: UInt32 
6208
    '''
6209 1
    def __init__(self):
6210
        self.View = ViewDescription()
6211
        self.NodeTypes = []
6212
        self.Filter = ContentFilter()
6213
        self.MaxDataSetsToReturn = 0
6214
        self.MaxReferencesToReturn = 0
6215
        self._freeze()
6216
    
6217 1
    def to_binary(self):
6218
        packet = []
6219
        packet.append(self.View.to_binary())
6220
        packet.append(struct.pack('<i', len(self.NodeTypes)))
6221
        for fieldname in self.NodeTypes:
6222
            packet.append(fieldname.to_binary())
6223
        packet.append(self.Filter.to_binary())
6224
        packet.append(pack_uatype('UInt32', self.MaxDataSetsToReturn))
6225
        packet.append(pack_uatype('UInt32', self.MaxReferencesToReturn))
6226
        return b''.join(packet)
6227
        
6228 1
    @staticmethod
6229
    def from_binary(data):
6230
        obj = QueryFirstParameters()
6231
        obj.View = ViewDescription.from_binary(data)
6232
        length = struct.unpack('<i', data.read(4))[0]
6233
        if length != -1:
6234
            for _ in range(0, length):
6235
                obj.NodeTypes.append(NodeTypeDescription.from_binary(data))
6236
        obj.Filter = ContentFilter.from_binary(data)
6237
        obj.MaxDataSetsToReturn = unpack_uatype('UInt32', data)
6238
        obj.MaxReferencesToReturn = unpack_uatype('UInt32', data)
6239
        return obj
6240
    
6241 1
    def __str__(self):
6242
        return 'QueryFirstParameters(' + 'View:' + str(self.View) + ', '  + \
6243
             'NodeTypes:' + str(self.NodeTypes) + ', '  + \
6244
             'Filter:' + str(self.Filter) + ', '  + \
6245
             'MaxDataSetsToReturn:' + str(self.MaxDataSetsToReturn) + ', '  + \
6246
             'MaxReferencesToReturn:' + str(self.MaxReferencesToReturn) + ')'
6247
    
6248 1
    __repr__ = __str__
6249
    
6250 1
class QueryFirstRequest(FrozenClass):
6251
    '''
6252
    :ivar TypeId: 
6253
    :vartype TypeId: NodeId 
6254
    :ivar RequestHeader: 
6255
    :vartype RequestHeader: RequestHeader 
6256
    :ivar Parameters: 
6257
    :vartype Parameters: QueryFirstParameters 
6258
    '''
6259 1
    def __init__(self):
6260
        self.TypeId = FourByteNodeId(ObjectIds.QueryFirstRequest_Encoding_DefaultBinary)
6261
        self.RequestHeader = RequestHeader()
6262
        self.Parameters = QueryFirstParameters()
6263
        self._freeze()
6264
    
6265 1
    def to_binary(self):
6266
        packet = []
6267
        packet.append(self.TypeId.to_binary())
6268
        packet.append(self.RequestHeader.to_binary())
6269
        packet.append(self.Parameters.to_binary())
6270
        return b''.join(packet)
6271
        
6272 1
    @staticmethod
6273
    def from_binary(data):
6274
        obj = QueryFirstRequest()
6275
        obj.TypeId = NodeId.from_binary(data)
6276
        obj.RequestHeader = RequestHeader.from_binary(data)
6277
        obj.Parameters = QueryFirstParameters.from_binary(data)
6278
        return obj
6279
    
6280 1
    def __str__(self):
6281
        return 'QueryFirstRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6282
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
6283
             'Parameters:' + str(self.Parameters) + ')'
6284
    
6285 1
    __repr__ = __str__
6286
    
6287 1
class QueryFirstResult(FrozenClass):
6288
    '''
6289
    :ivar QueryDataSets: 
6290
    :vartype QueryDataSets: QueryDataSet 
6291
    :ivar ContinuationPoint: 
6292
    :vartype ContinuationPoint: ByteString 
6293
    :ivar ParsingResults: 
6294
    :vartype ParsingResults: ParsingResult 
6295
    :ivar DiagnosticInfos: 
6296
    :vartype DiagnosticInfos: DiagnosticInfo 
6297
    :ivar FilterResult: 
6298
    :vartype FilterResult: ContentFilterResult 
6299
    '''
6300 1
    def __init__(self):
6301
        self.QueryDataSets = []
6302
        self.ContinuationPoint = b''
6303
        self.ParsingResults = []
6304
        self.DiagnosticInfos = []
6305
        self.FilterResult = ContentFilterResult()
6306
        self._freeze()
6307
    
6308 1
    def to_binary(self):
6309
        packet = []
6310
        packet.append(struct.pack('<i', len(self.QueryDataSets)))
6311
        for fieldname in self.QueryDataSets:
6312
            packet.append(fieldname.to_binary())
6313
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
6314
        packet.append(struct.pack('<i', len(self.ParsingResults)))
6315
        for fieldname in self.ParsingResults:
6316
            packet.append(fieldname.to_binary())
6317
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
6318
        for fieldname in self.DiagnosticInfos:
6319
            packet.append(fieldname.to_binary())
6320
        packet.append(self.FilterResult.to_binary())
6321
        return b''.join(packet)
6322
        
6323 1
    @staticmethod
6324
    def from_binary(data):
6325
        obj = QueryFirstResult()
6326
        length = struct.unpack('<i', data.read(4))[0]
6327
        if length != -1:
6328
            for _ in range(0, length):
6329
                obj.QueryDataSets.append(QueryDataSet.from_binary(data))
6330
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
6331
        length = struct.unpack('<i', data.read(4))[0]
6332
        if length != -1:
6333
            for _ in range(0, length):
6334
                obj.ParsingResults.append(ParsingResult.from_binary(data))
6335
        length = struct.unpack('<i', data.read(4))[0]
6336
        if length != -1:
6337
            for _ in range(0, length):
6338
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
6339
        obj.FilterResult = ContentFilterResult.from_binary(data)
6340
        return obj
6341
    
6342 1
    def __str__(self):
6343
        return 'QueryFirstResult(' + 'QueryDataSets:' + str(self.QueryDataSets) + ', '  + \
6344
             'ContinuationPoint:' + str(self.ContinuationPoint) + ', '  + \
6345
             'ParsingResults:' + str(self.ParsingResults) + ', '  + \
6346
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ', '  + \
6347
             'FilterResult:' + str(self.FilterResult) + ')'
6348
    
6349 1
    __repr__ = __str__
6350
    
6351 1
class QueryFirstResponse(FrozenClass):
6352
    '''
6353
    :ivar TypeId: 
6354
    :vartype TypeId: NodeId 
6355
    :ivar ResponseHeader: 
6356
    :vartype ResponseHeader: ResponseHeader 
6357
    :ivar Parameters: 
6358
    :vartype Parameters: QueryFirstResult 
6359
    '''
6360 1
    def __init__(self):
6361
        self.TypeId = FourByteNodeId(ObjectIds.QueryFirstResponse_Encoding_DefaultBinary)
6362
        self.ResponseHeader = ResponseHeader()
6363
        self.Parameters = QueryFirstResult()
6364
        self._freeze()
6365
    
6366 1
    def to_binary(self):
6367
        packet = []
6368
        packet.append(self.TypeId.to_binary())
6369
        packet.append(self.ResponseHeader.to_binary())
6370
        packet.append(self.Parameters.to_binary())
6371
        return b''.join(packet)
6372
        
6373 1
    @staticmethod
6374
    def from_binary(data):
6375
        obj = QueryFirstResponse()
6376
        obj.TypeId = NodeId.from_binary(data)
6377
        obj.ResponseHeader = ResponseHeader.from_binary(data)
6378
        obj.Parameters = QueryFirstResult.from_binary(data)
6379
        return obj
6380
    
6381 1
    def __str__(self):
6382
        return 'QueryFirstResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6383
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
6384
             'Parameters:' + str(self.Parameters) + ')'
6385
    
6386 1
    __repr__ = __str__
6387
    
6388 1
class QueryNextParameters(FrozenClass):
6389
    '''
6390
    :ivar ReleaseContinuationPoint: 
6391
    :vartype ReleaseContinuationPoint: Boolean 
6392
    :ivar ContinuationPoint: 
6393
    :vartype ContinuationPoint: ByteString 
6394
    '''
6395 1
    def __init__(self):
6396
        self.ReleaseContinuationPoint = True
6397
        self.ContinuationPoint = b''
6398
        self._freeze()
6399
    
6400 1
    def to_binary(self):
6401
        packet = []
6402
        packet.append(pack_uatype('Boolean', self.ReleaseContinuationPoint))
6403
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
6404
        return b''.join(packet)
6405
        
6406 1
    @staticmethod
6407
    def from_binary(data):
6408
        obj = QueryNextParameters()
6409
        obj.ReleaseContinuationPoint = unpack_uatype('Boolean', data)
6410
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
6411
        return obj
6412
    
6413 1
    def __str__(self):
6414
        return 'QueryNextParameters(' + 'ReleaseContinuationPoint:' + str(self.ReleaseContinuationPoint) + ', '  + \
6415
             'ContinuationPoint:' + str(self.ContinuationPoint) + ')'
6416
    
6417 1
    __repr__ = __str__
6418
    
6419 1
class QueryNextRequest(FrozenClass):
6420
    '''
6421
    :ivar TypeId: 
6422
    :vartype TypeId: NodeId 
6423
    :ivar RequestHeader: 
6424
    :vartype RequestHeader: RequestHeader 
6425
    :ivar Parameters: 
6426
    :vartype Parameters: QueryNextParameters 
6427
    '''
6428 1
    def __init__(self):
6429
        self.TypeId = FourByteNodeId(ObjectIds.QueryNextRequest_Encoding_DefaultBinary)
6430
        self.RequestHeader = RequestHeader()
6431
        self.Parameters = QueryNextParameters()
6432
        self._freeze()
6433
    
6434 1
    def to_binary(self):
6435
        packet = []
6436
        packet.append(self.TypeId.to_binary())
6437
        packet.append(self.RequestHeader.to_binary())
6438
        packet.append(self.Parameters.to_binary())
6439
        return b''.join(packet)
6440
        
6441 1
    @staticmethod
6442
    def from_binary(data):
6443
        obj = QueryNextRequest()
6444
        obj.TypeId = NodeId.from_binary(data)
6445
        obj.RequestHeader = RequestHeader.from_binary(data)
6446
        obj.Parameters = QueryNextParameters.from_binary(data)
6447
        return obj
6448
    
6449 1
    def __str__(self):
6450
        return 'QueryNextRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6451
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
6452
             'Parameters:' + str(self.Parameters) + ')'
6453
    
6454 1
    __repr__ = __str__
6455
    
6456 1
class QueryNextResult(FrozenClass):
6457
    '''
6458
    :ivar QueryDataSets: 
6459
    :vartype QueryDataSets: QueryDataSet 
6460
    :ivar RevisedContinuationPoint: 
6461
    :vartype RevisedContinuationPoint: ByteString 
6462
    '''
6463 1
    def __init__(self):
6464
        self.QueryDataSets = []
6465
        self.RevisedContinuationPoint = b''
6466
        self._freeze()
6467
    
6468 1
    def to_binary(self):
6469
        packet = []
6470
        packet.append(struct.pack('<i', len(self.QueryDataSets)))
6471
        for fieldname in self.QueryDataSets:
6472
            packet.append(fieldname.to_binary())
6473
        packet.append(pack_uatype('ByteString', self.RevisedContinuationPoint))
6474
        return b''.join(packet)
6475
        
6476 1
    @staticmethod
6477
    def from_binary(data):
6478
        obj = QueryNextResult()
6479
        length = struct.unpack('<i', data.read(4))[0]
6480
        if length != -1:
6481
            for _ in range(0, length):
6482
                obj.QueryDataSets.append(QueryDataSet.from_binary(data))
6483
        obj.RevisedContinuationPoint = unpack_uatype('ByteString', data)
6484
        return obj
6485
    
6486 1
    def __str__(self):
6487
        return 'QueryNextResult(' + 'QueryDataSets:' + str(self.QueryDataSets) + ', '  + \
6488
             'RevisedContinuationPoint:' + str(self.RevisedContinuationPoint) + ')'
6489
    
6490 1
    __repr__ = __str__
6491
    
6492 1
class QueryNextResponse(FrozenClass):
6493
    '''
6494
    :ivar TypeId: 
6495
    :vartype TypeId: NodeId 
6496
    :ivar ResponseHeader: 
6497
    :vartype ResponseHeader: ResponseHeader 
6498
    :ivar Parameters: 
6499
    :vartype Parameters: QueryNextResult 
6500
    '''
6501 1
    def __init__(self):
6502
        self.TypeId = FourByteNodeId(ObjectIds.QueryNextResponse_Encoding_DefaultBinary)
6503
        self.ResponseHeader = ResponseHeader()
6504
        self.Parameters = QueryNextResult()
6505
        self._freeze()
6506
    
6507 1
    def to_binary(self):
6508
        packet = []
6509
        packet.append(self.TypeId.to_binary())
6510
        packet.append(self.ResponseHeader.to_binary())
6511
        packet.append(self.Parameters.to_binary())
6512
        return b''.join(packet)
6513
        
6514 1
    @staticmethod
6515
    def from_binary(data):
6516
        obj = QueryNextResponse()
6517
        obj.TypeId = NodeId.from_binary(data)
6518
        obj.ResponseHeader = ResponseHeader.from_binary(data)
6519
        obj.Parameters = QueryNextResult.from_binary(data)
6520
        return obj
6521
    
6522 1
    def __str__(self):
6523
        return 'QueryNextResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6524
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
6525
             'Parameters:' + str(self.Parameters) + ')'
6526
    
6527 1
    __repr__ = __str__
6528
    
6529 1
class ReadValueId(FrozenClass):
6530
    '''
6531
    :ivar NodeId: 
6532
    :vartype NodeId: NodeId 
6533
    :ivar AttributeId: 
6534
    :vartype AttributeId: UInt32 
6535
    :ivar IndexRange: 
6536
    :vartype IndexRange: String 
6537
    :ivar DataEncoding: 
6538
    :vartype DataEncoding: QualifiedName 
6539
    '''
6540 1
    def __init__(self):
6541 1
        self.NodeId = NodeId()
6542 1
        self.AttributeId = 0
6543 1
        self.IndexRange = ''
6544 1
        self.DataEncoding = QualifiedName()
6545 1
        self._freeze()
6546
    
6547 1
    def to_binary(self):
6548 1
        packet = []
6549 1
        packet.append(self.NodeId.to_binary())
6550 1
        packet.append(pack_uatype('UInt32', self.AttributeId))
6551 1
        packet.append(pack_uatype('String', self.IndexRange))
6552 1
        packet.append(self.DataEncoding.to_binary())
6553 1
        return b''.join(packet)
6554
        
6555 1
    @staticmethod
6556
    def from_binary(data):
6557 1
        obj = ReadValueId()
6558 1
        obj.NodeId = NodeId.from_binary(data)
6559 1
        obj.AttributeId = unpack_uatype('UInt32', data)
6560 1
        obj.IndexRange = unpack_uatype('String', data)
6561 1
        obj.DataEncoding = QualifiedName.from_binary(data)
6562 1
        return obj
6563
    
6564 1
    def __str__(self):
6565
        return 'ReadValueId(' + 'NodeId:' + str(self.NodeId) + ', '  + \
6566
             'AttributeId:' + str(self.AttributeId) + ', '  + \
6567
             'IndexRange:' + str(self.IndexRange) + ', '  + \
6568
             'DataEncoding:' + str(self.DataEncoding) + ')'
6569
    
6570 1
    __repr__ = __str__
6571
    
6572 1
class ReadParameters(FrozenClass):
6573
    '''
6574
    :ivar MaxAge: 
6575
    :vartype MaxAge: Double 
6576
    :ivar TimestampsToReturn: 
6577
    :vartype TimestampsToReturn: TimestampsToReturn 
6578
    :ivar NodesToRead: 
6579
    :vartype NodesToRead: ReadValueId 
6580
    '''
6581 1
    def __init__(self):
6582 1
        self.MaxAge = 0
6583 1
        self.TimestampsToReturn = 0
6584 1
        self.NodesToRead = []
6585 1
        self._freeze()
6586
    
6587 1
    def to_binary(self):
6588 1
        packet = []
6589 1
        packet.append(pack_uatype('Double', self.MaxAge))
6590 1
        packet.append(pack_uatype('UInt32', self.TimestampsToReturn))
6591 1
        packet.append(struct.pack('<i', len(self.NodesToRead)))
6592 1
        for fieldname in self.NodesToRead:
6593 1
            packet.append(fieldname.to_binary())
6594 1
        return b''.join(packet)
6595
        
6596 1
    @staticmethod
6597
    def from_binary(data):
6598 1
        obj = ReadParameters()
6599 1
        obj.MaxAge = unpack_uatype('Double', data)
6600 1
        obj.TimestampsToReturn = unpack_uatype('UInt32', data)
6601 1
        length = struct.unpack('<i', data.read(4))[0]
6602 1
        if length != -1:
6603 1
            for _ in range(0, length):
6604 1
                obj.NodesToRead.append(ReadValueId.from_binary(data))
6605 1
        return obj
6606
    
6607 1
    def __str__(self):
6608
        return 'ReadParameters(' + 'MaxAge:' + str(self.MaxAge) + ', '  + \
6609
             'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', '  + \
6610
             'NodesToRead:' + str(self.NodesToRead) + ')'
6611
    
6612 1
    __repr__ = __str__
6613
    
6614 1
class ReadRequest(FrozenClass):
6615
    '''
6616
    :ivar TypeId: 
6617
    :vartype TypeId: NodeId 
6618
    :ivar RequestHeader: 
6619
    :vartype RequestHeader: RequestHeader 
6620
    :ivar Parameters: 
6621
    :vartype Parameters: ReadParameters 
6622
    '''
6623 1
    def __init__(self):
6624 1
        self.TypeId = FourByteNodeId(ObjectIds.ReadRequest_Encoding_DefaultBinary)
6625 1
        self.RequestHeader = RequestHeader()
6626 1
        self.Parameters = ReadParameters()
6627 1
        self._freeze()
6628
    
6629 1
    def to_binary(self):
6630 1
        packet = []
6631 1
        packet.append(self.TypeId.to_binary())
6632 1
        packet.append(self.RequestHeader.to_binary())
6633 1
        packet.append(self.Parameters.to_binary())
6634 1
        return b''.join(packet)
6635
        
6636 1
    @staticmethod
6637
    def from_binary(data):
6638
        obj = ReadRequest()
6639
        obj.TypeId = NodeId.from_binary(data)
6640
        obj.RequestHeader = RequestHeader.from_binary(data)
6641
        obj.Parameters = ReadParameters.from_binary(data)
6642
        return obj
6643
    
6644 1
    def __str__(self):
6645
        return 'ReadRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6646
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
6647
             'Parameters:' + str(self.Parameters) + ')'
6648
    
6649 1
    __repr__ = __str__
6650
    
6651 1
class ReadResponse(FrozenClass):
6652
    '''
6653
    :ivar TypeId: 
6654
    :vartype TypeId: NodeId 
6655
    :ivar ResponseHeader: 
6656
    :vartype ResponseHeader: ResponseHeader 
6657
    :ivar Results: 
6658
    :vartype Results: DataValue 
6659
    :ivar DiagnosticInfos: 
6660
    :vartype DiagnosticInfos: DiagnosticInfo 
6661
    '''
6662 1
    def __init__(self):
6663 1
        self.TypeId = FourByteNodeId(ObjectIds.ReadResponse_Encoding_DefaultBinary)
6664 1
        self.ResponseHeader = ResponseHeader()
6665 1
        self.Results = []
6666 1
        self.DiagnosticInfos = []
6667 1
        self._freeze()
6668
    
6669 1
    def to_binary(self):
6670 1
        packet = []
6671 1
        packet.append(self.TypeId.to_binary())
6672 1
        packet.append(self.ResponseHeader.to_binary())
6673 1
        packet.append(struct.pack('<i', len(self.Results)))
6674 1
        for fieldname in self.Results:
6675 1
            packet.append(fieldname.to_binary())
6676 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
6677 1
        for fieldname in self.DiagnosticInfos:
6678
            packet.append(fieldname.to_binary())
6679 1
        return b''.join(packet)
6680
        
6681 1
    @staticmethod
6682
    def from_binary(data):
6683 1
        obj = ReadResponse()
6684 1
        obj.TypeId = NodeId.from_binary(data)
6685 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
6686 1
        length = struct.unpack('<i', data.read(4))[0]
6687 1
        if length != -1:
6688 1
            for _ in range(0, length):
6689 1
                obj.Results.append(DataValue.from_binary(data))
6690 1
        length = struct.unpack('<i', data.read(4))[0]
6691 1
        if length != -1:
6692 1
            for _ in range(0, length):
6693
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
6694 1
        return obj
6695
    
6696 1
    def __str__(self):
6697
        return 'ReadResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6698
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
6699
             'Results:' + str(self.Results) + ', '  + \
6700
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
6701
    
6702 1
    __repr__ = __str__
6703
    
6704 1
class HistoryReadValueId(FrozenClass):
6705
    '''
6706
    :ivar NodeId: 
6707
    :vartype NodeId: NodeId 
6708
    :ivar IndexRange: 
6709
    :vartype IndexRange: String 
6710
    :ivar DataEncoding: 
6711
    :vartype DataEncoding: QualifiedName 
6712
    :ivar ContinuationPoint: 
6713
    :vartype ContinuationPoint: ByteString 
6714
    '''
6715 1
    def __init__(self):
6716
        self.NodeId = NodeId()
6717
        self.IndexRange = ''
6718
        self.DataEncoding = QualifiedName()
6719
        self.ContinuationPoint = b''
6720
        self._freeze()
6721
    
6722 1
    def to_binary(self):
6723
        packet = []
6724
        packet.append(self.NodeId.to_binary())
6725
        packet.append(pack_uatype('String', self.IndexRange))
6726
        packet.append(self.DataEncoding.to_binary())
6727
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
6728
        return b''.join(packet)
6729
        
6730 1
    @staticmethod
6731
    def from_binary(data):
6732
        obj = HistoryReadValueId()
6733
        obj.NodeId = NodeId.from_binary(data)
6734
        obj.IndexRange = unpack_uatype('String', data)
6735
        obj.DataEncoding = QualifiedName.from_binary(data)
6736
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
6737
        return obj
6738
    
6739 1
    def __str__(self):
6740
        return 'HistoryReadValueId(' + 'NodeId:' + str(self.NodeId) + ', '  + \
6741
             'IndexRange:' + str(self.IndexRange) + ', '  + \
6742
             'DataEncoding:' + str(self.DataEncoding) + ', '  + \
6743
             'ContinuationPoint:' + str(self.ContinuationPoint) + ')'
6744
    
6745 1
    __repr__ = __str__
6746
    
6747 1
class HistoryReadResult(FrozenClass):
6748
    '''
6749
    :ivar StatusCode: 
6750
    :vartype StatusCode: StatusCode 
6751
    :ivar ContinuationPoint: 
6752
    :vartype ContinuationPoint: ByteString 
6753
    :ivar HistoryData: 
6754
    :vartype HistoryData: ExtensionObject 
6755
    '''
6756 1
    def __init__(self):
6757
        self.StatusCode = StatusCode()
6758
        self.ContinuationPoint = b''
6759
        self.HistoryData = ExtensionObject()
6760
        self._freeze()
6761
    
6762 1
    def to_binary(self):
6763
        packet = []
6764
        packet.append(self.StatusCode.to_binary())
6765
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
6766
        packet.append(self.HistoryData.to_binary())
6767
        return b''.join(packet)
6768
        
6769 1
    @staticmethod
6770
    def from_binary(data):
6771
        obj = HistoryReadResult()
6772
        obj.StatusCode = StatusCode.from_binary(data)
6773
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
6774
        obj.HistoryData = ExtensionObject.from_binary(data)
6775
        return obj
6776
    
6777 1
    def __str__(self):
6778
        return 'HistoryReadResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
6779
             'ContinuationPoint:' + str(self.ContinuationPoint) + ', '  + \
6780
             'HistoryData:' + str(self.HistoryData) + ')'
6781
    
6782 1
    __repr__ = __str__
6783
    
6784 1
class HistoryReadDetails(FrozenClass):
6785
    '''
6786
    '''
6787 1
    def __init__(self):
6788
        self._freeze()
6789
    
6790 1
    def to_binary(self):
6791
        packet = []
6792
        return b''.join(packet)
6793
        
6794 1
    @staticmethod
6795
    def from_binary(data):
6796
        obj = HistoryReadDetails()
6797
        return obj
6798
    
6799 1
    def __str__(self):
6800
        return 'HistoryReadDetails(' +  + ')'
6801
    
6802 1
    __repr__ = __str__
6803
    
6804 1
class ReadEventDetails(FrozenClass):
6805
    '''
6806
    :ivar NumValuesPerNode: 
6807
    :vartype NumValuesPerNode: UInt32 
6808
    :ivar StartTime: 
6809
    :vartype StartTime: DateTime 
6810
    :ivar EndTime: 
6811
    :vartype EndTime: DateTime 
6812
    :ivar Filter: 
6813
    :vartype Filter: EventFilter 
6814
    '''
6815 1
    def __init__(self):
6816
        self.NumValuesPerNode = 0
6817
        self.StartTime = datetime.now()
6818
        self.EndTime = datetime.now()
6819
        self.Filter = EventFilter()
6820
        self._freeze()
6821
    
6822 1
    def to_binary(self):
6823
        packet = []
6824
        packet.append(pack_uatype('UInt32', self.NumValuesPerNode))
6825
        packet.append(pack_uatype('DateTime', self.StartTime))
6826
        packet.append(pack_uatype('DateTime', self.EndTime))
6827
        packet.append(self.Filter.to_binary())
6828
        return b''.join(packet)
6829
        
6830 1
    @staticmethod
6831
    def from_binary(data):
6832
        obj = ReadEventDetails()
6833
        obj.NumValuesPerNode = unpack_uatype('UInt32', data)
6834
        obj.StartTime = unpack_uatype('DateTime', data)
6835
        obj.EndTime = unpack_uatype('DateTime', data)
6836
        obj.Filter = EventFilter.from_binary(data)
6837
        return obj
6838
    
6839 1
    def __str__(self):
6840
        return 'ReadEventDetails(' + 'NumValuesPerNode:' + str(self.NumValuesPerNode) + ', '  + \
6841
             'StartTime:' + str(self.StartTime) + ', '  + \
6842
             'EndTime:' + str(self.EndTime) + ', '  + \
6843
             'Filter:' + str(self.Filter) + ')'
6844
    
6845 1
    __repr__ = __str__
6846
    
6847 1
class ReadRawModifiedDetails(FrozenClass):
6848
    '''
6849
    :ivar IsReadModified: 
6850
    :vartype IsReadModified: Boolean 
6851
    :ivar StartTime: 
6852
    :vartype StartTime: DateTime 
6853
    :ivar EndTime: 
6854
    :vartype EndTime: DateTime 
6855
    :ivar NumValuesPerNode: 
6856
    :vartype NumValuesPerNode: UInt32 
6857
    :ivar ReturnBounds: 
6858
    :vartype ReturnBounds: Boolean 
6859
    '''
6860 1
    def __init__(self):
6861
        self.IsReadModified = True
6862
        self.StartTime = datetime.now()
6863
        self.EndTime = datetime.now()
6864
        self.NumValuesPerNode = 0
6865
        self.ReturnBounds = True
6866
        self._freeze()
6867
    
6868 1
    def to_binary(self):
6869
        packet = []
6870
        packet.append(pack_uatype('Boolean', self.IsReadModified))
6871
        packet.append(pack_uatype('DateTime', self.StartTime))
6872
        packet.append(pack_uatype('DateTime', self.EndTime))
6873
        packet.append(pack_uatype('UInt32', self.NumValuesPerNode))
6874
        packet.append(pack_uatype('Boolean', self.ReturnBounds))
6875
        return b''.join(packet)
6876
        
6877 1
    @staticmethod
6878
    def from_binary(data):
6879
        obj = ReadRawModifiedDetails()
6880
        obj.IsReadModified = unpack_uatype('Boolean', data)
6881
        obj.StartTime = unpack_uatype('DateTime', data)
6882
        obj.EndTime = unpack_uatype('DateTime', data)
6883
        obj.NumValuesPerNode = unpack_uatype('UInt32', data)
6884
        obj.ReturnBounds = unpack_uatype('Boolean', data)
6885
        return obj
6886
    
6887 1
    def __str__(self):
6888
        return 'ReadRawModifiedDetails(' + 'IsReadModified:' + str(self.IsReadModified) + ', '  + \
6889
             'StartTime:' + str(self.StartTime) + ', '  + \
6890
             'EndTime:' + str(self.EndTime) + ', '  + \
6891
             'NumValuesPerNode:' + str(self.NumValuesPerNode) + ', '  + \
6892
             'ReturnBounds:' + str(self.ReturnBounds) + ')'
6893
    
6894 1
    __repr__ = __str__
6895
    
6896 1
class ReadProcessedDetails(FrozenClass):
6897
    '''
6898
    :ivar StartTime: 
6899
    :vartype StartTime: DateTime 
6900
    :ivar EndTime: 
6901
    :vartype EndTime: DateTime 
6902
    :ivar ProcessingInterval: 
6903
    :vartype ProcessingInterval: Double 
6904
    :ivar AggregateType: 
6905
    :vartype AggregateType: NodeId 
6906
    :ivar AggregateConfiguration: 
6907
    :vartype AggregateConfiguration: AggregateConfiguration 
6908
    '''
6909 1
    def __init__(self):
6910
        self.StartTime = datetime.now()
6911
        self.EndTime = datetime.now()
6912
        self.ProcessingInterval = 0
6913
        self.AggregateType = []
6914
        self.AggregateConfiguration = AggregateConfiguration()
6915
        self._freeze()
6916
    
6917 1
    def to_binary(self):
6918
        packet = []
6919
        packet.append(pack_uatype('DateTime', self.StartTime))
6920
        packet.append(pack_uatype('DateTime', self.EndTime))
6921
        packet.append(pack_uatype('Double', self.ProcessingInterval))
6922
        packet.append(struct.pack('<i', len(self.AggregateType)))
6923
        for fieldname in self.AggregateType:
6924
            packet.append(fieldname.to_binary())
6925
        packet.append(self.AggregateConfiguration.to_binary())
6926
        return b''.join(packet)
6927
        
6928 1
    @staticmethod
6929
    def from_binary(data):
6930
        obj = ReadProcessedDetails()
6931
        obj.StartTime = unpack_uatype('DateTime', data)
6932
        obj.EndTime = unpack_uatype('DateTime', data)
6933
        obj.ProcessingInterval = unpack_uatype('Double', data)
6934
        length = struct.unpack('<i', data.read(4))[0]
6935
        if length != -1:
6936
            for _ in range(0, length):
6937
                obj.AggregateType.append(NodeId.from_binary(data))
6938
        obj.AggregateConfiguration = AggregateConfiguration.from_binary(data)
6939
        return obj
6940
    
6941 1
    def __str__(self):
6942
        return 'ReadProcessedDetails(' + 'StartTime:' + str(self.StartTime) + ', '  + \
6943
             'EndTime:' + str(self.EndTime) + ', '  + \
6944
             'ProcessingInterval:' + str(self.ProcessingInterval) + ', '  + \
6945
             'AggregateType:' + str(self.AggregateType) + ', '  + \
6946
             'AggregateConfiguration:' + str(self.AggregateConfiguration) + ')'
6947
    
6948 1
    __repr__ = __str__
6949
    
6950 1
class ReadAtTimeDetails(FrozenClass):
6951
    '''
6952
    :ivar ReqTimes: 
6953
    :vartype ReqTimes: DateTime 
6954
    :ivar UseSimpleBounds: 
6955
    :vartype UseSimpleBounds: Boolean 
6956
    '''
6957 1
    def __init__(self):
6958
        self.ReqTimes = []
6959
        self.UseSimpleBounds = True
6960
        self._freeze()
6961
    
6962 1
    def to_binary(self):
6963
        packet = []
6964
        packet.append(struct.pack('<i', len(self.ReqTimes)))
6965
        for fieldname in self.ReqTimes:
6966
            packet.append(pack_uatype('DateTime', fieldname))
6967
        packet.append(pack_uatype('Boolean', self.UseSimpleBounds))
6968
        return b''.join(packet)
6969
        
6970 1
    @staticmethod
6971
    def from_binary(data):
6972
        obj = ReadAtTimeDetails()
6973
        obj.ReqTimes = unpack_uatype_array('DateTime', data)
6974
        obj.UseSimpleBounds = unpack_uatype('Boolean', data)
6975
        return obj
6976
    
6977 1
    def __str__(self):
6978
        return 'ReadAtTimeDetails(' + 'ReqTimes:' + str(self.ReqTimes) + ', '  + \
6979
             'UseSimpleBounds:' + str(self.UseSimpleBounds) + ')'
6980
    
6981 1
    __repr__ = __str__
6982
    
6983 1
class HistoryData(FrozenClass):
6984
    '''
6985
    :ivar DataValues: 
6986
    :vartype DataValues: DataValue 
6987
    '''
6988 1
    def __init__(self):
6989
        self.DataValues = []
6990
        self._freeze()
6991
    
6992 1
    def to_binary(self):
6993
        packet = []
6994
        packet.append(struct.pack('<i', len(self.DataValues)))
6995
        for fieldname in self.DataValues:
6996
            packet.append(fieldname.to_binary())
6997
        return b''.join(packet)
6998
        
6999 1
    @staticmethod
7000
    def from_binary(data):
7001
        obj = HistoryData()
7002
        length = struct.unpack('<i', data.read(4))[0]
7003
        if length != -1:
7004
            for _ in range(0, length):
7005
                obj.DataValues.append(DataValue.from_binary(data))
7006
        return obj
7007
    
7008 1
    def __str__(self):
7009
        return 'HistoryData(' + 'DataValues:' + str(self.DataValues) + ')'
7010
    
7011 1
    __repr__ = __str__
7012
    
7013 1
class ModificationInfo(FrozenClass):
7014
    '''
7015
    :ivar ModificationTime: 
7016
    :vartype ModificationTime: DateTime 
7017
    :ivar UpdateType: 
7018
    :vartype UpdateType: HistoryUpdateType 
7019
    :ivar UserName: 
7020
    :vartype UserName: String 
7021
    '''
7022 1
    def __init__(self):
7023
        self.ModificationTime = datetime.now()
7024
        self.UpdateType = 0
7025
        self.UserName = ''
7026
        self._freeze()
7027
    
7028 1
    def to_binary(self):
7029
        packet = []
7030
        packet.append(pack_uatype('DateTime', self.ModificationTime))
7031
        packet.append(pack_uatype('UInt32', self.UpdateType))
7032
        packet.append(pack_uatype('String', self.UserName))
7033
        return b''.join(packet)
7034
        
7035 1
    @staticmethod
7036
    def from_binary(data):
7037
        obj = ModificationInfo()
7038
        obj.ModificationTime = unpack_uatype('DateTime', data)
7039
        obj.UpdateType = unpack_uatype('UInt32', data)
7040
        obj.UserName = unpack_uatype('String', data)
7041
        return obj
7042
    
7043 1
    def __str__(self):
7044
        return 'ModificationInfo(' + 'ModificationTime:' + str(self.ModificationTime) + ', '  + \
7045
             'UpdateType:' + str(self.UpdateType) + ', '  + \
7046
             'UserName:' + str(self.UserName) + ')'
7047
    
7048 1
    __repr__ = __str__
7049
    
7050 1
class HistoryModifiedData(FrozenClass):
7051
    '''
7052
    :ivar DataValues: 
7053
    :vartype DataValues: DataValue 
7054
    :ivar ModificationInfos: 
7055
    :vartype ModificationInfos: ModificationInfo 
7056
    '''
7057 1
    def __init__(self):
7058
        self.DataValues = []
7059
        self.ModificationInfos = []
7060
        self._freeze()
7061
    
7062 1
    def to_binary(self):
7063
        packet = []
7064
        packet.append(struct.pack('<i', len(self.DataValues)))
7065
        for fieldname in self.DataValues:
7066
            packet.append(fieldname.to_binary())
7067
        packet.append(struct.pack('<i', len(self.ModificationInfos)))
7068
        for fieldname in self.ModificationInfos:
7069
            packet.append(fieldname.to_binary())
7070
        return b''.join(packet)
7071
        
7072 1
    @staticmethod
7073
    def from_binary(data):
7074
        obj = HistoryModifiedData()
7075
        length = struct.unpack('<i', data.read(4))[0]
7076
        if length != -1:
7077
            for _ in range(0, length):
7078
                obj.DataValues.append(DataValue.from_binary(data))
7079
        length = struct.unpack('<i', data.read(4))[0]
7080
        if length != -1:
7081
            for _ in range(0, length):
7082
                obj.ModificationInfos.append(ModificationInfo.from_binary(data))
7083
        return obj
7084
    
7085 1
    def __str__(self):
7086
        return 'HistoryModifiedData(' + 'DataValues:' + str(self.DataValues) + ', '  + \
7087
             'ModificationInfos:' + str(self.ModificationInfos) + ')'
7088
    
7089 1
    __repr__ = __str__
7090
    
7091 1
class HistoryEvent(FrozenClass):
7092
    '''
7093
    :ivar Events: 
7094
    :vartype Events: HistoryEventFieldList 
7095
    '''
7096 1
    def __init__(self):
7097
        self.Events = []
7098
        self._freeze()
7099
    
7100 1
    def to_binary(self):
7101
        packet = []
7102
        packet.append(struct.pack('<i', len(self.Events)))
7103
        for fieldname in self.Events:
7104
            packet.append(fieldname.to_binary())
7105
        return b''.join(packet)
7106
        
7107 1
    @staticmethod
7108
    def from_binary(data):
7109
        obj = HistoryEvent()
7110
        length = struct.unpack('<i', data.read(4))[0]
7111
        if length != -1:
7112
            for _ in range(0, length):
7113
                obj.Events.append(HistoryEventFieldList.from_binary(data))
7114
        return obj
7115
    
7116 1
    def __str__(self):
7117
        return 'HistoryEvent(' + 'Events:' + str(self.Events) + ')'
7118
    
7119 1
    __repr__ = __str__
7120
    
7121 1
class HistoryReadParameters(FrozenClass):
7122
    '''
7123
    :ivar HistoryReadDetails: 
7124
    :vartype HistoryReadDetails: ExtensionObject 
7125
    :ivar TimestampsToReturn: 
7126
    :vartype TimestampsToReturn: TimestampsToReturn 
7127
    :ivar ReleaseContinuationPoints: 
7128
    :vartype ReleaseContinuationPoints: Boolean 
7129
    :ivar NodesToRead: 
7130
    :vartype NodesToRead: HistoryReadValueId 
7131
    '''
7132 1
    def __init__(self):
7133
        self.HistoryReadDetails = ExtensionObject()
7134
        self.TimestampsToReturn = 0
7135
        self.ReleaseContinuationPoints = True
7136
        self.NodesToRead = []
7137
        self._freeze()
7138
    
7139 1
    def to_binary(self):
7140
        packet = []
7141
        packet.append(self.HistoryReadDetails.to_binary())
7142
        packet.append(pack_uatype('UInt32', self.TimestampsToReturn))
7143
        packet.append(pack_uatype('Boolean', self.ReleaseContinuationPoints))
7144
        packet.append(struct.pack('<i', len(self.NodesToRead)))
7145
        for fieldname in self.NodesToRead:
7146
            packet.append(fieldname.to_binary())
7147
        return b''.join(packet)
7148
        
7149 1
    @staticmethod
7150
    def from_binary(data):
7151
        obj = HistoryReadParameters()
7152
        obj.HistoryReadDetails = ExtensionObject.from_binary(data)
7153
        obj.TimestampsToReturn = unpack_uatype('UInt32', data)
7154
        obj.ReleaseContinuationPoints = unpack_uatype('Boolean', data)
7155
        length = struct.unpack('<i', data.read(4))[0]
7156
        if length != -1:
7157
            for _ in range(0, length):
7158
                obj.NodesToRead.append(HistoryReadValueId.from_binary(data))
7159
        return obj
7160
    
7161 1
    def __str__(self):
7162
        return 'HistoryReadParameters(' + 'HistoryReadDetails:' + str(self.HistoryReadDetails) + ', '  + \
7163
             'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', '  + \
7164
             'ReleaseContinuationPoints:' + str(self.ReleaseContinuationPoints) + ', '  + \
7165
             'NodesToRead:' + str(self.NodesToRead) + ')'
7166
    
7167 1
    __repr__ = __str__
7168
    
7169 1
class HistoryReadRequest(FrozenClass):
7170
    '''
7171
    :ivar TypeId: 
7172
    :vartype TypeId: NodeId 
7173
    :ivar RequestHeader: 
7174
    :vartype RequestHeader: RequestHeader 
7175
    :ivar Parameters: 
7176
    :vartype Parameters: HistoryReadParameters 
7177
    '''
7178 1
    def __init__(self):
7179
        self.TypeId = FourByteNodeId(ObjectIds.HistoryReadRequest_Encoding_DefaultBinary)
7180
        self.RequestHeader = RequestHeader()
7181
        self.Parameters = HistoryReadParameters()
7182
        self._freeze()
7183
    
7184 1
    def to_binary(self):
7185
        packet = []
7186
        packet.append(self.TypeId.to_binary())
7187
        packet.append(self.RequestHeader.to_binary())
7188
        packet.append(self.Parameters.to_binary())
7189
        return b''.join(packet)
7190
        
7191 1
    @staticmethod
7192
    def from_binary(data):
7193
        obj = HistoryReadRequest()
7194
        obj.TypeId = NodeId.from_binary(data)
7195
        obj.RequestHeader = RequestHeader.from_binary(data)
7196
        obj.Parameters = HistoryReadParameters.from_binary(data)
7197
        return obj
7198
    
7199 1
    def __str__(self):
7200
        return 'HistoryReadRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7201
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
7202
             'Parameters:' + str(self.Parameters) + ')'
7203
    
7204 1
    __repr__ = __str__
7205
    
7206 1
class HistoryReadResponse(FrozenClass):
7207
    '''
7208
    :ivar TypeId: 
7209
    :vartype TypeId: NodeId 
7210
    :ivar ResponseHeader: 
7211
    :vartype ResponseHeader: ResponseHeader 
7212
    :ivar Results: 
7213
    :vartype Results: HistoryReadResult 
7214
    :ivar DiagnosticInfos: 
7215
    :vartype DiagnosticInfos: DiagnosticInfo 
7216
    '''
7217 1
    def __init__(self):
7218
        self.TypeId = FourByteNodeId(ObjectIds.HistoryReadResponse_Encoding_DefaultBinary)
7219
        self.ResponseHeader = ResponseHeader()
7220
        self.Results = []
7221
        self.DiagnosticInfos = []
7222
        self._freeze()
7223
    
7224 1
    def to_binary(self):
7225
        packet = []
7226
        packet.append(self.TypeId.to_binary())
7227
        packet.append(self.ResponseHeader.to_binary())
7228
        packet.append(struct.pack('<i', len(self.Results)))
7229
        for fieldname in self.Results:
7230
            packet.append(fieldname.to_binary())
7231
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
7232
        for fieldname in self.DiagnosticInfos:
7233
            packet.append(fieldname.to_binary())
7234
        return b''.join(packet)
7235
        
7236 1
    @staticmethod
7237
    def from_binary(data):
7238
        obj = HistoryReadResponse()
7239
        obj.TypeId = NodeId.from_binary(data)
7240
        obj.ResponseHeader = ResponseHeader.from_binary(data)
7241
        length = struct.unpack('<i', data.read(4))[0]
7242
        if length != -1:
7243
            for _ in range(0, length):
7244
                obj.Results.append(HistoryReadResult.from_binary(data))
7245
        length = struct.unpack('<i', data.read(4))[0]
7246
        if length != -1:
7247
            for _ in range(0, length):
7248
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7249
        return obj
7250
    
7251 1
    def __str__(self):
7252
        return 'HistoryReadResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7253
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
7254
             'Results:' + str(self.Results) + ', '  + \
7255
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
7256
    
7257 1
    __repr__ = __str__
7258
    
7259 1
class WriteValue(FrozenClass):
7260
    '''
7261
    :ivar NodeId: 
7262
    :vartype NodeId: NodeId 
7263
    :ivar AttributeId: 
7264
    :vartype AttributeId: UInt32 
7265
    :ivar IndexRange: 
7266
    :vartype IndexRange: String 
7267
    :ivar Value: 
7268
    :vartype Value: DataValue 
7269
    '''
7270 1
    def __init__(self):
7271 1
        self.NodeId = NodeId()
7272 1
        self.AttributeId = 0
7273 1
        self.IndexRange = ''
7274 1
        self.Value = DataValue()
7275 1
        self._freeze()
7276
    
7277 1
    def to_binary(self):
7278 1
        packet = []
7279 1
        packet.append(self.NodeId.to_binary())
7280 1
        packet.append(pack_uatype('UInt32', self.AttributeId))
7281 1
        packet.append(pack_uatype('String', self.IndexRange))
7282 1
        packet.append(self.Value.to_binary())
7283 1
        return b''.join(packet)
7284
        
7285 1
    @staticmethod
7286
    def from_binary(data):
7287 1
        obj = WriteValue()
7288 1
        obj.NodeId = NodeId.from_binary(data)
7289 1
        obj.AttributeId = unpack_uatype('UInt32', data)
7290 1
        obj.IndexRange = unpack_uatype('String', data)
7291 1
        obj.Value = DataValue.from_binary(data)
7292 1
        return obj
7293
    
7294 1
    def __str__(self):
7295
        return 'WriteValue(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7296
             'AttributeId:' + str(self.AttributeId) + ', '  + \
7297
             'IndexRange:' + str(self.IndexRange) + ', '  + \
7298
             'Value:' + str(self.Value) + ')'
7299
    
7300 1
    __repr__ = __str__
7301
    
7302 1
class WriteParameters(FrozenClass):
7303
    '''
7304
    :ivar NodesToWrite: 
7305
    :vartype NodesToWrite: WriteValue 
7306
    '''
7307 1
    def __init__(self):
7308 1
        self.NodesToWrite = []
7309 1
        self._freeze()
7310
    
7311 1
    def to_binary(self):
7312 1
        packet = []
7313 1
        packet.append(struct.pack('<i', len(self.NodesToWrite)))
7314 1
        for fieldname in self.NodesToWrite:
7315 1
            packet.append(fieldname.to_binary())
7316 1
        return b''.join(packet)
7317
        
7318 1
    @staticmethod
7319
    def from_binary(data):
7320 1
        obj = WriteParameters()
7321 1
        length = struct.unpack('<i', data.read(4))[0]
7322 1
        if length != -1:
7323 1
            for _ in range(0, length):
7324 1
                obj.NodesToWrite.append(WriteValue.from_binary(data))
7325 1
        return obj
7326
    
7327 1
    def __str__(self):
7328
        return 'WriteParameters(' + 'NodesToWrite:' + str(self.NodesToWrite) + ')'
7329
    
7330 1
    __repr__ = __str__
7331
    
7332 1
class WriteRequest(FrozenClass):
7333
    '''
7334
    :ivar TypeId: 
7335
    :vartype TypeId: NodeId 
7336
    :ivar RequestHeader: 
7337
    :vartype RequestHeader: RequestHeader 
7338
    :ivar Parameters: 
7339
    :vartype Parameters: WriteParameters 
7340
    '''
7341 1
    def __init__(self):
7342 1
        self.TypeId = FourByteNodeId(ObjectIds.WriteRequest_Encoding_DefaultBinary)
7343 1
        self.RequestHeader = RequestHeader()
7344 1
        self.Parameters = WriteParameters()
7345 1
        self._freeze()
7346
    
7347 1
    def to_binary(self):
7348 1
        packet = []
7349 1
        packet.append(self.TypeId.to_binary())
7350 1
        packet.append(self.RequestHeader.to_binary())
7351 1
        packet.append(self.Parameters.to_binary())
7352 1
        return b''.join(packet)
7353
        
7354 1
    @staticmethod
7355
    def from_binary(data):
7356
        obj = WriteRequest()
7357
        obj.TypeId = NodeId.from_binary(data)
7358
        obj.RequestHeader = RequestHeader.from_binary(data)
7359
        obj.Parameters = WriteParameters.from_binary(data)
7360
        return obj
7361
    
7362 1
    def __str__(self):
7363
        return 'WriteRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7364
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
7365
             'Parameters:' + str(self.Parameters) + ')'
7366
    
7367 1
    __repr__ = __str__
7368
    
7369 1
class WriteResponse(FrozenClass):
7370
    '''
7371
    :ivar TypeId: 
7372
    :vartype TypeId: NodeId 
7373
    :ivar ResponseHeader: 
7374
    :vartype ResponseHeader: ResponseHeader 
7375
    :ivar Results: 
7376
    :vartype Results: StatusCode 
7377
    :ivar DiagnosticInfos: 
7378
    :vartype DiagnosticInfos: DiagnosticInfo 
7379
    '''
7380 1
    def __init__(self):
7381 1
        self.TypeId = FourByteNodeId(ObjectIds.WriteResponse_Encoding_DefaultBinary)
7382 1
        self.ResponseHeader = ResponseHeader()
7383 1
        self.Results = []
7384 1
        self.DiagnosticInfos = []
7385 1
        self._freeze()
7386
    
7387 1
    def to_binary(self):
7388 1
        packet = []
7389 1
        packet.append(self.TypeId.to_binary())
7390 1
        packet.append(self.ResponseHeader.to_binary())
7391 1
        packet.append(struct.pack('<i', len(self.Results)))
7392 1
        for fieldname in self.Results:
7393 1
            packet.append(fieldname.to_binary())
7394 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
7395 1
        for fieldname in self.DiagnosticInfos:
7396
            packet.append(fieldname.to_binary())
7397 1
        return b''.join(packet)
7398
        
7399 1
    @staticmethod
7400
    def from_binary(data):
7401 1
        obj = WriteResponse()
7402 1
        obj.TypeId = NodeId.from_binary(data)
7403 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
7404 1
        length = struct.unpack('<i', data.read(4))[0]
7405 1
        if length != -1:
7406 1
            for _ in range(0, length):
7407 1
                obj.Results.append(StatusCode.from_binary(data))
7408 1
        length = struct.unpack('<i', data.read(4))[0]
7409 1
        if length != -1:
7410 1
            for _ in range(0, length):
7411
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7412 1
        return obj
7413
    
7414 1
    def __str__(self):
7415
        return 'WriteResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7416
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
7417
             'Results:' + str(self.Results) + ', '  + \
7418
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
7419
    
7420 1
    __repr__ = __str__
7421
    
7422 1
class HistoryUpdateDetails(FrozenClass):
7423
    '''
7424
    :ivar NodeId: 
7425
    :vartype NodeId: NodeId 
7426
    '''
7427 1
    def __init__(self):
7428
        self.NodeId = NodeId()
7429
        self._freeze()
7430
    
7431 1
    def to_binary(self):
7432
        packet = []
7433
        packet.append(self.NodeId.to_binary())
7434
        return b''.join(packet)
7435
        
7436 1
    @staticmethod
7437
    def from_binary(data):
7438
        obj = HistoryUpdateDetails()
7439
        obj.NodeId = NodeId.from_binary(data)
7440
        return obj
7441
    
7442 1
    def __str__(self):
7443
        return 'HistoryUpdateDetails(' + 'NodeId:' + str(self.NodeId) + ')'
7444
    
7445 1
    __repr__ = __str__
7446
    
7447 1
class UpdateDataDetails(FrozenClass):
7448
    '''
7449
    :ivar NodeId: 
7450
    :vartype NodeId: NodeId 
7451
    :ivar PerformInsertReplace: 
7452
    :vartype PerformInsertReplace: PerformUpdateType 
7453
    :ivar UpdateValues: 
7454
    :vartype UpdateValues: DataValue 
7455
    '''
7456 1
    def __init__(self):
7457
        self.NodeId = NodeId()
7458
        self.PerformInsertReplace = 0
7459
        self.UpdateValues = []
7460
        self._freeze()
7461
    
7462 1
    def to_binary(self):
7463
        packet = []
7464
        packet.append(self.NodeId.to_binary())
7465
        packet.append(pack_uatype('UInt32', self.PerformInsertReplace))
7466
        packet.append(struct.pack('<i', len(self.UpdateValues)))
7467
        for fieldname in self.UpdateValues:
7468
            packet.append(fieldname.to_binary())
7469
        return b''.join(packet)
7470
        
7471 1
    @staticmethod
7472
    def from_binary(data):
7473
        obj = UpdateDataDetails()
7474
        obj.NodeId = NodeId.from_binary(data)
7475
        obj.PerformInsertReplace = unpack_uatype('UInt32', data)
7476
        length = struct.unpack('<i', data.read(4))[0]
7477
        if length != -1:
7478
            for _ in range(0, length):
7479
                obj.UpdateValues.append(DataValue.from_binary(data))
7480
        return obj
7481
    
7482 1
    def __str__(self):
7483
        return 'UpdateDataDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7484
             'PerformInsertReplace:' + str(self.PerformInsertReplace) + ', '  + \
7485
             'UpdateValues:' + str(self.UpdateValues) + ')'
7486
    
7487 1
    __repr__ = __str__
7488
    
7489 1
class UpdateStructureDataDetails(FrozenClass):
7490
    '''
7491
    :ivar NodeId: 
7492
    :vartype NodeId: NodeId 
7493
    :ivar PerformInsertReplace: 
7494
    :vartype PerformInsertReplace: PerformUpdateType 
7495
    :ivar UpdateValues: 
7496
    :vartype UpdateValues: DataValue 
7497
    '''
7498 1
    def __init__(self):
7499
        self.NodeId = NodeId()
7500
        self.PerformInsertReplace = 0
7501
        self.UpdateValues = []
7502
        self._freeze()
7503
    
7504 1
    def to_binary(self):
7505
        packet = []
7506
        packet.append(self.NodeId.to_binary())
7507
        packet.append(pack_uatype('UInt32', self.PerformInsertReplace))
7508
        packet.append(struct.pack('<i', len(self.UpdateValues)))
7509
        for fieldname in self.UpdateValues:
7510
            packet.append(fieldname.to_binary())
7511
        return b''.join(packet)
7512
        
7513 1
    @staticmethod
7514
    def from_binary(data):
7515
        obj = UpdateStructureDataDetails()
7516
        obj.NodeId = NodeId.from_binary(data)
7517
        obj.PerformInsertReplace = unpack_uatype('UInt32', data)
7518
        length = struct.unpack('<i', data.read(4))[0]
7519
        if length != -1:
7520
            for _ in range(0, length):
7521
                obj.UpdateValues.append(DataValue.from_binary(data))
7522
        return obj
7523
    
7524 1
    def __str__(self):
7525
        return 'UpdateStructureDataDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7526
             'PerformInsertReplace:' + str(self.PerformInsertReplace) + ', '  + \
7527
             'UpdateValues:' + str(self.UpdateValues) + ')'
7528
    
7529 1
    __repr__ = __str__
7530
    
7531 1
class UpdateEventDetails(FrozenClass):
7532
    '''
7533
    :ivar NodeId: 
7534
    :vartype NodeId: NodeId 
7535
    :ivar PerformInsertReplace: 
7536
    :vartype PerformInsertReplace: PerformUpdateType 
7537
    :ivar Filter: 
7538
    :vartype Filter: EventFilter 
7539
    :ivar EventData: 
7540
    :vartype EventData: HistoryEventFieldList 
7541
    '''
7542 1
    def __init__(self):
7543
        self.NodeId = NodeId()
7544
        self.PerformInsertReplace = 0
7545
        self.Filter = EventFilter()
7546
        self.EventData = []
7547
        self._freeze()
7548
    
7549 1
    def to_binary(self):
7550
        packet = []
7551
        packet.append(self.NodeId.to_binary())
7552
        packet.append(pack_uatype('UInt32', self.PerformInsertReplace))
7553
        packet.append(self.Filter.to_binary())
7554
        packet.append(struct.pack('<i', len(self.EventData)))
7555
        for fieldname in self.EventData:
7556
            packet.append(fieldname.to_binary())
7557
        return b''.join(packet)
7558
        
7559 1
    @staticmethod
7560
    def from_binary(data):
7561
        obj = UpdateEventDetails()
7562
        obj.NodeId = NodeId.from_binary(data)
7563
        obj.PerformInsertReplace = unpack_uatype('UInt32', data)
7564
        obj.Filter = EventFilter.from_binary(data)
7565
        length = struct.unpack('<i', data.read(4))[0]
7566
        if length != -1:
7567
            for _ in range(0, length):
7568
                obj.EventData.append(HistoryEventFieldList.from_binary(data))
7569
        return obj
7570
    
7571 1
    def __str__(self):
7572
        return 'UpdateEventDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7573
             'PerformInsertReplace:' + str(self.PerformInsertReplace) + ', '  + \
7574
             'Filter:' + str(self.Filter) + ', '  + \
7575
             'EventData:' + str(self.EventData) + ')'
7576
    
7577 1
    __repr__ = __str__
7578
    
7579 1
class DeleteRawModifiedDetails(FrozenClass):
7580
    '''
7581
    :ivar NodeId: 
7582
    :vartype NodeId: NodeId 
7583
    :ivar IsDeleteModified: 
7584
    :vartype IsDeleteModified: Boolean 
7585
    :ivar StartTime: 
7586
    :vartype StartTime: DateTime 
7587
    :ivar EndTime: 
7588
    :vartype EndTime: DateTime 
7589
    '''
7590 1
    def __init__(self):
7591
        self.NodeId = NodeId()
7592
        self.IsDeleteModified = True
7593
        self.StartTime = datetime.now()
7594
        self.EndTime = datetime.now()
7595
        self._freeze()
7596
    
7597 1
    def to_binary(self):
7598
        packet = []
7599
        packet.append(self.NodeId.to_binary())
7600
        packet.append(pack_uatype('Boolean', self.IsDeleteModified))
7601
        packet.append(pack_uatype('DateTime', self.StartTime))
7602
        packet.append(pack_uatype('DateTime', self.EndTime))
7603
        return b''.join(packet)
7604
        
7605 1
    @staticmethod
7606
    def from_binary(data):
7607
        obj = DeleteRawModifiedDetails()
7608
        obj.NodeId = NodeId.from_binary(data)
7609
        obj.IsDeleteModified = unpack_uatype('Boolean', data)
7610
        obj.StartTime = unpack_uatype('DateTime', data)
7611
        obj.EndTime = unpack_uatype('DateTime', data)
7612
        return obj
7613
    
7614 1
    def __str__(self):
7615
        return 'DeleteRawModifiedDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7616
             'IsDeleteModified:' + str(self.IsDeleteModified) + ', '  + \
7617
             'StartTime:' + str(self.StartTime) + ', '  + \
7618
             'EndTime:' + str(self.EndTime) + ')'
7619
    
7620 1
    __repr__ = __str__
7621
    
7622 1
class DeleteAtTimeDetails(FrozenClass):
7623
    '''
7624
    :ivar NodeId: 
7625
    :vartype NodeId: NodeId 
7626
    :ivar ReqTimes: 
7627
    :vartype ReqTimes: DateTime 
7628
    '''
7629 1
    def __init__(self):
7630
        self.NodeId = NodeId()
7631
        self.ReqTimes = []
7632
        self._freeze()
7633
    
7634 1
    def to_binary(self):
7635
        packet = []
7636
        packet.append(self.NodeId.to_binary())
7637
        packet.append(struct.pack('<i', len(self.ReqTimes)))
7638
        for fieldname in self.ReqTimes:
7639
            packet.append(pack_uatype('DateTime', fieldname))
7640
        return b''.join(packet)
7641
        
7642 1
    @staticmethod
7643
    def from_binary(data):
7644
        obj = DeleteAtTimeDetails()
7645
        obj.NodeId = NodeId.from_binary(data)
7646
        obj.ReqTimes = unpack_uatype_array('DateTime', data)
7647
        return obj
7648
    
7649 1
    def __str__(self):
7650
        return 'DeleteAtTimeDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7651
             'ReqTimes:' + str(self.ReqTimes) + ')'
7652
    
7653 1
    __repr__ = __str__
7654
    
7655 1
class DeleteEventDetails(FrozenClass):
7656
    '''
7657
    :ivar NodeId: 
7658
    :vartype NodeId: NodeId 
7659
    :ivar EventIds: 
7660
    :vartype EventIds: ByteString 
7661
    '''
7662 1
    def __init__(self):
7663
        self.NodeId = NodeId()
7664
        self.EventIds = []
7665
        self._freeze()
7666
    
7667 1
    def to_binary(self):
7668
        packet = []
7669
        packet.append(self.NodeId.to_binary())
7670
        packet.append(struct.pack('<i', len(self.EventIds)))
7671
        for fieldname in self.EventIds:
7672
            packet.append(pack_uatype('ByteString', fieldname))
7673
        return b''.join(packet)
7674
        
7675 1
    @staticmethod
7676
    def from_binary(data):
7677
        obj = DeleteEventDetails()
7678
        obj.NodeId = NodeId.from_binary(data)
7679
        obj.EventIds = unpack_uatype_array('ByteString', data)
7680
        return obj
7681
    
7682 1
    def __str__(self):
7683
        return 'DeleteEventDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7684
             'EventIds:' + str(self.EventIds) + ')'
7685
    
7686 1
    __repr__ = __str__
7687
    
7688 1
class HistoryUpdateResult(FrozenClass):
7689
    '''
7690
    :ivar StatusCode: 
7691
    :vartype StatusCode: StatusCode 
7692
    :ivar OperationResults: 
7693
    :vartype OperationResults: StatusCode 
7694
    :ivar DiagnosticInfos: 
7695
    :vartype DiagnosticInfos: DiagnosticInfo 
7696
    '''
7697 1
    def __init__(self):
7698
        self.StatusCode = StatusCode()
7699
        self.OperationResults = []
7700
        self.DiagnosticInfos = []
7701
        self._freeze()
7702
    
7703 1
    def to_binary(self):
7704
        packet = []
7705
        packet.append(self.StatusCode.to_binary())
7706
        packet.append(struct.pack('<i', len(self.OperationResults)))
7707
        for fieldname in self.OperationResults:
7708
            packet.append(fieldname.to_binary())
7709
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
7710
        for fieldname in self.DiagnosticInfos:
7711
            packet.append(fieldname.to_binary())
7712
        return b''.join(packet)
7713
        
7714 1
    @staticmethod
7715
    def from_binary(data):
7716
        obj = HistoryUpdateResult()
7717
        obj.StatusCode = StatusCode.from_binary(data)
7718
        length = struct.unpack('<i', data.read(4))[0]
7719
        if length != -1:
7720
            for _ in range(0, length):
7721
                obj.OperationResults.append(StatusCode.from_binary(data))
7722
        length = struct.unpack('<i', data.read(4))[0]
7723
        if length != -1:
7724
            for _ in range(0, length):
7725
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7726
        return obj
7727
    
7728 1
    def __str__(self):
7729
        return 'HistoryUpdateResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
7730
             'OperationResults:' + str(self.OperationResults) + ', '  + \
7731
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
7732
    
7733 1
    __repr__ = __str__
7734
    
7735 1
class HistoryUpdateEventResult(FrozenClass):
7736
    '''
7737
    :ivar StatusCode: 
7738
    :vartype StatusCode: StatusCode 
7739
    :ivar EventFilterResult: 
7740
    :vartype EventFilterResult: EventFilterResult 
7741
    '''
7742 1
    def __init__(self):
7743
        self.StatusCode = StatusCode()
7744
        self.EventFilterResult = EventFilterResult()
7745
        self._freeze()
7746
    
7747 1
    def to_binary(self):
7748
        packet = []
7749
        packet.append(self.StatusCode.to_binary())
7750
        packet.append(self.EventFilterResult.to_binary())
7751
        return b''.join(packet)
7752
        
7753 1
    @staticmethod
7754
    def from_binary(data):
7755
        obj = HistoryUpdateEventResult()
7756
        obj.StatusCode = StatusCode.from_binary(data)
7757
        obj.EventFilterResult = EventFilterResult.from_binary(data)
7758
        return obj
7759
    
7760 1
    def __str__(self):
7761
        return 'HistoryUpdateEventResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
7762
             'EventFilterResult:' + str(self.EventFilterResult) + ')'
7763
    
7764 1
    __repr__ = __str__
7765
    
7766 1
class HistoryUpdateParameters(FrozenClass):
7767
    '''
7768
    :ivar HistoryUpdateDetails: 
7769
    :vartype HistoryUpdateDetails: ExtensionObject 
7770
    '''
7771 1
    def __init__(self):
7772
        self.HistoryUpdateDetails = []
7773
        self._freeze()
7774
    
7775 1
    def to_binary(self):
7776
        packet = []
7777
        packet.append(struct.pack('<i', len(self.HistoryUpdateDetails)))
7778
        for fieldname in self.HistoryUpdateDetails:
7779
            packet.append(fieldname.to_binary())
7780
        return b''.join(packet)
7781
        
7782 1
    @staticmethod
7783
    def from_binary(data):
7784
        obj = HistoryUpdateParameters()
7785
        length = struct.unpack('<i', data.read(4))[0]
7786
        if length != -1:
7787
            for _ in range(0, length):
7788
                obj.HistoryUpdateDetails.append(ExtensionObject.from_binary(data))
7789
        return obj
7790
    
7791 1
    def __str__(self):
7792
        return 'HistoryUpdateParameters(' + 'HistoryUpdateDetails:' + str(self.HistoryUpdateDetails) + ')'
7793
    
7794 1
    __repr__ = __str__
7795
    
7796 1
class HistoryUpdateRequest(FrozenClass):
7797
    '''
7798
    :ivar TypeId: 
7799
    :vartype TypeId: NodeId 
7800
    :ivar RequestHeader: 
7801
    :vartype RequestHeader: RequestHeader 
7802
    :ivar Parameters: 
7803
    :vartype Parameters: HistoryUpdateParameters 
7804
    '''
7805 1
    def __init__(self):
7806
        self.TypeId = FourByteNodeId(ObjectIds.HistoryUpdateRequest_Encoding_DefaultBinary)
7807
        self.RequestHeader = RequestHeader()
7808
        self.Parameters = HistoryUpdateParameters()
7809
        self._freeze()
7810
    
7811 1
    def to_binary(self):
7812
        packet = []
7813
        packet.append(self.TypeId.to_binary())
7814
        packet.append(self.RequestHeader.to_binary())
7815
        packet.append(self.Parameters.to_binary())
7816
        return b''.join(packet)
7817
        
7818 1
    @staticmethod
7819
    def from_binary(data):
7820
        obj = HistoryUpdateRequest()
7821
        obj.TypeId = NodeId.from_binary(data)
7822
        obj.RequestHeader = RequestHeader.from_binary(data)
7823
        obj.Parameters = HistoryUpdateParameters.from_binary(data)
7824
        return obj
7825
    
7826 1
    def __str__(self):
7827
        return 'HistoryUpdateRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7828
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
7829
             'Parameters:' + str(self.Parameters) + ')'
7830
    
7831 1
    __repr__ = __str__
7832
    
7833 1
class HistoryUpdateResponse(FrozenClass):
7834
    '''
7835
    :ivar TypeId: 
7836
    :vartype TypeId: NodeId 
7837
    :ivar ResponseHeader: 
7838
    :vartype ResponseHeader: ResponseHeader 
7839
    :ivar Results: 
7840
    :vartype Results: HistoryUpdateResult 
7841
    :ivar DiagnosticInfos: 
7842
    :vartype DiagnosticInfos: DiagnosticInfo 
7843
    '''
7844 1
    def __init__(self):
7845
        self.TypeId = FourByteNodeId(ObjectIds.HistoryUpdateResponse_Encoding_DefaultBinary)
7846
        self.ResponseHeader = ResponseHeader()
7847
        self.Results = []
7848
        self.DiagnosticInfos = []
7849
        self._freeze()
7850
    
7851 1
    def to_binary(self):
7852
        packet = []
7853
        packet.append(self.TypeId.to_binary())
7854
        packet.append(self.ResponseHeader.to_binary())
7855
        packet.append(struct.pack('<i', len(self.Results)))
7856
        for fieldname in self.Results:
7857
            packet.append(fieldname.to_binary())
7858
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
7859
        for fieldname in self.DiagnosticInfos:
7860
            packet.append(fieldname.to_binary())
7861
        return b''.join(packet)
7862
        
7863 1
    @staticmethod
7864
    def from_binary(data):
7865
        obj = HistoryUpdateResponse()
7866
        obj.TypeId = NodeId.from_binary(data)
7867
        obj.ResponseHeader = ResponseHeader.from_binary(data)
7868
        length = struct.unpack('<i', data.read(4))[0]
7869
        if length != -1:
7870
            for _ in range(0, length):
7871
                obj.Results.append(HistoryUpdateResult.from_binary(data))
7872
        length = struct.unpack('<i', data.read(4))[0]
7873
        if length != -1:
7874
            for _ in range(0, length):
7875
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7876
        return obj
7877
    
7878 1
    def __str__(self):
7879
        return 'HistoryUpdateResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7880
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
7881
             'Results:' + str(self.Results) + ', '  + \
7882
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
7883
    
7884 1
    __repr__ = __str__
7885
    
7886 1
class CallMethodRequest(FrozenClass):
7887
    '''
7888
    :ivar ObjectId: 
7889
    :vartype ObjectId: NodeId 
7890
    :ivar MethodId: 
7891
    :vartype MethodId: NodeId 
7892
    :ivar InputArguments: 
7893
    :vartype InputArguments: Variant 
7894
    '''
7895 1
    def __init__(self):
7896 1
        self.ObjectId = NodeId()
7897 1
        self.MethodId = NodeId()
7898 1
        self.InputArguments = []
7899 1
        self._freeze()
7900
    
7901 1
    def to_binary(self):
7902 1
        packet = []
7903 1
        packet.append(self.ObjectId.to_binary())
7904 1
        packet.append(self.MethodId.to_binary())
7905 1
        packet.append(struct.pack('<i', len(self.InputArguments)))
7906 1
        for fieldname in self.InputArguments:
7907 1
            packet.append(fieldname.to_binary())
7908 1
        return b''.join(packet)
7909
        
7910 1
    @staticmethod
7911
    def from_binary(data):
7912 1
        obj = CallMethodRequest()
7913 1
        obj.ObjectId = NodeId.from_binary(data)
7914 1
        obj.MethodId = NodeId.from_binary(data)
7915 1
        length = struct.unpack('<i', data.read(4))[0]
7916 1
        if length != -1:
7917 1
            for _ in range(0, length):
7918 1
                obj.InputArguments.append(Variant.from_binary(data))
7919 1
        return obj
7920
    
7921 1
    def __str__(self):
7922 1
        return 'CallMethodRequest(' + 'ObjectId:' + str(self.ObjectId) + ', '  + \
7923
             'MethodId:' + str(self.MethodId) + ', '  + \
7924
             'InputArguments:' + str(self.InputArguments) + ')'
7925
    
7926 1
    __repr__ = __str__
7927
    
7928 1
class CallMethodResult(FrozenClass):
7929
    '''
7930
    :ivar StatusCode: 
7931
    :vartype StatusCode: StatusCode 
7932
    :ivar InputArgumentResults: 
7933
    :vartype InputArgumentResults: StatusCode 
7934
    :ivar InputArgumentDiagnosticInfos: 
7935
    :vartype InputArgumentDiagnosticInfos: DiagnosticInfo 
7936
    :ivar OutputArguments: 
7937
    :vartype OutputArguments: Variant 
7938
    '''
7939 1
    def __init__(self):
7940 1
        self.StatusCode = StatusCode()
7941 1
        self.InputArgumentResults = []
7942 1
        self.InputArgumentDiagnosticInfos = []
7943 1
        self.OutputArguments = []
7944 1
        self._freeze()
7945
    
7946 1
    def to_binary(self):
7947 1
        packet = []
7948 1
        packet.append(self.StatusCode.to_binary())
7949 1
        packet.append(struct.pack('<i', len(self.InputArgumentResults)))
7950 1
        for fieldname in self.InputArgumentResults:
7951 1
            packet.append(fieldname.to_binary())
7952 1
        packet.append(struct.pack('<i', len(self.InputArgumentDiagnosticInfos)))
7953 1
        for fieldname in self.InputArgumentDiagnosticInfos:
7954
            packet.append(fieldname.to_binary())
7955 1
        packet.append(struct.pack('<i', len(self.OutputArguments)))
7956 1
        for fieldname in self.OutputArguments:
7957 1
            packet.append(fieldname.to_binary())
7958 1
        return b''.join(packet)
7959
        
7960 1
    @staticmethod
7961
    def from_binary(data):
7962 1
        obj = CallMethodResult()
7963 1
        obj.StatusCode = StatusCode.from_binary(data)
7964 1
        length = struct.unpack('<i', data.read(4))[0]
7965 1
        if length != -1:
7966 1
            for _ in range(0, length):
7967 1
                obj.InputArgumentResults.append(StatusCode.from_binary(data))
7968 1
        length = struct.unpack('<i', data.read(4))[0]
7969 1
        if length != -1:
7970 1
            for _ in range(0, length):
7971
                obj.InputArgumentDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7972 1
        length = struct.unpack('<i', data.read(4))[0]
7973 1
        if length != -1:
7974 1
            for _ in range(0, length):
7975 1
                obj.OutputArguments.append(Variant.from_binary(data))
7976 1
        return obj
7977
    
7978 1
    def __str__(self):
7979
        return 'CallMethodResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
7980
             'InputArgumentResults:' + str(self.InputArgumentResults) + ', '  + \
7981
             'InputArgumentDiagnosticInfos:' + str(self.InputArgumentDiagnosticInfos) + ', '  + \
7982
             'OutputArguments:' + str(self.OutputArguments) + ')'
7983
    
7984 1
    __repr__ = __str__
7985
    
7986 1
class CallParameters(FrozenClass):
7987
    '''
7988
    :ivar MethodsToCall: 
7989
    :vartype MethodsToCall: CallMethodRequest 
7990
    '''
7991 1
    def __init__(self):
7992 1
        self.MethodsToCall = []
7993 1
        self._freeze()
7994
    
7995 1
    def to_binary(self):
7996 1
        packet = []
7997 1
        packet.append(struct.pack('<i', len(self.MethodsToCall)))
7998 1
        for fieldname in self.MethodsToCall:
7999 1
            packet.append(fieldname.to_binary())
8000 1
        return b''.join(packet)
8001
        
8002 1
    @staticmethod
8003
    def from_binary(data):
8004 1
        obj = CallParameters()
8005 1
        length = struct.unpack('<i', data.read(4))[0]
8006 1
        if length != -1:
8007 1
            for _ in range(0, length):
8008 1
                obj.MethodsToCall.append(CallMethodRequest.from_binary(data))
8009 1
        return obj
8010
    
8011 1
    def __str__(self):
8012
        return 'CallParameters(' + 'MethodsToCall:' + str(self.MethodsToCall) + ')'
8013
    
8014 1
    __repr__ = __str__
8015
    
8016 1
class CallRequest(FrozenClass):
8017
    '''
8018
    :ivar TypeId: 
8019
    :vartype TypeId: NodeId 
8020
    :ivar RequestHeader: 
8021
    :vartype RequestHeader: RequestHeader 
8022
    :ivar Parameters: 
8023
    :vartype Parameters: CallParameters 
8024
    '''
8025 1
    def __init__(self):
8026 1
        self.TypeId = FourByteNodeId(ObjectIds.CallRequest_Encoding_DefaultBinary)
8027 1
        self.RequestHeader = RequestHeader()
8028 1
        self.Parameters = CallParameters()
8029 1
        self._freeze()
8030
    
8031 1
    def to_binary(self):
8032 1
        packet = []
8033 1
        packet.append(self.TypeId.to_binary())
8034 1
        packet.append(self.RequestHeader.to_binary())
8035 1
        packet.append(self.Parameters.to_binary())
8036 1
        return b''.join(packet)
8037
        
8038 1
    @staticmethod
8039
    def from_binary(data):
8040
        obj = CallRequest()
8041
        obj.TypeId = NodeId.from_binary(data)
8042
        obj.RequestHeader = RequestHeader.from_binary(data)
8043
        obj.Parameters = CallParameters.from_binary(data)
8044
        return obj
8045
    
8046 1
    def __str__(self):
8047
        return 'CallRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8048
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
8049
             'Parameters:' + str(self.Parameters) + ')'
8050
    
8051 1
    __repr__ = __str__
8052
    
8053 1
class CallResponse(FrozenClass):
8054
    '''
8055
    :ivar TypeId: 
8056
    :vartype TypeId: NodeId 
8057
    :ivar ResponseHeader: 
8058
    :vartype ResponseHeader: ResponseHeader 
8059
    :ivar Results: 
8060
    :vartype Results: CallMethodResult 
8061
    :ivar DiagnosticInfos: 
8062
    :vartype DiagnosticInfos: DiagnosticInfo 
8063
    '''
8064 1
    def __init__(self):
8065 1
        self.TypeId = FourByteNodeId(ObjectIds.CallResponse_Encoding_DefaultBinary)
8066 1
        self.ResponseHeader = ResponseHeader()
8067 1
        self.Results = []
8068 1
        self.DiagnosticInfos = []
8069 1
        self._freeze()
8070
    
8071 1
    def to_binary(self):
8072 1
        packet = []
8073 1
        packet.append(self.TypeId.to_binary())
8074 1
        packet.append(self.ResponseHeader.to_binary())
8075 1
        packet.append(struct.pack('<i', len(self.Results)))
8076 1
        for fieldname in self.Results:
8077 1
            packet.append(fieldname.to_binary())
8078 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
8079 1
        for fieldname in self.DiagnosticInfos:
8080
            packet.append(fieldname.to_binary())
8081 1
        return b''.join(packet)
8082
        
8083 1
    @staticmethod
8084
    def from_binary(data):
8085 1
        obj = CallResponse()
8086 1
        obj.TypeId = NodeId.from_binary(data)
8087 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
8088 1
        length = struct.unpack('<i', data.read(4))[0]
8089 1
        if length != -1:
8090 1
            for _ in range(0, length):
8091 1
                obj.Results.append(CallMethodResult.from_binary(data))
8092 1
        length = struct.unpack('<i', data.read(4))[0]
8093 1
        if length != -1:
8094 1
            for _ in range(0, length):
8095
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8096 1
        return obj
8097
    
8098 1
    def __str__(self):
8099
        return 'CallResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8100
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
8101
             'Results:' + str(self.Results) + ', '  + \
8102
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
8103
    
8104 1
    __repr__ = __str__
8105
    
8106 1
class MonitoringFilter(FrozenClass):
8107
    '''
8108
    :ivar TypeId: 
8109
    :vartype TypeId: NodeId 
8110
    :ivar Encoding: 
8111
    :vartype Encoding: UInt8 
8112
    :ivar Body: 
8113
    :vartype Body: ByteString 
8114
    '''
8115 1
    def __init__(self):
8116
        self.TypeId = FourByteNodeId(ObjectIds.MonitoringFilter_Encoding_DefaultBinary)
8117
        self.Encoding = 0
8118
        self.Body = b''
8119
        self._freeze()
8120
    
8121 1
    def to_binary(self):
8122
        packet = []
8123
        if self.Body: self.Encoding |= (1 << 0)
8124
        packet.append(self.TypeId.to_binary())
8125
        packet.append(pack_uatype('UInt8', self.Encoding))
8126
        if self.Body: 
8127
            packet.append(pack_uatype('ByteString', self.Body))
8128
        return b''.join(packet)
8129
        
8130 1
    @staticmethod
8131
    def from_binary(data):
8132
        obj = MonitoringFilter()
8133
        obj.TypeId = NodeId.from_binary(data)
8134
        obj.Encoding = unpack_uatype('UInt8', data)
8135
        if obj.Encoding & (1 << 0):
8136
            obj.Body = unpack_uatype('ByteString', data)
8137
        return obj
8138
    
8139 1
    def __str__(self):
8140
        return 'MonitoringFilter(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8141
             'Encoding:' + str(self.Encoding) + ', '  + \
8142
             'Body:' + str(self.Body) + ')'
8143
    
8144 1
    __repr__ = __str__
8145
    
8146 1
class DataChangeFilter(FrozenClass):
8147
    '''
8148
    :ivar TypeId: 
8149
    :vartype TypeId: NodeId 
8150
    :ivar Encoding: 
8151
    :vartype Encoding: UInt8 
8152
    :ivar BodyLength: 
8153
    :vartype BodyLength: Int32 
8154
    :ivar Trigger: 
8155
    :vartype Trigger: DataChangeTrigger 
8156
    :ivar DeadbandType: 
8157
    :vartype DeadbandType: UInt32 
8158
    :ivar DeadbandValue: 
8159
    :vartype DeadbandValue: Double 
8160
    '''
8161 1
    def __init__(self):
8162
        self.TypeId = FourByteNodeId(ObjectIds.DataChangeFilter_Encoding_DefaultBinary)
8163
        self.Encoding = 1
8164
        self.BodyLength = 0
8165
        self.Trigger = 0
8166
        self.DeadbandType = 0
8167
        self.DeadbandValue = 0
8168
        self._freeze()
8169
    
8170 1
    def to_binary(self):
8171
        packet = []
8172
        body = []
8173
        packet.append(self.TypeId.to_binary())
8174
        packet.append(pack_uatype('UInt8', self.Encoding))
8175
        body.append(pack_uatype('UInt32', self.Trigger))
8176
        body.append(pack_uatype('UInt32', self.DeadbandType))
8177
        body.append(pack_uatype('Double', self.DeadbandValue))
8178
        body = b''.join(body)
8179
        packet.append(struct.pack('<i', len(body)))
8180
        packet.append(body)
8181
        return b''.join(packet)
8182
        
8183 1
    @staticmethod
8184
    def from_binary(data):
8185
        obj = DataChangeFilter()
8186
        obj.TypeId = NodeId.from_binary(data)
8187
        obj.Encoding = unpack_uatype('UInt8', data)
8188
        obj.BodyLength = unpack_uatype('Int32', data)
8189
        obj.Trigger = unpack_uatype('UInt32', data)
8190
        obj.DeadbandType = unpack_uatype('UInt32', data)
8191
        obj.DeadbandValue = unpack_uatype('Double', data)
8192
        return obj
8193
    
8194 1
    def __str__(self):
8195
        return 'DataChangeFilter(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8196
             'Encoding:' + str(self.Encoding) + ', '  + \
8197
             'BodyLength:' + str(self.BodyLength) + ', '  + \
8198
             'Trigger:' + str(self.Trigger) + ', '  + \
8199
             'DeadbandType:' + str(self.DeadbandType) + ', '  + \
8200
             'DeadbandValue:' + str(self.DeadbandValue) + ')'
8201
    
8202 1
    __repr__ = __str__
8203
    
8204 1
class EventFilter(FrozenClass):
8205
    '''
8206
    :ivar TypeId: 
8207
    :vartype TypeId: NodeId 
8208
    :ivar Encoding: 
8209
    :vartype Encoding: UInt8 
8210
    :ivar BodyLength: 
8211
    :vartype BodyLength: Int32 
8212
    :ivar SelectClauses: 
8213
    :vartype SelectClauses: SimpleAttributeOperand 
8214
    :ivar WhereClause: 
8215
    :vartype WhereClause: ContentFilter 
8216
    '''
8217 1
    def __init__(self):
8218 1
        self.TypeId = FourByteNodeId(ObjectIds.EventFilter_Encoding_DefaultBinary)
8219 1
        self.Encoding = 1
8220 1
        self.BodyLength = 0
8221 1
        self.SelectClauses = []
8222 1
        self.WhereClause = ContentFilter()
8223 1
        self._freeze()
8224
    
8225 1
    def to_binary(self):
8226 1
        packet = []
8227 1
        body = []
8228 1
        packet.append(self.TypeId.to_binary())
8229 1
        packet.append(pack_uatype('UInt8', self.Encoding))
8230 1
        body.append(struct.pack('<i', len(self.SelectClauses)))
8231 1
        for fieldname in self.SelectClauses:
8232 1
            body.append(fieldname.to_binary())
8233 1
        body.append(self.WhereClause.to_binary())
8234 1
        body = b''.join(body)
8235 1
        packet.append(struct.pack('<i', len(body)))
8236 1
        packet.append(body)
8237 1
        return b''.join(packet)
8238
        
8239 1
    @staticmethod
8240
    def from_binary(data):
8241 1
        obj = EventFilter()
8242 1
        obj.TypeId = NodeId.from_binary(data)
8243 1
        obj.Encoding = unpack_uatype('UInt8', data)
8244 1
        obj.BodyLength = unpack_uatype('Int32', data)
8245 1
        length = struct.unpack('<i', data.read(4))[0]
8246 1
        if length != -1:
8247 1
            for _ in range(0, length):
8248 1
                obj.SelectClauses.append(SimpleAttributeOperand.from_binary(data))
8249 1
        obj.WhereClause = ContentFilter.from_binary(data)
8250 1
        return obj
8251
    
8252 1
    def __str__(self):
8253
        return 'EventFilter(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8254
             'Encoding:' + str(self.Encoding) + ', '  + \
8255
             'BodyLength:' + str(self.BodyLength) + ', '  + \
8256
             'SelectClauses:' + str(self.SelectClauses) + ', '  + \
8257
             'WhereClause:' + str(self.WhereClause) + ')'
8258
    
8259 1
    __repr__ = __str__
8260
    
8261 1
class AggregateConfiguration(FrozenClass):
8262
    '''
8263
    :ivar UseServerCapabilitiesDefaults: 
8264
    :vartype UseServerCapabilitiesDefaults: Boolean 
8265
    :ivar TreatUncertainAsBad: 
8266
    :vartype TreatUncertainAsBad: Boolean 
8267
    :ivar PercentDataBad: 
8268
    :vartype PercentDataBad: Byte 
8269
    :ivar PercentDataGood: 
8270
    :vartype PercentDataGood: Byte 
8271
    :ivar UseSlopedExtrapolation: 
8272
    :vartype UseSlopedExtrapolation: Boolean 
8273
    '''
8274 1
    def __init__(self):
8275
        self.UseServerCapabilitiesDefaults = True
8276
        self.TreatUncertainAsBad = True
8277
        self.PercentDataBad = 0
8278
        self.PercentDataGood = 0
8279
        self.UseSlopedExtrapolation = True
8280
        self._freeze()
8281
    
8282 1
    def to_binary(self):
8283
        packet = []
8284
        packet.append(pack_uatype('Boolean', self.UseServerCapabilitiesDefaults))
8285
        packet.append(pack_uatype('Boolean', self.TreatUncertainAsBad))
8286
        packet.append(pack_uatype('Byte', self.PercentDataBad))
8287
        packet.append(pack_uatype('Byte', self.PercentDataGood))
8288
        packet.append(pack_uatype('Boolean', self.UseSlopedExtrapolation))
8289
        return b''.join(packet)
8290
        
8291 1
    @staticmethod
8292
    def from_binary(data):
8293
        obj = AggregateConfiguration()
8294
        obj.UseServerCapabilitiesDefaults = unpack_uatype('Boolean', data)
8295
        obj.TreatUncertainAsBad = unpack_uatype('Boolean', data)
8296
        obj.PercentDataBad = unpack_uatype('Byte', data)
8297
        obj.PercentDataGood = unpack_uatype('Byte', data)
8298
        obj.UseSlopedExtrapolation = unpack_uatype('Boolean', data)
8299
        return obj
8300
    
8301 1
    def __str__(self):
8302
        return 'AggregateConfiguration(' + 'UseServerCapabilitiesDefaults:' + str(self.UseServerCapabilitiesDefaults) + ', '  + \
8303
             'TreatUncertainAsBad:' + str(self.TreatUncertainAsBad) + ', '  + \
8304
             'PercentDataBad:' + str(self.PercentDataBad) + ', '  + \
8305
             'PercentDataGood:' + str(self.PercentDataGood) + ', '  + \
8306
             'UseSlopedExtrapolation:' + str(self.UseSlopedExtrapolation) + ')'
8307
    
8308 1
    __repr__ = __str__
8309
    
8310 1
class AggregateFilter(FrozenClass):
8311
    '''
8312
    :ivar TypeId: 
8313
    :vartype TypeId: NodeId 
8314
    :ivar Encoding: 
8315
    :vartype Encoding: UInt8 
8316
    :ivar BodyLength: 
8317
    :vartype BodyLength: Int32 
8318
    :ivar StartTime: 
8319
    :vartype StartTime: DateTime 
8320
    :ivar AggregateType: 
8321
    :vartype AggregateType: NodeId 
8322
    :ivar ProcessingInterval: 
8323
    :vartype ProcessingInterval: Double 
8324
    :ivar AggregateConfiguration: 
8325
    :vartype AggregateConfiguration: AggregateConfiguration 
8326
    '''
8327 1
    def __init__(self):
8328
        self.TypeId = FourByteNodeId(ObjectIds.AggregateFilter_Encoding_DefaultBinary)
8329
        self.Encoding = 1
8330
        self.BodyLength = 0
8331
        self.StartTime = datetime.now()
8332
        self.AggregateType = NodeId()
8333
        self.ProcessingInterval = 0
8334
        self.AggregateConfiguration = AggregateConfiguration()
8335
        self._freeze()
8336
    
8337 1
    def to_binary(self):
8338
        packet = []
8339
        body = []
8340
        packet.append(self.TypeId.to_binary())
8341
        packet.append(pack_uatype('UInt8', self.Encoding))
8342
        body.append(pack_uatype('DateTime', self.StartTime))
8343
        body.append(self.AggregateType.to_binary())
8344
        body.append(pack_uatype('Double', self.ProcessingInterval))
8345
        body.append(self.AggregateConfiguration.to_binary())
8346
        body = b''.join(body)
8347
        packet.append(struct.pack('<i', len(body)))
8348
        packet.append(body)
8349
        return b''.join(packet)
8350
        
8351 1
    @staticmethod
8352
    def from_binary(data):
8353
        obj = AggregateFilter()
8354
        obj.TypeId = NodeId.from_binary(data)
8355
        obj.Encoding = unpack_uatype('UInt8', data)
8356
        obj.BodyLength = unpack_uatype('Int32', data)
8357
        obj.StartTime = unpack_uatype('DateTime', data)
8358
        obj.AggregateType = NodeId.from_binary(data)
8359
        obj.ProcessingInterval = unpack_uatype('Double', data)
8360
        obj.AggregateConfiguration = AggregateConfiguration.from_binary(data)
8361
        return obj
8362
    
8363 1
    def __str__(self):
8364
        return 'AggregateFilter(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8365
             'Encoding:' + str(self.Encoding) + ', '  + \
8366
             'BodyLength:' + str(self.BodyLength) + ', '  + \
8367
             'StartTime:' + str(self.StartTime) + ', '  + \
8368
             'AggregateType:' + str(self.AggregateType) + ', '  + \
8369
             'ProcessingInterval:' + str(self.ProcessingInterval) + ', '  + \
8370
             'AggregateConfiguration:' + str(self.AggregateConfiguration) + ')'
8371
    
8372 1
    __repr__ = __str__
8373
    
8374 1
class MonitoringFilterResult(FrozenClass):
8375
    '''
8376
    '''
8377 1
    def __init__(self):
8378
        self._freeze()
8379
    
8380 1
    def to_binary(self):
8381
        packet = []
8382
        return b''.join(packet)
8383
        
8384 1
    @staticmethod
8385
    def from_binary(data):
8386
        obj = MonitoringFilterResult()
8387
        return obj
8388
    
8389 1
    def __str__(self):
8390
        return 'MonitoringFilterResult(' +  + ')'
8391
    
8392 1
    __repr__ = __str__
8393
    
8394 1
class EventFilterResult(FrozenClass):
8395
    '''
8396
    :ivar SelectClauseResults: 
8397
    :vartype SelectClauseResults: StatusCode 
8398
    :ivar SelectClauseDiagnosticInfos: 
8399
    :vartype SelectClauseDiagnosticInfos: DiagnosticInfo 
8400
    :ivar WhereClauseResult: 
8401
    :vartype WhereClauseResult: ContentFilterResult 
8402
    '''
8403 1
    def __init__(self):
8404
        self.SelectClauseResults = []
8405
        self.SelectClauseDiagnosticInfos = []
8406
        self.WhereClauseResult = ContentFilterResult()
8407
        self._freeze()
8408
    
8409 1
    def to_binary(self):
8410
        packet = []
8411
        packet.append(struct.pack('<i', len(self.SelectClauseResults)))
8412
        for fieldname in self.SelectClauseResults:
8413
            packet.append(fieldname.to_binary())
8414
        packet.append(struct.pack('<i', len(self.SelectClauseDiagnosticInfos)))
8415
        for fieldname in self.SelectClauseDiagnosticInfos:
8416
            packet.append(fieldname.to_binary())
8417
        packet.append(self.WhereClauseResult.to_binary())
8418
        return b''.join(packet)
8419
        
8420 1
    @staticmethod
8421
    def from_binary(data):
8422
        obj = EventFilterResult()
8423
        length = struct.unpack('<i', data.read(4))[0]
8424
        if length != -1:
8425
            for _ in range(0, length):
8426
                obj.SelectClauseResults.append(StatusCode.from_binary(data))
8427
        length = struct.unpack('<i', data.read(4))[0]
8428
        if length != -1:
8429
            for _ in range(0, length):
8430
                obj.SelectClauseDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8431
        obj.WhereClauseResult = ContentFilterResult.from_binary(data)
8432
        return obj
8433
    
8434 1
    def __str__(self):
8435
        return 'EventFilterResult(' + 'SelectClauseResults:' + str(self.SelectClauseResults) + ', '  + \
8436
             'SelectClauseDiagnosticInfos:' + str(self.SelectClauseDiagnosticInfos) + ', '  + \
8437
             'WhereClauseResult:' + str(self.WhereClauseResult) + ')'
8438
    
8439 1
    __repr__ = __str__
8440
    
8441 1
class AggregateFilterResult(FrozenClass):
8442
    '''
8443
    :ivar RevisedStartTime: 
8444
    :vartype RevisedStartTime: DateTime 
8445
    :ivar RevisedProcessingInterval: 
8446
    :vartype RevisedProcessingInterval: Double 
8447
    :ivar RevisedAggregateConfiguration: 
8448
    :vartype RevisedAggregateConfiguration: AggregateConfiguration 
8449
    '''
8450 1
    def __init__(self):
8451
        self.RevisedStartTime = datetime.now()
8452
        self.RevisedProcessingInterval = 0
8453
        self.RevisedAggregateConfiguration = AggregateConfiguration()
8454
        self._freeze()
8455
    
8456 1
    def to_binary(self):
8457
        packet = []
8458
        packet.append(pack_uatype('DateTime', self.RevisedStartTime))
8459
        packet.append(pack_uatype('Double', self.RevisedProcessingInterval))
8460
        packet.append(self.RevisedAggregateConfiguration.to_binary())
8461
        return b''.join(packet)
8462
        
8463 1
    @staticmethod
8464
    def from_binary(data):
8465
        obj = AggregateFilterResult()
8466
        obj.RevisedStartTime = unpack_uatype('DateTime', data)
8467
        obj.RevisedProcessingInterval = unpack_uatype('Double', data)
8468
        obj.RevisedAggregateConfiguration = AggregateConfiguration.from_binary(data)
8469
        return obj
8470
    
8471 1
    def __str__(self):
8472
        return 'AggregateFilterResult(' + 'RevisedStartTime:' + str(self.RevisedStartTime) + ', '  + \
8473
             'RevisedProcessingInterval:' + str(self.RevisedProcessingInterval) + ', '  + \
8474
             'RevisedAggregateConfiguration:' + str(self.RevisedAggregateConfiguration) + ')'
8475
    
8476 1
    __repr__ = __str__
8477
    
8478 1
class MonitoringParameters(FrozenClass):
8479
    '''
8480
    :ivar ClientHandle: 
8481
    :vartype ClientHandle: UInt32 
8482
    :ivar SamplingInterval: 
8483
    :vartype SamplingInterval: Double 
8484
    :ivar Filter: 
8485
    :vartype Filter: ExtensionObject 
8486
    :ivar QueueSize: 
8487
    :vartype QueueSize: UInt32 
8488
    :ivar DiscardOldest: 
8489
    :vartype DiscardOldest: Boolean 
8490
    '''
8491 1
    def __init__(self):
8492 1
        self.ClientHandle = 0
8493 1
        self.SamplingInterval = 0
8494 1
        self.Filter = ExtensionObject()
8495 1
        self.QueueSize = 0
8496 1
        self.DiscardOldest = True
8497 1
        self._freeze()
8498
    
8499 1
    def to_binary(self):
8500 1
        packet = []
8501 1
        packet.append(pack_uatype('UInt32', self.ClientHandle))
8502 1
        packet.append(pack_uatype('Double', self.SamplingInterval))
8503 1
        packet.append(self.Filter.to_binary())
8504 1
        packet.append(pack_uatype('UInt32', self.QueueSize))
8505 1
        packet.append(pack_uatype('Boolean', self.DiscardOldest))
8506 1
        return b''.join(packet)
8507
        
8508 1
    @staticmethod
8509
    def from_binary(data):
8510 1
        obj = MonitoringParameters()
8511 1
        obj.ClientHandle = unpack_uatype('UInt32', data)
8512 1
        obj.SamplingInterval = unpack_uatype('Double', data)
8513 1
        obj.Filter = ExtensionObject.from_binary(data)
8514 1
        obj.QueueSize = unpack_uatype('UInt32', data)
8515 1
        obj.DiscardOldest = unpack_uatype('Boolean', data)
8516 1
        return obj
8517
    
8518 1
    def __str__(self):
8519
        return 'MonitoringParameters(' + 'ClientHandle:' + str(self.ClientHandle) + ', '  + \
8520
             'SamplingInterval:' + str(self.SamplingInterval) + ', '  + \
8521
             'Filter:' + str(self.Filter) + ', '  + \
8522
             'QueueSize:' + str(self.QueueSize) + ', '  + \
8523
             'DiscardOldest:' + str(self.DiscardOldest) + ')'
8524
    
8525 1
    __repr__ = __str__
8526
    
8527 1
class MonitoredItemCreateRequest(FrozenClass):
8528
    '''
8529
    :ivar ItemToMonitor: 
8530
    :vartype ItemToMonitor: ReadValueId 
8531
    :ivar MonitoringMode: 
8532
    :vartype MonitoringMode: MonitoringMode 
8533
    :ivar RequestedParameters: 
8534
    :vartype RequestedParameters: MonitoringParameters 
8535
    '''
8536 1
    def __init__(self):
8537 1
        self.ItemToMonitor = ReadValueId()
8538 1
        self.MonitoringMode = 0
8539 1
        self.RequestedParameters = MonitoringParameters()
8540 1
        self._freeze()
8541
    
8542 1
    def to_binary(self):
8543 1
        packet = []
8544 1
        packet.append(self.ItemToMonitor.to_binary())
8545 1
        packet.append(pack_uatype('UInt32', self.MonitoringMode))
8546 1
        packet.append(self.RequestedParameters.to_binary())
8547 1
        return b''.join(packet)
8548
        
8549 1
    @staticmethod
8550
    def from_binary(data):
8551 1
        obj = MonitoredItemCreateRequest()
8552 1
        obj.ItemToMonitor = ReadValueId.from_binary(data)
8553 1
        obj.MonitoringMode = unpack_uatype('UInt32', data)
8554 1
        obj.RequestedParameters = MonitoringParameters.from_binary(data)
8555 1
        return obj
8556
    
8557 1
    def __str__(self):
8558
        return 'MonitoredItemCreateRequest(' + 'ItemToMonitor:' + str(self.ItemToMonitor) + ', '  + \
8559
             'MonitoringMode:' + str(self.MonitoringMode) + ', '  + \
8560
             'RequestedParameters:' + str(self.RequestedParameters) + ')'
8561
    
8562 1
    __repr__ = __str__
8563
    
8564 1
class MonitoredItemCreateResult(FrozenClass):
8565
    '''
8566
    :ivar StatusCode: 
8567
    :vartype StatusCode: StatusCode 
8568
    :ivar MonitoredItemId: 
8569
    :vartype MonitoredItemId: UInt32 
8570
    :ivar RevisedSamplingInterval: 
8571
    :vartype RevisedSamplingInterval: Double 
8572
    :ivar RevisedQueueSize: 
8573
    :vartype RevisedQueueSize: UInt32 
8574
    :ivar FilterResult: 
8575
    :vartype FilterResult: ExtensionObject 
8576
    '''
8577 1
    def __init__(self):
8578 1
        self.StatusCode = StatusCode()
8579 1
        self.MonitoredItemId = 0
8580 1
        self.RevisedSamplingInterval = 0
8581 1
        self.RevisedQueueSize = 0
8582 1
        self.FilterResult = ExtensionObject()
8583 1
        self._freeze()
8584
    
8585 1
    def to_binary(self):
8586 1
        packet = []
8587 1
        packet.append(self.StatusCode.to_binary())
8588 1
        packet.append(pack_uatype('UInt32', self.MonitoredItemId))
8589 1
        packet.append(pack_uatype('Double', self.RevisedSamplingInterval))
8590 1
        packet.append(pack_uatype('UInt32', self.RevisedQueueSize))
8591 1
        packet.append(self.FilterResult.to_binary())
8592 1
        return b''.join(packet)
8593
        
8594 1
    @staticmethod
8595
    def from_binary(data):
8596 1
        obj = MonitoredItemCreateResult()
8597 1
        obj.StatusCode = StatusCode.from_binary(data)
8598 1
        obj.MonitoredItemId = unpack_uatype('UInt32', data)
8599 1
        obj.RevisedSamplingInterval = unpack_uatype('Double', data)
8600 1
        obj.RevisedQueueSize = unpack_uatype('UInt32', data)
8601 1
        obj.FilterResult = ExtensionObject.from_binary(data)
8602 1
        return obj
8603
    
8604 1
    def __str__(self):
8605
        return 'MonitoredItemCreateResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
8606
             'MonitoredItemId:' + str(self.MonitoredItemId) + ', '  + \
8607
             'RevisedSamplingInterval:' + str(self.RevisedSamplingInterval) + ', '  + \
8608
             'RevisedQueueSize:' + str(self.RevisedQueueSize) + ', '  + \
8609
             'FilterResult:' + str(self.FilterResult) + ')'
8610
    
8611 1
    __repr__ = __str__
8612
    
8613 1
class CreateMonitoredItemsParameters(FrozenClass):
8614
    '''
8615
    :ivar SubscriptionId: 
8616
    :vartype SubscriptionId: UInt32 
8617
    :ivar TimestampsToReturn: 
8618
    :vartype TimestampsToReturn: TimestampsToReturn 
8619
    :ivar ItemsToCreate: 
8620
    :vartype ItemsToCreate: MonitoredItemCreateRequest 
8621
    '''
8622 1
    def __init__(self):
8623 1
        self.SubscriptionId = 0
8624 1
        self.TimestampsToReturn = 0
8625 1
        self.ItemsToCreate = []
8626 1
        self._freeze()
8627
    
8628 1
    def to_binary(self):
8629 1
        packet = []
8630 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
8631 1
        packet.append(pack_uatype('UInt32', self.TimestampsToReturn))
8632 1
        packet.append(struct.pack('<i', len(self.ItemsToCreate)))
8633 1
        for fieldname in self.ItemsToCreate:
8634 1
            packet.append(fieldname.to_binary())
8635 1
        return b''.join(packet)
8636
        
8637 1
    @staticmethod
8638
    def from_binary(data):
8639 1
        obj = CreateMonitoredItemsParameters()
8640 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
8641 1
        obj.TimestampsToReturn = unpack_uatype('UInt32', data)
8642 1
        length = struct.unpack('<i', data.read(4))[0]
8643 1
        if length != -1:
8644 1
            for _ in range(0, length):
8645 1
                obj.ItemsToCreate.append(MonitoredItemCreateRequest.from_binary(data))
8646 1
        return obj
8647
    
8648 1
    def __str__(self):
8649
        return 'CreateMonitoredItemsParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
8650
             'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', '  + \
8651
             'ItemsToCreate:' + str(self.ItemsToCreate) + ')'
8652
    
8653 1
    __repr__ = __str__
8654
    
8655 1
class CreateMonitoredItemsRequest(FrozenClass):
8656
    '''
8657
    :ivar TypeId: 
8658
    :vartype TypeId: NodeId 
8659
    :ivar RequestHeader: 
8660
    :vartype RequestHeader: RequestHeader 
8661
    :ivar Parameters: 
8662
    :vartype Parameters: CreateMonitoredItemsParameters 
8663
    '''
8664 1
    def __init__(self):
8665 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateMonitoredItemsRequest_Encoding_DefaultBinary)
8666 1
        self.RequestHeader = RequestHeader()
8667 1
        self.Parameters = CreateMonitoredItemsParameters()
8668 1
        self._freeze()
8669
    
8670 1
    def to_binary(self):
8671 1
        packet = []
8672 1
        packet.append(self.TypeId.to_binary())
8673 1
        packet.append(self.RequestHeader.to_binary())
8674 1
        packet.append(self.Parameters.to_binary())
8675 1
        return b''.join(packet)
8676
        
8677 1
    @staticmethod
8678
    def from_binary(data):
8679
        obj = CreateMonitoredItemsRequest()
8680
        obj.TypeId = NodeId.from_binary(data)
8681
        obj.RequestHeader = RequestHeader.from_binary(data)
8682
        obj.Parameters = CreateMonitoredItemsParameters.from_binary(data)
8683
        return obj
8684
    
8685 1
    def __str__(self):
8686
        return 'CreateMonitoredItemsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8687
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
8688
             'Parameters:' + str(self.Parameters) + ')'
8689
    
8690 1
    __repr__ = __str__
8691
    
8692 1
class CreateMonitoredItemsResponse(FrozenClass):
8693
    '''
8694
    :ivar TypeId: 
8695
    :vartype TypeId: NodeId 
8696
    :ivar ResponseHeader: 
8697
    :vartype ResponseHeader: ResponseHeader 
8698
    :ivar Results: 
8699
    :vartype Results: MonitoredItemCreateResult 
8700
    :ivar DiagnosticInfos: 
8701
    :vartype DiagnosticInfos: DiagnosticInfo 
8702
    '''
8703 1
    def __init__(self):
8704 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateMonitoredItemsResponse_Encoding_DefaultBinary)
8705 1
        self.ResponseHeader = ResponseHeader()
8706 1
        self.Results = []
8707 1
        self.DiagnosticInfos = []
8708 1
        self._freeze()
8709
    
8710 1
    def to_binary(self):
8711 1
        packet = []
8712 1
        packet.append(self.TypeId.to_binary())
8713 1
        packet.append(self.ResponseHeader.to_binary())
8714 1
        packet.append(struct.pack('<i', len(self.Results)))
8715 1
        for fieldname in self.Results:
8716 1
            packet.append(fieldname.to_binary())
8717 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
8718 1
        for fieldname in self.DiagnosticInfos:
8719
            packet.append(fieldname.to_binary())
8720 1
        return b''.join(packet)
8721
        
8722 1
    @staticmethod
8723
    def from_binary(data):
8724 1
        obj = CreateMonitoredItemsResponse()
8725 1
        obj.TypeId = NodeId.from_binary(data)
8726 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
8727 1
        length = struct.unpack('<i', data.read(4))[0]
8728 1
        if length != -1:
8729 1
            for _ in range(0, length):
8730 1
                obj.Results.append(MonitoredItemCreateResult.from_binary(data))
8731 1
        length = struct.unpack('<i', data.read(4))[0]
8732 1
        if length != -1:
8733 1
            for _ in range(0, length):
8734
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8735 1
        return obj
8736
    
8737 1
    def __str__(self):
8738
        return 'CreateMonitoredItemsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8739
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
8740
             'Results:' + str(self.Results) + ', '  + \
8741
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
8742
    
8743 1
    __repr__ = __str__
8744
    
8745 1
class MonitoredItemModifyRequest(FrozenClass):
8746
    '''
8747
    :ivar MonitoredItemId: 
8748
    :vartype MonitoredItemId: UInt32 
8749
    :ivar RequestedParameters: 
8750
    :vartype RequestedParameters: MonitoringParameters 
8751
    '''
8752 1
    def __init__(self):
8753
        self.MonitoredItemId = 0
8754
        self.RequestedParameters = MonitoringParameters()
8755
        self._freeze()
8756
    
8757 1
    def to_binary(self):
8758
        packet = []
8759
        packet.append(pack_uatype('UInt32', self.MonitoredItemId))
8760
        packet.append(self.RequestedParameters.to_binary())
8761
        return b''.join(packet)
8762
        
8763 1
    @staticmethod
8764
    def from_binary(data):
8765
        obj = MonitoredItemModifyRequest()
8766
        obj.MonitoredItemId = unpack_uatype('UInt32', data)
8767
        obj.RequestedParameters = MonitoringParameters.from_binary(data)
8768
        return obj
8769
    
8770 1
    def __str__(self):
8771
        return 'MonitoredItemModifyRequest(' + 'MonitoredItemId:' + str(self.MonitoredItemId) + ', '  + \
8772
             'RequestedParameters:' + str(self.RequestedParameters) + ')'
8773
    
8774 1
    __repr__ = __str__
8775
    
8776 1
class MonitoredItemModifyResult(FrozenClass):
8777
    '''
8778
    :ivar StatusCode: 
8779
    :vartype StatusCode: StatusCode 
8780
    :ivar RevisedSamplingInterval: 
8781
    :vartype RevisedSamplingInterval: Double 
8782
    :ivar RevisedQueueSize: 
8783
    :vartype RevisedQueueSize: UInt32 
8784
    :ivar FilterResult: 
8785
    :vartype FilterResult: ExtensionObject 
8786
    '''
8787 1
    def __init__(self):
8788
        self.StatusCode = StatusCode()
8789
        self.RevisedSamplingInterval = 0
8790
        self.RevisedQueueSize = 0
8791
        self.FilterResult = ExtensionObject()
8792
        self._freeze()
8793
    
8794 1
    def to_binary(self):
8795
        packet = []
8796
        packet.append(self.StatusCode.to_binary())
8797
        packet.append(pack_uatype('Double', self.RevisedSamplingInterval))
8798
        packet.append(pack_uatype('UInt32', self.RevisedQueueSize))
8799
        packet.append(self.FilterResult.to_binary())
8800
        return b''.join(packet)
8801
        
8802 1
    @staticmethod
8803
    def from_binary(data):
8804
        obj = MonitoredItemModifyResult()
8805
        obj.StatusCode = StatusCode.from_binary(data)
8806
        obj.RevisedSamplingInterval = unpack_uatype('Double', data)
8807
        obj.RevisedQueueSize = unpack_uatype('UInt32', data)
8808
        obj.FilterResult = ExtensionObject.from_binary(data)
8809
        return obj
8810
    
8811 1
    def __str__(self):
8812
        return 'MonitoredItemModifyResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
8813
             'RevisedSamplingInterval:' + str(self.RevisedSamplingInterval) + ', '  + \
8814
             'RevisedQueueSize:' + str(self.RevisedQueueSize) + ', '  + \
8815
             'FilterResult:' + str(self.FilterResult) + ')'
8816
    
8817 1
    __repr__ = __str__
8818
    
8819 1
class ModifyMonitoredItemsParameters(FrozenClass):
8820
    '''
8821
    :ivar SubscriptionId: 
8822
    :vartype SubscriptionId: UInt32 
8823
    :ivar TimestampsToReturn: 
8824
    :vartype TimestampsToReturn: TimestampsToReturn 
8825
    :ivar ItemsToModify: 
8826
    :vartype ItemsToModify: MonitoredItemModifyRequest 
8827
    '''
8828 1
    def __init__(self):
8829
        self.SubscriptionId = 0
8830
        self.TimestampsToReturn = 0
8831
        self.ItemsToModify = []
8832
        self._freeze()
8833
    
8834 1
    def to_binary(self):
8835
        packet = []
8836
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
8837
        packet.append(pack_uatype('UInt32', self.TimestampsToReturn))
8838
        packet.append(struct.pack('<i', len(self.ItemsToModify)))
8839
        for fieldname in self.ItemsToModify:
8840
            packet.append(fieldname.to_binary())
8841
        return b''.join(packet)
8842
        
8843 1
    @staticmethod
8844
    def from_binary(data):
8845
        obj = ModifyMonitoredItemsParameters()
8846
        obj.SubscriptionId = unpack_uatype('UInt32', data)
8847
        obj.TimestampsToReturn = unpack_uatype('UInt32', data)
8848
        length = struct.unpack('<i', data.read(4))[0]
8849
        if length != -1:
8850
            for _ in range(0, length):
8851
                obj.ItemsToModify.append(MonitoredItemModifyRequest.from_binary(data))
8852
        return obj
8853
    
8854 1
    def __str__(self):
8855
        return 'ModifyMonitoredItemsParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
8856
             'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', '  + \
8857
             'ItemsToModify:' + str(self.ItemsToModify) + ')'
8858
    
8859 1
    __repr__ = __str__
8860
    
8861 1
class ModifyMonitoredItemsRequest(FrozenClass):
8862
    '''
8863
    :ivar TypeId: 
8864
    :vartype TypeId: NodeId 
8865
    :ivar RequestHeader: 
8866
    :vartype RequestHeader: RequestHeader 
8867
    :ivar Parameters: 
8868
    :vartype Parameters: ModifyMonitoredItemsParameters 
8869
    '''
8870 1
    def __init__(self):
8871
        self.TypeId = FourByteNodeId(ObjectIds.ModifyMonitoredItemsRequest_Encoding_DefaultBinary)
8872
        self.RequestHeader = RequestHeader()
8873
        self.Parameters = ModifyMonitoredItemsParameters()
8874
        self._freeze()
8875
    
8876 1
    def to_binary(self):
8877
        packet = []
8878
        packet.append(self.TypeId.to_binary())
8879
        packet.append(self.RequestHeader.to_binary())
8880
        packet.append(self.Parameters.to_binary())
8881
        return b''.join(packet)
8882
        
8883 1
    @staticmethod
8884
    def from_binary(data):
8885
        obj = ModifyMonitoredItemsRequest()
8886
        obj.TypeId = NodeId.from_binary(data)
8887
        obj.RequestHeader = RequestHeader.from_binary(data)
8888
        obj.Parameters = ModifyMonitoredItemsParameters.from_binary(data)
8889
        return obj
8890
    
8891 1
    def __str__(self):
8892
        return 'ModifyMonitoredItemsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8893
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
8894
             'Parameters:' + str(self.Parameters) + ')'
8895
    
8896 1
    __repr__ = __str__
8897
    
8898 1
class ModifyMonitoredItemsResponse(FrozenClass):
8899
    '''
8900
    :ivar TypeId: 
8901
    :vartype TypeId: NodeId 
8902
    :ivar ResponseHeader: 
8903
    :vartype ResponseHeader: ResponseHeader 
8904
    :ivar Results: 
8905
    :vartype Results: MonitoredItemModifyResult 
8906
    :ivar DiagnosticInfos: 
8907
    :vartype DiagnosticInfos: DiagnosticInfo 
8908
    '''
8909 1
    def __init__(self):
8910
        self.TypeId = FourByteNodeId(ObjectIds.ModifyMonitoredItemsResponse_Encoding_DefaultBinary)
8911
        self.ResponseHeader = ResponseHeader()
8912
        self.Results = []
8913
        self.DiagnosticInfos = []
8914
        self._freeze()
8915
    
8916 1
    def to_binary(self):
8917
        packet = []
8918
        packet.append(self.TypeId.to_binary())
8919
        packet.append(self.ResponseHeader.to_binary())
8920
        packet.append(struct.pack('<i', len(self.Results)))
8921
        for fieldname in self.Results:
8922
            packet.append(fieldname.to_binary())
8923
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
8924
        for fieldname in self.DiagnosticInfos:
8925
            packet.append(fieldname.to_binary())
8926
        return b''.join(packet)
8927
        
8928 1
    @staticmethod
8929
    def from_binary(data):
8930
        obj = ModifyMonitoredItemsResponse()
8931
        obj.TypeId = NodeId.from_binary(data)
8932
        obj.ResponseHeader = ResponseHeader.from_binary(data)
8933
        length = struct.unpack('<i', data.read(4))[0]
8934
        if length != -1:
8935
            for _ in range(0, length):
8936
                obj.Results.append(MonitoredItemModifyResult.from_binary(data))
8937
        length = struct.unpack('<i', data.read(4))[0]
8938
        if length != -1:
8939
            for _ in range(0, length):
8940
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8941
        return obj
8942
    
8943 1
    def __str__(self):
8944
        return 'ModifyMonitoredItemsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8945
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
8946
             'Results:' + str(self.Results) + ', '  + \
8947
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
8948
    
8949 1
    __repr__ = __str__
8950
    
8951 1
class SetMonitoringModeParameters(FrozenClass):
8952
    '''
8953
    :ivar SubscriptionId: 
8954
    :vartype SubscriptionId: UInt32 
8955
    :ivar MonitoringMode: 
8956
    :vartype MonitoringMode: MonitoringMode 
8957
    :ivar MonitoredItemIds: 
8958
    :vartype MonitoredItemIds: UInt32 
8959
    '''
8960 1
    def __init__(self):
8961
        self.SubscriptionId = 0
8962
        self.MonitoringMode = 0
8963
        self.MonitoredItemIds = []
8964
        self._freeze()
8965
    
8966 1
    def to_binary(self):
8967
        packet = []
8968
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
8969
        packet.append(pack_uatype('UInt32', self.MonitoringMode))
8970
        packet.append(struct.pack('<i', len(self.MonitoredItemIds)))
8971
        for fieldname in self.MonitoredItemIds:
8972
            packet.append(pack_uatype('UInt32', fieldname))
8973
        return b''.join(packet)
8974
        
8975 1
    @staticmethod
8976
    def from_binary(data):
8977
        obj = SetMonitoringModeParameters()
8978
        obj.SubscriptionId = unpack_uatype('UInt32', data)
8979
        obj.MonitoringMode = unpack_uatype('UInt32', data)
8980
        obj.MonitoredItemIds = unpack_uatype_array('UInt32', data)
8981
        return obj
8982
    
8983 1
    def __str__(self):
8984
        return 'SetMonitoringModeParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
8985
             'MonitoringMode:' + str(self.MonitoringMode) + ', '  + \
8986
             'MonitoredItemIds:' + str(self.MonitoredItemIds) + ')'
8987
    
8988 1
    __repr__ = __str__
8989
    
8990 1
class SetMonitoringModeRequest(FrozenClass):
8991
    '''
8992
    :ivar TypeId: 
8993
    :vartype TypeId: NodeId 
8994
    :ivar RequestHeader: 
8995
    :vartype RequestHeader: RequestHeader 
8996
    :ivar Parameters: 
8997
    :vartype Parameters: SetMonitoringModeParameters 
8998
    '''
8999 1
    def __init__(self):
9000
        self.TypeId = FourByteNodeId(ObjectIds.SetMonitoringModeRequest_Encoding_DefaultBinary)
9001
        self.RequestHeader = RequestHeader()
9002
        self.Parameters = SetMonitoringModeParameters()
9003
        self._freeze()
9004
    
9005 1
    def to_binary(self):
9006
        packet = []
9007
        packet.append(self.TypeId.to_binary())
9008
        packet.append(self.RequestHeader.to_binary())
9009
        packet.append(self.Parameters.to_binary())
9010
        return b''.join(packet)
9011
        
9012 1
    @staticmethod
9013
    def from_binary(data):
9014
        obj = SetMonitoringModeRequest()
9015
        obj.TypeId = NodeId.from_binary(data)
9016
        obj.RequestHeader = RequestHeader.from_binary(data)
9017
        obj.Parameters = SetMonitoringModeParameters.from_binary(data)
9018
        return obj
9019
    
9020 1
    def __str__(self):
9021
        return 'SetMonitoringModeRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9022
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9023
             'Parameters:' + str(self.Parameters) + ')'
9024
    
9025 1
    __repr__ = __str__
9026
    
9027 1
class SetMonitoringModeResult(FrozenClass):
9028
    '''
9029
    :ivar Results: 
9030
    :vartype Results: StatusCode 
9031
    :ivar DiagnosticInfos: 
9032
    :vartype DiagnosticInfos: DiagnosticInfo 
9033
    '''
9034 1
    def __init__(self):
9035
        self.Results = []
9036
        self.DiagnosticInfos = []
9037
        self._freeze()
9038
    
9039 1
    def to_binary(self):
9040
        packet = []
9041
        packet.append(struct.pack('<i', len(self.Results)))
9042
        for fieldname in self.Results:
9043
            packet.append(fieldname.to_binary())
9044
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
9045
        for fieldname in self.DiagnosticInfos:
9046
            packet.append(fieldname.to_binary())
9047
        return b''.join(packet)
9048
        
9049 1
    @staticmethod
9050
    def from_binary(data):
9051
        obj = SetMonitoringModeResult()
9052
        length = struct.unpack('<i', data.read(4))[0]
9053
        if length != -1:
9054
            for _ in range(0, length):
9055
                obj.Results.append(StatusCode.from_binary(data))
9056
        length = struct.unpack('<i', data.read(4))[0]
9057
        if length != -1:
9058
            for _ in range(0, length):
9059
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
9060
        return obj
9061
    
9062 1
    def __str__(self):
9063
        return 'SetMonitoringModeResult(' + 'Results:' + str(self.Results) + ', '  + \
9064
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9065
    
9066 1
    __repr__ = __str__
9067
    
9068 1
class SetMonitoringModeResponse(FrozenClass):
9069
    '''
9070
    :ivar TypeId: 
9071
    :vartype TypeId: NodeId 
9072
    :ivar ResponseHeader: 
9073
    :vartype ResponseHeader: ResponseHeader 
9074
    :ivar Parameters: 
9075
    :vartype Parameters: SetMonitoringModeResult 
9076
    '''
9077 1
    def __init__(self):
9078
        self.TypeId = FourByteNodeId(ObjectIds.SetMonitoringModeResponse_Encoding_DefaultBinary)
9079
        self.ResponseHeader = ResponseHeader()
9080
        self.Parameters = SetMonitoringModeResult()
9081
        self._freeze()
9082
    
9083 1
    def to_binary(self):
9084
        packet = []
9085
        packet.append(self.TypeId.to_binary())
9086
        packet.append(self.ResponseHeader.to_binary())
9087
        packet.append(self.Parameters.to_binary())
9088
        return b''.join(packet)
9089
        
9090 1
    @staticmethod
9091
    def from_binary(data):
9092
        obj = SetMonitoringModeResponse()
9093
        obj.TypeId = NodeId.from_binary(data)
9094
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9095
        obj.Parameters = SetMonitoringModeResult.from_binary(data)
9096
        return obj
9097
    
9098 1
    def __str__(self):
9099
        return 'SetMonitoringModeResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9100
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9101
             'Parameters:' + str(self.Parameters) + ')'
9102
    
9103 1
    __repr__ = __str__
9104
    
9105 1
class SetTriggeringParameters(FrozenClass):
9106
    '''
9107
    :ivar SubscriptionId: 
9108
    :vartype SubscriptionId: UInt32 
9109
    :ivar TriggeringItemId: 
9110
    :vartype TriggeringItemId: UInt32 
9111
    :ivar LinksToAdd: 
9112
    :vartype LinksToAdd: UInt32 
9113
    :ivar LinksToRemove: 
9114
    :vartype LinksToRemove: UInt32 
9115
    '''
9116 1
    def __init__(self):
9117
        self.SubscriptionId = 0
9118
        self.TriggeringItemId = 0
9119
        self.LinksToAdd = []
9120
        self.LinksToRemove = []
9121
        self._freeze()
9122
    
9123 1
    def to_binary(self):
9124
        packet = []
9125
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
9126
        packet.append(pack_uatype('UInt32', self.TriggeringItemId))
9127
        packet.append(struct.pack('<i', len(self.LinksToAdd)))
9128
        for fieldname in self.LinksToAdd:
9129
            packet.append(pack_uatype('UInt32', fieldname))
9130
        packet.append(struct.pack('<i', len(self.LinksToRemove)))
9131
        for fieldname in self.LinksToRemove:
9132
            packet.append(pack_uatype('UInt32', fieldname))
9133
        return b''.join(packet)
9134
        
9135 1
    @staticmethod
9136
    def from_binary(data):
9137
        obj = SetTriggeringParameters()
9138
        obj.SubscriptionId = unpack_uatype('UInt32', data)
9139
        obj.TriggeringItemId = unpack_uatype('UInt32', data)
9140
        obj.LinksToAdd = unpack_uatype_array('UInt32', data)
9141
        obj.LinksToRemove = unpack_uatype_array('UInt32', data)
9142
        return obj
9143
    
9144 1
    def __str__(self):
9145
        return 'SetTriggeringParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
9146
             'TriggeringItemId:' + str(self.TriggeringItemId) + ', '  + \
9147
             'LinksToAdd:' + str(self.LinksToAdd) + ', '  + \
9148
             'LinksToRemove:' + str(self.LinksToRemove) + ')'
9149
    
9150 1
    __repr__ = __str__
9151
    
9152 1
class SetTriggeringRequest(FrozenClass):
9153
    '''
9154
    :ivar TypeId: 
9155
    :vartype TypeId: NodeId 
9156
    :ivar RequestHeader: 
9157
    :vartype RequestHeader: RequestHeader 
9158
    :ivar Parameters: 
9159
    :vartype Parameters: SetTriggeringParameters 
9160
    '''
9161 1
    def __init__(self):
9162
        self.TypeId = FourByteNodeId(ObjectIds.SetTriggeringRequest_Encoding_DefaultBinary)
9163
        self.RequestHeader = RequestHeader()
9164
        self.Parameters = SetTriggeringParameters()
9165
        self._freeze()
9166
    
9167 1
    def to_binary(self):
9168
        packet = []
9169
        packet.append(self.TypeId.to_binary())
9170
        packet.append(self.RequestHeader.to_binary())
9171
        packet.append(self.Parameters.to_binary())
9172
        return b''.join(packet)
9173
        
9174 1
    @staticmethod
9175
    def from_binary(data):
9176
        obj = SetTriggeringRequest()
9177
        obj.TypeId = NodeId.from_binary(data)
9178
        obj.RequestHeader = RequestHeader.from_binary(data)
9179
        obj.Parameters = SetTriggeringParameters.from_binary(data)
9180
        return obj
9181
    
9182 1
    def __str__(self):
9183
        return 'SetTriggeringRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9184
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9185
             'Parameters:' + str(self.Parameters) + ')'
9186
    
9187 1
    __repr__ = __str__
9188
    
9189 1
class SetTriggeringResult(FrozenClass):
9190
    '''
9191
    :ivar AddResults: 
9192
    :vartype AddResults: StatusCode 
9193
    :ivar AddDiagnosticInfos: 
9194
    :vartype AddDiagnosticInfos: DiagnosticInfo 
9195
    :ivar RemoveResults: 
9196
    :vartype RemoveResults: StatusCode 
9197
    :ivar RemoveDiagnosticInfos: 
9198
    :vartype RemoveDiagnosticInfos: DiagnosticInfo 
9199
    '''
9200 1
    def __init__(self):
9201
        self.AddResults = []
9202
        self.AddDiagnosticInfos = []
9203
        self.RemoveResults = []
9204
        self.RemoveDiagnosticInfos = []
9205
        self._freeze()
9206
    
9207 1
    def to_binary(self):
9208
        packet = []
9209
        packet.append(struct.pack('<i', len(self.AddResults)))
9210
        for fieldname in self.AddResults:
9211
            packet.append(fieldname.to_binary())
9212
        packet.append(struct.pack('<i', len(self.AddDiagnosticInfos)))
9213
        for fieldname in self.AddDiagnosticInfos:
9214
            packet.append(fieldname.to_binary())
9215
        packet.append(struct.pack('<i', len(self.RemoveResults)))
9216
        for fieldname in self.RemoveResults:
9217
            packet.append(fieldname.to_binary())
9218
        packet.append(struct.pack('<i', len(self.RemoveDiagnosticInfos)))
9219
        for fieldname in self.RemoveDiagnosticInfos:
9220
            packet.append(fieldname.to_binary())
9221
        return b''.join(packet)
9222
        
9223 1
    @staticmethod
9224
    def from_binary(data):
9225
        obj = SetTriggeringResult()
9226
        length = struct.unpack('<i', data.read(4))[0]
9227
        if length != -1:
9228
            for _ in range(0, length):
9229
                obj.AddResults.append(StatusCode.from_binary(data))
9230
        length = struct.unpack('<i', data.read(4))[0]
9231
        if length != -1:
9232
            for _ in range(0, length):
9233
                obj.AddDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
9234
        length = struct.unpack('<i', data.read(4))[0]
9235
        if length != -1:
9236
            for _ in range(0, length):
9237
                obj.RemoveResults.append(StatusCode.from_binary(data))
9238
        length = struct.unpack('<i', data.read(4))[0]
9239
        if length != -1:
9240
            for _ in range(0, length):
9241
                obj.RemoveDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
9242
        return obj
9243
    
9244 1
    def __str__(self):
9245
        return 'SetTriggeringResult(' + 'AddResults:' + str(self.AddResults) + ', '  + \
9246
             'AddDiagnosticInfos:' + str(self.AddDiagnosticInfos) + ', '  + \
9247
             'RemoveResults:' + str(self.RemoveResults) + ', '  + \
9248
             'RemoveDiagnosticInfos:' + str(self.RemoveDiagnosticInfos) + ')'
9249
    
9250 1
    __repr__ = __str__
9251
    
9252 1
class SetTriggeringResponse(FrozenClass):
9253
    '''
9254
    :ivar TypeId: 
9255
    :vartype TypeId: NodeId 
9256
    :ivar ResponseHeader: 
9257
    :vartype ResponseHeader: ResponseHeader 
9258
    :ivar Parameters: 
9259
    :vartype Parameters: SetTriggeringResult 
9260
    '''
9261 1
    def __init__(self):
9262
        self.TypeId = FourByteNodeId(ObjectIds.SetTriggeringResponse_Encoding_DefaultBinary)
9263
        self.ResponseHeader = ResponseHeader()
9264
        self.Parameters = SetTriggeringResult()
9265
        self._freeze()
9266
    
9267 1
    def to_binary(self):
9268
        packet = []
9269
        packet.append(self.TypeId.to_binary())
9270
        packet.append(self.ResponseHeader.to_binary())
9271
        packet.append(self.Parameters.to_binary())
9272
        return b''.join(packet)
9273
        
9274 1
    @staticmethod
9275
    def from_binary(data):
9276
        obj = SetTriggeringResponse()
9277
        obj.TypeId = NodeId.from_binary(data)
9278
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9279
        obj.Parameters = SetTriggeringResult.from_binary(data)
9280
        return obj
9281
    
9282 1
    def __str__(self):
9283
        return 'SetTriggeringResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9284
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9285
             'Parameters:' + str(self.Parameters) + ')'
9286
    
9287 1
    __repr__ = __str__
9288
    
9289 1
class DeleteMonitoredItemsParameters(FrozenClass):
9290
    '''
9291
    :ivar SubscriptionId: 
9292
    :vartype SubscriptionId: UInt32 
9293
    :ivar MonitoredItemIds: 
9294
    :vartype MonitoredItemIds: UInt32 
9295
    '''
9296 1
    def __init__(self):
9297 1
        self.SubscriptionId = 0
9298 1
        self.MonitoredItemIds = []
9299 1
        self._freeze()
9300
    
9301 1
    def to_binary(self):
9302 1
        packet = []
9303 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
9304 1
        packet.append(struct.pack('<i', len(self.MonitoredItemIds)))
9305 1
        for fieldname in self.MonitoredItemIds:
9306 1
            packet.append(pack_uatype('UInt32', fieldname))
9307 1
        return b''.join(packet)
9308
        
9309 1
    @staticmethod
9310
    def from_binary(data):
9311 1
        obj = DeleteMonitoredItemsParameters()
9312 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
9313 1
        obj.MonitoredItemIds = unpack_uatype_array('UInt32', data)
9314 1
        return obj
9315
    
9316 1
    def __str__(self):
9317
        return 'DeleteMonitoredItemsParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
9318
             'MonitoredItemIds:' + str(self.MonitoredItemIds) + ')'
9319
    
9320 1
    __repr__ = __str__
9321
    
9322 1
class DeleteMonitoredItemsRequest(FrozenClass):
9323
    '''
9324
    :ivar TypeId: 
9325
    :vartype TypeId: NodeId 
9326
    :ivar RequestHeader: 
9327
    :vartype RequestHeader: RequestHeader 
9328
    :ivar Parameters: 
9329
    :vartype Parameters: DeleteMonitoredItemsParameters 
9330
    '''
9331 1
    def __init__(self):
9332 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteMonitoredItemsRequest_Encoding_DefaultBinary)
9333 1
        self.RequestHeader = RequestHeader()
9334 1
        self.Parameters = DeleteMonitoredItemsParameters()
9335 1
        self._freeze()
9336
    
9337 1
    def to_binary(self):
9338 1
        packet = []
9339 1
        packet.append(self.TypeId.to_binary())
9340 1
        packet.append(self.RequestHeader.to_binary())
9341 1
        packet.append(self.Parameters.to_binary())
9342 1
        return b''.join(packet)
9343
        
9344 1
    @staticmethod
9345
    def from_binary(data):
9346
        obj = DeleteMonitoredItemsRequest()
9347
        obj.TypeId = NodeId.from_binary(data)
9348
        obj.RequestHeader = RequestHeader.from_binary(data)
9349
        obj.Parameters = DeleteMonitoredItemsParameters.from_binary(data)
9350
        return obj
9351
    
9352 1
    def __str__(self):
9353
        return 'DeleteMonitoredItemsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9354
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9355
             'Parameters:' + str(self.Parameters) + ')'
9356
    
9357 1
    __repr__ = __str__
9358
    
9359 1
class DeleteMonitoredItemsResponse(FrozenClass):
9360
    '''
9361
    :ivar TypeId: 
9362
    :vartype TypeId: NodeId 
9363
    :ivar ResponseHeader: 
9364
    :vartype ResponseHeader: ResponseHeader 
9365
    :ivar Results: 
9366
    :vartype Results: StatusCode 
9367
    :ivar DiagnosticInfos: 
9368
    :vartype DiagnosticInfos: DiagnosticInfo 
9369
    '''
9370 1
    def __init__(self):
9371 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteMonitoredItemsResponse_Encoding_DefaultBinary)
9372 1
        self.ResponseHeader = ResponseHeader()
9373 1
        self.Results = []
9374 1
        self.DiagnosticInfos = []
9375 1
        self._freeze()
9376
    
9377 1
    def to_binary(self):
9378 1
        packet = []
9379 1
        packet.append(self.TypeId.to_binary())
9380 1
        packet.append(self.ResponseHeader.to_binary())
9381 1
        packet.append(struct.pack('<i', len(self.Results)))
9382 1
        for fieldname in self.Results:
9383 1
            packet.append(fieldname.to_binary())
9384 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
9385 1
        for fieldname in self.DiagnosticInfos:
9386
            packet.append(fieldname.to_binary())
9387 1
        return b''.join(packet)
9388
        
9389 1
    @staticmethod
9390
    def from_binary(data):
9391 1
        obj = DeleteMonitoredItemsResponse()
9392 1
        obj.TypeId = NodeId.from_binary(data)
9393 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9394 1
        length = struct.unpack('<i', data.read(4))[0]
9395 1
        if length != -1:
9396 1
            for _ in range(0, length):
9397 1
                obj.Results.append(StatusCode.from_binary(data))
9398 1
        length = struct.unpack('<i', data.read(4))[0]
9399 1
        if length != -1:
9400 1
            for _ in range(0, length):
9401
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
9402 1
        return obj
9403
    
9404 1
    def __str__(self):
9405
        return 'DeleteMonitoredItemsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9406
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9407
             'Results:' + str(self.Results) + ', '  + \
9408
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9409
    
9410 1
    __repr__ = __str__
9411
    
9412 1
class CreateSubscriptionParameters(FrozenClass):
9413
    '''
9414
    :ivar RequestedPublishingInterval: 
9415
    :vartype RequestedPublishingInterval: Double 
9416
    :ivar RequestedLifetimeCount: 
9417
    :vartype RequestedLifetimeCount: UInt32 
9418
    :ivar RequestedMaxKeepAliveCount: 
9419
    :vartype RequestedMaxKeepAliveCount: UInt32 
9420
    :ivar MaxNotificationsPerPublish: 
9421
    :vartype MaxNotificationsPerPublish: UInt32 
9422
    :ivar PublishingEnabled: 
9423
    :vartype PublishingEnabled: Boolean 
9424
    :ivar Priority: 
9425
    :vartype Priority: Byte 
9426
    '''
9427 1
    def __init__(self):
9428 1
        self.RequestedPublishingInterval = 0
9429 1
        self.RequestedLifetimeCount = 0
9430 1
        self.RequestedMaxKeepAliveCount = 0
9431 1
        self.MaxNotificationsPerPublish = 0
9432 1
        self.PublishingEnabled = True
9433 1
        self.Priority = 0
9434 1
        self._freeze()
9435
    
9436 1
    def to_binary(self):
9437 1
        packet = []
9438 1
        packet.append(pack_uatype('Double', self.RequestedPublishingInterval))
9439 1
        packet.append(pack_uatype('UInt32', self.RequestedLifetimeCount))
9440 1
        packet.append(pack_uatype('UInt32', self.RequestedMaxKeepAliveCount))
9441 1
        packet.append(pack_uatype('UInt32', self.MaxNotificationsPerPublish))
9442 1
        packet.append(pack_uatype('Boolean', self.PublishingEnabled))
9443 1
        packet.append(pack_uatype('Byte', self.Priority))
9444 1
        return b''.join(packet)
9445
        
9446 1
    @staticmethod
9447
    def from_binary(data):
9448 1
        obj = CreateSubscriptionParameters()
9449 1
        obj.RequestedPublishingInterval = unpack_uatype('Double', data)
9450 1
        obj.RequestedLifetimeCount = unpack_uatype('UInt32', data)
9451 1
        obj.RequestedMaxKeepAliveCount = unpack_uatype('UInt32', data)
9452 1
        obj.MaxNotificationsPerPublish = unpack_uatype('UInt32', data)
9453 1
        obj.PublishingEnabled = unpack_uatype('Boolean', data)
9454 1
        obj.Priority = unpack_uatype('Byte', data)
9455 1
        return obj
9456
    
9457 1
    def __str__(self):
9458
        return 'CreateSubscriptionParameters(' + 'RequestedPublishingInterval:' + str(self.RequestedPublishingInterval) + ', '  + \
9459
             'RequestedLifetimeCount:' + str(self.RequestedLifetimeCount) + ', '  + \
9460
             'RequestedMaxKeepAliveCount:' + str(self.RequestedMaxKeepAliveCount) + ', '  + \
9461
             'MaxNotificationsPerPublish:' + str(self.MaxNotificationsPerPublish) + ', '  + \
9462
             'PublishingEnabled:' + str(self.PublishingEnabled) + ', '  + \
9463
             'Priority:' + str(self.Priority) + ')'
9464
    
9465 1
    __repr__ = __str__
9466
    
9467 1
class CreateSubscriptionRequest(FrozenClass):
9468
    '''
9469
    :ivar TypeId: 
9470
    :vartype TypeId: NodeId 
9471
    :ivar RequestHeader: 
9472
    :vartype RequestHeader: RequestHeader 
9473
    :ivar Parameters: 
9474
    :vartype Parameters: CreateSubscriptionParameters 
9475
    '''
9476 1
    def __init__(self):
9477 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSubscriptionRequest_Encoding_DefaultBinary)
9478 1
        self.RequestHeader = RequestHeader()
9479 1
        self.Parameters = CreateSubscriptionParameters()
9480 1
        self._freeze()
9481
    
9482 1
    def to_binary(self):
9483 1
        packet = []
9484 1
        packet.append(self.TypeId.to_binary())
9485 1
        packet.append(self.RequestHeader.to_binary())
9486 1
        packet.append(self.Parameters.to_binary())
9487 1
        return b''.join(packet)
9488
        
9489 1
    @staticmethod
9490
    def from_binary(data):
9491
        obj = CreateSubscriptionRequest()
9492
        obj.TypeId = NodeId.from_binary(data)
9493
        obj.RequestHeader = RequestHeader.from_binary(data)
9494
        obj.Parameters = CreateSubscriptionParameters.from_binary(data)
9495
        return obj
9496
    
9497 1
    def __str__(self):
9498
        return 'CreateSubscriptionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9499
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9500
             'Parameters:' + str(self.Parameters) + ')'
9501
    
9502 1
    __repr__ = __str__
9503
    
9504 1
class CreateSubscriptionResult(FrozenClass):
9505
    '''
9506
    :ivar SubscriptionId: 
9507
    :vartype SubscriptionId: UInt32 
9508
    :ivar RevisedPublishingInterval: 
9509
    :vartype RevisedPublishingInterval: Double 
9510
    :ivar RevisedLifetimeCount: 
9511
    :vartype RevisedLifetimeCount: UInt32 
9512
    :ivar RevisedMaxKeepAliveCount: 
9513
    :vartype RevisedMaxKeepAliveCount: UInt32 
9514
    '''
9515 1
    def __init__(self):
9516 1
        self.SubscriptionId = 0
9517 1
        self.RevisedPublishingInterval = 0
9518 1
        self.RevisedLifetimeCount = 0
9519 1
        self.RevisedMaxKeepAliveCount = 0
9520 1
        self._freeze()
9521
    
9522 1
    def to_binary(self):
9523 1
        packet = []
9524 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
9525 1
        packet.append(pack_uatype('Double', self.RevisedPublishingInterval))
9526 1
        packet.append(pack_uatype('UInt32', self.RevisedLifetimeCount))
9527 1
        packet.append(pack_uatype('UInt32', self.RevisedMaxKeepAliveCount))
9528 1
        return b''.join(packet)
9529
        
9530 1
    @staticmethod
9531
    def from_binary(data):
9532 1
        obj = CreateSubscriptionResult()
9533 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
9534 1
        obj.RevisedPublishingInterval = unpack_uatype('Double', data)
9535 1
        obj.RevisedLifetimeCount = unpack_uatype('UInt32', data)
9536 1
        obj.RevisedMaxKeepAliveCount = unpack_uatype('UInt32', data)
9537 1
        return obj
9538
    
9539 1
    def __str__(self):
9540
        return 'CreateSubscriptionResult(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
9541
             'RevisedPublishingInterval:' + str(self.RevisedPublishingInterval) + ', '  + \
9542
             'RevisedLifetimeCount:' + str(self.RevisedLifetimeCount) + ', '  + \
9543
             'RevisedMaxKeepAliveCount:' + str(self.RevisedMaxKeepAliveCount) + ')'
9544
    
9545 1
    __repr__ = __str__
9546
    
9547 1
class CreateSubscriptionResponse(FrozenClass):
9548
    '''
9549
    :ivar TypeId: 
9550
    :vartype TypeId: NodeId 
9551
    :ivar ResponseHeader: 
9552
    :vartype ResponseHeader: ResponseHeader 
9553
    :ivar Parameters: 
9554
    :vartype Parameters: CreateSubscriptionResult 
9555
    '''
9556 1
    def __init__(self):
9557 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSubscriptionResponse_Encoding_DefaultBinary)
9558 1
        self.ResponseHeader = ResponseHeader()
9559 1
        self.Parameters = CreateSubscriptionResult()
9560 1
        self._freeze()
9561
    
9562 1
    def to_binary(self):
9563 1
        packet = []
9564 1
        packet.append(self.TypeId.to_binary())
9565 1
        packet.append(self.ResponseHeader.to_binary())
9566 1
        packet.append(self.Parameters.to_binary())
9567 1
        return b''.join(packet)
9568
        
9569 1
    @staticmethod
9570
    def from_binary(data):
9571 1
        obj = CreateSubscriptionResponse()
9572 1
        obj.TypeId = NodeId.from_binary(data)
9573 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9574 1
        obj.Parameters = CreateSubscriptionResult.from_binary(data)
9575 1
        return obj
9576
    
9577 1
    def __str__(self):
9578
        return 'CreateSubscriptionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9579
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9580
             'Parameters:' + str(self.Parameters) + ')'
9581
    
9582 1
    __repr__ = __str__
9583
    
9584 1
class ModifySubscriptionParameters(FrozenClass):
9585
    '''
9586
    :ivar SubscriptionId: 
9587
    :vartype SubscriptionId: UInt32 
9588
    :ivar RequestedPublishingInterval: 
9589
    :vartype RequestedPublishingInterval: Double 
9590
    :ivar RequestedLifetimeCount: 
9591
    :vartype RequestedLifetimeCount: UInt32 
9592
    :ivar RequestedMaxKeepAliveCount: 
9593
    :vartype RequestedMaxKeepAliveCount: UInt32 
9594
    :ivar MaxNotificationsPerPublish: 
9595
    :vartype MaxNotificationsPerPublish: UInt32 
9596
    :ivar Priority: 
9597
    :vartype Priority: Byte 
9598
    '''
9599 1
    def __init__(self):
9600
        self.SubscriptionId = 0
9601
        self.RequestedPublishingInterval = 0
9602
        self.RequestedLifetimeCount = 0
9603
        self.RequestedMaxKeepAliveCount = 0
9604
        self.MaxNotificationsPerPublish = 0
9605
        self.Priority = 0
9606
        self._freeze()
9607
    
9608 1
    def to_binary(self):
9609
        packet = []
9610
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
9611
        packet.append(pack_uatype('Double', self.RequestedPublishingInterval))
9612
        packet.append(pack_uatype('UInt32', self.RequestedLifetimeCount))
9613
        packet.append(pack_uatype('UInt32', self.RequestedMaxKeepAliveCount))
9614
        packet.append(pack_uatype('UInt32', self.MaxNotificationsPerPublish))
9615
        packet.append(pack_uatype('Byte', self.Priority))
9616
        return b''.join(packet)
9617
        
9618 1
    @staticmethod
9619
    def from_binary(data):
9620
        obj = ModifySubscriptionParameters()
9621
        obj.SubscriptionId = unpack_uatype('UInt32', data)
9622
        obj.RequestedPublishingInterval = unpack_uatype('Double', data)
9623
        obj.RequestedLifetimeCount = unpack_uatype('UInt32', data)
9624
        obj.RequestedMaxKeepAliveCount = unpack_uatype('UInt32', data)
9625
        obj.MaxNotificationsPerPublish = unpack_uatype('UInt32', data)
9626
        obj.Priority = unpack_uatype('Byte', data)
9627
        return obj
9628
    
9629 1
    def __str__(self):
9630
        return 'ModifySubscriptionParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
9631
             'RequestedPublishingInterval:' + str(self.RequestedPublishingInterval) + ', '  + \
9632
             'RequestedLifetimeCount:' + str(self.RequestedLifetimeCount) + ', '  + \
9633
             'RequestedMaxKeepAliveCount:' + str(self.RequestedMaxKeepAliveCount) + ', '  + \
9634
             'MaxNotificationsPerPublish:' + str(self.MaxNotificationsPerPublish) + ', '  + \
9635
             'Priority:' + str(self.Priority) + ')'
9636
    
9637 1
    __repr__ = __str__
9638
    
9639 1
class ModifySubscriptionRequest(FrozenClass):
9640
    '''
9641
    :ivar TypeId: 
9642
    :vartype TypeId: NodeId 
9643
    :ivar RequestHeader: 
9644
    :vartype RequestHeader: RequestHeader 
9645
    :ivar Parameters: 
9646
    :vartype Parameters: ModifySubscriptionParameters 
9647
    '''
9648 1
    def __init__(self):
9649
        self.TypeId = FourByteNodeId(ObjectIds.ModifySubscriptionRequest_Encoding_DefaultBinary)
9650
        self.RequestHeader = RequestHeader()
9651
        self.Parameters = ModifySubscriptionParameters()
9652
        self._freeze()
9653
    
9654 1
    def to_binary(self):
9655
        packet = []
9656
        packet.append(self.TypeId.to_binary())
9657
        packet.append(self.RequestHeader.to_binary())
9658
        packet.append(self.Parameters.to_binary())
9659
        return b''.join(packet)
9660
        
9661 1
    @staticmethod
9662
    def from_binary(data):
9663
        obj = ModifySubscriptionRequest()
9664
        obj.TypeId = NodeId.from_binary(data)
9665
        obj.RequestHeader = RequestHeader.from_binary(data)
9666
        obj.Parameters = ModifySubscriptionParameters.from_binary(data)
9667
        return obj
9668
    
9669 1
    def __str__(self):
9670
        return 'ModifySubscriptionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9671
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9672
             'Parameters:' + str(self.Parameters) + ')'
9673
    
9674 1
    __repr__ = __str__
9675
    
9676 1
class ModifySubscriptionResult(FrozenClass):
9677
    '''
9678
    :ivar RevisedPublishingInterval: 
9679
    :vartype RevisedPublishingInterval: Double 
9680
    :ivar RevisedLifetimeCount: 
9681
    :vartype RevisedLifetimeCount: UInt32 
9682
    :ivar RevisedMaxKeepAliveCount: 
9683
    :vartype RevisedMaxKeepAliveCount: UInt32 
9684
    '''
9685 1
    def __init__(self):
9686
        self.RevisedPublishingInterval = 0
9687
        self.RevisedLifetimeCount = 0
9688
        self.RevisedMaxKeepAliveCount = 0
9689
        self._freeze()
9690
    
9691 1
    def to_binary(self):
9692
        packet = []
9693
        packet.append(pack_uatype('Double', self.RevisedPublishingInterval))
9694
        packet.append(pack_uatype('UInt32', self.RevisedLifetimeCount))
9695
        packet.append(pack_uatype('UInt32', self.RevisedMaxKeepAliveCount))
9696
        return b''.join(packet)
9697
        
9698 1
    @staticmethod
9699
    def from_binary(data):
9700
        obj = ModifySubscriptionResult()
9701
        obj.RevisedPublishingInterval = unpack_uatype('Double', data)
9702
        obj.RevisedLifetimeCount = unpack_uatype('UInt32', data)
9703
        obj.RevisedMaxKeepAliveCount = unpack_uatype('UInt32', data)
9704
        return obj
9705
    
9706 1
    def __str__(self):
9707
        return 'ModifySubscriptionResult(' + 'RevisedPublishingInterval:' + str(self.RevisedPublishingInterval) + ', '  + \
9708
             'RevisedLifetimeCount:' + str(self.RevisedLifetimeCount) + ', '  + \
9709
             'RevisedMaxKeepAliveCount:' + str(self.RevisedMaxKeepAliveCount) + ')'
9710
    
9711 1
    __repr__ = __str__
9712
    
9713 1
class ModifySubscriptionResponse(FrozenClass):
9714
    '''
9715
    :ivar TypeId: 
9716
    :vartype TypeId: NodeId 
9717
    :ivar ResponseHeader: 
9718
    :vartype ResponseHeader: ResponseHeader 
9719
    :ivar Parameters: 
9720
    :vartype Parameters: ModifySubscriptionResult 
9721
    '''
9722 1
    def __init__(self):
9723
        self.TypeId = FourByteNodeId(ObjectIds.ModifySubscriptionResponse_Encoding_DefaultBinary)
9724
        self.ResponseHeader = ResponseHeader()
9725
        self.Parameters = ModifySubscriptionResult()
9726
        self._freeze()
9727
    
9728 1
    def to_binary(self):
9729
        packet = []
9730
        packet.append(self.TypeId.to_binary())
9731
        packet.append(self.ResponseHeader.to_binary())
9732
        packet.append(self.Parameters.to_binary())
9733
        return b''.join(packet)
9734
        
9735 1
    @staticmethod
9736
    def from_binary(data):
9737
        obj = ModifySubscriptionResponse()
9738
        obj.TypeId = NodeId.from_binary(data)
9739
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9740
        obj.Parameters = ModifySubscriptionResult.from_binary(data)
9741
        return obj
9742
    
9743 1
    def __str__(self):
9744
        return 'ModifySubscriptionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9745
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9746
             'Parameters:' + str(self.Parameters) + ')'
9747
    
9748 1
    __repr__ = __str__
9749
    
9750 1
class SetPublishingModeParameters(FrozenClass):
9751
    '''
9752
    :ivar PublishingEnabled: 
9753
    :vartype PublishingEnabled: Boolean 
9754
    :ivar SubscriptionIds: 
9755
    :vartype SubscriptionIds: UInt32 
9756
    '''
9757 1
    def __init__(self):
9758
        self.PublishingEnabled = True
9759
        self.SubscriptionIds = []
9760
        self._freeze()
9761
    
9762 1
    def to_binary(self):
9763
        packet = []
9764
        packet.append(pack_uatype('Boolean', self.PublishingEnabled))
9765
        packet.append(struct.pack('<i', len(self.SubscriptionIds)))
9766
        for fieldname in self.SubscriptionIds:
9767
            packet.append(pack_uatype('UInt32', fieldname))
9768
        return b''.join(packet)
9769
        
9770 1
    @staticmethod
9771
    def from_binary(data):
9772
        obj = SetPublishingModeParameters()
9773
        obj.PublishingEnabled = unpack_uatype('Boolean', data)
9774
        obj.SubscriptionIds = unpack_uatype_array('UInt32', data)
9775
        return obj
9776
    
9777 1
    def __str__(self):
9778
        return 'SetPublishingModeParameters(' + 'PublishingEnabled:' + str(self.PublishingEnabled) + ', '  + \
9779
             'SubscriptionIds:' + str(self.SubscriptionIds) + ')'
9780
    
9781 1
    __repr__ = __str__
9782
    
9783 1
class SetPublishingModeRequest(FrozenClass):
9784
    '''
9785
    :ivar TypeId: 
9786
    :vartype TypeId: NodeId 
9787
    :ivar RequestHeader: 
9788
    :vartype RequestHeader: RequestHeader 
9789
    :ivar Parameters: 
9790
    :vartype Parameters: SetPublishingModeParameters 
9791
    '''
9792 1
    def __init__(self):
9793
        self.TypeId = FourByteNodeId(ObjectIds.SetPublishingModeRequest_Encoding_DefaultBinary)
9794
        self.RequestHeader = RequestHeader()
9795
        self.Parameters = SetPublishingModeParameters()
9796
        self._freeze()
9797
    
9798 1
    def to_binary(self):
9799
        packet = []
9800
        packet.append(self.TypeId.to_binary())
9801
        packet.append(self.RequestHeader.to_binary())
9802
        packet.append(self.Parameters.to_binary())
9803
        return b''.join(packet)
9804
        
9805 1
    @staticmethod
9806
    def from_binary(data):
9807
        obj = SetPublishingModeRequest()
9808
        obj.TypeId = NodeId.from_binary(data)
9809
        obj.RequestHeader = RequestHeader.from_binary(data)
9810
        obj.Parameters = SetPublishingModeParameters.from_binary(data)
9811
        return obj
9812
    
9813 1
    def __str__(self):
9814
        return 'SetPublishingModeRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9815
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9816
             'Parameters:' + str(self.Parameters) + ')'
9817
    
9818 1
    __repr__ = __str__
9819
    
9820 1
class SetPublishingModeResult(FrozenClass):
9821
    '''
9822
    :ivar Results: 
9823
    :vartype Results: StatusCode 
9824
    :ivar DiagnosticInfos: 
9825
    :vartype DiagnosticInfos: DiagnosticInfo 
9826
    '''
9827 1
    def __init__(self):
9828
        self.Results = []
9829
        self.DiagnosticInfos = []
9830
        self._freeze()
9831
    
9832 1
    def to_binary(self):
9833
        packet = []
9834
        packet.append(struct.pack('<i', len(self.Results)))
9835
        for fieldname in self.Results:
9836
            packet.append(fieldname.to_binary())
9837
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
9838
        for fieldname in self.DiagnosticInfos:
9839
            packet.append(fieldname.to_binary())
9840
        return b''.join(packet)
9841
        
9842 1
    @staticmethod
9843
    def from_binary(data):
9844
        obj = SetPublishingModeResult()
9845
        length = struct.unpack('<i', data.read(4))[0]
9846
        if length != -1:
9847
            for _ in range(0, length):
9848
                obj.Results.append(StatusCode.from_binary(data))
9849
        length = struct.unpack('<i', data.read(4))[0]
9850
        if length != -1:
9851
            for _ in range(0, length):
9852
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
9853
        return obj
9854
    
9855 1
    def __str__(self):
9856
        return 'SetPublishingModeResult(' + 'Results:' + str(self.Results) + ', '  + \
9857
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9858
    
9859 1
    __repr__ = __str__
9860
    
9861 1
class SetPublishingModeResponse(FrozenClass):
9862
    '''
9863
    :ivar TypeId: 
9864
    :vartype TypeId: NodeId 
9865
    :ivar ResponseHeader: 
9866
    :vartype ResponseHeader: ResponseHeader 
9867
    :ivar Parameters: 
9868
    :vartype Parameters: SetPublishingModeResult 
9869
    '''
9870 1
    def __init__(self):
9871
        self.TypeId = FourByteNodeId(ObjectIds.SetPublishingModeResponse_Encoding_DefaultBinary)
9872
        self.ResponseHeader = ResponseHeader()
9873
        self.Parameters = SetPublishingModeResult()
9874
        self._freeze()
9875
    
9876 1
    def to_binary(self):
9877
        packet = []
9878
        packet.append(self.TypeId.to_binary())
9879
        packet.append(self.ResponseHeader.to_binary())
9880
        packet.append(self.Parameters.to_binary())
9881
        return b''.join(packet)
9882
        
9883 1
    @staticmethod
9884
    def from_binary(data):
9885
        obj = SetPublishingModeResponse()
9886
        obj.TypeId = NodeId.from_binary(data)
9887
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9888
        obj.Parameters = SetPublishingModeResult.from_binary(data)
9889
        return obj
9890
    
9891 1
    def __str__(self):
9892
        return 'SetPublishingModeResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9893
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9894
             'Parameters:' + str(self.Parameters) + ')'
9895
    
9896 1
    __repr__ = __str__
9897
    
9898 1
class NotificationMessage(FrozenClass):
9899
    '''
9900
    :ivar SequenceNumber: 
9901
    :vartype SequenceNumber: UInt32 
9902
    :ivar PublishTime: 
9903
    :vartype PublishTime: DateTime 
9904
    :ivar NotificationData: 
9905
    :vartype NotificationData: ExtensionObject 
9906
    '''
9907 1
    def __init__(self):
9908 1
        self.SequenceNumber = 0
9909 1
        self.PublishTime = datetime.now()
9910 1
        self.NotificationData = []
9911 1
        self._freeze()
9912
    
9913 1
    def to_binary(self):
9914 1
        packet = []
9915 1
        packet.append(pack_uatype('UInt32', self.SequenceNumber))
9916 1
        packet.append(pack_uatype('DateTime', self.PublishTime))
9917 1
        packet.append(struct.pack('<i', len(self.NotificationData)))
9918 1
        for fieldname in self.NotificationData:
9919 1
            packet.append(fieldname.to_binary())
9920 1
        return b''.join(packet)
9921
        
9922 1
    @staticmethod
9923
    def from_binary(data):
9924 1
        obj = NotificationMessage()
9925 1
        obj.SequenceNumber = unpack_uatype('UInt32', data)
9926 1
        obj.PublishTime = unpack_uatype('DateTime', data)
9927 1
        length = struct.unpack('<i', data.read(4))[0]
9928 1
        if length != -1:
9929 1
            for _ in range(0, length):
9930 1
                obj.NotificationData.append(ExtensionObject.from_binary(data))
9931 1
        return obj
9932
    
9933 1
    def __str__(self):
9934
        return 'NotificationMessage(' + 'SequenceNumber:' + str(self.SequenceNumber) + ', '  + \
9935
             'PublishTime:' + str(self.PublishTime) + ', '  + \
9936
             'NotificationData:' + str(self.NotificationData) + ')'
9937
    
9938 1
    __repr__ = __str__
9939
    
9940 1
class NotificationData(FrozenClass):
9941
    '''
9942
    :ivar TypeId: 
9943
    :vartype TypeId: NodeId 
9944
    :ivar Encoding: 
9945
    :vartype Encoding: UInt8 
9946
    :ivar Body: 
9947
    :vartype Body: ByteString 
9948
    '''
9949 1
    def __init__(self):
9950
        self.TypeId = FourByteNodeId(ObjectIds.NotificationData_Encoding_DefaultBinary)
9951
        self.Encoding = 0
9952
        self.Body = b''
9953
        self._freeze()
9954
    
9955 1
    def to_binary(self):
9956
        packet = []
9957
        if self.Body: self.Encoding |= (1 << 0)
9958
        packet.append(self.TypeId.to_binary())
9959
        packet.append(pack_uatype('UInt8', self.Encoding))
9960
        if self.Body: 
9961
            packet.append(pack_uatype('ByteString', self.Body))
9962
        return b''.join(packet)
9963
        
9964 1
    @staticmethod
9965
    def from_binary(data):
9966
        obj = NotificationData()
9967
        obj.TypeId = NodeId.from_binary(data)
9968
        obj.Encoding = unpack_uatype('UInt8', data)
9969
        if obj.Encoding & (1 << 0):
9970
            obj.Body = unpack_uatype('ByteString', data)
9971
        return obj
9972
    
9973 1
    def __str__(self):
9974
        return 'NotificationData(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9975
             'Encoding:' + str(self.Encoding) + ', '  + \
9976
             'Body:' + str(self.Body) + ')'
9977
    
9978 1
    __repr__ = __str__
9979
    
9980 1
class DataChangeNotification(FrozenClass):
9981
    '''
9982
    :ivar TypeId: 
9983
    :vartype TypeId: NodeId 
9984
    :ivar Encoding: 
9985
    :vartype Encoding: UInt8 
9986
    :ivar BodyLength: 
9987
    :vartype BodyLength: Int32 
9988
    :ivar MonitoredItems: 
9989
    :vartype MonitoredItems: MonitoredItemNotification 
9990
    :ivar DiagnosticInfos: 
9991
    :vartype DiagnosticInfos: DiagnosticInfo 
9992
    '''
9993 1
    def __init__(self):
9994 1
        self.TypeId = FourByteNodeId(ObjectIds.DataChangeNotification_Encoding_DefaultBinary)
9995 1
        self.Encoding = 1
9996 1
        self.BodyLength = 0
9997 1
        self.MonitoredItems = []
9998 1
        self.DiagnosticInfos = []
9999 1
        self._freeze()
10000
    
10001 1
    def to_binary(self):
10002 1
        packet = []
10003 1
        body = []
10004 1
        packet.append(self.TypeId.to_binary())
10005 1
        packet.append(pack_uatype('UInt8', self.Encoding))
10006 1
        body.append(struct.pack('<i', len(self.MonitoredItems)))
10007 1
        for fieldname in self.MonitoredItems:
10008 1
            body.append(fieldname.to_binary())
10009 1
        body.append(struct.pack('<i', len(self.DiagnosticInfos)))
10010 1
        for fieldname in self.DiagnosticInfos:
10011
            body.append(fieldname.to_binary())
10012 1
        body = b''.join(body)
10013 1
        packet.append(struct.pack('<i', len(body)))
10014 1
        packet.append(body)
10015 1
        return b''.join(packet)
10016
        
10017 1
    @staticmethod
10018
    def from_binary(data):
10019 1
        obj = DataChangeNotification()
10020 1
        obj.TypeId = NodeId.from_binary(data)
10021 1
        obj.Encoding = unpack_uatype('UInt8', data)
10022 1
        obj.BodyLength = unpack_uatype('Int32', data)
10023 1
        length = struct.unpack('<i', data.read(4))[0]
10024 1
        if length != -1:
10025 1
            for _ in range(0, length):
10026 1
                obj.MonitoredItems.append(MonitoredItemNotification.from_binary(data))
10027 1
        length = struct.unpack('<i', data.read(4))[0]
10028 1
        if length != -1:
10029 1
            for _ in range(0, length):
10030
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
10031 1
        return obj
10032
    
10033 1
    def __str__(self):
10034
        return 'DataChangeNotification(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10035
             'Encoding:' + str(self.Encoding) + ', '  + \
10036
             'BodyLength:' + str(self.BodyLength) + ', '  + \
10037
             'MonitoredItems:' + str(self.MonitoredItems) + ', '  + \
10038
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10039
    
10040 1
    __repr__ = __str__
10041
    
10042 1
class MonitoredItemNotification(FrozenClass):
10043
    '''
10044
    :ivar ClientHandle: 
10045
    :vartype ClientHandle: UInt32 
10046
    :ivar Value: 
10047
    :vartype Value: DataValue 
10048
    '''
10049 1
    def __init__(self):
10050 1
        self.ClientHandle = 0
10051 1
        self.Value = DataValue()
10052 1
        self._freeze()
10053
    
10054 1
    def to_binary(self):
10055 1
        packet = []
10056 1
        packet.append(pack_uatype('UInt32', self.ClientHandle))
10057 1
        packet.append(self.Value.to_binary())
10058 1
        return b''.join(packet)
10059
        
10060 1
    @staticmethod
10061
    def from_binary(data):
10062 1
        obj = MonitoredItemNotification()
10063 1
        obj.ClientHandle = unpack_uatype('UInt32', data)
10064 1
        obj.Value = DataValue.from_binary(data)
10065 1
        return obj
10066
    
10067 1
    def __str__(self):
10068
        return 'MonitoredItemNotification(' + 'ClientHandle:' + str(self.ClientHandle) + ', '  + \
10069
             'Value:' + str(self.Value) + ')'
10070
    
10071 1
    __repr__ = __str__
10072
    
10073 1
class EventNotificationList(FrozenClass):
10074
    '''
10075
    :ivar TypeId: 
10076
    :vartype TypeId: NodeId 
10077
    :ivar Encoding: 
10078
    :vartype Encoding: UInt8 
10079
    :ivar BodyLength: 
10080
    :vartype BodyLength: Int32 
10081
    :ivar Events: 
10082
    :vartype Events: EventFieldList 
10083
    '''
10084 1
    def __init__(self):
10085 1
        self.TypeId = FourByteNodeId(ObjectIds.EventNotificationList_Encoding_DefaultBinary)
10086 1
        self.Encoding = 1
10087 1
        self.BodyLength = 0
10088 1
        self.Events = []
10089 1
        self._freeze()
10090
    
10091 1
    def to_binary(self):
10092 1
        packet = []
10093 1
        body = []
10094 1
        packet.append(self.TypeId.to_binary())
10095 1
        packet.append(pack_uatype('UInt8', self.Encoding))
10096 1
        body.append(struct.pack('<i', len(self.Events)))
10097 1
        for fieldname in self.Events:
10098 1
            body.append(fieldname.to_binary())
10099 1
        body = b''.join(body)
10100 1
        packet.append(struct.pack('<i', len(body)))
10101 1
        packet.append(body)
10102 1
        return b''.join(packet)
10103
        
10104 1
    @staticmethod
10105
    def from_binary(data):
10106 1
        obj = EventNotificationList()
10107 1
        obj.TypeId = NodeId.from_binary(data)
10108 1
        obj.Encoding = unpack_uatype('UInt8', data)
10109 1
        obj.BodyLength = unpack_uatype('Int32', data)
10110 1
        length = struct.unpack('<i', data.read(4))[0]
10111 1
        if length != -1:
10112 1
            for _ in range(0, length):
10113 1
                obj.Events.append(EventFieldList.from_binary(data))
10114 1
        return obj
10115
    
10116 1
    def __str__(self):
10117
        return 'EventNotificationList(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10118
             'Encoding:' + str(self.Encoding) + ', '  + \
10119
             'BodyLength:' + str(self.BodyLength) + ', '  + \
10120
             'Events:' + str(self.Events) + ')'
10121
    
10122 1
    __repr__ = __str__
10123
    
10124 1
class EventFieldList(FrozenClass):
10125
    '''
10126
    :ivar ClientHandle: 
10127
    :vartype ClientHandle: UInt32 
10128
    :ivar EventFields: 
10129
    :vartype EventFields: Variant 
10130
    '''
10131 1
    def __init__(self):
10132 1
        self.ClientHandle = 0
10133 1
        self.EventFields = []
10134 1
        self._freeze()
10135
    
10136 1
    def to_binary(self):
10137 1
        packet = []
10138 1
        packet.append(pack_uatype('UInt32', self.ClientHandle))
10139 1
        packet.append(struct.pack('<i', len(self.EventFields)))
10140 1
        for fieldname in self.EventFields:
10141 1
            packet.append(fieldname.to_binary())
10142 1
        return b''.join(packet)
10143
        
10144 1
    @staticmethod
10145
    def from_binary(data):
10146 1
        obj = EventFieldList()
10147 1
        obj.ClientHandle = unpack_uatype('UInt32', data)
10148 1
        length = struct.unpack('<i', data.read(4))[0]
10149 1
        if length != -1:
10150 1
            for _ in range(0, length):
10151 1
                obj.EventFields.append(Variant.from_binary(data))
10152 1
        return obj
10153
    
10154 1
    def __str__(self):
10155
        return 'EventFieldList(' + 'ClientHandle:' + str(self.ClientHandle) + ', '  + \
10156
             'EventFields:' + str(self.EventFields) + ')'
10157
    
10158 1
    __repr__ = __str__
10159
    
10160 1
class HistoryEventFieldList(FrozenClass):
10161
    '''
10162
    :ivar EventFields: 
10163
    :vartype EventFields: Variant 
10164
    '''
10165 1
    def __init__(self):
10166
        self.EventFields = []
10167
        self._freeze()
10168
    
10169 1
    def to_binary(self):
10170
        packet = []
10171
        packet.append(struct.pack('<i', len(self.EventFields)))
10172
        for fieldname in self.EventFields:
10173
            packet.append(fieldname.to_binary())
10174
        return b''.join(packet)
10175
        
10176 1
    @staticmethod
10177
    def from_binary(data):
10178
        obj = HistoryEventFieldList()
10179
        length = struct.unpack('<i', data.read(4))[0]
10180
        if length != -1:
10181
            for _ in range(0, length):
10182
                obj.EventFields.append(Variant.from_binary(data))
10183
        return obj
10184
    
10185 1
    def __str__(self):
10186
        return 'HistoryEventFieldList(' + 'EventFields:' + str(self.EventFields) + ')'
10187
    
10188 1
    __repr__ = __str__
10189
    
10190 1
class StatusChangeNotification(FrozenClass):
10191
    '''
10192
    :ivar TypeId: 
10193
    :vartype TypeId: NodeId 
10194
    :ivar Encoding: 
10195
    :vartype Encoding: UInt8 
10196
    :ivar BodyLength: 
10197
    :vartype BodyLength: Int32 
10198
    :ivar Status: 
10199
    :vartype Status: StatusCode 
10200
    :ivar DiagnosticInfo: 
10201
    :vartype DiagnosticInfo: DiagnosticInfo 
10202
    '''
10203 1
    def __init__(self):
10204
        self.TypeId = FourByteNodeId(ObjectIds.StatusChangeNotification_Encoding_DefaultBinary)
10205
        self.Encoding = 1
10206
        self.BodyLength = 0
10207
        self.Status = StatusCode()
10208
        self.DiagnosticInfo = DiagnosticInfo()
10209
        self._freeze()
10210
    
10211 1
    def to_binary(self):
10212
        packet = []
10213
        body = []
10214
        packet.append(self.TypeId.to_binary())
10215
        packet.append(pack_uatype('UInt8', self.Encoding))
10216
        body.append(self.Status.to_binary())
10217
        body.append(self.DiagnosticInfo.to_binary())
10218
        body = b''.join(body)
10219
        packet.append(struct.pack('<i', len(body)))
10220
        packet.append(body)
10221
        return b''.join(packet)
10222
        
10223 1
    @staticmethod
10224
    def from_binary(data):
10225
        obj = StatusChangeNotification()
10226
        obj.TypeId = NodeId.from_binary(data)
10227
        obj.Encoding = unpack_uatype('UInt8', data)
10228
        obj.BodyLength = unpack_uatype('Int32', data)
10229
        obj.Status = StatusCode.from_binary(data)
10230
        obj.DiagnosticInfo = DiagnosticInfo.from_binary(data)
10231
        return obj
10232
    
10233 1
    def __str__(self):
10234
        return 'StatusChangeNotification(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10235
             'Encoding:' + str(self.Encoding) + ', '  + \
10236
             'BodyLength:' + str(self.BodyLength) + ', '  + \
10237
             'Status:' + str(self.Status) + ', '  + \
10238
             'DiagnosticInfo:' + str(self.DiagnosticInfo) + ')'
10239
    
10240 1
    __repr__ = __str__
10241
    
10242 1
class SubscriptionAcknowledgement(FrozenClass):
10243
    '''
10244
    :ivar SubscriptionId: 
10245
    :vartype SubscriptionId: UInt32 
10246
    :ivar SequenceNumber: 
10247
    :vartype SequenceNumber: UInt32 
10248
    '''
10249 1
    def __init__(self):
10250 1
        self.SubscriptionId = 0
10251 1
        self.SequenceNumber = 0
10252 1
        self._freeze()
10253
    
10254 1
    def to_binary(self):
10255 1
        packet = []
10256 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
10257 1
        packet.append(pack_uatype('UInt32', self.SequenceNumber))
10258 1
        return b''.join(packet)
10259
        
10260 1
    @staticmethod
10261
    def from_binary(data):
10262 1
        obj = SubscriptionAcknowledgement()
10263 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
10264 1
        obj.SequenceNumber = unpack_uatype('UInt32', data)
10265 1
        return obj
10266
    
10267 1
    def __str__(self):
10268
        return 'SubscriptionAcknowledgement(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
10269
             'SequenceNumber:' + str(self.SequenceNumber) + ')'
10270
    
10271 1
    __repr__ = __str__
10272
    
10273 1
class PublishParameters(FrozenClass):
10274
    '''
10275
    :ivar SubscriptionAcknowledgements: 
10276
    :vartype SubscriptionAcknowledgements: SubscriptionAcknowledgement 
10277
    '''
10278 1
    def __init__(self):
10279 1
        self.SubscriptionAcknowledgements = []
10280 1
        self._freeze()
10281
    
10282 1
    def to_binary(self):
10283 1
        packet = []
10284 1
        packet.append(struct.pack('<i', len(self.SubscriptionAcknowledgements)))
10285 1
        for fieldname in self.SubscriptionAcknowledgements:
10286 1
            packet.append(fieldname.to_binary())
10287 1
        return b''.join(packet)
10288
        
10289 1
    @staticmethod
10290
    def from_binary(data):
10291 1
        obj = PublishParameters()
10292 1
        length = struct.unpack('<i', data.read(4))[0]
10293 1
        if length != -1:
10294 1
            for _ in range(0, length):
10295 1
                obj.SubscriptionAcknowledgements.append(SubscriptionAcknowledgement.from_binary(data))
10296 1
        return obj
10297
    
10298 1
    def __str__(self):
10299
        return 'PublishParameters(' + 'SubscriptionAcknowledgements:' + str(self.SubscriptionAcknowledgements) + ')'
10300
    
10301 1
    __repr__ = __str__
10302
    
10303 1
class PublishRequest(FrozenClass):
10304
    '''
10305
    :ivar TypeId: 
10306
    :vartype TypeId: NodeId 
10307
    :ivar RequestHeader: 
10308
    :vartype RequestHeader: RequestHeader 
10309
    :ivar Parameters: 
10310
    :vartype Parameters: PublishParameters 
10311
    '''
10312 1
    def __init__(self):
10313 1
        self.TypeId = FourByteNodeId(ObjectIds.PublishRequest_Encoding_DefaultBinary)
10314 1
        self.RequestHeader = RequestHeader()
10315 1
        self.Parameters = PublishParameters()
10316 1
        self._freeze()
10317
    
10318 1
    def to_binary(self):
10319 1
        packet = []
10320 1
        packet.append(self.TypeId.to_binary())
10321 1
        packet.append(self.RequestHeader.to_binary())
10322 1
        packet.append(self.Parameters.to_binary())
10323 1
        return b''.join(packet)
10324
        
10325 1
    @staticmethod
10326
    def from_binary(data):
10327
        obj = PublishRequest()
10328
        obj.TypeId = NodeId.from_binary(data)
10329
        obj.RequestHeader = RequestHeader.from_binary(data)
10330
        obj.Parameters = PublishParameters.from_binary(data)
10331
        return obj
10332
    
10333 1
    def __str__(self):
10334
        return 'PublishRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10335
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
10336
             'Parameters:' + str(self.Parameters) + ')'
10337
    
10338 1
    __repr__ = __str__
10339
    
10340 1
class PublishResult(FrozenClass):
10341
    '''
10342
    :ivar SubscriptionId: 
10343
    :vartype SubscriptionId: UInt32 
10344
    :ivar AvailableSequenceNumbers: 
10345
    :vartype AvailableSequenceNumbers: UInt32 
10346
    :ivar MoreNotifications: 
10347
    :vartype MoreNotifications: Boolean 
10348
    :ivar NotificationMessage: 
10349
    :vartype NotificationMessage: NotificationMessage 
10350
    :ivar Results: 
10351
    :vartype Results: StatusCode 
10352
    :ivar DiagnosticInfos: 
10353
    :vartype DiagnosticInfos: DiagnosticInfo 
10354
    '''
10355 1
    def __init__(self):
10356 1
        self.SubscriptionId = 0
10357 1
        self.AvailableSequenceNumbers = []
10358 1
        self.MoreNotifications = True
10359 1
        self.NotificationMessage = NotificationMessage()
10360 1
        self.Results = []
10361 1
        self.DiagnosticInfos = []
10362 1
        self._freeze()
10363
    
10364 1
    def to_binary(self):
10365 1
        packet = []
10366 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
10367 1
        packet.append(struct.pack('<i', len(self.AvailableSequenceNumbers)))
10368 1
        for fieldname in self.AvailableSequenceNumbers:
10369 1
            packet.append(pack_uatype('UInt32', fieldname))
10370 1
        packet.append(pack_uatype('Boolean', self.MoreNotifications))
10371 1
        packet.append(self.NotificationMessage.to_binary())
10372 1
        packet.append(struct.pack('<i', len(self.Results)))
10373 1
        for fieldname in self.Results:
10374
            packet.append(fieldname.to_binary())
10375 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
10376 1
        for fieldname in self.DiagnosticInfos:
10377
            packet.append(fieldname.to_binary())
10378 1
        return b''.join(packet)
10379
        
10380 1
    @staticmethod
10381
    def from_binary(data):
10382 1
        obj = PublishResult()
10383 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
10384 1
        obj.AvailableSequenceNumbers = unpack_uatype_array('UInt32', data)
10385 1
        obj.MoreNotifications = unpack_uatype('Boolean', data)
10386 1
        obj.NotificationMessage = NotificationMessage.from_binary(data)
10387 1
        length = struct.unpack('<i', data.read(4))[0]
10388 1
        if length != -1:
10389 1
            for _ in range(0, length):
10390
                obj.Results.append(StatusCode.from_binary(data))
10391 1
        length = struct.unpack('<i', data.read(4))[0]
10392 1
        if length != -1:
10393 1
            for _ in range(0, length):
10394
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
10395 1
        return obj
10396
    
10397 1
    def __str__(self):
10398
        return 'PublishResult(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
10399
             'AvailableSequenceNumbers:' + str(self.AvailableSequenceNumbers) + ', '  + \
10400
             'MoreNotifications:' + str(self.MoreNotifications) + ', '  + \
10401
             'NotificationMessage:' + str(self.NotificationMessage) + ', '  + \
10402
             'Results:' + str(self.Results) + ', '  + \
10403
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10404
    
10405 1
    __repr__ = __str__
10406
    
10407 1
class PublishResponse(FrozenClass):
10408
    '''
10409
    :ivar TypeId: 
10410
    :vartype TypeId: NodeId 
10411
    :ivar ResponseHeader: 
10412
    :vartype ResponseHeader: ResponseHeader 
10413
    :ivar Parameters: 
10414
    :vartype Parameters: PublishResult 
10415
    '''
10416 1
    def __init__(self):
10417 1
        self.TypeId = FourByteNodeId(ObjectIds.PublishResponse_Encoding_DefaultBinary)
10418 1
        self.ResponseHeader = ResponseHeader()
10419 1
        self.Parameters = PublishResult()
10420 1
        self._freeze()
10421
    
10422 1
    def to_binary(self):
10423 1
        packet = []
10424 1
        packet.append(self.TypeId.to_binary())
10425 1
        packet.append(self.ResponseHeader.to_binary())
10426 1
        packet.append(self.Parameters.to_binary())
10427 1
        return b''.join(packet)
10428
        
10429 1
    @staticmethod
10430
    def from_binary(data):
10431 1
        obj = PublishResponse()
10432 1
        obj.TypeId = NodeId.from_binary(data)
10433 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
10434 1
        obj.Parameters = PublishResult.from_binary(data)
10435 1
        return obj
10436
    
10437 1
    def __str__(self):
10438
        return 'PublishResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10439
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
10440
             'Parameters:' + str(self.Parameters) + ')'
10441
    
10442 1
    __repr__ = __str__
10443
    
10444 1
class RepublishParameters(FrozenClass):
10445
    '''
10446
    :ivar SubscriptionId: 
10447
    :vartype SubscriptionId: UInt32 
10448
    :ivar RetransmitSequenceNumber: 
10449
    :vartype RetransmitSequenceNumber: UInt32 
10450
    '''
10451 1
    def __init__(self):
10452
        self.SubscriptionId = 0
10453
        self.RetransmitSequenceNumber = 0
10454
        self._freeze()
10455
    
10456 1
    def to_binary(self):
10457
        packet = []
10458
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
10459
        packet.append(pack_uatype('UInt32', self.RetransmitSequenceNumber))
10460
        return b''.join(packet)
10461
        
10462 1
    @staticmethod
10463
    def from_binary(data):
10464
        obj = RepublishParameters()
10465
        obj.SubscriptionId = unpack_uatype('UInt32', data)
10466
        obj.RetransmitSequenceNumber = unpack_uatype('UInt32', data)
10467
        return obj
10468
    
10469 1
    def __str__(self):
10470
        return 'RepublishParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
10471
             'RetransmitSequenceNumber:' + str(self.RetransmitSequenceNumber) + ')'
10472
    
10473 1
    __repr__ = __str__
10474
    
10475 1
class RepublishRequest(FrozenClass):
10476
    '''
10477
    :ivar TypeId: 
10478
    :vartype TypeId: NodeId 
10479
    :ivar RequestHeader: 
10480
    :vartype RequestHeader: RequestHeader 
10481
    :ivar Parameters: 
10482
    :vartype Parameters: RepublishParameters 
10483
    '''
10484 1
    def __init__(self):
10485
        self.TypeId = FourByteNodeId(ObjectIds.RepublishRequest_Encoding_DefaultBinary)
10486
        self.RequestHeader = RequestHeader()
10487
        self.Parameters = RepublishParameters()
10488
        self._freeze()
10489
    
10490 1
    def to_binary(self):
10491
        packet = []
10492
        packet.append(self.TypeId.to_binary())
10493
        packet.append(self.RequestHeader.to_binary())
10494
        packet.append(self.Parameters.to_binary())
10495
        return b''.join(packet)
10496
        
10497 1
    @staticmethod
10498
    def from_binary(data):
10499
        obj = RepublishRequest()
10500
        obj.TypeId = NodeId.from_binary(data)
10501
        obj.RequestHeader = RequestHeader.from_binary(data)
10502
        obj.Parameters = RepublishParameters.from_binary(data)
10503
        return obj
10504
    
10505 1
    def __str__(self):
10506
        return 'RepublishRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10507
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
10508
             'Parameters:' + str(self.Parameters) + ')'
10509
    
10510 1
    __repr__ = __str__
10511
    
10512 1
class RepublishResponse(FrozenClass):
10513
    '''
10514
    :ivar TypeId: 
10515
    :vartype TypeId: NodeId 
10516
    :ivar ResponseHeader: 
10517
    :vartype ResponseHeader: ResponseHeader 
10518
    :ivar NotificationMessage: 
10519
    :vartype NotificationMessage: NotificationMessage 
10520
    '''
10521 1
    def __init__(self):
10522
        self.TypeId = FourByteNodeId(ObjectIds.RepublishResponse_Encoding_DefaultBinary)
10523
        self.ResponseHeader = ResponseHeader()
10524
        self.NotificationMessage = NotificationMessage()
10525
        self._freeze()
10526
    
10527 1
    def to_binary(self):
10528
        packet = []
10529
        packet.append(self.TypeId.to_binary())
10530
        packet.append(self.ResponseHeader.to_binary())
10531
        packet.append(self.NotificationMessage.to_binary())
10532
        return b''.join(packet)
10533
        
10534 1
    @staticmethod
10535
    def from_binary(data):
10536
        obj = RepublishResponse()
10537
        obj.TypeId = NodeId.from_binary(data)
10538
        obj.ResponseHeader = ResponseHeader.from_binary(data)
10539
        obj.NotificationMessage = NotificationMessage.from_binary(data)
10540
        return obj
10541
    
10542 1
    def __str__(self):
10543
        return 'RepublishResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10544
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
10545
             'NotificationMessage:' + str(self.NotificationMessage) + ')'
10546
    
10547 1
    __repr__ = __str__
10548
    
10549 1
class TransferResult(FrozenClass):
10550
    '''
10551
    :ivar StatusCode: 
10552
    :vartype StatusCode: StatusCode 
10553
    :ivar AvailableSequenceNumbers: 
10554
    :vartype AvailableSequenceNumbers: UInt32 
10555
    '''
10556 1
    def __init__(self):
10557
        self.StatusCode = StatusCode()
10558
        self.AvailableSequenceNumbers = []
10559
        self._freeze()
10560
    
10561 1
    def to_binary(self):
10562
        packet = []
10563
        packet.append(self.StatusCode.to_binary())
10564
        packet.append(struct.pack('<i', len(self.AvailableSequenceNumbers)))
10565
        for fieldname in self.AvailableSequenceNumbers:
10566
            packet.append(pack_uatype('UInt32', fieldname))
10567
        return b''.join(packet)
10568
        
10569 1
    @staticmethod
10570
    def from_binary(data):
10571
        obj = TransferResult()
10572
        obj.StatusCode = StatusCode.from_binary(data)
10573
        obj.AvailableSequenceNumbers = unpack_uatype_array('UInt32', data)
10574
        return obj
10575
    
10576 1
    def __str__(self):
10577
        return 'TransferResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
10578
             'AvailableSequenceNumbers:' + str(self.AvailableSequenceNumbers) + ')'
10579
    
10580 1
    __repr__ = __str__
10581
    
10582 1
class TransferSubscriptionsParameters(FrozenClass):
10583
    '''
10584
    :ivar SubscriptionIds: 
10585
    :vartype SubscriptionIds: UInt32 
10586
    :ivar SendInitialValues: 
10587
    :vartype SendInitialValues: Boolean 
10588
    '''
10589 1
    def __init__(self):
10590
        self.SubscriptionIds = []
10591
        self.SendInitialValues = True
10592
        self._freeze()
10593
    
10594 1
    def to_binary(self):
10595
        packet = []
10596
        packet.append(struct.pack('<i', len(self.SubscriptionIds)))
10597
        for fieldname in self.SubscriptionIds:
10598
            packet.append(pack_uatype('UInt32', fieldname))
10599
        packet.append(pack_uatype('Boolean', self.SendInitialValues))
10600
        return b''.join(packet)
10601
        
10602 1
    @staticmethod
10603
    def from_binary(data):
10604
        obj = TransferSubscriptionsParameters()
10605
        obj.SubscriptionIds = unpack_uatype_array('UInt32', data)
10606
        obj.SendInitialValues = unpack_uatype('Boolean', data)
10607
        return obj
10608
    
10609 1
    def __str__(self):
10610
        return 'TransferSubscriptionsParameters(' + 'SubscriptionIds:' + str(self.SubscriptionIds) + ', '  + \
10611
             'SendInitialValues:' + str(self.SendInitialValues) + ')'
10612
    
10613 1
    __repr__ = __str__
10614
    
10615 1
class TransferSubscriptionsRequest(FrozenClass):
10616
    '''
10617
    :ivar TypeId: 
10618
    :vartype TypeId: NodeId 
10619
    :ivar RequestHeader: 
10620
    :vartype RequestHeader: RequestHeader 
10621
    :ivar Parameters: 
10622
    :vartype Parameters: TransferSubscriptionsParameters 
10623
    '''
10624 1
    def __init__(self):
10625
        self.TypeId = FourByteNodeId(ObjectIds.TransferSubscriptionsRequest_Encoding_DefaultBinary)
10626
        self.RequestHeader = RequestHeader()
10627
        self.Parameters = TransferSubscriptionsParameters()
10628
        self._freeze()
10629
    
10630 1
    def to_binary(self):
10631
        packet = []
10632
        packet.append(self.TypeId.to_binary())
10633
        packet.append(self.RequestHeader.to_binary())
10634
        packet.append(self.Parameters.to_binary())
10635
        return b''.join(packet)
10636
        
10637 1
    @staticmethod
10638
    def from_binary(data):
10639
        obj = TransferSubscriptionsRequest()
10640
        obj.TypeId = NodeId.from_binary(data)
10641
        obj.RequestHeader = RequestHeader.from_binary(data)
10642
        obj.Parameters = TransferSubscriptionsParameters.from_binary(data)
10643
        return obj
10644
    
10645 1
    def __str__(self):
10646
        return 'TransferSubscriptionsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10647
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
10648
             'Parameters:' + str(self.Parameters) + ')'
10649
    
10650 1
    __repr__ = __str__
10651
    
10652 1
class TransferSubscriptionsResult(FrozenClass):
10653
    '''
10654
    :ivar Results: 
10655
    :vartype Results: TransferResult 
10656
    :ivar DiagnosticInfos: 
10657
    :vartype DiagnosticInfos: DiagnosticInfo 
10658
    '''
10659 1
    def __init__(self):
10660
        self.Results = []
10661
        self.DiagnosticInfos = []
10662
        self._freeze()
10663
    
10664 1
    def to_binary(self):
10665
        packet = []
10666
        packet.append(struct.pack('<i', len(self.Results)))
10667
        for fieldname in self.Results:
10668
            packet.append(fieldname.to_binary())
10669
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
10670
        for fieldname in self.DiagnosticInfos:
10671
            packet.append(fieldname.to_binary())
10672
        return b''.join(packet)
10673
        
10674 1
    @staticmethod
10675
    def from_binary(data):
10676
        obj = TransferSubscriptionsResult()
10677
        length = struct.unpack('<i', data.read(4))[0]
10678
        if length != -1:
10679
            for _ in range(0, length):
10680
                obj.Results.append(TransferResult.from_binary(data))
10681
        length = struct.unpack('<i', data.read(4))[0]
10682
        if length != -1:
10683
            for _ in range(0, length):
10684
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
10685
        return obj
10686
    
10687 1
    def __str__(self):
10688
        return 'TransferSubscriptionsResult(' + 'Results:' + str(self.Results) + ', '  + \
10689
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10690
    
10691 1
    __repr__ = __str__
10692
    
10693 1
class TransferSubscriptionsResponse(FrozenClass):
10694
    '''
10695
    :ivar TypeId: 
10696
    :vartype TypeId: NodeId 
10697
    :ivar ResponseHeader: 
10698
    :vartype ResponseHeader: ResponseHeader 
10699
    :ivar Parameters: 
10700
    :vartype Parameters: TransferSubscriptionsResult 
10701
    '''
10702 1
    def __init__(self):
10703
        self.TypeId = FourByteNodeId(ObjectIds.TransferSubscriptionsResponse_Encoding_DefaultBinary)
10704
        self.ResponseHeader = ResponseHeader()
10705
        self.Parameters = TransferSubscriptionsResult()
10706
        self._freeze()
10707
    
10708 1
    def to_binary(self):
10709
        packet = []
10710
        packet.append(self.TypeId.to_binary())
10711
        packet.append(self.ResponseHeader.to_binary())
10712
        packet.append(self.Parameters.to_binary())
10713
        return b''.join(packet)
10714
        
10715 1
    @staticmethod
10716
    def from_binary(data):
10717
        obj = TransferSubscriptionsResponse()
10718
        obj.TypeId = NodeId.from_binary(data)
10719
        obj.ResponseHeader = ResponseHeader.from_binary(data)
10720
        obj.Parameters = TransferSubscriptionsResult.from_binary(data)
10721
        return obj
10722
    
10723 1
    def __str__(self):
10724
        return 'TransferSubscriptionsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10725
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
10726
             'Parameters:' + str(self.Parameters) + ')'
10727
    
10728 1
    __repr__ = __str__
10729
    
10730 1
class DeleteSubscriptionsParameters(FrozenClass):
10731
    '''
10732
    :ivar SubscriptionIds: 
10733
    :vartype SubscriptionIds: UInt32 
10734
    '''
10735 1
    def __init__(self):
10736 1
        self.SubscriptionIds = []
10737 1
        self._freeze()
10738
    
10739 1
    def to_binary(self):
10740 1
        packet = []
10741 1
        packet.append(struct.pack('<i', len(self.SubscriptionIds)))
10742 1
        for fieldname in self.SubscriptionIds:
10743 1
            packet.append(pack_uatype('UInt32', fieldname))
10744 1
        return b''.join(packet)
10745
        
10746 1
    @staticmethod
10747
    def from_binary(data):
10748 1
        obj = DeleteSubscriptionsParameters()
10749 1
        obj.SubscriptionIds = unpack_uatype_array('UInt32', data)
10750 1
        return obj
10751
    
10752 1
    def __str__(self):
10753
        return 'DeleteSubscriptionsParameters(' + 'SubscriptionIds:' + str(self.SubscriptionIds) + ')'
10754
    
10755 1
    __repr__ = __str__
10756
    
10757 1
class DeleteSubscriptionsRequest(FrozenClass):
10758
    '''
10759
    :ivar TypeId: 
10760
    :vartype TypeId: NodeId 
10761
    :ivar RequestHeader: 
10762
    :vartype RequestHeader: RequestHeader 
10763
    :ivar Parameters: 
10764
    :vartype Parameters: DeleteSubscriptionsParameters 
10765
    '''
10766 1
    def __init__(self):
10767 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteSubscriptionsRequest_Encoding_DefaultBinary)
10768 1
        self.RequestHeader = RequestHeader()
10769 1
        self.Parameters = DeleteSubscriptionsParameters()
10770 1
        self._freeze()
10771
    
10772 1
    def to_binary(self):
10773 1
        packet = []
10774 1
        packet.append(self.TypeId.to_binary())
10775 1
        packet.append(self.RequestHeader.to_binary())
10776 1
        packet.append(self.Parameters.to_binary())
10777 1
        return b''.join(packet)
10778
        
10779 1
    @staticmethod
10780
    def from_binary(data):
10781
        obj = DeleteSubscriptionsRequest()
10782
        obj.TypeId = NodeId.from_binary(data)
10783
        obj.RequestHeader = RequestHeader.from_binary(data)
10784
        obj.Parameters = DeleteSubscriptionsParameters.from_binary(data)
10785
        return obj
10786
    
10787 1
    def __str__(self):
10788
        return 'DeleteSubscriptionsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10789
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
10790
             'Parameters:' + str(self.Parameters) + ')'
10791
    
10792 1
    __repr__ = __str__
10793
    
10794 1
class DeleteSubscriptionsResponse(FrozenClass):
10795
    '''
10796
    :ivar TypeId: 
10797
    :vartype TypeId: NodeId 
10798
    :ivar ResponseHeader: 
10799
    :vartype ResponseHeader: ResponseHeader 
10800
    :ivar Results: 
10801
    :vartype Results: StatusCode 
10802
    :ivar DiagnosticInfos: 
10803
    :vartype DiagnosticInfos: DiagnosticInfo 
10804
    '''
10805 1
    def __init__(self):
10806 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteSubscriptionsResponse_Encoding_DefaultBinary)
10807 1
        self.ResponseHeader = ResponseHeader()
10808 1
        self.Results = []
10809 1
        self.DiagnosticInfos = []
10810 1
        self._freeze()
10811
    
10812 1
    def to_binary(self):
10813 1
        packet = []
10814 1
        packet.append(self.TypeId.to_binary())
10815 1
        packet.append(self.ResponseHeader.to_binary())
10816 1
        packet.append(struct.pack('<i', len(self.Results)))
10817 1
        for fieldname in self.Results:
10818 1
            packet.append(fieldname.to_binary())
10819 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
10820 1
        for fieldname in self.DiagnosticInfos:
10821
            packet.append(fieldname.to_binary())
10822 1
        return b''.join(packet)
10823
        
10824 1
    @staticmethod
10825
    def from_binary(data):
10826 1
        obj = DeleteSubscriptionsResponse()
10827 1
        obj.TypeId = NodeId.from_binary(data)
10828 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
10829 1
        length = struct.unpack('<i', data.read(4))[0]
10830 1
        if length != -1:
10831 1
            for _ in range(0, length):
10832 1
                obj.Results.append(StatusCode.from_binary(data))
10833 1
        length = struct.unpack('<i', data.read(4))[0]
10834 1
        if length != -1:
10835 1
            for _ in range(0, length):
10836
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
10837 1
        return obj
10838
    
10839 1
    def __str__(self):
10840
        return 'DeleteSubscriptionsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10841
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
10842
             'Results:' + str(self.Results) + ', '  + \
10843
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10844
    
10845 1
    __repr__ = __str__
10846
    
10847 1
class ScalarTestType(FrozenClass):
10848
    '''
10849
    A complex type containing all possible scalar types used for testing.
10850
    
10851
    :ivar Boolean: 
10852
    :vartype Boolean: Boolean 
10853
    :ivar SByte: 
10854
    :vartype SByte: SByte 
10855
    :ivar Byte: 
10856
    :vartype Byte: Byte 
10857
    :ivar Int16: 
10858
    :vartype Int16: Int16 
10859
    :ivar UInt16: 
10860
    :vartype UInt16: UInt16 
10861
    :ivar Int32: 
10862
    :vartype Int32: Int32 
10863
    :ivar UInt32: 
10864
    :vartype UInt32: UInt32 
10865
    :ivar Int64: 
10866
    :vartype Int64: Int64 
10867
    :ivar UInt64: 
10868
    :vartype UInt64: UInt64 
10869
    :ivar Float: 
10870
    :vartype Float: Float 
10871
    :ivar Double: 
10872
    :vartype Double: Double 
10873
    :ivar String: 
10874
    :vartype String: String 
10875
    :ivar DateTime: 
10876
    :vartype DateTime: DateTime 
10877
    :ivar Guid: 
10878
    :vartype Guid: Guid 
10879
    :ivar ByteString: 
10880
    :vartype ByteString: ByteString 
10881
    :ivar XmlElement: 
10882
    :vartype XmlElement: XmlElement 
10883
    :ivar NodeId: 
10884
    :vartype NodeId: NodeId 
10885
    :ivar ExpandedNodeId: 
10886
    :vartype ExpandedNodeId: ExpandedNodeId 
10887
    :ivar StatusCode: 
10888
    :vartype StatusCode: StatusCode 
10889
    :ivar DiagnosticInfo: 
10890
    :vartype DiagnosticInfo: DiagnosticInfo 
10891
    :ivar QualifiedName: 
10892
    :vartype QualifiedName: QualifiedName 
10893
    :ivar LocalizedText: 
10894
    :vartype LocalizedText: LocalizedText 
10895
    :ivar ExtensionObject: 
10896
    :vartype ExtensionObject: ExtensionObject 
10897
    :ivar DataValue: 
10898
    :vartype DataValue: DataValue 
10899
    :ivar EnumeratedValue: 
10900
    :vartype EnumeratedValue: EnumeratedTestType 
10901
    '''
10902 1
    def __init__(self):
10903
        self.Boolean = True
10904
        self.SByte = SByte()
10905
        self.Byte = 0
10906
        self.Int16 = 0
10907
        self.UInt16 = 0
10908
        self.Int32 = 0
10909
        self.UInt32 = 0
10910
        self.Int64 = 0
10911
        self.UInt64 = 0
10912
        self.Float = 0
10913
        self.Double = 0
10914
        self.String = ''
10915
        self.DateTime = datetime.now()
10916
        self.Guid = Guid()
10917
        self.ByteString = b''
10918
        self.XmlElement = XmlElement()
10919
        self.NodeId = NodeId()
10920
        self.ExpandedNodeId = ExpandedNodeId()
10921
        self.StatusCode = StatusCode()
10922
        self.DiagnosticInfo = DiagnosticInfo()
10923
        self.QualifiedName = QualifiedName()
10924
        self.LocalizedText = LocalizedText()
10925
        self.ExtensionObject = ExtensionObject()
10926
        self.DataValue = DataValue()
10927
        self.EnumeratedValue = 0
10928
        self._freeze()
10929
    
10930 1
    def to_binary(self):
10931
        packet = []
10932
        packet.append(pack_uatype('Boolean', self.Boolean))
10933
        packet.append(pack_uatype('SByte', self.SByte))
10934
        packet.append(pack_uatype('Byte', self.Byte))
10935
        packet.append(pack_uatype('Int16', self.Int16))
10936
        packet.append(pack_uatype('UInt16', self.UInt16))
10937
        packet.append(pack_uatype('Int32', self.Int32))
10938
        packet.append(pack_uatype('UInt32', self.UInt32))
10939
        packet.append(pack_uatype('Int64', self.Int64))
10940
        packet.append(pack_uatype('UInt64', self.UInt64))
10941
        packet.append(pack_uatype('Float', self.Float))
10942
        packet.append(pack_uatype('Double', self.Double))
10943
        packet.append(pack_uatype('String', self.String))
10944
        packet.append(pack_uatype('DateTime', self.DateTime))
10945
        packet.append(self.Guid.to_binary())
10946
        packet.append(pack_uatype('ByteString', self.ByteString))
10947
        packet.append(self.XmlElement.to_binary())
10948
        packet.append(self.NodeId.to_binary())
10949
        packet.append(self.ExpandedNodeId.to_binary())
10950
        packet.append(self.StatusCode.to_binary())
10951
        packet.append(self.DiagnosticInfo.to_binary())
10952
        packet.append(self.QualifiedName.to_binary())
10953
        packet.append(self.LocalizedText.to_binary())
10954
        packet.append(self.ExtensionObject.to_binary())
10955
        packet.append(self.DataValue.to_binary())
10956
        packet.append(pack_uatype('UInt32', self.EnumeratedValue))
10957
        return b''.join(packet)
10958
        
10959 1
    @staticmethod
10960
    def from_binary(data):
10961
        obj = ScalarTestType()
10962
        obj.Boolean = unpack_uatype('Boolean', data)
10963
        obj.SByte = unpack_uatype('SByte', data)
10964
        obj.Byte = unpack_uatype('Byte', data)
10965
        obj.Int16 = unpack_uatype('Int16', data)
10966
        obj.UInt16 = unpack_uatype('UInt16', data)
10967
        obj.Int32 = unpack_uatype('Int32', data)
10968
        obj.UInt32 = unpack_uatype('UInt32', data)
10969
        obj.Int64 = unpack_uatype('Int64', data)
10970
        obj.UInt64 = unpack_uatype('UInt64', data)
10971
        obj.Float = unpack_uatype('Float', data)
10972
        obj.Double = unpack_uatype('Double', data)
10973
        obj.String = unpack_uatype('String', data)
10974
        obj.DateTime = unpack_uatype('DateTime', data)
10975
        obj.Guid = Guid.from_binary(data)
10976
        obj.ByteString = unpack_uatype('ByteString', data)
10977
        obj.XmlElement = XmlElement.from_binary(data)
10978
        obj.NodeId = NodeId.from_binary(data)
10979
        obj.ExpandedNodeId = ExpandedNodeId.from_binary(data)
10980
        obj.StatusCode = StatusCode.from_binary(data)
10981
        obj.DiagnosticInfo = DiagnosticInfo.from_binary(data)
10982
        obj.QualifiedName = QualifiedName.from_binary(data)
10983
        obj.LocalizedText = LocalizedText.from_binary(data)
10984
        obj.ExtensionObject = ExtensionObject.from_binary(data)
10985
        obj.DataValue = DataValue.from_binary(data)
10986
        obj.EnumeratedValue = unpack_uatype('UInt32', data)
10987
        return obj
10988
    
10989 1
    def __str__(self):
10990
        return 'ScalarTestType(' + 'Boolean:' + str(self.Boolean) + ', '  + \
10991
             'SByte:' + str(self.SByte) + ', '  + \
10992
             'Byte:' + str(self.Byte) + ', '  + \
10993
             'Int16:' + str(self.Int16) + ', '  + \
10994
             'UInt16:' + str(self.UInt16) + ', '  + \
10995
             'Int32:' + str(self.Int32) + ', '  + \
10996
             'UInt32:' + str(self.UInt32) + ', '  + \
10997
             'Int64:' + str(self.Int64) + ', '  + \
10998
             'UInt64:' + str(self.UInt64) + ', '  + \
10999
             'Float:' + str(self.Float) + ', '  + \
11000
             'Double:' + str(self.Double) + ', '  + \
11001
             'String:' + str(self.String) + ', '  + \
11002
             'DateTime:' + str(self.DateTime) + ', '  + \
11003
             'Guid:' + str(self.Guid) + ', '  + \
11004
             'ByteString:' + str(self.ByteString) + ', '  + \
11005
             'XmlElement:' + str(self.XmlElement) + ', '  + \
11006
             'NodeId:' + str(self.NodeId) + ', '  + \
11007
             'ExpandedNodeId:' + str(self.ExpandedNodeId) + ', '  + \
11008
             'StatusCode:' + str(self.StatusCode) + ', '  + \
11009
             'DiagnosticInfo:' + str(self.DiagnosticInfo) + ', '  + \
11010
             'QualifiedName:' + str(self.QualifiedName) + ', '  + \
11011
             'LocalizedText:' + str(self.LocalizedText) + ', '  + \
11012
             'ExtensionObject:' + str(self.ExtensionObject) + ', '  + \
11013
             'DataValue:' + str(self.DataValue) + ', '  + \
11014
             'EnumeratedValue:' + str(self.EnumeratedValue) + ')'
11015
    
11016 1
    __repr__ = __str__
11017
    
11018 1
class ArrayTestType(FrozenClass):
11019
    '''
11020
    A complex type containing all possible array types used for testing.
11021
    
11022
    :ivar Booleans: 
11023
    :vartype Booleans: Boolean 
11024
    :ivar SBytes: 
11025
    :vartype SBytes: SByte 
11026
    :ivar Int16s: 
11027
    :vartype Int16s: Int16 
11028
    :ivar UInt16s: 
11029
    :vartype UInt16s: UInt16 
11030
    :ivar Int32s: 
11031
    :vartype Int32s: Int32 
11032
    :ivar UInt32s: 
11033
    :vartype UInt32s: UInt32 
11034
    :ivar Int64s: 
11035
    :vartype Int64s: Int64 
11036
    :ivar UInt64s: 
11037
    :vartype UInt64s: UInt64 
11038
    :ivar Floats: 
11039
    :vartype Floats: Float 
11040
    :ivar Doubles: 
11041
    :vartype Doubles: Double 
11042
    :ivar Strings: 
11043
    :vartype Strings: String 
11044
    :ivar DateTimes: 
11045
    :vartype DateTimes: DateTime 
11046
    :ivar Guids: 
11047
    :vartype Guids: Guid 
11048
    :ivar ByteStrings: 
11049
    :vartype ByteStrings: ByteString 
11050
    :ivar XmlElements: 
11051
    :vartype XmlElements: XmlElement 
11052
    :ivar NodeIds: 
11053
    :vartype NodeIds: NodeId 
11054
    :ivar ExpandedNodeIds: 
11055
    :vartype ExpandedNodeIds: ExpandedNodeId 
11056
    :ivar StatusCodes: 
11057
    :vartype StatusCodes: StatusCode 
11058
    :ivar DiagnosticInfos: 
11059
    :vartype DiagnosticInfos: DiagnosticInfo 
11060
    :ivar QualifiedNames: 
11061
    :vartype QualifiedNames: QualifiedName 
11062
    :ivar LocalizedTexts: 
11063
    :vartype LocalizedTexts: LocalizedText 
11064
    :ivar ExtensionObjects: 
11065
    :vartype ExtensionObjects: ExtensionObject 
11066
    :ivar DataValues: 
11067
    :vartype DataValues: DataValue 
11068
    :ivar Variants: 
11069
    :vartype Variants: Variant 
11070
    :ivar EnumeratedValues: 
11071
    :vartype EnumeratedValues: EnumeratedTestType 
11072
    '''
11073 1
    def __init__(self):
11074
        self.Booleans = []
11075
        self.SBytes = []
11076
        self.Int16s = []
11077
        self.UInt16s = []
11078
        self.Int32s = []
11079
        self.UInt32s = []
11080
        self.Int64s = []
11081
        self.UInt64s = []
11082
        self.Floats = []
11083
        self.Doubles = []
11084
        self.Strings = []
11085
        self.DateTimes = []
11086
        self.Guids = []
11087
        self.ByteStrings = []
11088
        self.XmlElements = []
11089
        self.NodeIds = []
11090
        self.ExpandedNodeIds = []
11091
        self.StatusCodes = []
11092
        self.DiagnosticInfos = []
11093
        self.QualifiedNames = []
11094
        self.LocalizedTexts = []
11095
        self.ExtensionObjects = []
11096
        self.DataValues = []
11097
        self.Variants = []
11098
        self.EnumeratedValues = []
11099
        self._freeze()
11100
    
11101 1
    def to_binary(self):
11102
        packet = []
11103
        packet.append(struct.pack('<i', len(self.Booleans)))
11104
        for fieldname in self.Booleans:
11105
            packet.append(pack_uatype('Boolean', fieldname))
11106
        packet.append(struct.pack('<i', len(self.SBytes)))
11107
        for fieldname in self.SBytes:
11108
            packet.append(pack_uatype('SByte', fieldname))
11109
        packet.append(struct.pack('<i', len(self.Int16s)))
11110
        for fieldname in self.Int16s:
11111
            packet.append(pack_uatype('Int16', fieldname))
11112
        packet.append(struct.pack('<i', len(self.UInt16s)))
11113
        for fieldname in self.UInt16s:
11114
            packet.append(pack_uatype('UInt16', fieldname))
11115
        packet.append(struct.pack('<i', len(self.Int32s)))
11116
        for fieldname in self.Int32s:
11117
            packet.append(pack_uatype('Int32', fieldname))
11118
        packet.append(struct.pack('<i', len(self.UInt32s)))
11119
        for fieldname in self.UInt32s:
11120
            packet.append(pack_uatype('UInt32', fieldname))
11121
        packet.append(struct.pack('<i', len(self.Int64s)))
11122
        for fieldname in self.Int64s:
11123
            packet.append(pack_uatype('Int64', fieldname))
11124
        packet.append(struct.pack('<i', len(self.UInt64s)))
11125
        for fieldname in self.UInt64s:
11126
            packet.append(pack_uatype('UInt64', fieldname))
11127
        packet.append(struct.pack('<i', len(self.Floats)))
11128
        for fieldname in self.Floats:
11129
            packet.append(pack_uatype('Float', fieldname))
11130
        packet.append(struct.pack('<i', len(self.Doubles)))
11131
        for fieldname in self.Doubles:
11132
            packet.append(pack_uatype('Double', fieldname))
11133
        packet.append(struct.pack('<i', len(self.Strings)))
11134
        for fieldname in self.Strings:
11135
            packet.append(pack_uatype('String', fieldname))
11136
        packet.append(struct.pack('<i', len(self.DateTimes)))
11137
        for fieldname in self.DateTimes:
11138
            packet.append(pack_uatype('DateTime', fieldname))
11139
        packet.append(struct.pack('<i', len(self.Guids)))
11140
        for fieldname in self.Guids:
11141
            packet.append(fieldname.to_binary())
11142
        packet.append(struct.pack('<i', len(self.ByteStrings)))
11143
        for fieldname in self.ByteStrings:
11144
            packet.append(pack_uatype('ByteString', fieldname))
11145
        packet.append(struct.pack('<i', len(self.XmlElements)))
11146
        for fieldname in self.XmlElements:
11147
            packet.append(fieldname.to_binary())
11148
        packet.append(struct.pack('<i', len(self.NodeIds)))
11149
        for fieldname in self.NodeIds:
11150
            packet.append(fieldname.to_binary())
11151
        packet.append(struct.pack('<i', len(self.ExpandedNodeIds)))
11152
        for fieldname in self.ExpandedNodeIds:
11153
            packet.append(fieldname.to_binary())
11154
        packet.append(struct.pack('<i', len(self.StatusCodes)))
11155
        for fieldname in self.StatusCodes:
11156
            packet.append(fieldname.to_binary())
11157
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
11158
        for fieldname in self.DiagnosticInfos:
11159
            packet.append(fieldname.to_binary())
11160
        packet.append(struct.pack('<i', len(self.QualifiedNames)))
11161
        for fieldname in self.QualifiedNames:
11162
            packet.append(fieldname.to_binary())
11163
        packet.append(struct.pack('<i', len(self.LocalizedTexts)))
11164
        for fieldname in self.LocalizedTexts:
11165
            packet.append(fieldname.to_binary())
11166
        packet.append(struct.pack('<i', len(self.ExtensionObjects)))
11167
        for fieldname in self.ExtensionObjects:
11168
            packet.append(fieldname.to_binary())
11169
        packet.append(struct.pack('<i', len(self.DataValues)))
11170
        for fieldname in self.DataValues:
11171
            packet.append(fieldname.to_binary())
11172
        packet.append(struct.pack('<i', len(self.Variants)))
11173
        for fieldname in self.Variants:
11174
            packet.append(fieldname.to_binary())
11175
        packet.append(struct.pack('<i', len(self.EnumeratedValues)))
11176
        for fieldname in self.EnumeratedValues:
11177
            packet.append(pack_uatype('UInt32', fieldname))
11178
        return b''.join(packet)
11179
        
11180 1
    @staticmethod
11181
    def from_binary(data):
11182
        obj = ArrayTestType()
11183
        obj.Booleans = unpack_uatype_array('Boolean', data)
11184
        obj.SBytes = unpack_uatype_array('SByte', data)
11185
        obj.Int16s = unpack_uatype_array('Int16', data)
11186
        obj.UInt16s = unpack_uatype_array('UInt16', data)
11187
        obj.Int32s = unpack_uatype_array('Int32', data)
11188
        obj.UInt32s = unpack_uatype_array('UInt32', data)
11189
        obj.Int64s = unpack_uatype_array('Int64', data)
11190
        obj.UInt64s = unpack_uatype_array('UInt64', data)
11191
        obj.Floats = unpack_uatype_array('Float', data)
11192
        obj.Doubles = unpack_uatype_array('Double', data)
11193
        obj.Strings = unpack_uatype_array('String', data)
11194
        obj.DateTimes = unpack_uatype_array('DateTime', data)
11195
        length = struct.unpack('<i', data.read(4))[0]
11196
        if length != -1:
11197
            for _ in range(0, length):
11198
                obj.Guids.append(Guid.from_binary(data))
11199
        obj.ByteStrings = unpack_uatype_array('ByteString', data)
11200
        length = struct.unpack('<i', data.read(4))[0]
11201
        if length != -1:
11202
            for _ in range(0, length):
11203
                obj.XmlElements.append(XmlElement.from_binary(data))
11204
        length = struct.unpack('<i', data.read(4))[0]
11205
        if length != -1:
11206
            for _ in range(0, length):
11207
                obj.NodeIds.append(NodeId.from_binary(data))
11208
        length = struct.unpack('<i', data.read(4))[0]
11209
        if length != -1:
11210
            for _ in range(0, length):
11211
                obj.ExpandedNodeIds.append(ExpandedNodeId.from_binary(data))
11212
        length = struct.unpack('<i', data.read(4))[0]
11213
        if length != -1:
11214
            for _ in range(0, length):
11215
                obj.StatusCodes.append(StatusCode.from_binary(data))
11216
        length = struct.unpack('<i', data.read(4))[0]
11217
        if length != -1:
11218
            for _ in range(0, length):
11219
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
11220
        length = struct.unpack('<i', data.read(4))[0]
11221
        if length != -1:
11222
            for _ in range(0, length):
11223
                obj.QualifiedNames.append(QualifiedName.from_binary(data))
11224
        length = struct.unpack('<i', data.read(4))[0]
11225
        if length != -1:
11226
            for _ in range(0, length):
11227
                obj.LocalizedTexts.append(LocalizedText.from_binary(data))
11228
        length = struct.unpack('<i', data.read(4))[0]
11229
        if length != -1:
11230
            for _ in range(0, length):
11231
                obj.ExtensionObjects.append(ExtensionObject.from_binary(data))
11232
        length = struct.unpack('<i', data.read(4))[0]
11233
        if length != -1:
11234
            for _ in range(0, length):
11235
                obj.DataValues.append(DataValue.from_binary(data))
11236
        length = struct.unpack('<i', data.read(4))[0]
11237
        if length != -1:
11238
            for _ in range(0, length):
11239
                obj.Variants.append(Variant.from_binary(data))
11240
        obj.EnumeratedValues = unpack_uatype('UInt32', data)
11241
        return obj
11242
    
11243 1
    def __str__(self):
11244
        return 'ArrayTestType(' + 'Booleans:' + str(self.Booleans) + ', '  + \
11245
             'SBytes:' + str(self.SBytes) + ', '  + \
11246
             'Int16s:' + str(self.Int16s) + ', '  + \
11247
             'UInt16s:' + str(self.UInt16s) + ', '  + \
11248
             'Int32s:' + str(self.Int32s) + ', '  + \
11249
             'UInt32s:' + str(self.UInt32s) + ', '  + \
11250
             'Int64s:' + str(self.Int64s) + ', '  + \
11251
             'UInt64s:' + str(self.UInt64s) + ', '  + \
11252
             'Floats:' + str(self.Floats) + ', '  + \
11253
             'Doubles:' + str(self.Doubles) + ', '  + \
11254
             'Strings:' + str(self.Strings) + ', '  + \
11255
             'DateTimes:' + str(self.DateTimes) + ', '  + \
11256
             'Guids:' + str(self.Guids) + ', '  + \
11257
             'ByteStrings:' + str(self.ByteStrings) + ', '  + \
11258
             'XmlElements:' + str(self.XmlElements) + ', '  + \
11259
             'NodeIds:' + str(self.NodeIds) + ', '  + \
11260
             'ExpandedNodeIds:' + str(self.ExpandedNodeIds) + ', '  + \
11261
             'StatusCodes:' + str(self.StatusCodes) + ', '  + \
11262
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ', '  + \
11263
             'QualifiedNames:' + str(self.QualifiedNames) + ', '  + \
11264
             'LocalizedTexts:' + str(self.LocalizedTexts) + ', '  + \
11265
             'ExtensionObjects:' + str(self.ExtensionObjects) + ', '  + \
11266
             'DataValues:' + str(self.DataValues) + ', '  + \
11267
             'Variants:' + str(self.Variants) + ', '  + \
11268
             'EnumeratedValues:' + str(self.EnumeratedValues) + ')'
11269
    
11270 1
    __repr__ = __str__
11271
    
11272 1
class CompositeTestType(FrozenClass):
11273
    '''
11274
    :ivar Field1: 
11275
    :vartype Field1: ScalarTestType 
11276
    :ivar Field2: 
11277
    :vartype Field2: ArrayTestType 
11278
    '''
11279 1
    def __init__(self):
11280
        self.Field1 = ScalarTestType()
11281
        self.Field2 = ArrayTestType()
11282
        self._freeze()
11283
    
11284 1
    def to_binary(self):
11285
        packet = []
11286
        packet.append(self.Field1.to_binary())
11287
        packet.append(self.Field2.to_binary())
11288
        return b''.join(packet)
11289
        
11290 1
    @staticmethod
11291
    def from_binary(data):
11292
        obj = CompositeTestType()
11293
        obj.Field1 = ScalarTestType.from_binary(data)
11294
        obj.Field2 = ArrayTestType.from_binary(data)
11295
        return obj
11296
    
11297 1
    def __str__(self):
11298
        return 'CompositeTestType(' + 'Field1:' + str(self.Field1) + ', '  + \
11299
             'Field2:' + str(self.Field2) + ')'
11300
    
11301 1
    __repr__ = __str__
11302
    
11303 1
class TestStackParameters(FrozenClass):
11304
    '''
11305
    :ivar TestId: 
11306
    :vartype TestId: UInt32 
11307
    :ivar Iteration: 
11308
    :vartype Iteration: Int32 
11309
    :ivar Input: 
11310
    :vartype Input: Variant 
11311
    '''
11312 1
    def __init__(self):
11313
        self.TestId = 0
11314
        self.Iteration = 0
11315
        self.Input = Variant()
11316
        self._freeze()
11317
    
11318 1
    def to_binary(self):
11319
        packet = []
11320
        packet.append(pack_uatype('UInt32', self.TestId))
11321
        packet.append(pack_uatype('Int32', self.Iteration))
11322
        packet.append(self.Input.to_binary())
11323
        return b''.join(packet)
11324
        
11325 1
    @staticmethod
11326
    def from_binary(data):
11327
        obj = TestStackParameters()
11328
        obj.TestId = unpack_uatype('UInt32', data)
11329
        obj.Iteration = unpack_uatype('Int32', data)
11330
        obj.Input = Variant.from_binary(data)
11331
        return obj
11332
    
11333 1
    def __str__(self):
11334
        return 'TestStackParameters(' + 'TestId:' + str(self.TestId) + ', '  + \
11335
             'Iteration:' + str(self.Iteration) + ', '  + \
11336
             'Input:' + str(self.Input) + ')'
11337
    
11338 1
    __repr__ = __str__
11339
    
11340 1
class TestStackRequest(FrozenClass):
11341
    '''
11342
    :ivar TypeId: 
11343
    :vartype TypeId: NodeId 
11344
    :ivar RequestHeader: 
11345
    :vartype RequestHeader: RequestHeader 
11346
    :ivar Parameters: 
11347
    :vartype Parameters: TestStackParameters 
11348
    '''
11349 1
    def __init__(self):
11350
        self.TypeId = FourByteNodeId(ObjectIds.TestStackRequest_Encoding_DefaultBinary)
11351
        self.RequestHeader = RequestHeader()
11352
        self.Parameters = TestStackParameters()
11353
        self._freeze()
11354
    
11355 1
    def to_binary(self):
11356
        packet = []
11357
        packet.append(self.TypeId.to_binary())
11358
        packet.append(self.RequestHeader.to_binary())
11359
        packet.append(self.Parameters.to_binary())
11360
        return b''.join(packet)
11361
        
11362 1
    @staticmethod
11363
    def from_binary(data):
11364
        obj = TestStackRequest()
11365
        obj.TypeId = NodeId.from_binary(data)
11366
        obj.RequestHeader = RequestHeader.from_binary(data)
11367
        obj.Parameters = TestStackParameters.from_binary(data)
11368
        return obj
11369
    
11370 1
    def __str__(self):
11371
        return 'TestStackRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
11372
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
11373
             'Parameters:' + str(self.Parameters) + ')'
11374
    
11375 1
    __repr__ = __str__
11376
    
11377 1
class TestStackResult(FrozenClass):
11378
    '''
11379
    :ivar Output: 
11380
    :vartype Output: Variant 
11381
    '''
11382 1
    def __init__(self):
11383
        self.Output = Variant()
11384
        self._freeze()
11385
    
11386 1
    def to_binary(self):
11387
        packet = []
11388
        packet.append(self.Output.to_binary())
11389
        return b''.join(packet)
11390
        
11391 1
    @staticmethod
11392
    def from_binary(data):
11393
        obj = TestStackResult()
11394
        obj.Output = Variant.from_binary(data)
11395
        return obj
11396
    
11397 1
    def __str__(self):
11398
        return 'TestStackResult(' + 'Output:' + str(self.Output) + ')'
11399
    
11400 1
    __repr__ = __str__
11401
    
11402 1
class TestStackResponse(FrozenClass):
11403
    '''
11404
    :ivar TypeId: 
11405
    :vartype TypeId: NodeId 
11406
    :ivar ResponseHeader: 
11407
    :vartype ResponseHeader: ResponseHeader 
11408
    :ivar Parameters: 
11409
    :vartype Parameters: TestStackResult 
11410
    '''
11411 1
    def __init__(self):
11412
        self.TypeId = FourByteNodeId(ObjectIds.TestStackResponse_Encoding_DefaultBinary)
11413
        self.ResponseHeader = ResponseHeader()
11414
        self.Parameters = TestStackResult()
11415
        self._freeze()
11416
    
11417 1
    def to_binary(self):
11418
        packet = []
11419
        packet.append(self.TypeId.to_binary())
11420
        packet.append(self.ResponseHeader.to_binary())
11421
        packet.append(self.Parameters.to_binary())
11422
        return b''.join(packet)
11423
        
11424 1
    @staticmethod
11425
    def from_binary(data):
11426
        obj = TestStackResponse()
11427
        obj.TypeId = NodeId.from_binary(data)
11428
        obj.ResponseHeader = ResponseHeader.from_binary(data)
11429
        obj.Parameters = TestStackResult.from_binary(data)
11430
        return obj
11431
    
11432 1
    def __str__(self):
11433
        return 'TestStackResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
11434
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
11435
             'Parameters:' + str(self.Parameters) + ')'
11436
    
11437 1
    __repr__ = __str__
11438
    
11439 1
class TestStackExParameters(FrozenClass):
11440
    '''
11441
    :ivar TestId: 
11442
    :vartype TestId: UInt32 
11443
    :ivar Iteration: 
11444
    :vartype Iteration: Int32 
11445
    :ivar Input: 
11446
    :vartype Input: CompositeTestType 
11447
    '''
11448 1
    def __init__(self):
11449
        self.TestId = 0
11450
        self.Iteration = 0
11451
        self.Input = CompositeTestType()
11452
        self._freeze()
11453
    
11454 1
    def to_binary(self):
11455
        packet = []
11456
        packet.append(pack_uatype('UInt32', self.TestId))
11457
        packet.append(pack_uatype('Int32', self.Iteration))
11458
        packet.append(self.Input.to_binary())
11459
        return b''.join(packet)
11460
        
11461 1
    @staticmethod
11462
    def from_binary(data):
11463
        obj = TestStackExParameters()
11464
        obj.TestId = unpack_uatype('UInt32', data)
11465
        obj.Iteration = unpack_uatype('Int32', data)
11466
        obj.Input = CompositeTestType.from_binary(data)
11467
        return obj
11468
    
11469 1
    def __str__(self):
11470
        return 'TestStackExParameters(' + 'TestId:' + str(self.TestId) + ', '  + \
11471
             'Iteration:' + str(self.Iteration) + ', '  + \
11472
             'Input:' + str(self.Input) + ')'
11473
    
11474 1
    __repr__ = __str__
11475
    
11476 1
class TestStackExRequest(FrozenClass):
11477
    '''
11478
    :ivar TypeId: 
11479
    :vartype TypeId: NodeId 
11480
    :ivar RequestHeader: 
11481
    :vartype RequestHeader: RequestHeader 
11482
    :ivar Parameters: 
11483
    :vartype Parameters: TestStackExParameters 
11484
    '''
11485 1
    def __init__(self):
11486
        self.TypeId = FourByteNodeId(ObjectIds.TestStackExRequest_Encoding_DefaultBinary)
11487
        self.RequestHeader = RequestHeader()
11488
        self.Parameters = TestStackExParameters()
11489
        self._freeze()
11490
    
11491 1
    def to_binary(self):
11492
        packet = []
11493
        packet.append(self.TypeId.to_binary())
11494
        packet.append(self.RequestHeader.to_binary())
11495
        packet.append(self.Parameters.to_binary())
11496
        return b''.join(packet)
11497
        
11498 1
    @staticmethod
11499
    def from_binary(data):
11500
        obj = TestStackExRequest()
11501
        obj.TypeId = NodeId.from_binary(data)
11502
        obj.RequestHeader = RequestHeader.from_binary(data)
11503
        obj.Parameters = TestStackExParameters.from_binary(data)
11504
        return obj
11505
    
11506 1
    def __str__(self):
11507
        return 'TestStackExRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
11508
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
11509
             'Parameters:' + str(self.Parameters) + ')'
11510
    
11511 1
    __repr__ = __str__
11512
    
11513 1
class TestStackExResult(FrozenClass):
11514
    '''
11515
    :ivar Output: 
11516
    :vartype Output: CompositeTestType 
11517
    '''
11518 1
    def __init__(self):
11519
        self.Output = CompositeTestType()
11520
        self._freeze()
11521
    
11522 1
    def to_binary(self):
11523
        packet = []
11524
        packet.append(self.Output.to_binary())
11525
        return b''.join(packet)
11526
        
11527 1
    @staticmethod
11528
    def from_binary(data):
11529
        obj = TestStackExResult()
11530
        obj.Output = CompositeTestType.from_binary(data)
11531
        return obj
11532
    
11533 1
    def __str__(self):
11534
        return 'TestStackExResult(' + 'Output:' + str(self.Output) + ')'
11535
    
11536 1
    __repr__ = __str__
11537
    
11538 1
class TestStackExResponse(FrozenClass):
11539
    '''
11540
    :ivar TypeId: 
11541
    :vartype TypeId: NodeId 
11542
    :ivar ResponseHeader: 
11543
    :vartype ResponseHeader: ResponseHeader 
11544
    :ivar Parameters: 
11545
    :vartype Parameters: TestStackExResult 
11546
    '''
11547 1
    def __init__(self):
11548
        self.TypeId = FourByteNodeId(ObjectIds.TestStackExResponse_Encoding_DefaultBinary)
11549
        self.ResponseHeader = ResponseHeader()
11550
        self.Parameters = TestStackExResult()
11551
        self._freeze()
11552
    
11553 1
    def to_binary(self):
11554
        packet = []
11555
        packet.append(self.TypeId.to_binary())
11556
        packet.append(self.ResponseHeader.to_binary())
11557
        packet.append(self.Parameters.to_binary())
11558
        return b''.join(packet)
11559
        
11560 1
    @staticmethod
11561
    def from_binary(data):
11562
        obj = TestStackExResponse()
11563
        obj.TypeId = NodeId.from_binary(data)
11564
        obj.ResponseHeader = ResponseHeader.from_binary(data)
11565
        obj.Parameters = TestStackExResult.from_binary(data)
11566
        return obj
11567
    
11568 1
    def __str__(self):
11569
        return 'TestStackExResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
11570
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
11571
             'Parameters:' + str(self.Parameters) + ')'
11572
    
11573 1
    __repr__ = __str__
11574
    
11575 1
class BuildInfo(FrozenClass):
11576
    '''
11577
    :ivar ProductUri: 
11578
    :vartype ProductUri: String 
11579
    :ivar ManufacturerName: 
11580
    :vartype ManufacturerName: String 
11581
    :ivar ProductName: 
11582
    :vartype ProductName: String 
11583
    :ivar SoftwareVersion: 
11584
    :vartype SoftwareVersion: String 
11585
    :ivar BuildNumber: 
11586
    :vartype BuildNumber: String 
11587
    :ivar BuildDate: 
11588
    :vartype BuildDate: DateTime 
11589
    '''
11590 1
    def __init__(self):
11591
        self.ProductUri = ''
11592
        self.ManufacturerName = ''
11593
        self.ProductName = ''
11594
        self.SoftwareVersion = ''
11595
        self.BuildNumber = ''
11596
        self.BuildDate = datetime.now()
11597
        self._freeze()
11598
    
11599 1
    def to_binary(self):
11600
        packet = []
11601
        packet.append(pack_uatype('String', self.ProductUri))
11602
        packet.append(pack_uatype('String', self.ManufacturerName))
11603
        packet.append(pack_uatype('String', self.ProductName))
11604
        packet.append(pack_uatype('String', self.SoftwareVersion))
11605
        packet.append(pack_uatype('String', self.BuildNumber))
11606
        packet.append(pack_uatype('DateTime', self.BuildDate))
11607
        return b''.join(packet)
11608
        
11609 1
    @staticmethod
11610
    def from_binary(data):
11611
        obj = BuildInfo()
11612
        obj.ProductUri = unpack_uatype('String', data)
11613
        obj.ManufacturerName = unpack_uatype('String', data)
11614
        obj.ProductName = unpack_uatype('String', data)
11615
        obj.SoftwareVersion = unpack_uatype('String', data)
11616
        obj.BuildNumber = unpack_uatype('String', data)
11617
        obj.BuildDate = unpack_uatype('DateTime', data)
11618
        return obj
11619
    
11620 1
    def __str__(self):
11621
        return 'BuildInfo(' + 'ProductUri:' + str(self.ProductUri) + ', '  + \
11622
             'ManufacturerName:' + str(self.ManufacturerName) + ', '  + \
11623
             'ProductName:' + str(self.ProductName) + ', '  + \
11624
             'SoftwareVersion:' + str(self.SoftwareVersion) + ', '  + \
11625
             'BuildNumber:' + str(self.BuildNumber) + ', '  + \
11626
             'BuildDate:' + str(self.BuildDate) + ')'
11627
    
11628 1
    __repr__ = __str__
11629
    
11630 1
class RedundantServerDataType(FrozenClass):
11631
    '''
11632
    :ivar ServerId: 
11633
    :vartype ServerId: String 
11634
    :ivar ServiceLevel: 
11635
    :vartype ServiceLevel: Byte 
11636
    :ivar ServerState: 
11637
    :vartype ServerState: ServerState 
11638
    '''
11639 1
    def __init__(self):
11640
        self.ServerId = ''
11641
        self.ServiceLevel = 0
11642
        self.ServerState = 0
11643
        self._freeze()
11644
    
11645 1
    def to_binary(self):
11646
        packet = []
11647
        packet.append(pack_uatype('String', self.ServerId))
11648
        packet.append(pack_uatype('Byte', self.ServiceLevel))
11649
        packet.append(pack_uatype('UInt32', self.ServerState))
11650
        return b''.join(packet)
11651
        
11652 1
    @staticmethod
11653
    def from_binary(data):
11654
        obj = RedundantServerDataType()
11655
        obj.ServerId = unpack_uatype('String', data)
11656
        obj.ServiceLevel = unpack_uatype('Byte', data)
11657
        obj.ServerState = unpack_uatype('UInt32', data)
11658
        return obj
11659
    
11660 1
    def __str__(self):
11661
        return 'RedundantServerDataType(' + 'ServerId:' + str(self.ServerId) + ', '  + \
11662
             'ServiceLevel:' + str(self.ServiceLevel) + ', '  + \
11663
             'ServerState:' + str(self.ServerState) + ')'
11664
    
11665 1
    __repr__ = __str__
11666
    
11667 1
class EndpointUrlListDataType(FrozenClass):
11668
    '''
11669
    :ivar EndpointUrlList: 
11670
    :vartype EndpointUrlList: String 
11671
    '''
11672 1
    def __init__(self):
11673
        self.EndpointUrlList = []
11674
        self._freeze()
11675
    
11676 1
    def to_binary(self):
11677
        packet = []
11678
        packet.append(struct.pack('<i', len(self.EndpointUrlList)))
11679
        for fieldname in self.EndpointUrlList:
11680
            packet.append(pack_uatype('String', fieldname))
11681
        return b''.join(packet)
11682
        
11683 1
    @staticmethod
11684
    def from_binary(data):
11685
        obj = EndpointUrlListDataType()
11686
        obj.EndpointUrlList = unpack_uatype_array('String', data)
11687
        return obj
11688
    
11689 1
    def __str__(self):
11690
        return 'EndpointUrlListDataType(' + 'EndpointUrlList:' + str(self.EndpointUrlList) + ')'
11691
    
11692 1
    __repr__ = __str__
11693
    
11694 1
class NetworkGroupDataType(FrozenClass):
11695
    '''
11696
    :ivar ServerUri: 
11697
    :vartype ServerUri: String 
11698
    :ivar NetworkPaths: 
11699
    :vartype NetworkPaths: EndpointUrlListDataType 
11700
    '''
11701 1
    def __init__(self):
11702
        self.ServerUri = ''
11703
        self.NetworkPaths = []
11704
        self._freeze()
11705
    
11706 1
    def to_binary(self):
11707
        packet = []
11708
        packet.append(pack_uatype('String', self.ServerUri))
11709
        packet.append(struct.pack('<i', len(self.NetworkPaths)))
11710
        for fieldname in self.NetworkPaths:
11711
            packet.append(fieldname.to_binary())
11712
        return b''.join(packet)
11713
        
11714 1
    @staticmethod
11715
    def from_binary(data):
11716
        obj = NetworkGroupDataType()
11717
        obj.ServerUri = unpack_uatype('String', data)
11718
        length = struct.unpack('<i', data.read(4))[0]
11719
        if length != -1:
11720
            for _ in range(0, length):
11721
                obj.NetworkPaths.append(EndpointUrlListDataType.from_binary(data))
11722
        return obj
11723
    
11724 1
    def __str__(self):
11725
        return 'NetworkGroupDataType(' + 'ServerUri:' + str(self.ServerUri) + ', '  + \
11726
             'NetworkPaths:' + str(self.NetworkPaths) + ')'
11727
    
11728 1
    __repr__ = __str__
11729
    
11730 1
class SamplingIntervalDiagnosticsDataType(FrozenClass):
11731
    '''
11732
    :ivar SamplingInterval: 
11733
    :vartype SamplingInterval: Double 
11734
    :ivar MonitoredItemCount: 
11735
    :vartype MonitoredItemCount: UInt32 
11736
    :ivar MaxMonitoredItemCount: 
11737
    :vartype MaxMonitoredItemCount: UInt32 
11738
    :ivar DisabledMonitoredItemCount: 
11739
    :vartype DisabledMonitoredItemCount: UInt32 
11740
    '''
11741 1
    def __init__(self):
11742
        self.SamplingInterval = 0
11743
        self.MonitoredItemCount = 0
11744
        self.MaxMonitoredItemCount = 0
11745
        self.DisabledMonitoredItemCount = 0
11746
        self._freeze()
11747
    
11748 1
    def to_binary(self):
11749
        packet = []
11750
        packet.append(pack_uatype('Double', self.SamplingInterval))
11751
        packet.append(pack_uatype('UInt32', self.MonitoredItemCount))
11752
        packet.append(pack_uatype('UInt32', self.MaxMonitoredItemCount))
11753
        packet.append(pack_uatype('UInt32', self.DisabledMonitoredItemCount))
11754
        return b''.join(packet)
11755
        
11756 1
    @staticmethod
11757
    def from_binary(data):
11758
        obj = SamplingIntervalDiagnosticsDataType()
11759
        obj.SamplingInterval = unpack_uatype('Double', data)
11760
        obj.MonitoredItemCount = unpack_uatype('UInt32', data)
11761
        obj.MaxMonitoredItemCount = unpack_uatype('UInt32', data)
11762
        obj.DisabledMonitoredItemCount = unpack_uatype('UInt32', data)
11763
        return obj
11764
    
11765 1
    def __str__(self):
11766
        return 'SamplingIntervalDiagnosticsDataType(' + 'SamplingInterval:' + str(self.SamplingInterval) + ', '  + \
11767
             'MonitoredItemCount:' + str(self.MonitoredItemCount) + ', '  + \
11768
             'MaxMonitoredItemCount:' + str(self.MaxMonitoredItemCount) + ', '  + \
11769
             'DisabledMonitoredItemCount:' + str(self.DisabledMonitoredItemCount) + ')'
11770
    
11771 1
    __repr__ = __str__
11772
    
11773 1
class ServerDiagnosticsSummaryDataType(FrozenClass):
11774
    '''
11775
    :ivar ServerViewCount: 
11776
    :vartype ServerViewCount: UInt32 
11777
    :ivar CurrentSessionCount: 
11778
    :vartype CurrentSessionCount: UInt32 
11779
    :ivar CumulatedSessionCount: 
11780
    :vartype CumulatedSessionCount: UInt32 
11781
    :ivar SecurityRejectedSessionCount: 
11782
    :vartype SecurityRejectedSessionCount: UInt32 
11783
    :ivar RejectedSessionCount: 
11784
    :vartype RejectedSessionCount: UInt32 
11785
    :ivar SessionTimeoutCount: 
11786
    :vartype SessionTimeoutCount: UInt32 
11787
    :ivar SessionAbortCount: 
11788
    :vartype SessionAbortCount: UInt32 
11789
    :ivar CurrentSubscriptionCount: 
11790
    :vartype CurrentSubscriptionCount: UInt32 
11791
    :ivar CumulatedSubscriptionCount: 
11792
    :vartype CumulatedSubscriptionCount: UInt32 
11793
    :ivar PublishingIntervalCount: 
11794
    :vartype PublishingIntervalCount: UInt32 
11795
    :ivar SecurityRejectedRequestsCount: 
11796
    :vartype SecurityRejectedRequestsCount: UInt32 
11797
    :ivar RejectedRequestsCount: 
11798
    :vartype RejectedRequestsCount: UInt32 
11799
    '''
11800 1
    def __init__(self):
11801
        self.ServerViewCount = 0
11802
        self.CurrentSessionCount = 0
11803
        self.CumulatedSessionCount = 0
11804
        self.SecurityRejectedSessionCount = 0
11805
        self.RejectedSessionCount = 0
11806
        self.SessionTimeoutCount = 0
11807
        self.SessionAbortCount = 0
11808
        self.CurrentSubscriptionCount = 0
11809
        self.CumulatedSubscriptionCount = 0
11810
        self.PublishingIntervalCount = 0
11811
        self.SecurityRejectedRequestsCount = 0
11812
        self.RejectedRequestsCount = 0
11813
        self._freeze()
11814
    
11815 1
    def to_binary(self):
11816
        packet = []
11817
        packet.append(pack_uatype('UInt32', self.ServerViewCount))
11818
        packet.append(pack_uatype('UInt32', self.CurrentSessionCount))
11819
        packet.append(pack_uatype('UInt32', self.CumulatedSessionCount))
11820
        packet.append(pack_uatype('UInt32', self.SecurityRejectedSessionCount))
11821
        packet.append(pack_uatype('UInt32', self.RejectedSessionCount))
11822
        packet.append(pack_uatype('UInt32', self.SessionTimeoutCount))
11823
        packet.append(pack_uatype('UInt32', self.SessionAbortCount))
11824
        packet.append(pack_uatype('UInt32', self.CurrentSubscriptionCount))
11825
        packet.append(pack_uatype('UInt32', self.CumulatedSubscriptionCount))
11826
        packet.append(pack_uatype('UInt32', self.PublishingIntervalCount))
11827
        packet.append(pack_uatype('UInt32', self.SecurityRejectedRequestsCount))
11828
        packet.append(pack_uatype('UInt32', self.RejectedRequestsCount))
11829
        return b''.join(packet)
11830
        
11831 1
    @staticmethod
11832
    def from_binary(data):
11833
        obj = ServerDiagnosticsSummaryDataType()
11834
        obj.ServerViewCount = unpack_uatype('UInt32', data)
11835
        obj.CurrentSessionCount = unpack_uatype('UInt32', data)
11836
        obj.CumulatedSessionCount = unpack_uatype('UInt32', data)
11837
        obj.SecurityRejectedSessionCount = unpack_uatype('UInt32', data)
11838
        obj.RejectedSessionCount = unpack_uatype('UInt32', data)
11839
        obj.SessionTimeoutCount = unpack_uatype('UInt32', data)
11840
        obj.SessionAbortCount = unpack_uatype('UInt32', data)
11841
        obj.CurrentSubscriptionCount = unpack_uatype('UInt32', data)
11842
        obj.CumulatedSubscriptionCount = unpack_uatype('UInt32', data)
11843
        obj.PublishingIntervalCount = unpack_uatype('UInt32', data)
11844
        obj.SecurityRejectedRequestsCount = unpack_uatype('UInt32', data)
11845
        obj.RejectedRequestsCount = unpack_uatype('UInt32', data)
11846
        return obj
11847
    
11848 1
    def __str__(self):
11849
        return 'ServerDiagnosticsSummaryDataType(' + 'ServerViewCount:' + str(self.ServerViewCount) + ', '  + \
11850
             'CurrentSessionCount:' + str(self.CurrentSessionCount) + ', '  + \
11851
             'CumulatedSessionCount:' + str(self.CumulatedSessionCount) + ', '  + \
11852
             'SecurityRejectedSessionCount:' + str(self.SecurityRejectedSessionCount) + ', '  + \
11853
             'RejectedSessionCount:' + str(self.RejectedSessionCount) + ', '  + \
11854
             'SessionTimeoutCount:' + str(self.SessionTimeoutCount) + ', '  + \
11855
             'SessionAbortCount:' + str(self.SessionAbortCount) + ', '  + \
11856
             'CurrentSubscriptionCount:' + str(self.CurrentSubscriptionCount) + ', '  + \
11857
             'CumulatedSubscriptionCount:' + str(self.CumulatedSubscriptionCount) + ', '  + \
11858
             'PublishingIntervalCount:' + str(self.PublishingIntervalCount) + ', '  + \
11859
             'SecurityRejectedRequestsCount:' + str(self.SecurityRejectedRequestsCount) + ', '  + \
11860
             'RejectedRequestsCount:' + str(self.RejectedRequestsCount) + ')'
11861
    
11862 1
    __repr__ = __str__
11863
    
11864 1
class ServerStatusDataType(FrozenClass):
11865
    '''
11866
    :ivar StartTime: 
11867
    :vartype StartTime: DateTime 
11868
    :ivar CurrentTime: 
11869
    :vartype CurrentTime: DateTime 
11870
    :ivar State: 
11871
    :vartype State: ServerState 
11872
    :ivar BuildInfo: 
11873
    :vartype BuildInfo: BuildInfo 
11874
    :ivar SecondsTillShutdown: 
11875
    :vartype SecondsTillShutdown: UInt32 
11876
    :ivar ShutdownReason: 
11877
    :vartype ShutdownReason: LocalizedText 
11878
    '''
11879 1
    def __init__(self):
11880
        self.StartTime = datetime.now()
11881
        self.CurrentTime = datetime.now()
11882
        self.State = 0
11883
        self.BuildInfo = BuildInfo()
11884
        self.SecondsTillShutdown = 0
11885
        self.ShutdownReason = LocalizedText()
11886
        self._freeze()
11887
    
11888 1
    def to_binary(self):
11889
        packet = []
11890
        packet.append(pack_uatype('DateTime', self.StartTime))
11891
        packet.append(pack_uatype('DateTime', self.CurrentTime))
11892
        packet.append(pack_uatype('UInt32', self.State))
11893
        packet.append(self.BuildInfo.to_binary())
11894
        packet.append(pack_uatype('UInt32', self.SecondsTillShutdown))
11895
        packet.append(self.ShutdownReason.to_binary())
11896
        return b''.join(packet)
11897
        
11898 1
    @staticmethod
11899
    def from_binary(data):
11900
        obj = ServerStatusDataType()
11901
        obj.StartTime = unpack_uatype('DateTime', data)
11902
        obj.CurrentTime = unpack_uatype('DateTime', data)
11903
        obj.State = unpack_uatype('UInt32', data)
11904
        obj.BuildInfo = BuildInfo.from_binary(data)
11905
        obj.SecondsTillShutdown = unpack_uatype('UInt32', data)
11906
        obj.ShutdownReason = LocalizedText.from_binary(data)
11907
        return obj
11908
    
11909 1
    def __str__(self):
11910
        return 'ServerStatusDataType(' + 'StartTime:' + str(self.StartTime) + ', '  + \
11911
             'CurrentTime:' + str(self.CurrentTime) + ', '  + \
11912
             'State:' + str(self.State) + ', '  + \
11913
             'BuildInfo:' + str(self.BuildInfo) + ', '  + \
11914
             'SecondsTillShutdown:' + str(self.SecondsTillShutdown) + ', '  + \
11915
             'ShutdownReason:' + str(self.ShutdownReason) + ')'
11916
    
11917 1
    __repr__ = __str__
11918
    
11919 1
class SessionDiagnosticsDataType(FrozenClass):
11920
    '''
11921
    :ivar SessionId: 
11922
    :vartype SessionId: NodeId 
11923
    :ivar SessionName: 
11924
    :vartype SessionName: String 
11925
    :ivar ClientDescription: 
11926
    :vartype ClientDescription: ApplicationDescription 
11927
    :ivar ServerUri: 
11928
    :vartype ServerUri: String 
11929
    :ivar EndpointUrl: 
11930
    :vartype EndpointUrl: String 
11931
    :ivar LocaleIds: 
11932
    :vartype LocaleIds: String 
11933
    :ivar ActualSessionTimeout: 
11934
    :vartype ActualSessionTimeout: Double 
11935
    :ivar MaxResponseMessageSize: 
11936
    :vartype MaxResponseMessageSize: UInt32 
11937
    :ivar ClientConnectionTime: 
11938
    :vartype ClientConnectionTime: DateTime 
11939
    :ivar ClientLastContactTime: 
11940
    :vartype ClientLastContactTime: DateTime 
11941
    :ivar CurrentSubscriptionsCount: 
11942
    :vartype CurrentSubscriptionsCount: UInt32 
11943
    :ivar CurrentMonitoredItemsCount: 
11944
    :vartype CurrentMonitoredItemsCount: UInt32 
11945
    :ivar CurrentPublishRequestsInQueue: 
11946
    :vartype CurrentPublishRequestsInQueue: UInt32 
11947
    :ivar TotalRequestCount: 
11948
    :vartype TotalRequestCount: ServiceCounterDataType 
11949
    :ivar UnauthorizedRequestCount: 
11950
    :vartype UnauthorizedRequestCount: UInt32 
11951
    :ivar ReadCount: 
11952
    :vartype ReadCount: ServiceCounterDataType 
11953
    :ivar HistoryReadCount: 
11954
    :vartype HistoryReadCount: ServiceCounterDataType 
11955
    :ivar WriteCount: 
11956
    :vartype WriteCount: ServiceCounterDataType 
11957
    :ivar HistoryUpdateCount: 
11958
    :vartype HistoryUpdateCount: ServiceCounterDataType 
11959
    :ivar CallCount: 
11960
    :vartype CallCount: ServiceCounterDataType 
11961
    :ivar CreateMonitoredItemsCount: 
11962
    :vartype CreateMonitoredItemsCount: ServiceCounterDataType 
11963
    :ivar ModifyMonitoredItemsCount: 
11964
    :vartype ModifyMonitoredItemsCount: ServiceCounterDataType 
11965
    :ivar SetMonitoringModeCount: 
11966
    :vartype SetMonitoringModeCount: ServiceCounterDataType 
11967
    :ivar SetTriggeringCount: 
11968
    :vartype SetTriggeringCount: ServiceCounterDataType 
11969
    :ivar DeleteMonitoredItemsCount: 
11970
    :vartype DeleteMonitoredItemsCount: ServiceCounterDataType 
11971
    :ivar CreateSubscriptionCount: 
11972
    :vartype CreateSubscriptionCount: ServiceCounterDataType 
11973
    :ivar ModifySubscriptionCount: 
11974
    :vartype ModifySubscriptionCount: ServiceCounterDataType 
11975
    :ivar SetPublishingModeCount: 
11976
    :vartype SetPublishingModeCount: ServiceCounterDataType 
11977
    :ivar PublishCount: 
11978
    :vartype PublishCount: ServiceCounterDataType 
11979
    :ivar RepublishCount: 
11980
    :vartype RepublishCount: ServiceCounterDataType 
11981
    :ivar TransferSubscriptionsCount: 
11982
    :vartype TransferSubscriptionsCount: ServiceCounterDataType 
11983
    :ivar DeleteSubscriptionsCount: 
11984
    :vartype DeleteSubscriptionsCount: ServiceCounterDataType 
11985
    :ivar AddNodesCount: 
11986
    :vartype AddNodesCount: ServiceCounterDataType 
11987
    :ivar AddReferencesCount: 
11988
    :vartype AddReferencesCount: ServiceCounterDataType 
11989
    :ivar DeleteNodesCount: 
11990
    :vartype DeleteNodesCount: ServiceCounterDataType 
11991
    :ivar DeleteReferencesCount: 
11992
    :vartype DeleteReferencesCount: ServiceCounterDataType 
11993
    :ivar BrowseCount: 
11994
    :vartype BrowseCount: ServiceCounterDataType 
11995
    :ivar BrowseNextCount: 
11996
    :vartype BrowseNextCount: ServiceCounterDataType 
11997
    :ivar TranslateBrowsePathsToNodeIdsCount: 
11998
    :vartype TranslateBrowsePathsToNodeIdsCount: ServiceCounterDataType 
11999
    :ivar QueryFirstCount: 
12000
    :vartype QueryFirstCount: ServiceCounterDataType 
12001
    :ivar QueryNextCount: 
12002
    :vartype QueryNextCount: ServiceCounterDataType 
12003
    :ivar RegisterNodesCount: 
12004
    :vartype RegisterNodesCount: ServiceCounterDataType 
12005
    :ivar UnregisterNodesCount: 
12006
    :vartype UnregisterNodesCount: ServiceCounterDataType 
12007
    '''
12008 1
    def __init__(self):
12009
        self.SessionId = NodeId()
12010
        self.SessionName = ''
12011
        self.ClientDescription = ApplicationDescription()
12012
        self.ServerUri = ''
12013
        self.EndpointUrl = ''
12014
        self.LocaleIds = []
12015
        self.ActualSessionTimeout = 0
12016
        self.MaxResponseMessageSize = 0
12017
        self.ClientConnectionTime = datetime.now()
12018
        self.ClientLastContactTime = datetime.now()
12019
        self.CurrentSubscriptionsCount = 0
12020
        self.CurrentMonitoredItemsCount = 0
12021
        self.CurrentPublishRequestsInQueue = 0
12022
        self.TotalRequestCount = ServiceCounterDataType()
12023
        self.UnauthorizedRequestCount = 0
12024
        self.ReadCount = ServiceCounterDataType()
12025
        self.HistoryReadCount = ServiceCounterDataType()
12026
        self.WriteCount = ServiceCounterDataType()
12027
        self.HistoryUpdateCount = ServiceCounterDataType()
12028
        self.CallCount = ServiceCounterDataType()
12029
        self.CreateMonitoredItemsCount = ServiceCounterDataType()
12030
        self.ModifyMonitoredItemsCount = ServiceCounterDataType()
12031
        self.SetMonitoringModeCount = ServiceCounterDataType()
12032
        self.SetTriggeringCount = ServiceCounterDataType()
12033
        self.DeleteMonitoredItemsCount = ServiceCounterDataType()
12034
        self.CreateSubscriptionCount = ServiceCounterDataType()
12035
        self.ModifySubscriptionCount = ServiceCounterDataType()
12036
        self.SetPublishingModeCount = ServiceCounterDataType()
12037
        self.PublishCount = ServiceCounterDataType()
12038
        self.RepublishCount = ServiceCounterDataType()
12039
        self.TransferSubscriptionsCount = ServiceCounterDataType()
12040
        self.DeleteSubscriptionsCount = ServiceCounterDataType()
12041
        self.AddNodesCount = ServiceCounterDataType()
12042
        self.AddReferencesCount = ServiceCounterDataType()
12043
        self.DeleteNodesCount = ServiceCounterDataType()
12044
        self.DeleteReferencesCount = ServiceCounterDataType()
12045
        self.BrowseCount = ServiceCounterDataType()
12046
        self.BrowseNextCount = ServiceCounterDataType()
12047
        self.TranslateBrowsePathsToNodeIdsCount = ServiceCounterDataType()
12048
        self.QueryFirstCount = ServiceCounterDataType()
12049
        self.QueryNextCount = ServiceCounterDataType()
12050
        self.RegisterNodesCount = ServiceCounterDataType()
12051
        self.UnregisterNodesCount = ServiceCounterDataType()
12052
        self._freeze()
12053
    
12054 1
    def to_binary(self):
12055
        packet = []
12056
        packet.append(self.SessionId.to_binary())
12057
        packet.append(pack_uatype('String', self.SessionName))
12058
        packet.append(self.ClientDescription.to_binary())
12059
        packet.append(pack_uatype('String', self.ServerUri))
12060
        packet.append(pack_uatype('String', self.EndpointUrl))
12061
        packet.append(struct.pack('<i', len(self.LocaleIds)))
12062
        for fieldname in self.LocaleIds:
12063
            packet.append(pack_uatype('String', fieldname))
12064
        packet.append(pack_uatype('Double', self.ActualSessionTimeout))
12065
        packet.append(pack_uatype('UInt32', self.MaxResponseMessageSize))
12066
        packet.append(pack_uatype('DateTime', self.ClientConnectionTime))
12067
        packet.append(pack_uatype('DateTime', self.ClientLastContactTime))
12068
        packet.append(pack_uatype('UInt32', self.CurrentSubscriptionsCount))
12069
        packet.append(pack_uatype('UInt32', self.CurrentMonitoredItemsCount))
12070
        packet.append(pack_uatype('UInt32', self.CurrentPublishRequestsInQueue))
12071
        packet.append(self.TotalRequestCount.to_binary())
12072
        packet.append(pack_uatype('UInt32', self.UnauthorizedRequestCount))
12073
        packet.append(self.ReadCount.to_binary())
12074
        packet.append(self.HistoryReadCount.to_binary())
12075
        packet.append(self.WriteCount.to_binary())
12076
        packet.append(self.HistoryUpdateCount.to_binary())
12077
        packet.append(self.CallCount.to_binary())
12078
        packet.append(self.CreateMonitoredItemsCount.to_binary())
12079
        packet.append(self.ModifyMonitoredItemsCount.to_binary())
12080
        packet.append(self.SetMonitoringModeCount.to_binary())
12081
        packet.append(self.SetTriggeringCount.to_binary())
12082
        packet.append(self.DeleteMonitoredItemsCount.to_binary())
12083
        packet.append(self.CreateSubscriptionCount.to_binary())
12084
        packet.append(self.ModifySubscriptionCount.to_binary())
12085
        packet.append(self.SetPublishingModeCount.to_binary())
12086
        packet.append(self.PublishCount.to_binary())
12087
        packet.append(self.RepublishCount.to_binary())
12088
        packet.append(self.TransferSubscriptionsCount.to_binary())
12089
        packet.append(self.DeleteSubscriptionsCount.to_binary())
12090
        packet.append(self.AddNodesCount.to_binary())
12091
        packet.append(self.AddReferencesCount.to_binary())
12092
        packet.append(self.DeleteNodesCount.to_binary())
12093
        packet.append(self.DeleteReferencesCount.to_binary())
12094
        packet.append(self.BrowseCount.to_binary())
12095
        packet.append(self.BrowseNextCount.to_binary())
12096
        packet.append(self.TranslateBrowsePathsToNodeIdsCount.to_binary())
12097
        packet.append(self.QueryFirstCount.to_binary())
12098
        packet.append(self.QueryNextCount.to_binary())
12099
        packet.append(self.RegisterNodesCount.to_binary())
12100
        packet.append(self.UnregisterNodesCount.to_binary())
12101
        return b''.join(packet)
12102
        
12103 1
    @staticmethod
12104
    def from_binary(data):
12105
        obj = SessionDiagnosticsDataType()
12106
        obj.SessionId = NodeId.from_binary(data)
12107
        obj.SessionName = unpack_uatype('String', data)
12108
        obj.ClientDescription = ApplicationDescription.from_binary(data)
12109
        obj.ServerUri = unpack_uatype('String', data)
12110
        obj.EndpointUrl = unpack_uatype('String', data)
12111
        obj.LocaleIds = unpack_uatype_array('String', data)
12112
        obj.ActualSessionTimeout = unpack_uatype('Double', data)
12113
        obj.MaxResponseMessageSize = unpack_uatype('UInt32', data)
12114
        obj.ClientConnectionTime = unpack_uatype('DateTime', data)
12115
        obj.ClientLastContactTime = unpack_uatype('DateTime', data)
12116
        obj.CurrentSubscriptionsCount = unpack_uatype('UInt32', data)
12117
        obj.CurrentMonitoredItemsCount = unpack_uatype('UInt32', data)
12118
        obj.CurrentPublishRequestsInQueue = unpack_uatype('UInt32', data)
12119
        obj.TotalRequestCount = ServiceCounterDataType.from_binary(data)
12120
        obj.UnauthorizedRequestCount = unpack_uatype('UInt32', data)
12121
        obj.ReadCount = ServiceCounterDataType.from_binary(data)
12122
        obj.HistoryReadCount = ServiceCounterDataType.from_binary(data)
12123
        obj.WriteCount = ServiceCounterDataType.from_binary(data)
12124
        obj.HistoryUpdateCount = ServiceCounterDataType.from_binary(data)
12125
        obj.CallCount = ServiceCounterDataType.from_binary(data)
12126
        obj.CreateMonitoredItemsCount = ServiceCounterDataType.from_binary(data)
12127
        obj.ModifyMonitoredItemsCount = ServiceCounterDataType.from_binary(data)
12128
        obj.SetMonitoringModeCount = ServiceCounterDataType.from_binary(data)
12129
        obj.SetTriggeringCount = ServiceCounterDataType.from_binary(data)
12130
        obj.DeleteMonitoredItemsCount = ServiceCounterDataType.from_binary(data)
12131
        obj.CreateSubscriptionCount = ServiceCounterDataType.from_binary(data)
12132
        obj.ModifySubscriptionCount = ServiceCounterDataType.from_binary(data)
12133
        obj.SetPublishingModeCount = ServiceCounterDataType.from_binary(data)
12134
        obj.PublishCount = ServiceCounterDataType.from_binary(data)
12135
        obj.RepublishCount = ServiceCounterDataType.from_binary(data)
12136
        obj.TransferSubscriptionsCount = ServiceCounterDataType.from_binary(data)
12137
        obj.DeleteSubscriptionsCount = ServiceCounterDataType.from_binary(data)
12138
        obj.AddNodesCount = ServiceCounterDataType.from_binary(data)
12139
        obj.AddReferencesCount = ServiceCounterDataType.from_binary(data)
12140
        obj.DeleteNodesCount = ServiceCounterDataType.from_binary(data)
12141
        obj.DeleteReferencesCount = ServiceCounterDataType.from_binary(data)
12142
        obj.BrowseCount = ServiceCounterDataType.from_binary(data)
12143
        obj.BrowseNextCount = ServiceCounterDataType.from_binary(data)
12144
        obj.TranslateBrowsePathsToNodeIdsCount = ServiceCounterDataType.from_binary(data)
12145
        obj.QueryFirstCount = ServiceCounterDataType.from_binary(data)
12146
        obj.QueryNextCount = ServiceCounterDataType.from_binary(data)
12147
        obj.RegisterNodesCount = ServiceCounterDataType.from_binary(data)
12148
        obj.UnregisterNodesCount = ServiceCounterDataType.from_binary(data)
12149
        return obj
12150
    
12151 1
    def __str__(self):
12152
        return 'SessionDiagnosticsDataType(' + 'SessionId:' + str(self.SessionId) + ', '  + \
12153
             'SessionName:' + str(self.SessionName) + ', '  + \
12154
             'ClientDescription:' + str(self.ClientDescription) + ', '  + \
12155
             'ServerUri:' + str(self.ServerUri) + ', '  + \
12156
             'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
12157
             'LocaleIds:' + str(self.LocaleIds) + ', '  + \
12158
             'ActualSessionTimeout:' + str(self.ActualSessionTimeout) + ', '  + \
12159
             'MaxResponseMessageSize:' + str(self.MaxResponseMessageSize) + ', '  + \
12160
             'ClientConnectionTime:' + str(self.ClientConnectionTime) + ', '  + \
12161
             'ClientLastContactTime:' + str(self.ClientLastContactTime) + ', '  + \
12162
             'CurrentSubscriptionsCount:' + str(self.CurrentSubscriptionsCount) + ', '  + \
12163
             'CurrentMonitoredItemsCount:' + str(self.CurrentMonitoredItemsCount) + ', '  + \
12164
             'CurrentPublishRequestsInQueue:' + str(self.CurrentPublishRequestsInQueue) + ', '  + \
12165
             'TotalRequestCount:' + str(self.TotalRequestCount) + ', '  + \
12166
             'UnauthorizedRequestCount:' + str(self.UnauthorizedRequestCount) + ', '  + \
12167
             'ReadCount:' + str(self.ReadCount) + ', '  + \
12168
             'HistoryReadCount:' + str(self.HistoryReadCount) + ', '  + \
12169
             'WriteCount:' + str(self.WriteCount) + ', '  + \
12170
             'HistoryUpdateCount:' + str(self.HistoryUpdateCount) + ', '  + \
12171
             'CallCount:' + str(self.CallCount) + ', '  + \
12172
             'CreateMonitoredItemsCount:' + str(self.CreateMonitoredItemsCount) + ', '  + \
12173
             'ModifyMonitoredItemsCount:' + str(self.ModifyMonitoredItemsCount) + ', '  + \
12174
             'SetMonitoringModeCount:' + str(self.SetMonitoringModeCount) + ', '  + \
12175
             'SetTriggeringCount:' + str(self.SetTriggeringCount) + ', '  + \
12176
             'DeleteMonitoredItemsCount:' + str(self.DeleteMonitoredItemsCount) + ', '  + \
12177
             'CreateSubscriptionCount:' + str(self.CreateSubscriptionCount) + ', '  + \
12178
             'ModifySubscriptionCount:' + str(self.ModifySubscriptionCount) + ', '  + \
12179
             'SetPublishingModeCount:' + str(self.SetPublishingModeCount) + ', '  + \
12180
             'PublishCount:' + str(self.PublishCount) + ', '  + \
12181
             'RepublishCount:' + str(self.RepublishCount) + ', '  + \
12182
             'TransferSubscriptionsCount:' + str(self.TransferSubscriptionsCount) + ', '  + \
12183
             'DeleteSubscriptionsCount:' + str(self.DeleteSubscriptionsCount) + ', '  + \
12184
             'AddNodesCount:' + str(self.AddNodesCount) + ', '  + \
12185
             'AddReferencesCount:' + str(self.AddReferencesCount) + ', '  + \
12186
             'DeleteNodesCount:' + str(self.DeleteNodesCount) + ', '  + \
12187
             'DeleteReferencesCount:' + str(self.DeleteReferencesCount) + ', '  + \
12188
             'BrowseCount:' + str(self.BrowseCount) + ', '  + \
12189
             'BrowseNextCount:' + str(self.BrowseNextCount) + ', '  + \
12190
             'TranslateBrowsePathsToNodeIdsCount:' + str(self.TranslateBrowsePathsToNodeIdsCount) + ', '  + \
12191
             'QueryFirstCount:' + str(self.QueryFirstCount) + ', '  + \
12192
             'QueryNextCount:' + str(self.QueryNextCount) + ', '  + \
12193
             'RegisterNodesCount:' + str(self.RegisterNodesCount) + ', '  + \
12194
             'UnregisterNodesCount:' + str(self.UnregisterNodesCount) + ')'
12195
    
12196 1
    __repr__ = __str__
12197
    
12198 1
class SessionSecurityDiagnosticsDataType(FrozenClass):
12199
    '''
12200
    :ivar SessionId: 
12201
    :vartype SessionId: NodeId 
12202
    :ivar ClientUserIdOfSession: 
12203
    :vartype ClientUserIdOfSession: String 
12204
    :ivar ClientUserIdHistory: 
12205
    :vartype ClientUserIdHistory: String 
12206
    :ivar AuthenticationMechanism: 
12207
    :vartype AuthenticationMechanism: String 
12208
    :ivar Encoding: 
12209
    :vartype Encoding: String 
12210
    :ivar TransportProtocol: 
12211
    :vartype TransportProtocol: String 
12212
    :ivar SecurityMode: 
12213
    :vartype SecurityMode: MessageSecurityMode 
12214
    :ivar SecurityPolicyUri: 
12215
    :vartype SecurityPolicyUri: String 
12216
    :ivar ClientCertificate: 
12217
    :vartype ClientCertificate: ByteString 
12218
    '''
12219 1
    def __init__(self):
12220
        self.SessionId = NodeId()
12221
        self.ClientUserIdOfSession = ''
12222
        self.ClientUserIdHistory = []
12223
        self.AuthenticationMechanism = ''
12224
        self.Encoding = ''
12225
        self.TransportProtocol = ''
12226
        self.SecurityMode = 0
12227
        self.SecurityPolicyUri = ''
12228
        self.ClientCertificate = b''
12229
        self._freeze()
12230
    
12231 1
    def to_binary(self):
12232
        packet = []
12233
        packet.append(self.SessionId.to_binary())
12234
        packet.append(pack_uatype('String', self.ClientUserIdOfSession))
12235
        packet.append(struct.pack('<i', len(self.ClientUserIdHistory)))
12236
        for fieldname in self.ClientUserIdHistory:
12237
            packet.append(pack_uatype('String', fieldname))
12238
        packet.append(pack_uatype('String', self.AuthenticationMechanism))
12239
        packet.append(pack_uatype('String', self.Encoding))
12240
        packet.append(pack_uatype('String', self.TransportProtocol))
12241
        packet.append(pack_uatype('UInt32', self.SecurityMode))
12242
        packet.append(pack_uatype('String', self.SecurityPolicyUri))
12243
        packet.append(pack_uatype('ByteString', self.ClientCertificate))
12244
        return b''.join(packet)
12245
        
12246 1
    @staticmethod
12247
    def from_binary(data):
12248
        obj = SessionSecurityDiagnosticsDataType()
12249
        obj.SessionId = NodeId.from_binary(data)
12250
        obj.ClientUserIdOfSession = unpack_uatype('String', data)
12251
        obj.ClientUserIdHistory = unpack_uatype_array('String', data)
12252
        obj.AuthenticationMechanism = unpack_uatype('String', data)
12253
        obj.Encoding = unpack_uatype('String', data)
12254
        obj.TransportProtocol = unpack_uatype('String', data)
12255
        obj.SecurityMode = unpack_uatype('UInt32', data)
12256
        obj.SecurityPolicyUri = unpack_uatype('String', data)
12257
        obj.ClientCertificate = unpack_uatype('ByteString', data)
12258
        return obj
12259
    
12260 1
    def __str__(self):
12261
        return 'SessionSecurityDiagnosticsDataType(' + 'SessionId:' + str(self.SessionId) + ', '  + \
12262
             'ClientUserIdOfSession:' + str(self.ClientUserIdOfSession) + ', '  + \
12263
             'ClientUserIdHistory:' + str(self.ClientUserIdHistory) + ', '  + \
12264
             'AuthenticationMechanism:' + str(self.AuthenticationMechanism) + ', '  + \
12265
             'Encoding:' + str(self.Encoding) + ', '  + \
12266
             'TransportProtocol:' + str(self.TransportProtocol) + ', '  + \
12267
             'SecurityMode:' + str(self.SecurityMode) + ', '  + \
12268
             'SecurityPolicyUri:' + str(self.SecurityPolicyUri) + ', '  + \
12269
             'ClientCertificate:' + str(self.ClientCertificate) + ')'
12270
    
12271 1
    __repr__ = __str__
12272
    
12273 1
class ServiceCounterDataType(FrozenClass):
12274
    '''
12275
    :ivar TotalCount: 
12276
    :vartype TotalCount: UInt32 
12277
    :ivar ErrorCount: 
12278
    :vartype ErrorCount: UInt32 
12279
    '''
12280 1
    def __init__(self):
12281
        self.TotalCount = 0
12282
        self.ErrorCount = 0
12283
        self._freeze()
12284
    
12285 1
    def to_binary(self):
12286
        packet = []
12287
        packet.append(pack_uatype('UInt32', self.TotalCount))
12288
        packet.append(pack_uatype('UInt32', self.ErrorCount))
12289
        return b''.join(packet)
12290
        
12291 1
    @staticmethod
12292
    def from_binary(data):
12293
        obj = ServiceCounterDataType()
12294
        obj.TotalCount = unpack_uatype('UInt32', data)
12295
        obj.ErrorCount = unpack_uatype('UInt32', data)
12296
        return obj
12297
    
12298 1
    def __str__(self):
12299
        return 'ServiceCounterDataType(' + 'TotalCount:' + str(self.TotalCount) + ', '  + \
12300
             'ErrorCount:' + str(self.ErrorCount) + ')'
12301
    
12302 1
    __repr__ = __str__
12303
    
12304 1
class StatusResult(FrozenClass):
12305
    '''
12306
    :ivar StatusCode: 
12307
    :vartype StatusCode: StatusCode 
12308
    :ivar DiagnosticInfo: 
12309
    :vartype DiagnosticInfo: DiagnosticInfo 
12310
    '''
12311 1
    def __init__(self):
12312
        self.StatusCode = StatusCode()
12313
        self.DiagnosticInfo = DiagnosticInfo()
12314
        self._freeze()
12315
    
12316 1
    def to_binary(self):
12317
        packet = []
12318
        packet.append(self.StatusCode.to_binary())
12319
        packet.append(self.DiagnosticInfo.to_binary())
12320
        return b''.join(packet)
12321
        
12322 1
    @staticmethod
12323
    def from_binary(data):
12324
        obj = StatusResult()
12325
        obj.StatusCode = StatusCode.from_binary(data)
12326
        obj.DiagnosticInfo = DiagnosticInfo.from_binary(data)
12327
        return obj
12328
    
12329 1
    def __str__(self):
12330
        return 'StatusResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
12331
             'DiagnosticInfo:' + str(self.DiagnosticInfo) + ')'
12332
    
12333 1
    __repr__ = __str__
12334
    
12335 1
class SubscriptionDiagnosticsDataType(FrozenClass):
12336
    '''
12337
    :ivar SessionId: 
12338
    :vartype SessionId: NodeId 
12339
    :ivar SubscriptionId: 
12340
    :vartype SubscriptionId: UInt32 
12341
    :ivar Priority: 
12342
    :vartype Priority: Byte 
12343
    :ivar PublishingInterval: 
12344
    :vartype PublishingInterval: Double 
12345
    :ivar MaxKeepAliveCount: 
12346
    :vartype MaxKeepAliveCount: UInt32 
12347
    :ivar MaxLifetimeCount: 
12348
    :vartype MaxLifetimeCount: UInt32 
12349
    :ivar MaxNotificationsPerPublish: 
12350
    :vartype MaxNotificationsPerPublish: UInt32 
12351
    :ivar PublishingEnabled: 
12352
    :vartype PublishingEnabled: Boolean 
12353
    :ivar ModifyCount: 
12354
    :vartype ModifyCount: UInt32 
12355
    :ivar EnableCount: 
12356
    :vartype EnableCount: UInt32 
12357
    :ivar DisableCount: 
12358
    :vartype DisableCount: UInt32 
12359
    :ivar RepublishRequestCount: 
12360
    :vartype RepublishRequestCount: UInt32 
12361
    :ivar RepublishMessageRequestCount: 
12362
    :vartype RepublishMessageRequestCount: UInt32 
12363
    :ivar RepublishMessageCount: 
12364
    :vartype RepublishMessageCount: UInt32 
12365
    :ivar TransferRequestCount: 
12366
    :vartype TransferRequestCount: UInt32 
12367
    :ivar TransferredToAltClientCount: 
12368
    :vartype TransferredToAltClientCount: UInt32 
12369
    :ivar TransferredToSameClientCount: 
12370
    :vartype TransferredToSameClientCount: UInt32 
12371
    :ivar PublishRequestCount: 
12372
    :vartype PublishRequestCount: UInt32 
12373
    :ivar DataChangeNotificationsCount: 
12374
    :vartype DataChangeNotificationsCount: UInt32 
12375
    :ivar EventNotificationsCount: 
12376
    :vartype EventNotificationsCount: UInt32 
12377
    :ivar NotificationsCount: 
12378
    :vartype NotificationsCount: UInt32 
12379
    :ivar LatePublishRequestCount: 
12380
    :vartype LatePublishRequestCount: UInt32 
12381
    :ivar CurrentKeepAliveCount: 
12382
    :vartype CurrentKeepAliveCount: UInt32 
12383
    :ivar CurrentLifetimeCount: 
12384
    :vartype CurrentLifetimeCount: UInt32 
12385
    :ivar UnacknowledgedMessageCount: 
12386
    :vartype UnacknowledgedMessageCount: UInt32 
12387
    :ivar DiscardedMessageCount: 
12388
    :vartype DiscardedMessageCount: UInt32 
12389
    :ivar MonitoredItemCount: 
12390
    :vartype MonitoredItemCount: UInt32 
12391
    :ivar DisabledMonitoredItemCount: 
12392
    :vartype DisabledMonitoredItemCount: UInt32 
12393
    :ivar MonitoringQueueOverflowCount: 
12394
    :vartype MonitoringQueueOverflowCount: UInt32 
12395
    :ivar NextSequenceNumber: 
12396
    :vartype NextSequenceNumber: UInt32 
12397
    :ivar EventQueueOverFlowCount: 
12398
    :vartype EventQueueOverFlowCount: UInt32 
12399
    '''
12400 1
    def __init__(self):
12401
        self.SessionId = NodeId()
12402
        self.SubscriptionId = 0
12403
        self.Priority = 0
12404
        self.PublishingInterval = 0
12405
        self.MaxKeepAliveCount = 0
12406
        self.MaxLifetimeCount = 0
12407
        self.MaxNotificationsPerPublish = 0
12408
        self.PublishingEnabled = True
12409
        self.ModifyCount = 0
12410
        self.EnableCount = 0
12411
        self.DisableCount = 0
12412
        self.RepublishRequestCount = 0
12413
        self.RepublishMessageRequestCount = 0
12414
        self.RepublishMessageCount = 0
12415
        self.TransferRequestCount = 0
12416
        self.TransferredToAltClientCount = 0
12417
        self.TransferredToSameClientCount = 0
12418
        self.PublishRequestCount = 0
12419
        self.DataChangeNotificationsCount = 0
12420
        self.EventNotificationsCount = 0
12421
        self.NotificationsCount = 0
12422
        self.LatePublishRequestCount = 0
12423
        self.CurrentKeepAliveCount = 0
12424
        self.CurrentLifetimeCount = 0
12425
        self.UnacknowledgedMessageCount = 0
12426
        self.DiscardedMessageCount = 0
12427
        self.MonitoredItemCount = 0
12428
        self.DisabledMonitoredItemCount = 0
12429
        self.MonitoringQueueOverflowCount = 0
12430
        self.NextSequenceNumber = 0
12431
        self.EventQueueOverFlowCount = 0
12432
        self._freeze()
12433
    
12434 1
    def to_binary(self):
12435
        packet = []
12436
        packet.append(self.SessionId.to_binary())
12437
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
12438
        packet.append(pack_uatype('Byte', self.Priority))
12439
        packet.append(pack_uatype('Double', self.PublishingInterval))
12440
        packet.append(pack_uatype('UInt32', self.MaxKeepAliveCount))
12441
        packet.append(pack_uatype('UInt32', self.MaxLifetimeCount))
12442
        packet.append(pack_uatype('UInt32', self.MaxNotificationsPerPublish))
12443
        packet.append(pack_uatype('Boolean', self.PublishingEnabled))
12444
        packet.append(pack_uatype('UInt32', self.ModifyCount))
12445
        packet.append(pack_uatype('UInt32', self.EnableCount))
12446
        packet.append(pack_uatype('UInt32', self.DisableCount))
12447
        packet.append(pack_uatype('UInt32', self.RepublishRequestCount))
12448
        packet.append(pack_uatype('UInt32', self.RepublishMessageRequestCount))
12449
        packet.append(pack_uatype('UInt32', self.RepublishMessageCount))
12450
        packet.append(pack_uatype('UInt32', self.TransferRequestCount))
12451
        packet.append(pack_uatype('UInt32', self.TransferredToAltClientCount))
12452
        packet.append(pack_uatype('UInt32', self.TransferredToSameClientCount))
12453
        packet.append(pack_uatype('UInt32', self.PublishRequestCount))
12454
        packet.append(pack_uatype('UInt32', self.DataChangeNotificationsCount))
12455
        packet.append(pack_uatype('UInt32', self.EventNotificationsCount))
12456
        packet.append(pack_uatype('UInt32', self.NotificationsCount))
12457
        packet.append(pack_uatype('UInt32', self.LatePublishRequestCount))
12458
        packet.append(pack_uatype('UInt32', self.CurrentKeepAliveCount))
12459
        packet.append(pack_uatype('UInt32', self.CurrentLifetimeCount))
12460
        packet.append(pack_uatype('UInt32', self.UnacknowledgedMessageCount))
12461
        packet.append(pack_uatype('UInt32', self.DiscardedMessageCount))
12462
        packet.append(pack_uatype('UInt32', self.MonitoredItemCount))
12463
        packet.append(pack_uatype('UInt32', self.DisabledMonitoredItemCount))
12464
        packet.append(pack_uatype('UInt32', self.MonitoringQueueOverflowCount))
12465
        packet.append(pack_uatype('UInt32', self.NextSequenceNumber))
12466
        packet.append(pack_uatype('UInt32', self.EventQueueOverFlowCount))
12467
        return b''.join(packet)
12468
        
12469 1
    @staticmethod
12470
    def from_binary(data):
12471
        obj = SubscriptionDiagnosticsDataType()
12472
        obj.SessionId = NodeId.from_binary(data)
12473
        obj.SubscriptionId = unpack_uatype('UInt32', data)
12474
        obj.Priority = unpack_uatype('Byte', data)
12475
        obj.PublishingInterval = unpack_uatype('Double', data)
12476
        obj.MaxKeepAliveCount = unpack_uatype('UInt32', data)
12477
        obj.MaxLifetimeCount = unpack_uatype('UInt32', data)
12478
        obj.MaxNotificationsPerPublish = unpack_uatype('UInt32', data)
12479
        obj.PublishingEnabled = unpack_uatype('Boolean', data)
12480
        obj.ModifyCount = unpack_uatype('UInt32', data)
12481
        obj.EnableCount = unpack_uatype('UInt32', data)
12482
        obj.DisableCount = unpack_uatype('UInt32', data)
12483
        obj.RepublishRequestCount = unpack_uatype('UInt32', data)
12484
        obj.RepublishMessageRequestCount = unpack_uatype('UInt32', data)
12485
        obj.RepublishMessageCount = unpack_uatype('UInt32', data)
12486
        obj.TransferRequestCount = unpack_uatype('UInt32', data)
12487
        obj.TransferredToAltClientCount = unpack_uatype('UInt32', data)
12488
        obj.TransferredToSameClientCount = unpack_uatype('UInt32', data)
12489
        obj.PublishRequestCount = unpack_uatype('UInt32', data)
12490
        obj.DataChangeNotificationsCount = unpack_uatype('UInt32', data)
12491
        obj.EventNotificationsCount = unpack_uatype('UInt32', data)
12492
        obj.NotificationsCount = unpack_uatype('UInt32', data)
12493
        obj.LatePublishRequestCount = unpack_uatype('UInt32', data)
12494
        obj.CurrentKeepAliveCount = unpack_uatype('UInt32', data)
12495
        obj.CurrentLifetimeCount = unpack_uatype('UInt32', data)
12496
        obj.UnacknowledgedMessageCount = unpack_uatype('UInt32', data)
12497
        obj.DiscardedMessageCount = unpack_uatype('UInt32', data)
12498
        obj.MonitoredItemCount = unpack_uatype('UInt32', data)
12499
        obj.DisabledMonitoredItemCount = unpack_uatype('UInt32', data)
12500
        obj.MonitoringQueueOverflowCount = unpack_uatype('UInt32', data)
12501
        obj.NextSequenceNumber = unpack_uatype('UInt32', data)
12502
        obj.EventQueueOverFlowCount = unpack_uatype('UInt32', data)
12503
        return obj
12504
    
12505 1
    def __str__(self):
12506
        return 'SubscriptionDiagnosticsDataType(' + 'SessionId:' + str(self.SessionId) + ', '  + \
12507
             'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
12508
             'Priority:' + str(self.Priority) + ', '  + \
12509
             'PublishingInterval:' + str(self.PublishingInterval) + ', '  + \
12510
             'MaxKeepAliveCount:' + str(self.MaxKeepAliveCount) + ', '  + \
12511
             'MaxLifetimeCount:' + str(self.MaxLifetimeCount) + ', '  + \
12512
             'MaxNotificationsPerPublish:' + str(self.MaxNotificationsPerPublish) + ', '  + \
12513
             'PublishingEnabled:' + str(self.PublishingEnabled) + ', '  + \
12514
             'ModifyCount:' + str(self.ModifyCount) + ', '  + \
12515
             'EnableCount:' + str(self.EnableCount) + ', '  + \
12516
             'DisableCount:' + str(self.DisableCount) + ', '  + \
12517
             'RepublishRequestCount:' + str(self.RepublishRequestCount) + ', '  + \
12518
             'RepublishMessageRequestCount:' + str(self.RepublishMessageRequestCount) + ', '  + \
12519
             'RepublishMessageCount:' + str(self.RepublishMessageCount) + ', '  + \
12520
             'TransferRequestCount:' + str(self.TransferRequestCount) + ', '  + \
12521
             'TransferredToAltClientCount:' + str(self.TransferredToAltClientCount) + ', '  + \
12522
             'TransferredToSameClientCount:' + str(self.TransferredToSameClientCount) + ', '  + \
12523
             'PublishRequestCount:' + str(self.PublishRequestCount) + ', '  + \
12524
             'DataChangeNotificationsCount:' + str(self.DataChangeNotificationsCount) + ', '  + \
12525
             'EventNotificationsCount:' + str(self.EventNotificationsCount) + ', '  + \
12526
             'NotificationsCount:' + str(self.NotificationsCount) + ', '  + \
12527
             'LatePublishRequestCount:' + str(self.LatePublishRequestCount) + ', '  + \
12528
             'CurrentKeepAliveCount:' + str(self.CurrentKeepAliveCount) + ', '  + \
12529
             'CurrentLifetimeCount:' + str(self.CurrentLifetimeCount) + ', '  + \
12530
             'UnacknowledgedMessageCount:' + str(self.UnacknowledgedMessageCount) + ', '  + \
12531
             'DiscardedMessageCount:' + str(self.DiscardedMessageCount) + ', '  + \
12532
             'MonitoredItemCount:' + str(self.MonitoredItemCount) + ', '  + \
12533
             'DisabledMonitoredItemCount:' + str(self.DisabledMonitoredItemCount) + ', '  + \
12534
             'MonitoringQueueOverflowCount:' + str(self.MonitoringQueueOverflowCount) + ', '  + \
12535
             'NextSequenceNumber:' + str(self.NextSequenceNumber) + ', '  + \
12536
             'EventQueueOverFlowCount:' + str(self.EventQueueOverFlowCount) + ')'
12537
    
12538 1
    __repr__ = __str__
12539
    
12540 1
class ModelChangeStructureDataType(FrozenClass):
12541
    '''
12542
    :ivar Affected: 
12543
    :vartype Affected: NodeId 
12544
    :ivar AffectedType: 
12545
    :vartype AffectedType: NodeId 
12546
    :ivar Verb: 
12547
    :vartype Verb: Byte 
12548
    '''
12549 1
    def __init__(self):
12550
        self.Affected = NodeId()
12551
        self.AffectedType = NodeId()
12552
        self.Verb = 0
12553
        self._freeze()
12554
    
12555 1
    def to_binary(self):
12556
        packet = []
12557
        packet.append(self.Affected.to_binary())
12558
        packet.append(self.AffectedType.to_binary())
12559
        packet.append(pack_uatype('Byte', self.Verb))
12560
        return b''.join(packet)
12561
        
12562 1
    @staticmethod
12563
    def from_binary(data):
12564
        obj = ModelChangeStructureDataType()
12565
        obj.Affected = NodeId.from_binary(data)
12566
        obj.AffectedType = NodeId.from_binary(data)
12567
        obj.Verb = unpack_uatype('Byte', data)
12568
        return obj
12569
    
12570 1
    def __str__(self):
12571
        return 'ModelChangeStructureDataType(' + 'Affected:' + str(self.Affected) + ', '  + \
12572
             'AffectedType:' + str(self.AffectedType) + ', '  + \
12573
             'Verb:' + str(self.Verb) + ')'
12574
    
12575 1
    __repr__ = __str__
12576
    
12577 1
class SemanticChangeStructureDataType(FrozenClass):
12578
    '''
12579
    :ivar Affected: 
12580
    :vartype Affected: NodeId 
12581
    :ivar AffectedType: 
12582
    :vartype AffectedType: NodeId 
12583
    '''
12584 1
    def __init__(self):
12585
        self.Affected = NodeId()
12586
        self.AffectedType = NodeId()
12587
        self._freeze()
12588
    
12589 1
    def to_binary(self):
12590
        packet = []
12591
        packet.append(self.Affected.to_binary())
12592
        packet.append(self.AffectedType.to_binary())
12593
        return b''.join(packet)
12594
        
12595 1
    @staticmethod
12596
    def from_binary(data):
12597
        obj = SemanticChangeStructureDataType()
12598
        obj.Affected = NodeId.from_binary(data)
12599
        obj.AffectedType = NodeId.from_binary(data)
12600
        return obj
12601
    
12602 1
    def __str__(self):
12603
        return 'SemanticChangeStructureDataType(' + 'Affected:' + str(self.Affected) + ', '  + \
12604
             'AffectedType:' + str(self.AffectedType) + ')'
12605
    
12606 1
    __repr__ = __str__
12607
    
12608 1
class Range(FrozenClass):
12609
    '''
12610
    :ivar Low: 
12611
    :vartype Low: Double 
12612
    :ivar High: 
12613
    :vartype High: Double 
12614
    '''
12615 1
    def __init__(self):
12616
        self.Low = 0
12617
        self.High = 0
12618
        self._freeze()
12619
    
12620 1
    def to_binary(self):
12621
        packet = []
12622
        packet.append(pack_uatype('Double', self.Low))
12623
        packet.append(pack_uatype('Double', self.High))
12624
        return b''.join(packet)
12625
        
12626 1
    @staticmethod
12627
    def from_binary(data):
12628
        obj = Range()
12629
        obj.Low = unpack_uatype('Double', data)
12630
        obj.High = unpack_uatype('Double', data)
12631
        return obj
12632
    
12633 1
    def __str__(self):
12634
        return 'Range(' + 'Low:' + str(self.Low) + ', '  + \
12635
             'High:' + str(self.High) + ')'
12636
    
12637 1
    __repr__ = __str__
12638
    
12639 1
class EUInformation(FrozenClass):
12640
    '''
12641
    :ivar NamespaceUri: 
12642
    :vartype NamespaceUri: String 
12643
    :ivar UnitId: 
12644
    :vartype UnitId: Int32 
12645
    :ivar DisplayName: 
12646
    :vartype DisplayName: LocalizedText 
12647
    :ivar Description: 
12648
    :vartype Description: LocalizedText 
12649
    '''
12650 1
    def __init__(self):
12651
        self.NamespaceUri = ''
12652
        self.UnitId = 0
12653
        self.DisplayName = LocalizedText()
12654
        self.Description = LocalizedText()
12655
        self._freeze()
12656
    
12657 1
    def to_binary(self):
12658
        packet = []
12659
        packet.append(pack_uatype('String', self.NamespaceUri))
12660
        packet.append(pack_uatype('Int32', self.UnitId))
12661
        packet.append(self.DisplayName.to_binary())
12662
        packet.append(self.Description.to_binary())
12663
        return b''.join(packet)
12664
        
12665 1
    @staticmethod
12666
    def from_binary(data):
12667
        obj = EUInformation()
12668
        obj.NamespaceUri = unpack_uatype('String', data)
12669
        obj.UnitId = unpack_uatype('Int32', data)
12670
        obj.DisplayName = LocalizedText.from_binary(data)
12671
        obj.Description = LocalizedText.from_binary(data)
12672
        return obj
12673
    
12674 1
    def __str__(self):
12675
        return 'EUInformation(' + 'NamespaceUri:' + str(self.NamespaceUri) + ', '  + \
12676
             'UnitId:' + str(self.UnitId) + ', '  + \
12677
             'DisplayName:' + str(self.DisplayName) + ', '  + \
12678
             'Description:' + str(self.Description) + ')'
12679
    
12680 1
    __repr__ = __str__
12681
    
12682 1
class ComplexNumberType(FrozenClass):
12683
    '''
12684
    :ivar Real: 
12685
    :vartype Real: Float 
12686
    :ivar Imaginary: 
12687
    :vartype Imaginary: Float 
12688
    '''
12689 1
    def __init__(self):
12690
        self.Real = 0
12691
        self.Imaginary = 0
12692
        self._freeze()
12693
    
12694 1
    def to_binary(self):
12695
        packet = []
12696
        packet.append(pack_uatype('Float', self.Real))
12697
        packet.append(pack_uatype('Float', self.Imaginary))
12698
        return b''.join(packet)
12699
        
12700 1
    @staticmethod
12701
    def from_binary(data):
12702
        obj = ComplexNumberType()
12703
        obj.Real = unpack_uatype('Float', data)
12704
        obj.Imaginary = unpack_uatype('Float', data)
12705
        return obj
12706
    
12707 1
    def __str__(self):
12708
        return 'ComplexNumberType(' + 'Real:' + str(self.Real) + ', '  + \
12709
             'Imaginary:' + str(self.Imaginary) + ')'
12710
    
12711 1
    __repr__ = __str__
12712
    
12713 1
class DoubleComplexNumberType(FrozenClass):
12714
    '''
12715
    :ivar Real: 
12716
    :vartype Real: Double 
12717
    :ivar Imaginary: 
12718
    :vartype Imaginary: Double 
12719
    '''
12720 1
    def __init__(self):
12721
        self.Real = 0
12722
        self.Imaginary = 0
12723
        self._freeze()
12724
    
12725 1
    def to_binary(self):
12726
        packet = []
12727
        packet.append(pack_uatype('Double', self.Real))
12728
        packet.append(pack_uatype('Double', self.Imaginary))
12729
        return b''.join(packet)
12730
        
12731 1
    @staticmethod
12732
    def from_binary(data):
12733
        obj = DoubleComplexNumberType()
12734
        obj.Real = unpack_uatype('Double', data)
12735
        obj.Imaginary = unpack_uatype('Double', data)
12736
        return obj
12737
    
12738 1
    def __str__(self):
12739
        return 'DoubleComplexNumberType(' + 'Real:' + str(self.Real) + ', '  + \
12740
             'Imaginary:' + str(self.Imaginary) + ')'
12741
    
12742 1
    __repr__ = __str__
12743
    
12744 1
class AxisInformation(FrozenClass):
12745
    '''
12746
    :ivar EngineeringUnits: 
12747
    :vartype EngineeringUnits: EUInformation 
12748
    :ivar EURange: 
12749
    :vartype EURange: Range 
12750
    :ivar Title: 
12751
    :vartype Title: LocalizedText 
12752
    :ivar AxisScaleType: 
12753
    :vartype AxisScaleType: AxisScaleEnumeration 
12754
    :ivar AxisSteps: 
12755
    :vartype AxisSteps: Double 
12756
    '''
12757 1
    def __init__(self):
12758
        self.EngineeringUnits = EUInformation()
12759
        self.EURange = Range()
12760
        self.Title = LocalizedText()
12761
        self.AxisScaleType = 0
12762
        self.AxisSteps = []
12763
        self._freeze()
12764
    
12765 1
    def to_binary(self):
12766
        packet = []
12767
        packet.append(self.EngineeringUnits.to_binary())
12768
        packet.append(self.EURange.to_binary())
12769
        packet.append(self.Title.to_binary())
12770
        packet.append(pack_uatype('UInt32', self.AxisScaleType))
12771
        packet.append(struct.pack('<i', len(self.AxisSteps)))
12772
        for fieldname in self.AxisSteps:
12773
            packet.append(pack_uatype('Double', fieldname))
12774
        return b''.join(packet)
12775
        
12776 1
    @staticmethod
12777
    def from_binary(data):
12778
        obj = AxisInformation()
12779
        obj.EngineeringUnits = EUInformation.from_binary(data)
12780
        obj.EURange = Range.from_binary(data)
12781
        obj.Title = LocalizedText.from_binary(data)
12782
        obj.AxisScaleType = unpack_uatype('UInt32', data)
12783
        obj.AxisSteps = unpack_uatype_array('Double', data)
12784
        return obj
12785
    
12786 1
    def __str__(self):
12787
        return 'AxisInformation(' + 'EngineeringUnits:' + str(self.EngineeringUnits) + ', '  + \
12788
             'EURange:' + str(self.EURange) + ', '  + \
12789
             'Title:' + str(self.Title) + ', '  + \
12790
             'AxisScaleType:' + str(self.AxisScaleType) + ', '  + \
12791
             'AxisSteps:' + str(self.AxisSteps) + ')'
12792
    
12793 1
    __repr__ = __str__
12794
    
12795 1
class XVType(FrozenClass):
12796
    '''
12797
    :ivar X: 
12798
    :vartype X: Double 
12799
    :ivar Value: 
12800
    :vartype Value: Float 
12801
    '''
12802 1
    def __init__(self):
12803
        self.X = 0
12804
        self.Value = 0
12805
        self._freeze()
12806
    
12807 1
    def to_binary(self):
12808
        packet = []
12809
        packet.append(pack_uatype('Double', self.X))
12810
        packet.append(pack_uatype('Float', self.Value))
12811
        return b''.join(packet)
12812
        
12813 1
    @staticmethod
12814
    def from_binary(data):
12815
        obj = XVType()
12816
        obj.X = unpack_uatype('Double', data)
12817
        obj.Value = unpack_uatype('Float', data)
12818
        return obj
12819
    
12820 1
    def __str__(self):
12821
        return 'XVType(' + 'X:' + str(self.X) + ', '  + \
12822
             'Value:' + str(self.Value) + ')'
12823
    
12824 1
    __repr__ = __str__
12825
    
12826 1
class ProgramDiagnosticDataType(FrozenClass):
12827
    '''
12828
    :ivar CreateSessionId: 
12829
    :vartype CreateSessionId: NodeId 
12830
    :ivar CreateClientName: 
12831
    :vartype CreateClientName: String 
12832
    :ivar InvocationCreationTime: 
12833
    :vartype InvocationCreationTime: DateTime 
12834
    :ivar LastTransitionTime: 
12835
    :vartype LastTransitionTime: DateTime 
12836
    :ivar LastMethodCall: 
12837
    :vartype LastMethodCall: String 
12838
    :ivar LastMethodSessionId: 
12839
    :vartype LastMethodSessionId: NodeId 
12840
    :ivar LastMethodInputArguments: 
12841
    :vartype LastMethodInputArguments: Argument 
12842
    :ivar LastMethodOutputArguments: 
12843
    :vartype LastMethodOutputArguments: Argument 
12844
    :ivar LastMethodCallTime: 
12845
    :vartype LastMethodCallTime: DateTime 
12846
    :ivar LastMethodReturnStatus: 
12847
    :vartype LastMethodReturnStatus: StatusResult 
12848
    '''
12849 1
    def __init__(self):
12850
        self.CreateSessionId = NodeId()
12851
        self.CreateClientName = ''
12852
        self.InvocationCreationTime = datetime.now()
12853
        self.LastTransitionTime = datetime.now()
12854
        self.LastMethodCall = ''
12855
        self.LastMethodSessionId = NodeId()
12856
        self.LastMethodInputArguments = []
12857
        self.LastMethodOutputArguments = []
12858
        self.LastMethodCallTime = datetime.now()
12859
        self.LastMethodReturnStatus = StatusResult()
12860
        self._freeze()
12861
    
12862 1
    def to_binary(self):
12863
        packet = []
12864
        packet.append(self.CreateSessionId.to_binary())
12865
        packet.append(pack_uatype('String', self.CreateClientName))
12866
        packet.append(pack_uatype('DateTime', self.InvocationCreationTime))
12867
        packet.append(pack_uatype('DateTime', self.LastTransitionTime))
12868
        packet.append(pack_uatype('String', self.LastMethodCall))
12869
        packet.append(self.LastMethodSessionId.to_binary())
12870
        packet.append(struct.pack('<i', len(self.LastMethodInputArguments)))
12871
        for fieldname in self.LastMethodInputArguments:
12872
            packet.append(fieldname.to_binary())
12873
        packet.append(struct.pack('<i', len(self.LastMethodOutputArguments)))
12874
        for fieldname in self.LastMethodOutputArguments:
12875
            packet.append(fieldname.to_binary())
12876
        packet.append(pack_uatype('DateTime', self.LastMethodCallTime))
12877
        packet.append(self.LastMethodReturnStatus.to_binary())
12878
        return b''.join(packet)
12879
        
12880 1
    @staticmethod
12881
    def from_binary(data):
12882
        obj = ProgramDiagnosticDataType()
12883
        obj.CreateSessionId = NodeId.from_binary(data)
12884
        obj.CreateClientName = unpack_uatype('String', data)
12885
        obj.InvocationCreationTime = unpack_uatype('DateTime', data)
12886
        obj.LastTransitionTime = unpack_uatype('DateTime', data)
12887
        obj.LastMethodCall = unpack_uatype('String', data)
12888
        obj.LastMethodSessionId = NodeId.from_binary(data)
12889
        length = struct.unpack('<i', data.read(4))[0]
12890
        if length != -1:
12891
            for _ in range(0, length):
12892
                obj.LastMethodInputArguments.append(Argument.from_binary(data))
12893
        length = struct.unpack('<i', data.read(4))[0]
12894
        if length != -1:
12895
            for _ in range(0, length):
12896
                obj.LastMethodOutputArguments.append(Argument.from_binary(data))
12897
        obj.LastMethodCallTime = unpack_uatype('DateTime', data)
12898
        obj.LastMethodReturnStatus = StatusResult.from_binary(data)
12899
        return obj
12900
    
12901 1
    def __str__(self):
12902
        return 'ProgramDiagnosticDataType(' + 'CreateSessionId:' + str(self.CreateSessionId) + ', '  + \
12903
             'CreateClientName:' + str(self.CreateClientName) + ', '  + \
12904
             'InvocationCreationTime:' + str(self.InvocationCreationTime) + ', '  + \
12905
             'LastTransitionTime:' + str(self.LastTransitionTime) + ', '  + \
12906
             'LastMethodCall:' + str(self.LastMethodCall) + ', '  + \
12907
             'LastMethodSessionId:' + str(self.LastMethodSessionId) + ', '  + \
12908
             'LastMethodInputArguments:' + str(self.LastMethodInputArguments) + ', '  + \
12909
             'LastMethodOutputArguments:' + str(self.LastMethodOutputArguments) + ', '  + \
12910
             'LastMethodCallTime:' + str(self.LastMethodCallTime) + ', '  + \
12911
             'LastMethodReturnStatus:' + str(self.LastMethodReturnStatus) + ')'
12912
    
12913 1
    __repr__ = __str__
12914
    
12915 1
class Annotation(FrozenClass):
12916
    '''
12917
    :ivar Message: 
12918
    :vartype Message: String 
12919
    :ivar UserName: 
12920
    :vartype UserName: String 
12921
    :ivar AnnotationTime: 
12922
    :vartype AnnotationTime: DateTime 
12923
    '''
12924 1
    def __init__(self):
12925
        self.Message = ''
12926
        self.UserName = ''
12927
        self.AnnotationTime = datetime.now()
12928
        self._freeze()
12929
    
12930 1
    def to_binary(self):
12931
        packet = []
12932
        packet.append(pack_uatype('String', self.Message))
12933
        packet.append(pack_uatype('String', self.UserName))
12934
        packet.append(pack_uatype('DateTime', self.AnnotationTime))
12935
        return b''.join(packet)
12936
        
12937 1
    @staticmethod
12938
    def from_binary(data):
12939
        obj = Annotation()
12940
        obj.Message = unpack_uatype('String', data)
12941
        obj.UserName = unpack_uatype('String', data)
12942
        obj.AnnotationTime = unpack_uatype('DateTime', data)
12943
        return obj
12944
    
12945 1
    def __str__(self):
12946
        return 'Annotation(' + 'Message:' + str(self.Message) + ', '  + \
12947
             'UserName:' + str(self.UserName) + ', '  + \
12948
             'AnnotationTime:' + str(self.AnnotationTime) + ')'
12949
    
12950
    __repr__ = __str__
12951