Passed
Branch dev (949ba8)
by Olivier
03:17 queued 01:08
created

opcua.DiagnosticInfo.from_binary()   B

Complexity

Conditions 7

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 8.4954
Metric Value
dl 0
loc 17
ccs 11
cts 16
cp 0.6875
rs 7.3333
cc 7
crap 8.4954
1
'''
2
Autogenerate code from xml spec
3
'''
4
5 1
from datetime import datetime
6
7 1
from opcua.utils import Buffer
8 1
from opcua.uatypes import *
9 1
from opcua.object_ids import ObjectIds
10
11
12
13 1
class OpenFileMode(object):
14
    '''
15
    :ivar Read: 
16
    :vartype Read: 1 
17
    :ivar Write: 
18
    :vartype Write: 2 
19
    :ivar EraseExisiting: 
20
    :vartype EraseExisiting: 4 
21
    :ivar Append: 
22
    :vartype Append: 8 
23
    '''
24 1
    Read = 1
25 1
    Write = 2
26 1
    EraseExisiting = 4
27 1
    Append = 8
28
29 1
class IdType(object):
30
    '''
31
    The type of identifier used in a node id.
32
    
33
    :ivar Numeric: 
34
    :vartype Numeric: 0 
35
    :ivar String: 
36
    :vartype String: 1 
37
    :ivar Guid: 
38
    :vartype Guid: 2 
39
    :ivar Opaque: 
40
    :vartype Opaque: 3 
41
    '''
42 1
    Numeric = 0
43 1
    String = 1
44 1
    Guid = 2
45 1
    Opaque = 3
46
47 1
class NodeClass(object):
48
    '''
49
    A mask specifying the class of the node.
50
    
51
    :ivar Unspecified: 
52
    :vartype Unspecified: 0 
53
    :ivar Object: 
54
    :vartype Object: 1 
55
    :ivar Variable: 
56
    :vartype Variable: 2 
57
    :ivar Method: 
58
    :vartype Method: 4 
59
    :ivar ObjectType: 
60
    :vartype ObjectType: 8 
61
    :ivar VariableType: 
62
    :vartype VariableType: 16 
63
    :ivar ReferenceType: 
64
    :vartype ReferenceType: 32 
65
    :ivar DataType: 
66
    :vartype DataType: 64 
67
    :ivar View: 
68
    :vartype View: 128 
69
    '''
70 1
    Unspecified = 0
71 1
    Object = 1
72 1
    Variable = 2
73 1
    Method = 4
74 1
    ObjectType = 8
75 1
    VariableType = 16
76 1
    ReferenceType = 32
77 1
    DataType = 64
78 1
    View = 128
79
80 1
class ApplicationType(object):
81
    '''
82
    The types of applications.
83
    
84
    :ivar Server: 
85
    :vartype Server: 0 
86
    :ivar Client: 
87
    :vartype Client: 1 
88
    :ivar ClientAndServer: 
89
    :vartype ClientAndServer: 2 
90
    :ivar DiscoveryServer: 
91
    :vartype DiscoveryServer: 3 
92
    '''
93 1
    Server = 0
94 1
    Client = 1
95 1
    ClientAndServer = 2
96 1
    DiscoveryServer = 3
97
98 1
class MessageSecurityMode(object):
99
    '''
100
    The type of security to use on a message.
101
    
102
    :ivar Invalid: 
103
    :vartype Invalid: 0 
104
    :ivar None_: 
105
    :vartype None_: 1 
106
    :ivar Sign: 
107
    :vartype Sign: 2 
108
    :ivar SignAndEncrypt: 
109
    :vartype SignAndEncrypt: 3 
110
    '''
111 1
    Invalid = 0
112 1
    None_ = 1
113 1
    Sign = 2
114 1
    SignAndEncrypt = 3
115
116 1
class UserTokenType(object):
117
    '''
118
    The possible user token types.
119
    
120
    :ivar Anonymous: 
121
    :vartype Anonymous: 0 
122
    :ivar UserName: 
123
    :vartype UserName: 1 
124
    :ivar Certificate: 
125
    :vartype Certificate: 2 
126
    :ivar IssuedToken: 
127
    :vartype IssuedToken: 3 
128
    '''
129 1
    Anonymous = 0
130 1
    UserName = 1
131 1
    Certificate = 2
132 1
    IssuedToken = 3
133
134 1
class SecurityTokenRequestType(object):
135
    '''
136
    Indicates whether a token if being created or renewed.
137
    
138
    :ivar Issue: 
139
    :vartype Issue: 0 
140
    :ivar Renew: 
141
    :vartype Renew: 1 
142
    '''
143 1
    Issue = 0
144 1
    Renew = 1
145
146 1
class NodeAttributesMask(object):
147
    '''
148
    The bits used to specify default attributes for a new node.
149
    
150
    :ivar None_: 
151
    :vartype None_: 0 
152
    :ivar AccessLevel: 
153
    :vartype AccessLevel: 1 
154
    :ivar ArrayDimensions: 
155
    :vartype ArrayDimensions: 2 
156
    :ivar BrowseName: 
157
    :vartype BrowseName: 4 
158
    :ivar ContainsNoLoops: 
159
    :vartype ContainsNoLoops: 8 
160
    :ivar DataType: 
161
    :vartype DataType: 16 
162
    :ivar Description: 
163
    :vartype Description: 32 
164
    :ivar DisplayName: 
165
    :vartype DisplayName: 64 
166
    :ivar EventNotifier: 
167
    :vartype EventNotifier: 128 
168
    :ivar Executable: 
169
    :vartype Executable: 256 
170
    :ivar Historizing: 
171
    :vartype Historizing: 512 
172
    :ivar InverseName: 
173
    :vartype InverseName: 1024 
174
    :ivar IsAbstract: 
175
    :vartype IsAbstract: 2048 
176
    :ivar MinimumSamplingInterval: 
177
    :vartype MinimumSamplingInterval: 4096 
178
    :ivar NodeClass: 
179
    :vartype NodeClass: 8192 
180
    :ivar NodeId: 
181
    :vartype NodeId: 16384 
182
    :ivar Symmetric: 
183
    :vartype Symmetric: 32768 
184
    :ivar UserAccessLevel: 
185
    :vartype UserAccessLevel: 65536 
186
    :ivar UserExecutable: 
187
    :vartype UserExecutable: 131072 
188
    :ivar UserWriteMask: 
189
    :vartype UserWriteMask: 262144 
190
    :ivar ValueRank: 
191
    :vartype ValueRank: 524288 
192
    :ivar WriteMask: 
193
    :vartype WriteMask: 1048576 
194
    :ivar Value: 
195
    :vartype Value: 2097152 
196
    :ivar All: 
197
    :vartype All: 4194303 
198
    :ivar BaseNode: 
199
    :vartype BaseNode: 1335396 
200
    :ivar Object: 
201
    :vartype Object: 1335524 
202
    :ivar ObjectTypeOrDataType: 
203
    :vartype ObjectTypeOrDataType: 1337444 
204
    :ivar Variable: 
205
    :vartype Variable: 4026999 
206
    :ivar VariableType: 
207
    :vartype VariableType: 3958902 
208
    :ivar Method: 
209
    :vartype Method: 1466724 
210
    :ivar ReferenceType: 
211
    :vartype ReferenceType: 1371236 
212
    :ivar View: 
213
    :vartype View: 1335532 
214
    '''
215 1
    None_ = 0
216 1
    AccessLevel = 1
217 1
    ArrayDimensions = 2
218 1
    BrowseName = 4
219 1
    ContainsNoLoops = 8
220 1
    DataType = 16
221 1
    Description = 32
222 1
    DisplayName = 64
223 1
    EventNotifier = 128
224 1
    Executable = 256
225 1
    Historizing = 512
226 1
    InverseName = 1024
227 1
    IsAbstract = 2048
228 1
    MinimumSamplingInterval = 4096
229 1
    NodeClass = 8192
230 1
    NodeId = 16384
231 1
    Symmetric = 32768
232 1
    UserAccessLevel = 65536
233 1
    UserExecutable = 131072
234 1
    UserWriteMask = 262144
235 1
    ValueRank = 524288
236 1
    WriteMask = 1048576
237 1
    Value = 2097152
238 1
    All = 4194303
239 1
    BaseNode = 1335396
240 1
    Object = 1335524
241 1
    ObjectTypeOrDataType = 1337444
242 1
    Variable = 4026999
243 1
    VariableType = 3958902
244 1
    Method = 1466724
245 1
    ReferenceType = 1371236
246 1
    View = 1335532
247
248 1
class AttributeWriteMask(object):
249
    '''
250
    Define bits used to indicate which attributes are writeable.
251
    
252
    :ivar None_: 
253
    :vartype None_: 0 
254
    :ivar AccessLevel: 
255
    :vartype AccessLevel: 1 
256
    :ivar ArrayDimensions: 
257
    :vartype ArrayDimensions: 2 
258
    :ivar BrowseName: 
259
    :vartype BrowseName: 4 
260
    :ivar ContainsNoLoops: 
261
    :vartype ContainsNoLoops: 8 
262
    :ivar DataType: 
263
    :vartype DataType: 16 
264
    :ivar Description: 
265
    :vartype Description: 32 
266
    :ivar DisplayName: 
267
    :vartype DisplayName: 64 
268
    :ivar EventNotifier: 
269
    :vartype EventNotifier: 128 
270
    :ivar Executable: 
271
    :vartype Executable: 256 
272
    :ivar Historizing: 
273
    :vartype Historizing: 512 
274
    :ivar InverseName: 
275
    :vartype InverseName: 1024 
276
    :ivar IsAbstract: 
277
    :vartype IsAbstract: 2048 
278
    :ivar MinimumSamplingInterval: 
279
    :vartype MinimumSamplingInterval: 4096 
280
    :ivar NodeClass: 
281
    :vartype NodeClass: 8192 
282
    :ivar NodeId: 
283
    :vartype NodeId: 16384 
284
    :ivar Symmetric: 
285
    :vartype Symmetric: 32768 
286
    :ivar UserAccessLevel: 
287
    :vartype UserAccessLevel: 65536 
288
    :ivar UserExecutable: 
289
    :vartype UserExecutable: 131072 
290
    :ivar UserWriteMask: 
291
    :vartype UserWriteMask: 262144 
292
    :ivar ValueRank: 
293
    :vartype ValueRank: 524288 
294
    :ivar WriteMask: 
295
    :vartype WriteMask: 1048576 
296
    :ivar ValueForVariableType: 
297
    :vartype ValueForVariableType: 2097152 
298
    '''
299 1
    None_ = 0
300 1
    AccessLevel = 1
301 1
    ArrayDimensions = 2
302 1
    BrowseName = 4
303 1
    ContainsNoLoops = 8
304 1
    DataType = 16
305 1
    Description = 32
306 1
    DisplayName = 64
307 1
    EventNotifier = 128
308 1
    Executable = 256
309 1
    Historizing = 512
310 1
    InverseName = 1024
311 1
    IsAbstract = 2048
312 1
    MinimumSamplingInterval = 4096
313 1
    NodeClass = 8192
314 1
    NodeId = 16384
315 1
    Symmetric = 32768
316 1
    UserAccessLevel = 65536
317 1
    UserExecutable = 131072
318 1
    UserWriteMask = 262144
319 1
    ValueRank = 524288
320 1
    WriteMask = 1048576
321 1
    ValueForVariableType = 2097152
322
323 1
class BrowseDirection(object):
324
    '''
325
    The directions of the references to return.
326
    
327
    :ivar Forward: 
328
    :vartype Forward: 0 
329
    :ivar Inverse: 
330
    :vartype Inverse: 1 
331
    :ivar Both: 
332
    :vartype Both: 2 
333
    '''
334 1
    Forward = 0
335 1
    Inverse = 1
336 1
    Both = 2
337
338 1
class BrowseResultMask(object):
339
    '''
340
    A bit mask which specifies what should be returned in a browse response.
341
    
342
    :ivar None_: 
343
    :vartype None_: 0 
344
    :ivar ReferenceTypeId: 
345
    :vartype ReferenceTypeId: 1 
346
    :ivar IsForward: 
347
    :vartype IsForward: 2 
348
    :ivar NodeClass: 
349
    :vartype NodeClass: 4 
350
    :ivar BrowseName: 
351
    :vartype BrowseName: 8 
352
    :ivar DisplayName: 
353
    :vartype DisplayName: 16 
354
    :ivar TypeDefinition: 
355
    :vartype TypeDefinition: 32 
356
    :ivar All: 
357
    :vartype All: 63 
358
    :ivar ReferenceTypeInfo: 
359
    :vartype ReferenceTypeInfo: 3 
360
    :ivar TargetInfo: 
361
    :vartype TargetInfo: 60 
362
    '''
363 1
    None_ = 0
364 1
    ReferenceTypeId = 1
365 1
    IsForward = 2
366 1
    NodeClass = 4
367 1
    BrowseName = 8
368 1
    DisplayName = 16
369 1
    TypeDefinition = 32
370 1
    All = 63
371 1
    ReferenceTypeInfo = 3
372 1
    TargetInfo = 60
373
374 1
class ComplianceLevel(object):
375
    '''
376
    :ivar Untested: 
377
    :vartype Untested: 0 
378
    :ivar Partial: 
379
    :vartype Partial: 1 
380
    :ivar SelfTested: 
381
    :vartype SelfTested: 2 
382
    :ivar Certified: 
383
    :vartype Certified: 3 
384
    '''
385 1
    Untested = 0
386 1
    Partial = 1
387 1
    SelfTested = 2
388 1
    Certified = 3
389
390 1
class FilterOperator(object):
391
    '''
392
    :ivar Equals: 
393
    :vartype Equals: 0 
394
    :ivar IsNull: 
395
    :vartype IsNull: 1 
396
    :ivar GreaterThan: 
397
    :vartype GreaterThan: 2 
398
    :ivar LessThan: 
399
    :vartype LessThan: 3 
400
    :ivar GreaterThanOrEqual: 
401
    :vartype GreaterThanOrEqual: 4 
402
    :ivar LessThanOrEqual: 
403
    :vartype LessThanOrEqual: 5 
404
    :ivar Like: 
405
    :vartype Like: 6 
406
    :ivar Not: 
407
    :vartype Not: 7 
408
    :ivar Between: 
409
    :vartype Between: 8 
410
    :ivar InList: 
411
    :vartype InList: 9 
412
    :ivar And: 
413
    :vartype And: 10 
414
    :ivar Or: 
415
    :vartype Or: 11 
416
    :ivar Cast: 
417
    :vartype Cast: 12 
418
    :ivar InView: 
419
    :vartype InView: 13 
420
    :ivar OfType: 
421
    :vartype OfType: 14 
422
    :ivar RelatedTo: 
423
    :vartype RelatedTo: 15 
424
    :ivar BitwiseAnd: 
425
    :vartype BitwiseAnd: 16 
426
    :ivar BitwiseOr: 
427
    :vartype BitwiseOr: 17 
428
    '''
429 1
    Equals = 0
430 1
    IsNull = 1
431 1
    GreaterThan = 2
432 1
    LessThan = 3
433 1
    GreaterThanOrEqual = 4
434 1
    LessThanOrEqual = 5
435 1
    Like = 6
436 1
    Not = 7
437 1
    Between = 8
438 1
    InList = 9
439 1
    And = 10
440 1
    Or = 11
441 1
    Cast = 12
442 1
    InView = 13
443 1
    OfType = 14
444 1
    RelatedTo = 15
445 1
    BitwiseAnd = 16
446 1
    BitwiseOr = 17
447
448 1
class TimestampsToReturn(object):
449
    '''
450
    :ivar Source: 
451
    :vartype Source: 0 
452
    :ivar Server: 
453
    :vartype Server: 1 
454
    :ivar Both: 
455
    :vartype Both: 2 
456
    :ivar Neither: 
457
    :vartype Neither: 3 
458
    '''
459 1
    Source = 0
460 1
    Server = 1
461 1
    Both = 2
462 1
    Neither = 3
463
464 1
class HistoryUpdateType(object):
465
    '''
466
    :ivar Insert: 
467
    :vartype Insert: 1 
468
    :ivar Replace: 
469
    :vartype Replace: 2 
470
    :ivar Update: 
471
    :vartype Update: 3 
472
    :ivar Delete: 
473
    :vartype Delete: 4 
474
    '''
475 1
    Insert = 1
476 1
    Replace = 2
477 1
    Update = 3
478 1
    Delete = 4
479
480 1
class PerformUpdateType(object):
481
    '''
482
    :ivar Insert: 
483
    :vartype Insert: 1 
484
    :ivar Replace: 
485
    :vartype Replace: 2 
486
    :ivar Update: 
487
    :vartype Update: 3 
488
    :ivar Remove: 
489
    :vartype Remove: 4 
490
    '''
491 1
    Insert = 1
492 1
    Replace = 2
493 1
    Update = 3
494 1
    Remove = 4
495
496 1
class MonitoringMode(object):
497
    '''
498
    :ivar Disabled: 
499
    :vartype Disabled: 0 
500
    :ivar Sampling: 
501
    :vartype Sampling: 1 
502
    :ivar Reporting: 
503
    :vartype Reporting: 2 
504
    '''
505 1
    Disabled = 0
506 1
    Sampling = 1
507 1
    Reporting = 2
508
509 1
class DataChangeTrigger(object):
510
    '''
511
    :ivar Status: 
512
    :vartype Status: 0 
513
    :ivar StatusValue: 
514
    :vartype StatusValue: 1 
515
    :ivar StatusValueTimestamp: 
516
    :vartype StatusValueTimestamp: 2 
517
    '''
518 1
    Status = 0
519 1
    StatusValue = 1
520 1
    StatusValueTimestamp = 2
521
522 1
class DeadbandType(object):
523
    '''
524
    :ivar None_: 
525
    :vartype None_: 0 
526
    :ivar Absolute: 
527
    :vartype Absolute: 1 
528
    :ivar Percent: 
529
    :vartype Percent: 2 
530
    '''
531 1
    None_ = 0
532 1
    Absolute = 1
533 1
    Percent = 2
534
535 1
class EnumeratedTestType(object):
536
    '''
537
    A simple enumerated type used for testing.
538
    
539
    :ivar Red: 
540
    :vartype Red: 1 
541
    :ivar Yellow: 
542
    :vartype Yellow: 4 
543
    :ivar Green: 
544
    :vartype Green: 5 
545
    '''
546 1
    Red = 1
547 1
    Yellow = 4
548 1
    Green = 5
549
550 1
class RedundancySupport(object):
551
    '''
552
    :ivar None_: 
553
    :vartype None_: 0 
554
    :ivar Cold: 
555
    :vartype Cold: 1 
556
    :ivar Warm: 
557
    :vartype Warm: 2 
558
    :ivar Hot: 
559
    :vartype Hot: 3 
560
    :ivar Transparent: 
561
    :vartype Transparent: 4 
562
    :ivar HotAndMirrored: 
563
    :vartype HotAndMirrored: 5 
564
    '''
565 1
    None_ = 0
566 1
    Cold = 1
567 1
    Warm = 2
568 1
    Hot = 3
569 1
    Transparent = 4
570 1
    HotAndMirrored = 5
571
572 1
class ServerState(object):
573
    '''
574
    :ivar Running: 
575
    :vartype Running: 0 
576
    :ivar Failed: 
577
    :vartype Failed: 1 
578
    :ivar NoConfiguration: 
579
    :vartype NoConfiguration: 2 
580
    :ivar Suspended: 
581
    :vartype Suspended: 3 
582
    :ivar Shutdown: 
583
    :vartype Shutdown: 4 
584
    :ivar Test: 
585
    :vartype Test: 5 
586
    :ivar CommunicationFault: 
587
    :vartype CommunicationFault: 6 
588
    :ivar Unknown: 
589
    :vartype Unknown: 7 
590
    '''
591 1
    Running = 0
592 1
    Failed = 1
593 1
    NoConfiguration = 2
594 1
    Suspended = 3
595 1
    Shutdown = 4
596 1
    Test = 5
597 1
    CommunicationFault = 6
598 1
    Unknown = 7
599
600 1
class ModelChangeStructureVerbMask(object):
601
    '''
602
    :ivar NodeAdded: 
603
    :vartype NodeAdded: 1 
604
    :ivar NodeDeleted: 
605
    :vartype NodeDeleted: 2 
606
    :ivar ReferenceAdded: 
607
    :vartype ReferenceAdded: 4 
608
    :ivar ReferenceDeleted: 
609
    :vartype ReferenceDeleted: 8 
610
    :ivar DataTypeChanged: 
611
    :vartype DataTypeChanged: 16 
612
    '''
613 1
    NodeAdded = 1
614 1
    NodeDeleted = 2
615 1
    ReferenceAdded = 4
616 1
    ReferenceDeleted = 8
617 1
    DataTypeChanged = 16
618
619 1
class AxisScaleEnumeration(object):
620
    '''
621
    :ivar Linear: 
622
    :vartype Linear: 0 
623
    :ivar Log: 
624
    :vartype Log: 1 
625
    :ivar Ln: 
626
    :vartype Ln: 2 
627
    '''
628 1
    Linear = 0
629 1
    Log = 1
630 1
    Ln = 2
631
632 1
class ExceptionDeviationFormat(object):
633
    '''
634
    :ivar AbsoluteValue: 
635
    :vartype AbsoluteValue: 0 
636
    :ivar PercentOfRange: 
637
    :vartype PercentOfRange: 1 
638
    :ivar PercentOfValue: 
639
    :vartype PercentOfValue: 2 
640
    :ivar PercentOfEURange: 
641
    :vartype PercentOfEURange: 3 
642
    :ivar Unknown: 
643
    :vartype Unknown: 4 
644
    '''
645 1
    AbsoluteValue = 0
646 1
    PercentOfRange = 1
647 1
    PercentOfValue = 2
648 1
    PercentOfEURange = 3
649 1
    Unknown = 4
650
651 1
class XmlElement(FrozenClass):
652
    '''
653
    An XML element encoded as a UTF-8 string.
654
    
655
    :ivar Length: 
656
    :vartype Length: Int32 
657
    :ivar Value: 
658
    :vartype Value: Char 
659
    '''
660 1
    def __init__(self):
661
        self.Length = 0
662
        self.Value = []
663
        self._freeze()
664
    
665 1
    def to_binary(self):
666
        packet = []
667
        packet.append(pack_uatype('Int32', self.Length))
668
        packet.append(struct.pack('<i', len(self.Value)))
669
        for fieldname in self.Value:
670
            packet.append(pack_uatype('Char', fieldname))
671
        return b''.join(packet)
672
        
673 1
    @staticmethod
674
    def from_binary(data):
675
        obj = XmlElement()
676
        obj.Length = unpack_uatype('Int32', data)
677
        obj.Value = unpack_uatype_array('Char', data)
678
        return obj
679
    
680 1
    def __str__(self):
681
        return 'XmlElement(' + 'Length:' + str(self.Length) + ', '  + \
682
             'Value:' + str(self.Value) + ')'
683
    
684 1
    __repr__ = __str__
685
    
686 1
class DiagnosticInfo(FrozenClass):
687
    '''
688
    A recursive structure containing diagnostic information associated with a status code.
689
    
690
    :ivar Encoding: 
691
    :vartype Encoding: UInt8 
692
    :ivar SymbolicId: 
693
    :vartype SymbolicId: Int32 
694
    :ivar NamespaceURI: 
695
    :vartype NamespaceURI: Int32 
696
    :ivar LocalizedText: 
697
    :vartype LocalizedText: Int32 
698
    :ivar AdditionalInfo: 
699
    :vartype AdditionalInfo: CharArray 
700
    :ivar InnerStatusCode: 
701
    :vartype InnerStatusCode: StatusCode 
702
    :ivar InnerDiagnosticInfo: 
703
    :vartype InnerDiagnosticInfo: DiagnosticInfo 
704
    '''
705 1
    def __init__(self):
706 1
        self.Encoding = 0
707 1
        self.SymbolicId = 0
708 1
        self.NamespaceURI = 0
709 1
        self.LocalizedText = 0
710 1
        self.AdditionalInfo = b''
711 1
        self.InnerStatusCode = StatusCode()
712 1
        self.InnerDiagnosticInfo = None
713 1
        self._freeze()
714
    
715 1
    def to_binary(self):
716 1
        packet = []
717 1
        if self.SymbolicId: self.Encoding |= (1 << 0)
718 1
        if self.NamespaceURI: self.Encoding |= (1 << 1)
719 1
        if self.LocalizedText: self.Encoding |= (1 << 2)
720 1
        if self.AdditionalInfo: self.Encoding |= (1 << 4)
721 1
        if self.InnerStatusCode: self.Encoding |= (1 << 5)
722 1
        if self.InnerDiagnosticInfo: self.Encoding |= (1 << 6)
723 1
        packet.append(pack_uatype('UInt8', self.Encoding))
724 1
        if self.SymbolicId: 
725
            packet.append(pack_uatype('Int32', self.SymbolicId))
726 1
        if self.NamespaceURI: 
727
            packet.append(pack_uatype('Int32', self.NamespaceURI))
728 1
        if self.LocalizedText: 
729
            packet.append(pack_uatype('Int32', self.LocalizedText))
730 1
        if self.AdditionalInfo: 
731
            packet.append(pack_uatype('CharArray', self.AdditionalInfo))
732 1
        if self.InnerStatusCode: 
733 1
            packet.append(self.InnerStatusCode.to_binary())
734 1
        if self.InnerDiagnosticInfo: 
735
            packet.append(self.InnerDiagnosticInfo.to_binary())
736 1
        return b''.join(packet)
737
        
738 1
    @staticmethod
739
    def from_binary(data):
740 1
        obj = DiagnosticInfo()
741 1
        obj.Encoding = unpack_uatype('UInt8', data)
742 1
        if obj.Encoding & (1 << 0):
743
            obj.SymbolicId = unpack_uatype('Int32', data)
744 1
        if obj.Encoding & (1 << 1):
745
            obj.NamespaceURI = unpack_uatype('Int32', data)
746 1
        if obj.Encoding & (1 << 2):
747
            obj.LocalizedText = unpack_uatype('Int32', data)
748 1
        if obj.Encoding & (1 << 4):
749
            obj.AdditionalInfo = unpack_uatype('CharArray', data)
750 1
        if obj.Encoding & (1 << 5):
751 1
            obj.InnerStatusCode = StatusCode.from_binary(data)
752 1
        if obj.Encoding & (1 << 6):
753
            obj.InnerDiagnosticInfo = DiagnosticInfo.from_binary(data)
754 1
        return obj
755
    
756 1
    def __str__(self):
757
        return 'DiagnosticInfo(' + 'Encoding:' + str(self.Encoding) + ', '  + \
758
             'SymbolicId:' + str(self.SymbolicId) + ', '  + \
759
             'NamespaceURI:' + str(self.NamespaceURI) + ', '  + \
760
             'LocalizedText:' + str(self.LocalizedText) + ', '  + \
761
             'AdditionalInfo:' + str(self.AdditionalInfo) + ', '  + \
762
             'InnerStatusCode:' + str(self.InnerStatusCode) + ', '  + \
763
             'InnerDiagnosticInfo:' + str(self.InnerDiagnosticInfo) + ')'
764
    
765 1
    __repr__ = __str__
766
    
767 1
class Argument(FrozenClass):
768
    '''
769
    An argument for a method.
770
    
771
    :ivar Name: 
772
    :vartype Name: String 
773
    :ivar DataType: 
774
    :vartype DataType: NodeId 
775
    :ivar ValueRank: 
776
    :vartype ValueRank: Int32 
777
    :ivar ArrayDimensions: 
778
    :vartype ArrayDimensions: UInt32 
779
    :ivar Description: 
780
    :vartype Description: LocalizedText 
781
    '''
782 1
    def __init__(self):
783 1
        self.Name = ''
784 1
        self.DataType = NodeId()
785 1
        self.ValueRank = 0
786 1
        self.ArrayDimensions = []
787 1
        self.Description = LocalizedText()
788 1
        self._freeze()
789
    
790 1
    def to_binary(self):
791
        packet = []
792
        packet.append(pack_uatype('String', self.Name))
793
        packet.append(self.DataType.to_binary())
794
        packet.append(pack_uatype('Int32', self.ValueRank))
795
        packet.append(struct.pack('<i', len(self.ArrayDimensions)))
796
        for fieldname in self.ArrayDimensions:
797
            packet.append(pack_uatype('UInt32', fieldname))
798
        packet.append(self.Description.to_binary())
799
        return b''.join(packet)
800
        
801 1
    @staticmethod
802
    def from_binary(data):
803
        obj = Argument()
804
        obj.Name = unpack_uatype('String', data)
805
        obj.DataType = NodeId.from_binary(data)
806
        obj.ValueRank = unpack_uatype('Int32', data)
807
        obj.ArrayDimensions = unpack_uatype_array('UInt32', data)
808
        obj.Description = LocalizedText.from_binary(data)
809
        return obj
810
    
811 1
    def __str__(self):
812
        return 'Argument(' + 'Name:' + str(self.Name) + ', '  + \
813
             'DataType:' + str(self.DataType) + ', '  + \
814
             'ValueRank:' + str(self.ValueRank) + ', '  + \
815
             'ArrayDimensions:' + str(self.ArrayDimensions) + ', '  + \
816
             'Description:' + str(self.Description) + ')'
817
    
818 1
    __repr__ = __str__
819
    
820 1
class EnumValueType(FrozenClass):
821
    '''
822
    A mapping between a value of an enumerated type and a name and description.
823
    
824
    :ivar Value: 
825
    :vartype Value: Int64 
826
    :ivar DisplayName: 
827
    :vartype DisplayName: LocalizedText 
828
    :ivar Description: 
829
    :vartype Description: LocalizedText 
830
    '''
831 1
    def __init__(self):
832
        self.Value = 0
833
        self.DisplayName = LocalizedText()
834
        self.Description = LocalizedText()
835
        self._freeze()
836
    
837 1
    def to_binary(self):
838
        packet = []
839
        packet.append(pack_uatype('Int64', self.Value))
840
        packet.append(self.DisplayName.to_binary())
841
        packet.append(self.Description.to_binary())
842
        return b''.join(packet)
843
        
844 1
    @staticmethod
845
    def from_binary(data):
846
        obj = EnumValueType()
847
        obj.Value = unpack_uatype('Int64', data)
848
        obj.DisplayName = LocalizedText.from_binary(data)
849
        obj.Description = LocalizedText.from_binary(data)
850
        return obj
851
    
852 1
    def __str__(self):
853
        return 'EnumValueType(' + 'Value:' + str(self.Value) + ', '  + \
854
             'DisplayName:' + str(self.DisplayName) + ', '  + \
855
             'Description:' + str(self.Description) + ')'
856
    
857 1
    __repr__ = __str__
858
    
859 1
class TimeZoneDataType(FrozenClass):
860
    '''
861
    :ivar Offset: 
862
    :vartype Offset: Int16 
863
    :ivar DaylightSavingInOffset: 
864
    :vartype DaylightSavingInOffset: Boolean 
865
    '''
866 1
    def __init__(self):
867
        self.Offset = 0
868
        self.DaylightSavingInOffset = True
869
        self._freeze()
870
    
871 1
    def to_binary(self):
872
        packet = []
873
        packet.append(pack_uatype('Int16', self.Offset))
874
        packet.append(pack_uatype('Boolean', self.DaylightSavingInOffset))
875
        return b''.join(packet)
876
        
877 1
    @staticmethod
878
    def from_binary(data):
879
        obj = TimeZoneDataType()
880
        obj.Offset = unpack_uatype('Int16', data)
881
        obj.DaylightSavingInOffset = unpack_uatype('Boolean', data)
882
        return obj
883
    
884 1
    def __str__(self):
885
        return 'TimeZoneDataType(' + 'Offset:' + str(self.Offset) + ', '  + \
886
             'DaylightSavingInOffset:' + str(self.DaylightSavingInOffset) + ')'
887
    
888 1
    __repr__ = __str__
889
    
890 1
class ApplicationDescription(FrozenClass):
891
    '''
892
    Describes an application and how to find it.
893
    
894
    :ivar ApplicationUri: 
895
    :vartype ApplicationUri: String 
896
    :ivar ProductUri: 
897
    :vartype ProductUri: String 
898
    :ivar ApplicationName: 
899
    :vartype ApplicationName: LocalizedText 
900
    :ivar ApplicationType: 
901
    :vartype ApplicationType: ApplicationType 
902
    :ivar GatewayServerUri: 
903
    :vartype GatewayServerUri: String 
904
    :ivar DiscoveryProfileUri: 
905
    :vartype DiscoveryProfileUri: String 
906
    :ivar DiscoveryUrls: 
907
    :vartype DiscoveryUrls: String 
908
    '''
909 1
    def __init__(self):
910 1
        self.ApplicationUri = ''
911 1
        self.ProductUri = ''
912 1
        self.ApplicationName = LocalizedText()
913 1
        self.ApplicationType = 0
914 1
        self.GatewayServerUri = ''
915 1
        self.DiscoveryProfileUri = ''
916 1
        self.DiscoveryUrls = []
917 1
        self._freeze()
918
    
919 1
    def to_binary(self):
920 1
        packet = []
921 1
        packet.append(pack_uatype('String', self.ApplicationUri))
922 1
        packet.append(pack_uatype('String', self.ProductUri))
923 1
        packet.append(self.ApplicationName.to_binary())
924 1
        packet.append(pack_uatype('UInt32', self.ApplicationType))
925 1
        packet.append(pack_uatype('String', self.GatewayServerUri))
926 1
        packet.append(pack_uatype('String', self.DiscoveryProfileUri))
927 1
        packet.append(struct.pack('<i', len(self.DiscoveryUrls)))
928 1
        for fieldname in self.DiscoveryUrls:
929 1
            packet.append(pack_uatype('String', fieldname))
930 1
        return b''.join(packet)
931
        
932 1
    @staticmethod
933
    def from_binary(data):
934 1
        obj = ApplicationDescription()
935 1
        obj.ApplicationUri = unpack_uatype('String', data)
936 1
        obj.ProductUri = unpack_uatype('String', data)
937 1
        obj.ApplicationName = LocalizedText.from_binary(data)
938 1
        obj.ApplicationType = unpack_uatype('UInt32', data)
939 1
        obj.GatewayServerUri = unpack_uatype('String', data)
940 1
        obj.DiscoveryProfileUri = unpack_uatype('String', data)
941 1
        obj.DiscoveryUrls = unpack_uatype_array('String', data)
942 1
        return obj
943
    
944 1
    def __str__(self):
945
        return 'ApplicationDescription(' + 'ApplicationUri:' + str(self.ApplicationUri) + ', '  + \
946
             'ProductUri:' + str(self.ProductUri) + ', '  + \
947
             'ApplicationName:' + str(self.ApplicationName) + ', '  + \
948
             'ApplicationType:' + str(self.ApplicationType) + ', '  + \
949
             'GatewayServerUri:' + str(self.GatewayServerUri) + ', '  + \
950
             'DiscoveryProfileUri:' + str(self.DiscoveryProfileUri) + ', '  + \
951
             'DiscoveryUrls:' + str(self.DiscoveryUrls) + ')'
952
    
953 1
    __repr__ = __str__
954
    
955 1
class RequestHeader(FrozenClass):
956
    '''
957
    The header passed with every server request.
958
    
959
    :ivar AuthenticationToken: 
960
    :vartype AuthenticationToken: NodeId 
961
    :ivar Timestamp: 
962
    :vartype Timestamp: DateTime 
963
    :ivar RequestHandle: 
964
    :vartype RequestHandle: UInt32 
965
    :ivar ReturnDiagnostics: 
966
    :vartype ReturnDiagnostics: UInt32 
967
    :ivar AuditEntryId: 
968
    :vartype AuditEntryId: String 
969
    :ivar TimeoutHint: 
970
    :vartype TimeoutHint: UInt32 
971
    :ivar AdditionalHeader: 
972
    :vartype AdditionalHeader: ExtensionObject 
973
    '''
974 1
    def __init__(self):
975 1
        self.AuthenticationToken = NodeId()
976 1
        self.Timestamp = datetime.now()
977 1
        self.RequestHandle = 0
978 1
        self.ReturnDiagnostics = 0
979 1
        self.AuditEntryId = ''
980 1
        self.TimeoutHint = 0
981 1
        self.AdditionalHeader = None
982 1
        self._freeze()
983
    
984 1
    def to_binary(self):
985 1
        packet = []
986 1
        packet.append(self.AuthenticationToken.to_binary())
987 1
        packet.append(pack_uatype('DateTime', self.Timestamp))
988 1
        packet.append(pack_uatype('UInt32', self.RequestHandle))
989 1
        packet.append(pack_uatype('UInt32', self.ReturnDiagnostics))
990 1
        packet.append(pack_uatype('String', self.AuditEntryId))
991 1
        packet.append(pack_uatype('UInt32', self.TimeoutHint))
992 1
        packet.append(extensionobject_to_binary(self.AdditionalHeader))
993 1
        return b''.join(packet)
994
        
995 1
    @staticmethod
996
    def from_binary(data):
997 1
        obj = RequestHeader()
998 1
        obj.AuthenticationToken = NodeId.from_binary(data)
999 1
        obj.Timestamp = unpack_uatype('DateTime', data)
1000 1
        obj.RequestHandle = unpack_uatype('UInt32', data)
1001 1
        obj.ReturnDiagnostics = unpack_uatype('UInt32', data)
1002 1
        obj.AuditEntryId = unpack_uatype('String', data)
1003 1
        obj.TimeoutHint = unpack_uatype('UInt32', data)
1004 1
        obj.AdditionalHeader = extensionobject_from_binary(data)
1005 1
        return obj
1006
    
1007 1
    def __str__(self):
1008
        return 'RequestHeader(' + 'AuthenticationToken:' + str(self.AuthenticationToken) + ', '  + \
1009
             'Timestamp:' + str(self.Timestamp) + ', '  + \
1010
             'RequestHandle:' + str(self.RequestHandle) + ', '  + \
1011
             'ReturnDiagnostics:' + str(self.ReturnDiagnostics) + ', '  + \
1012
             'AuditEntryId:' + str(self.AuditEntryId) + ', '  + \
1013
             'TimeoutHint:' + str(self.TimeoutHint) + ', '  + \
1014
             'AdditionalHeader:' + str(self.AdditionalHeader) + ')'
1015
    
1016 1
    __repr__ = __str__
1017
    
1018 1
class ResponseHeader(FrozenClass):
1019
    '''
1020
    The header passed with every server response.
1021
    
1022
    :ivar Timestamp: 
1023
    :vartype Timestamp: DateTime 
1024
    :ivar RequestHandle: 
1025
    :vartype RequestHandle: UInt32 
1026
    :ivar ServiceResult: 
1027
    :vartype ServiceResult: StatusCode 
1028
    :ivar ServiceDiagnostics: 
1029
    :vartype ServiceDiagnostics: DiagnosticInfo 
1030
    :ivar StringTable: 
1031
    :vartype StringTable: String 
1032
    :ivar AdditionalHeader: 
1033
    :vartype AdditionalHeader: ExtensionObject 
1034
    '''
1035 1
    def __init__(self):
1036 1
        self.Timestamp = datetime.now()
1037 1
        self.RequestHandle = 0
1038 1
        self.ServiceResult = StatusCode()
1039 1
        self.ServiceDiagnostics = DiagnosticInfo()
1040 1
        self.StringTable = []
1041 1
        self.AdditionalHeader = None
1042 1
        self._freeze()
1043
    
1044 1
    def to_binary(self):
1045 1
        packet = []
1046 1
        packet.append(pack_uatype('DateTime', self.Timestamp))
1047 1
        packet.append(pack_uatype('UInt32', self.RequestHandle))
1048 1
        packet.append(self.ServiceResult.to_binary())
1049 1
        packet.append(self.ServiceDiagnostics.to_binary())
1050 1
        packet.append(struct.pack('<i', len(self.StringTable)))
1051 1
        for fieldname in self.StringTable:
1052
            packet.append(pack_uatype('String', fieldname))
1053 1
        packet.append(extensionobject_to_binary(self.AdditionalHeader))
1054 1
        return b''.join(packet)
1055
        
1056 1
    @staticmethod
1057
    def from_binary(data):
1058 1
        obj = ResponseHeader()
1059 1
        obj.Timestamp = unpack_uatype('DateTime', data)
1060 1
        obj.RequestHandle = unpack_uatype('UInt32', data)
1061 1
        obj.ServiceResult = StatusCode.from_binary(data)
1062 1
        obj.ServiceDiagnostics = DiagnosticInfo.from_binary(data)
1063 1
        obj.StringTable = unpack_uatype_array('String', data)
1064 1
        obj.AdditionalHeader = extensionobject_from_binary(data)
1065 1
        return obj
1066
    
1067 1
    def __str__(self):
1068
        return 'ResponseHeader(' + 'Timestamp:' + str(self.Timestamp) + ', '  + \
1069
             'RequestHandle:' + str(self.RequestHandle) + ', '  + \
1070
             'ServiceResult:' + str(self.ServiceResult) + ', '  + \
1071
             'ServiceDiagnostics:' + str(self.ServiceDiagnostics) + ', '  + \
1072
             'StringTable:' + str(self.StringTable) + ', '  + \
1073
             'AdditionalHeader:' + str(self.AdditionalHeader) + ')'
1074
    
1075 1
    __repr__ = __str__
1076
    
1077 1
class ServiceFault(FrozenClass):
1078
    '''
1079
    The response returned by all services when there is a service level error.
1080
    
1081
    :ivar TypeId: 
1082
    :vartype TypeId: NodeId 
1083
    :ivar ResponseHeader: 
1084
    :vartype ResponseHeader: ResponseHeader 
1085
    '''
1086 1
    def __init__(self):
1087
        self.TypeId = FourByteNodeId(ObjectIds.ServiceFault_Encoding_DefaultBinary)
1088
        self.ResponseHeader = ResponseHeader()
1089
        self._freeze()
1090
    
1091 1
    def to_binary(self):
1092
        packet = []
1093
        packet.append(self.TypeId.to_binary())
1094
        packet.append(self.ResponseHeader.to_binary())
1095
        return b''.join(packet)
1096
        
1097 1
    @staticmethod
1098
    def from_binary(data):
1099
        obj = ServiceFault()
1100
        obj.TypeId = NodeId.from_binary(data)
1101
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1102
        return obj
1103
    
1104 1
    def __str__(self):
1105
        return 'ServiceFault(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1106
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
1107
    
1108 1
    __repr__ = __str__
1109
    
1110 1
class FindServersParameters(FrozenClass):
1111
    '''
1112
    :ivar EndpointUrl: 
1113
    :vartype EndpointUrl: String 
1114
    :ivar LocaleIds: 
1115
    :vartype LocaleIds: String 
1116
    :ivar ServerUris: 
1117
    :vartype ServerUris: String 
1118
    '''
1119 1
    def __init__(self):
1120
        self.EndpointUrl = ''
1121
        self.LocaleIds = []
1122
        self.ServerUris = []
1123
        self._freeze()
1124
    
1125 1
    def to_binary(self):
1126
        packet = []
1127
        packet.append(pack_uatype('String', self.EndpointUrl))
1128
        packet.append(struct.pack('<i', len(self.LocaleIds)))
1129
        for fieldname in self.LocaleIds:
1130
            packet.append(pack_uatype('String', fieldname))
1131
        packet.append(struct.pack('<i', len(self.ServerUris)))
1132
        for fieldname in self.ServerUris:
1133
            packet.append(pack_uatype('String', fieldname))
1134
        return b''.join(packet)
1135
        
1136 1
    @staticmethod
1137
    def from_binary(data):
1138
        obj = FindServersParameters()
1139
        obj.EndpointUrl = unpack_uatype('String', data)
1140
        obj.LocaleIds = unpack_uatype_array('String', data)
1141
        obj.ServerUris = unpack_uatype_array('String', data)
1142
        return obj
1143
    
1144 1
    def __str__(self):
1145
        return 'FindServersParameters(' + 'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
1146
             'LocaleIds:' + str(self.LocaleIds) + ', '  + \
1147
             'ServerUris:' + str(self.ServerUris) + ')'
1148
    
1149 1
    __repr__ = __str__
1150
    
1151 1
class FindServersRequest(FrozenClass):
1152
    '''
1153
    Finds the servers known to the discovery server.
1154
    
1155
    :ivar TypeId: 
1156
    :vartype TypeId: NodeId 
1157
    :ivar RequestHeader: 
1158
    :vartype RequestHeader: RequestHeader 
1159
    :ivar Parameters: 
1160
    :vartype Parameters: FindServersParameters 
1161
    '''
1162 1
    def __init__(self):
1163
        self.TypeId = FourByteNodeId(ObjectIds.FindServersRequest_Encoding_DefaultBinary)
1164
        self.RequestHeader = RequestHeader()
1165
        self.Parameters = FindServersParameters()
1166
        self._freeze()
1167
    
1168 1
    def to_binary(self):
1169
        packet = []
1170
        packet.append(self.TypeId.to_binary())
1171
        packet.append(self.RequestHeader.to_binary())
1172
        packet.append(self.Parameters.to_binary())
1173
        return b''.join(packet)
1174
        
1175 1
    @staticmethod
1176
    def from_binary(data):
1177
        obj = FindServersRequest()
1178
        obj.TypeId = NodeId.from_binary(data)
1179
        obj.RequestHeader = RequestHeader.from_binary(data)
1180
        obj.Parameters = FindServersParameters.from_binary(data)
1181
        return obj
1182
    
1183 1
    def __str__(self):
1184
        return 'FindServersRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1185
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
1186
             'Parameters:' + str(self.Parameters) + ')'
1187
    
1188 1
    __repr__ = __str__
1189
    
1190 1
class FindServersResponse(FrozenClass):
1191
    '''
1192
    Finds the servers known to the discovery server.
1193
    
1194
    :ivar TypeId: 
1195
    :vartype TypeId: NodeId 
1196
    :ivar ResponseHeader: 
1197
    :vartype ResponseHeader: ResponseHeader 
1198
    :ivar Servers: 
1199
    :vartype Servers: ApplicationDescription 
1200
    '''
1201 1
    def __init__(self):
1202
        self.TypeId = FourByteNodeId(ObjectIds.FindServersResponse_Encoding_DefaultBinary)
1203
        self.ResponseHeader = ResponseHeader()
1204
        self.Servers = []
1205
        self._freeze()
1206
    
1207 1
    def to_binary(self):
1208
        packet = []
1209
        packet.append(self.TypeId.to_binary())
1210
        packet.append(self.ResponseHeader.to_binary())
1211
        packet.append(struct.pack('<i', len(self.Servers)))
1212
        for fieldname in self.Servers:
1213
            packet.append(fieldname.to_binary())
1214
        return b''.join(packet)
1215
        
1216 1
    @staticmethod
1217
    def from_binary(data):
1218
        obj = FindServersResponse()
1219
        obj.TypeId = NodeId.from_binary(data)
1220
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1221
        length = struct.unpack('<i', data.read(4))[0]
1222
        if length != -1:
1223
            for _ in range(0, length):
1224
                obj.Servers.append(ApplicationDescription.from_binary(data))
1225
        return obj
1226
    
1227 1
    def __str__(self):
1228
        return 'FindServersResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1229
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
1230
             'Servers:' + str(self.Servers) + ')'
1231
    
1232 1
    __repr__ = __str__
1233
    
1234 1
class UserTokenPolicy(FrozenClass):
1235
    '''
1236
    Describes a user token that can be used with a server.
1237
    
1238
    :ivar PolicyId: 
1239
    :vartype PolicyId: String 
1240
    :ivar TokenType: 
1241
    :vartype TokenType: UserTokenType 
1242
    :ivar IssuedTokenType: 
1243
    :vartype IssuedTokenType: String 
1244
    :ivar IssuerEndpointUrl: 
1245
    :vartype IssuerEndpointUrl: String 
1246
    :ivar SecurityPolicyUri: 
1247
    :vartype SecurityPolicyUri: String 
1248
    '''
1249 1
    def __init__(self):
1250 1
        self.PolicyId = ''
1251 1
        self.TokenType = 0
1252 1
        self.IssuedTokenType = ''
1253 1
        self.IssuerEndpointUrl = ''
1254 1
        self.SecurityPolicyUri = ''
1255 1
        self._freeze()
1256
    
1257 1
    def to_binary(self):
1258 1
        packet = []
1259 1
        packet.append(pack_uatype('String', self.PolicyId))
1260 1
        packet.append(pack_uatype('UInt32', self.TokenType))
1261 1
        packet.append(pack_uatype('String', self.IssuedTokenType))
1262 1
        packet.append(pack_uatype('String', self.IssuerEndpointUrl))
1263 1
        packet.append(pack_uatype('String', self.SecurityPolicyUri))
1264 1
        return b''.join(packet)
1265
        
1266 1
    @staticmethod
1267
    def from_binary(data):
1268 1
        obj = UserTokenPolicy()
1269 1
        obj.PolicyId = unpack_uatype('String', data)
1270 1
        obj.TokenType = unpack_uatype('UInt32', data)
1271 1
        obj.IssuedTokenType = unpack_uatype('String', data)
1272 1
        obj.IssuerEndpointUrl = unpack_uatype('String', data)
1273 1
        obj.SecurityPolicyUri = unpack_uatype('String', data)
1274 1
        return obj
1275
    
1276 1
    def __str__(self):
1277
        return 'UserTokenPolicy(' + 'PolicyId:' + str(self.PolicyId) + ', '  + \
1278
             'TokenType:' + str(self.TokenType) + ', '  + \
1279
             'IssuedTokenType:' + str(self.IssuedTokenType) + ', '  + \
1280
             'IssuerEndpointUrl:' + str(self.IssuerEndpointUrl) + ', '  + \
1281
             'SecurityPolicyUri:' + str(self.SecurityPolicyUri) + ')'
1282
    
1283 1
    __repr__ = __str__
1284
    
1285 1
class EndpointDescription(FrozenClass):
1286
    '''
1287
    The description of a endpoint that can be used to access a server.
1288
    
1289
    :ivar EndpointUrl: 
1290
    :vartype EndpointUrl: String 
1291
    :ivar Server: 
1292
    :vartype Server: ApplicationDescription 
1293
    :ivar ServerCertificate: 
1294
    :vartype ServerCertificate: ByteString 
1295
    :ivar SecurityMode: 
1296
    :vartype SecurityMode: MessageSecurityMode 
1297
    :ivar SecurityPolicyUri: 
1298
    :vartype SecurityPolicyUri: String 
1299
    :ivar UserIdentityTokens: 
1300
    :vartype UserIdentityTokens: UserTokenPolicy 
1301
    :ivar TransportProfileUri: 
1302
    :vartype TransportProfileUri: String 
1303
    :ivar SecurityLevel: 
1304
    :vartype SecurityLevel: Byte 
1305
    '''
1306 1
    def __init__(self):
1307 1
        self.EndpointUrl = ''
1308 1
        self.Server = ApplicationDescription()
1309 1
        self.ServerCertificate = b''
1310 1
        self.SecurityMode = 0
1311 1
        self.SecurityPolicyUri = ''
1312 1
        self.UserIdentityTokens = []
1313 1
        self.TransportProfileUri = ''
1314 1
        self.SecurityLevel = 0
1315 1
        self._freeze()
1316
    
1317 1
    def to_binary(self):
1318 1
        packet = []
1319 1
        packet.append(pack_uatype('String', self.EndpointUrl))
1320 1
        packet.append(self.Server.to_binary())
1321 1
        packet.append(pack_uatype('ByteString', self.ServerCertificate))
1322 1
        packet.append(pack_uatype('UInt32', self.SecurityMode))
1323 1
        packet.append(pack_uatype('String', self.SecurityPolicyUri))
1324 1
        packet.append(struct.pack('<i', len(self.UserIdentityTokens)))
1325 1
        for fieldname in self.UserIdentityTokens:
1326 1
            packet.append(fieldname.to_binary())
1327 1
        packet.append(pack_uatype('String', self.TransportProfileUri))
1328 1
        packet.append(pack_uatype('Byte', self.SecurityLevel))
1329 1
        return b''.join(packet)
1330
        
1331 1
    @staticmethod
1332
    def from_binary(data):
1333 1
        obj = EndpointDescription()
1334 1
        obj.EndpointUrl = unpack_uatype('String', data)
1335 1
        obj.Server = ApplicationDescription.from_binary(data)
1336 1
        obj.ServerCertificate = unpack_uatype('ByteString', data)
1337 1
        obj.SecurityMode = unpack_uatype('UInt32', data)
1338 1
        obj.SecurityPolicyUri = unpack_uatype('String', data)
1339 1
        length = struct.unpack('<i', data.read(4))[0]
1340 1
        if length != -1:
1341 1
            for _ in range(0, length):
1342 1
                obj.UserIdentityTokens.append(UserTokenPolicy.from_binary(data))
1343 1
        obj.TransportProfileUri = unpack_uatype('String', data)
1344 1
        obj.SecurityLevel = unpack_uatype('Byte', data)
1345 1
        return obj
1346
    
1347 1
    def __str__(self):
1348
        return 'EndpointDescription(' + 'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
1349
             'Server:' + str(self.Server) + ', '  + \
1350
             'ServerCertificate:' + str(self.ServerCertificate) + ', '  + \
1351
             'SecurityMode:' + str(self.SecurityMode) + ', '  + \
1352
             'SecurityPolicyUri:' + str(self.SecurityPolicyUri) + ', '  + \
1353
             'UserIdentityTokens:' + str(self.UserIdentityTokens) + ', '  + \
1354
             'TransportProfileUri:' + str(self.TransportProfileUri) + ', '  + \
1355
             'SecurityLevel:' + str(self.SecurityLevel) + ')'
1356
    
1357 1
    __repr__ = __str__
1358
    
1359 1
class GetEndpointsParameters(FrozenClass):
1360
    '''
1361
    :ivar EndpointUrl: 
1362
    :vartype EndpointUrl: String 
1363
    :ivar LocaleIds: 
1364
    :vartype LocaleIds: String 
1365
    :ivar ProfileUris: 
1366
    :vartype ProfileUris: String 
1367
    '''
1368 1
    def __init__(self):
1369 1
        self.EndpointUrl = ''
1370 1
        self.LocaleIds = []
1371 1
        self.ProfileUris = []
1372 1
        self._freeze()
1373
    
1374 1
    def to_binary(self):
1375 1
        packet = []
1376 1
        packet.append(pack_uatype('String', self.EndpointUrl))
1377 1
        packet.append(struct.pack('<i', len(self.LocaleIds)))
1378 1
        for fieldname in self.LocaleIds:
1379
            packet.append(pack_uatype('String', fieldname))
1380 1
        packet.append(struct.pack('<i', len(self.ProfileUris)))
1381 1
        for fieldname in self.ProfileUris:
1382
            packet.append(pack_uatype('String', fieldname))
1383 1
        return b''.join(packet)
1384
        
1385 1
    @staticmethod
1386
    def from_binary(data):
1387 1
        obj = GetEndpointsParameters()
1388 1
        obj.EndpointUrl = unpack_uatype('String', data)
1389 1
        obj.LocaleIds = unpack_uatype_array('String', data)
1390 1
        obj.ProfileUris = unpack_uatype_array('String', data)
1391 1
        return obj
1392
    
1393 1
    def __str__(self):
1394
        return 'GetEndpointsParameters(' + 'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
1395
             'LocaleIds:' + str(self.LocaleIds) + ', '  + \
1396
             'ProfileUris:' + str(self.ProfileUris) + ')'
1397
    
1398 1
    __repr__ = __str__
1399
    
1400 1
class GetEndpointsRequest(FrozenClass):
1401
    '''
1402
    Gets the endpoints used by the server.
1403
    
1404
    :ivar TypeId: 
1405
    :vartype TypeId: NodeId 
1406
    :ivar RequestHeader: 
1407
    :vartype RequestHeader: RequestHeader 
1408
    :ivar Parameters: 
1409
    :vartype Parameters: GetEndpointsParameters 
1410
    '''
1411 1
    def __init__(self):
1412 1
        self.TypeId = FourByteNodeId(ObjectIds.GetEndpointsRequest_Encoding_DefaultBinary)
1413 1
        self.RequestHeader = RequestHeader()
1414 1
        self.Parameters = GetEndpointsParameters()
1415 1
        self._freeze()
1416
    
1417 1
    def to_binary(self):
1418 1
        packet = []
1419 1
        packet.append(self.TypeId.to_binary())
1420 1
        packet.append(self.RequestHeader.to_binary())
1421 1
        packet.append(self.Parameters.to_binary())
1422 1
        return b''.join(packet)
1423
        
1424 1
    @staticmethod
1425
    def from_binary(data):
1426
        obj = GetEndpointsRequest()
1427
        obj.TypeId = NodeId.from_binary(data)
1428
        obj.RequestHeader = RequestHeader.from_binary(data)
1429
        obj.Parameters = GetEndpointsParameters.from_binary(data)
1430
        return obj
1431
    
1432 1
    def __str__(self):
1433
        return 'GetEndpointsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1434
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
1435
             'Parameters:' + str(self.Parameters) + ')'
1436
    
1437 1
    __repr__ = __str__
1438
    
1439 1
class GetEndpointsResponse(FrozenClass):
1440
    '''
1441
    Gets the endpoints used by the server.
1442
    
1443
    :ivar TypeId: 
1444
    :vartype TypeId: NodeId 
1445
    :ivar ResponseHeader: 
1446
    :vartype ResponseHeader: ResponseHeader 
1447
    :ivar Endpoints: 
1448
    :vartype Endpoints: EndpointDescription 
1449
    '''
1450 1
    def __init__(self):
1451 1
        self.TypeId = FourByteNodeId(ObjectIds.GetEndpointsResponse_Encoding_DefaultBinary)
1452 1
        self.ResponseHeader = ResponseHeader()
1453 1
        self.Endpoints = []
1454 1
        self._freeze()
1455
    
1456 1
    def to_binary(self):
1457 1
        packet = []
1458 1
        packet.append(self.TypeId.to_binary())
1459 1
        packet.append(self.ResponseHeader.to_binary())
1460 1
        packet.append(struct.pack('<i', len(self.Endpoints)))
1461 1
        for fieldname in self.Endpoints:
1462 1
            packet.append(fieldname.to_binary())
1463 1
        return b''.join(packet)
1464
        
1465 1
    @staticmethod
1466
    def from_binary(data):
1467 1
        obj = GetEndpointsResponse()
1468 1
        obj.TypeId = NodeId.from_binary(data)
1469 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1470 1
        length = struct.unpack('<i', data.read(4))[0]
1471 1
        if length != -1:
1472 1
            for _ in range(0, length):
1473 1
                obj.Endpoints.append(EndpointDescription.from_binary(data))
1474 1
        return obj
1475
    
1476 1
    def __str__(self):
1477
        return 'GetEndpointsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1478
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
1479
             'Endpoints:' + str(self.Endpoints) + ')'
1480
    
1481 1
    __repr__ = __str__
1482
    
1483 1
class RegisteredServer(FrozenClass):
1484
    '''
1485
    The information required to register a server with a discovery server.
1486
    
1487
    :ivar ServerUri: 
1488
    :vartype ServerUri: String 
1489
    :ivar ProductUri: 
1490
    :vartype ProductUri: String 
1491
    :ivar ServerNames: 
1492
    :vartype ServerNames: LocalizedText 
1493
    :ivar ServerType: 
1494
    :vartype ServerType: ApplicationType 
1495
    :ivar GatewayServerUri: 
1496
    :vartype GatewayServerUri: String 
1497
    :ivar DiscoveryUrls: 
1498
    :vartype DiscoveryUrls: String 
1499
    :ivar SemaphoreFilePath: 
1500
    :vartype SemaphoreFilePath: String 
1501
    :ivar IsOnline: 
1502
    :vartype IsOnline: Boolean 
1503
    '''
1504 1
    def __init__(self):
1505
        self.ServerUri = ''
1506
        self.ProductUri = ''
1507
        self.ServerNames = []
1508
        self.ServerType = 0
1509
        self.GatewayServerUri = ''
1510
        self.DiscoveryUrls = []
1511
        self.SemaphoreFilePath = ''
1512
        self.IsOnline = True
1513
        self._freeze()
1514
    
1515 1
    def to_binary(self):
1516
        packet = []
1517
        packet.append(pack_uatype('String', self.ServerUri))
1518
        packet.append(pack_uatype('String', self.ProductUri))
1519
        packet.append(struct.pack('<i', len(self.ServerNames)))
1520
        for fieldname in self.ServerNames:
1521
            packet.append(fieldname.to_binary())
1522
        packet.append(pack_uatype('UInt32', self.ServerType))
1523
        packet.append(pack_uatype('String', self.GatewayServerUri))
1524
        packet.append(struct.pack('<i', len(self.DiscoveryUrls)))
1525
        for fieldname in self.DiscoveryUrls:
1526
            packet.append(pack_uatype('String', fieldname))
1527
        packet.append(pack_uatype('String', self.SemaphoreFilePath))
1528
        packet.append(pack_uatype('Boolean', self.IsOnline))
1529
        return b''.join(packet)
1530
        
1531 1
    @staticmethod
1532
    def from_binary(data):
1533
        obj = RegisteredServer()
1534
        obj.ServerUri = unpack_uatype('String', data)
1535
        obj.ProductUri = unpack_uatype('String', data)
1536
        length = struct.unpack('<i', data.read(4))[0]
1537
        if length != -1:
1538
            for _ in range(0, length):
1539
                obj.ServerNames.append(LocalizedText.from_binary(data))
1540
        obj.ServerType = unpack_uatype('UInt32', data)
1541
        obj.GatewayServerUri = unpack_uatype('String', data)
1542
        obj.DiscoveryUrls = unpack_uatype_array('String', data)
1543
        obj.SemaphoreFilePath = unpack_uatype('String', data)
1544
        obj.IsOnline = unpack_uatype('Boolean', data)
1545
        return obj
1546
    
1547 1
    def __str__(self):
1548
        return 'RegisteredServer(' + 'ServerUri:' + str(self.ServerUri) + ', '  + \
1549
             'ProductUri:' + str(self.ProductUri) + ', '  + \
1550
             'ServerNames:' + str(self.ServerNames) + ', '  + \
1551
             'ServerType:' + str(self.ServerType) + ', '  + \
1552
             'GatewayServerUri:' + str(self.GatewayServerUri) + ', '  + \
1553
             'DiscoveryUrls:' + str(self.DiscoveryUrls) + ', '  + \
1554
             'SemaphoreFilePath:' + str(self.SemaphoreFilePath) + ', '  + \
1555
             'IsOnline:' + str(self.IsOnline) + ')'
1556
    
1557 1
    __repr__ = __str__
1558
    
1559 1
class RegisterServerParameters(FrozenClass):
1560
    '''
1561
    :ivar Server: 
1562
    :vartype Server: RegisteredServer 
1563
    '''
1564 1
    def __init__(self):
1565
        self.Server = RegisteredServer()
1566
        self._freeze()
1567
    
1568 1
    def to_binary(self):
1569
        packet = []
1570
        packet.append(self.Server.to_binary())
1571
        return b''.join(packet)
1572
        
1573 1
    @staticmethod
1574
    def from_binary(data):
1575
        obj = RegisterServerParameters()
1576
        obj.Server = RegisteredServer.from_binary(data)
1577
        return obj
1578
    
1579 1
    def __str__(self):
1580
        return 'RegisterServerParameters(' + 'Server:' + str(self.Server) + ')'
1581
    
1582 1
    __repr__ = __str__
1583
    
1584 1
class RegisterServerRequest(FrozenClass):
1585
    '''
1586
    Registers a server with the discovery server.
1587
    
1588
    :ivar TypeId: 
1589
    :vartype TypeId: NodeId 
1590
    :ivar RequestHeader: 
1591
    :vartype RequestHeader: RequestHeader 
1592
    :ivar Parameters: 
1593
    :vartype Parameters: RegisterServerParameters 
1594
    '''
1595 1
    def __init__(self):
1596
        self.TypeId = FourByteNodeId(ObjectIds.RegisterServerRequest_Encoding_DefaultBinary)
1597
        self.RequestHeader = RequestHeader()
1598
        self.Parameters = RegisterServerParameters()
1599
        self._freeze()
1600
    
1601 1
    def to_binary(self):
1602
        packet = []
1603
        packet.append(self.TypeId.to_binary())
1604
        packet.append(self.RequestHeader.to_binary())
1605
        packet.append(self.Parameters.to_binary())
1606
        return b''.join(packet)
1607
        
1608 1
    @staticmethod
1609
    def from_binary(data):
1610
        obj = RegisterServerRequest()
1611
        obj.TypeId = NodeId.from_binary(data)
1612
        obj.RequestHeader = RequestHeader.from_binary(data)
1613
        obj.Parameters = RegisterServerParameters.from_binary(data)
1614
        return obj
1615
    
1616 1
    def __str__(self):
1617
        return 'RegisterServerRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1618
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
1619
             'Parameters:' + str(self.Parameters) + ')'
1620
    
1621 1
    __repr__ = __str__
1622
    
1623 1
class RegisterServerResponse(FrozenClass):
1624
    '''
1625
    Registers a server with the discovery server.
1626
    
1627
    :ivar TypeId: 
1628
    :vartype TypeId: NodeId 
1629
    :ivar ResponseHeader: 
1630
    :vartype ResponseHeader: ResponseHeader 
1631
    '''
1632 1
    def __init__(self):
1633
        self.TypeId = FourByteNodeId(ObjectIds.RegisterServerResponse_Encoding_DefaultBinary)
1634
        self.ResponseHeader = ResponseHeader()
1635
        self._freeze()
1636
    
1637 1
    def to_binary(self):
1638
        packet = []
1639
        packet.append(self.TypeId.to_binary())
1640
        packet.append(self.ResponseHeader.to_binary())
1641
        return b''.join(packet)
1642
        
1643 1
    @staticmethod
1644
    def from_binary(data):
1645
        obj = RegisterServerResponse()
1646
        obj.TypeId = NodeId.from_binary(data)
1647
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1648
        return obj
1649
    
1650 1
    def __str__(self):
1651
        return 'RegisterServerResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1652
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
1653
    
1654 1
    __repr__ = __str__
1655
    
1656 1
class ChannelSecurityToken(FrozenClass):
1657
    '''
1658
    The token that identifies a set of keys for an active secure channel.
1659
    
1660
    :ivar ChannelId: 
1661
    :vartype ChannelId: UInt32 
1662
    :ivar TokenId: 
1663
    :vartype TokenId: UInt32 
1664
    :ivar CreatedAt: 
1665
    :vartype CreatedAt: DateTime 
1666
    :ivar RevisedLifetime: 
1667
    :vartype RevisedLifetime: UInt32 
1668
    '''
1669 1
    def __init__(self):
1670 1
        self.ChannelId = 0
1671 1
        self.TokenId = 0
1672 1
        self.CreatedAt = datetime.now()
1673 1
        self.RevisedLifetime = 0
1674 1
        self._freeze()
1675
    
1676 1
    def to_binary(self):
1677 1
        packet = []
1678 1
        packet.append(pack_uatype('UInt32', self.ChannelId))
1679 1
        packet.append(pack_uatype('UInt32', self.TokenId))
1680 1
        packet.append(pack_uatype('DateTime', self.CreatedAt))
1681 1
        packet.append(pack_uatype('UInt32', self.RevisedLifetime))
1682 1
        return b''.join(packet)
1683
        
1684 1
    @staticmethod
1685
    def from_binary(data):
1686 1
        obj = ChannelSecurityToken()
1687 1
        obj.ChannelId = unpack_uatype('UInt32', data)
1688 1
        obj.TokenId = unpack_uatype('UInt32', data)
1689 1
        obj.CreatedAt = unpack_uatype('DateTime', data)
1690 1
        obj.RevisedLifetime = unpack_uatype('UInt32', data)
1691 1
        return obj
1692
    
1693 1
    def __str__(self):
1694
        return 'ChannelSecurityToken(' + 'ChannelId:' + str(self.ChannelId) + ', '  + \
1695
             'TokenId:' + str(self.TokenId) + ', '  + \
1696
             'CreatedAt:' + str(self.CreatedAt) + ', '  + \
1697
             'RevisedLifetime:' + str(self.RevisedLifetime) + ')'
1698
    
1699 1
    __repr__ = __str__
1700
    
1701 1
class OpenSecureChannelParameters(FrozenClass):
1702
    '''
1703
    :ivar ClientProtocolVersion: 
1704
    :vartype ClientProtocolVersion: UInt32 
1705
    :ivar RequestType: 
1706
    :vartype RequestType: SecurityTokenRequestType 
1707
    :ivar SecurityMode: 
1708
    :vartype SecurityMode: MessageSecurityMode 
1709
    :ivar ClientNonce: 
1710
    :vartype ClientNonce: ByteString 
1711
    :ivar RequestedLifetime: 
1712
    :vartype RequestedLifetime: UInt32 
1713
    '''
1714 1
    def __init__(self):
1715 1
        self.ClientProtocolVersion = 0
1716 1
        self.RequestType = 0
1717 1
        self.SecurityMode = 0
1718 1
        self.ClientNonce = b''
1719 1
        self.RequestedLifetime = 0
1720 1
        self._freeze()
1721
    
1722 1
    def to_binary(self):
1723 1
        packet = []
1724 1
        packet.append(pack_uatype('UInt32', self.ClientProtocolVersion))
1725 1
        packet.append(pack_uatype('UInt32', self.RequestType))
1726 1
        packet.append(pack_uatype('UInt32', self.SecurityMode))
1727 1
        packet.append(pack_uatype('ByteString', self.ClientNonce))
1728 1
        packet.append(pack_uatype('UInt32', self.RequestedLifetime))
1729 1
        return b''.join(packet)
1730
        
1731 1
    @staticmethod
1732
    def from_binary(data):
1733 1
        obj = OpenSecureChannelParameters()
1734 1
        obj.ClientProtocolVersion = unpack_uatype('UInt32', data)
1735 1
        obj.RequestType = unpack_uatype('UInt32', data)
1736 1
        obj.SecurityMode = unpack_uatype('UInt32', data)
1737 1
        obj.ClientNonce = unpack_uatype('ByteString', data)
1738 1
        obj.RequestedLifetime = unpack_uatype('UInt32', data)
1739 1
        return obj
1740
    
1741 1
    def __str__(self):
1742
        return 'OpenSecureChannelParameters(' + 'ClientProtocolVersion:' + str(self.ClientProtocolVersion) + ', '  + \
1743
             'RequestType:' + str(self.RequestType) + ', '  + \
1744
             'SecurityMode:' + str(self.SecurityMode) + ', '  + \
1745
             'ClientNonce:' + str(self.ClientNonce) + ', '  + \
1746
             'RequestedLifetime:' + str(self.RequestedLifetime) + ')'
1747
    
1748 1
    __repr__ = __str__
1749
    
1750 1
class OpenSecureChannelRequest(FrozenClass):
1751
    '''
1752
    Creates a secure channel with a server.
1753
    
1754
    :ivar TypeId: 
1755
    :vartype TypeId: NodeId 
1756
    :ivar RequestHeader: 
1757
    :vartype RequestHeader: RequestHeader 
1758
    :ivar Parameters: 
1759
    :vartype Parameters: OpenSecureChannelParameters 
1760
    '''
1761 1
    def __init__(self):
1762 1
        self.TypeId = FourByteNodeId(ObjectIds.OpenSecureChannelRequest_Encoding_DefaultBinary)
1763 1
        self.RequestHeader = RequestHeader()
1764 1
        self.Parameters = OpenSecureChannelParameters()
1765 1
        self._freeze()
1766
    
1767 1
    def to_binary(self):
1768 1
        packet = []
1769 1
        packet.append(self.TypeId.to_binary())
1770 1
        packet.append(self.RequestHeader.to_binary())
1771 1
        packet.append(self.Parameters.to_binary())
1772 1
        return b''.join(packet)
1773
        
1774 1
    @staticmethod
1775
    def from_binary(data):
1776 1
        obj = OpenSecureChannelRequest()
1777 1
        obj.TypeId = NodeId.from_binary(data)
1778 1
        obj.RequestHeader = RequestHeader.from_binary(data)
1779 1
        obj.Parameters = OpenSecureChannelParameters.from_binary(data)
1780 1
        return obj
1781
    
1782 1
    def __str__(self):
1783
        return 'OpenSecureChannelRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1784
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
1785
             'Parameters:' + str(self.Parameters) + ')'
1786
    
1787 1
    __repr__ = __str__
1788
    
1789 1
class OpenSecureChannelResult(FrozenClass):
1790
    '''
1791
    :ivar ServerProtocolVersion: 
1792
    :vartype ServerProtocolVersion: UInt32 
1793
    :ivar SecurityToken: 
1794
    :vartype SecurityToken: ChannelSecurityToken 
1795
    :ivar ServerNonce: 
1796
    :vartype ServerNonce: ByteString 
1797
    '''
1798 1
    def __init__(self):
1799 1
        self.ServerProtocolVersion = 0
1800 1
        self.SecurityToken = ChannelSecurityToken()
1801 1
        self.ServerNonce = b''
1802 1
        self._freeze()
1803
    
1804 1
    def to_binary(self):
1805 1
        packet = []
1806 1
        packet.append(pack_uatype('UInt32', self.ServerProtocolVersion))
1807 1
        packet.append(self.SecurityToken.to_binary())
1808 1
        packet.append(pack_uatype('ByteString', self.ServerNonce))
1809 1
        return b''.join(packet)
1810
        
1811 1
    @staticmethod
1812
    def from_binary(data):
1813 1
        obj = OpenSecureChannelResult()
1814 1
        obj.ServerProtocolVersion = unpack_uatype('UInt32', data)
1815 1
        obj.SecurityToken = ChannelSecurityToken.from_binary(data)
1816 1
        obj.ServerNonce = unpack_uatype('ByteString', data)
1817 1
        return obj
1818
    
1819 1
    def __str__(self):
1820
        return 'OpenSecureChannelResult(' + 'ServerProtocolVersion:' + str(self.ServerProtocolVersion) + ', '  + \
1821
             'SecurityToken:' + str(self.SecurityToken) + ', '  + \
1822
             'ServerNonce:' + str(self.ServerNonce) + ')'
1823
    
1824 1
    __repr__ = __str__
1825
    
1826 1
class OpenSecureChannelResponse(FrozenClass):
1827
    '''
1828
    Creates a secure channel with a server.
1829
    
1830
    :ivar TypeId: 
1831
    :vartype TypeId: NodeId 
1832
    :ivar ResponseHeader: 
1833
    :vartype ResponseHeader: ResponseHeader 
1834
    :ivar Parameters: 
1835
    :vartype Parameters: OpenSecureChannelResult 
1836
    '''
1837 1
    def __init__(self):
1838 1
        self.TypeId = FourByteNodeId(ObjectIds.OpenSecureChannelResponse_Encoding_DefaultBinary)
1839 1
        self.ResponseHeader = ResponseHeader()
1840 1
        self.Parameters = OpenSecureChannelResult()
1841 1
        self._freeze()
1842
    
1843 1
    def to_binary(self):
1844 1
        packet = []
1845 1
        packet.append(self.TypeId.to_binary())
1846 1
        packet.append(self.ResponseHeader.to_binary())
1847 1
        packet.append(self.Parameters.to_binary())
1848 1
        return b''.join(packet)
1849
        
1850 1
    @staticmethod
1851
    def from_binary(data):
1852 1
        obj = OpenSecureChannelResponse()
1853 1
        obj.TypeId = NodeId.from_binary(data)
1854 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1855 1
        obj.Parameters = OpenSecureChannelResult.from_binary(data)
1856 1
        return obj
1857
    
1858 1
    def __str__(self):
1859
        return 'OpenSecureChannelResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1860
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
1861
             'Parameters:' + str(self.Parameters) + ')'
1862
    
1863 1
    __repr__ = __str__
1864
    
1865 1
class CloseSecureChannelRequest(FrozenClass):
1866
    '''
1867
    Closes a secure channel.
1868
    
1869
    :ivar TypeId: 
1870
    :vartype TypeId: NodeId 
1871
    :ivar RequestHeader: 
1872
    :vartype RequestHeader: RequestHeader 
1873
    '''
1874 1
    def __init__(self):
1875 1
        self.TypeId = FourByteNodeId(ObjectIds.CloseSecureChannelRequest_Encoding_DefaultBinary)
1876 1
        self.RequestHeader = RequestHeader()
1877 1
        self._freeze()
1878
    
1879 1
    def to_binary(self):
1880 1
        packet = []
1881 1
        packet.append(self.TypeId.to_binary())
1882 1
        packet.append(self.RequestHeader.to_binary())
1883 1
        return b''.join(packet)
1884
        
1885 1
    @staticmethod
1886
    def from_binary(data):
1887
        obj = CloseSecureChannelRequest()
1888
        obj.TypeId = NodeId.from_binary(data)
1889
        obj.RequestHeader = RequestHeader.from_binary(data)
1890
        return obj
1891
    
1892 1
    def __str__(self):
1893
        return 'CloseSecureChannelRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1894
             'RequestHeader:' + str(self.RequestHeader) + ')'
1895
    
1896 1
    __repr__ = __str__
1897
    
1898 1
class CloseSecureChannelResponse(FrozenClass):
1899
    '''
1900
    Closes a secure channel.
1901
    
1902
    :ivar TypeId: 
1903
    :vartype TypeId: NodeId 
1904
    :ivar ResponseHeader: 
1905
    :vartype ResponseHeader: ResponseHeader 
1906
    '''
1907 1
    def __init__(self):
1908
        self.TypeId = FourByteNodeId(ObjectIds.CloseSecureChannelResponse_Encoding_DefaultBinary)
1909
        self.ResponseHeader = ResponseHeader()
1910
        self._freeze()
1911
    
1912 1
    def to_binary(self):
1913
        packet = []
1914
        packet.append(self.TypeId.to_binary())
1915
        packet.append(self.ResponseHeader.to_binary())
1916
        return b''.join(packet)
1917
        
1918 1
    @staticmethod
1919
    def from_binary(data):
1920
        obj = CloseSecureChannelResponse()
1921
        obj.TypeId = NodeId.from_binary(data)
1922
        obj.ResponseHeader = ResponseHeader.from_binary(data)
1923
        return obj
1924
    
1925 1
    def __str__(self):
1926
        return 'CloseSecureChannelResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
1927
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
1928
    
1929 1
    __repr__ = __str__
1930
    
1931 1
class SignedSoftwareCertificate(FrozenClass):
1932
    '''
1933
    A software certificate with a digital signature.
1934
    
1935
    :ivar CertificateData: 
1936
    :vartype CertificateData: ByteString 
1937
    :ivar Signature: 
1938
    :vartype Signature: ByteString 
1939
    '''
1940 1
    def __init__(self):
1941
        self.CertificateData = b''
1942
        self.Signature = b''
1943
        self._freeze()
1944
    
1945 1
    def to_binary(self):
1946
        packet = []
1947
        packet.append(pack_uatype('ByteString', self.CertificateData))
1948
        packet.append(pack_uatype('ByteString', self.Signature))
1949
        return b''.join(packet)
1950
        
1951 1
    @staticmethod
1952
    def from_binary(data):
1953
        obj = SignedSoftwareCertificate()
1954
        obj.CertificateData = unpack_uatype('ByteString', data)
1955
        obj.Signature = unpack_uatype('ByteString', data)
1956
        return obj
1957
    
1958 1
    def __str__(self):
1959
        return 'SignedSoftwareCertificate(' + 'CertificateData:' + str(self.CertificateData) + ', '  + \
1960
             'Signature:' + str(self.Signature) + ')'
1961
    
1962 1
    __repr__ = __str__
1963
    
1964 1
class SignatureData(FrozenClass):
1965
    '''
1966
    A digital signature.
1967
    
1968
    :ivar Algorithm: 
1969
    :vartype Algorithm: String 
1970
    :ivar Signature: 
1971
    :vartype Signature: ByteString 
1972
    '''
1973 1
    def __init__(self):
1974 1
        self.Algorithm = ''
1975 1
        self.Signature = b''
1976 1
        self._freeze()
1977
    
1978 1
    def to_binary(self):
1979 1
        packet = []
1980 1
        packet.append(pack_uatype('String', self.Algorithm))
1981 1
        packet.append(pack_uatype('ByteString', self.Signature))
1982 1
        return b''.join(packet)
1983
        
1984 1
    @staticmethod
1985
    def from_binary(data):
1986 1
        obj = SignatureData()
1987 1
        obj.Algorithm = unpack_uatype('String', data)
1988 1
        obj.Signature = unpack_uatype('ByteString', data)
1989 1
        return obj
1990
    
1991 1
    def __str__(self):
1992
        return 'SignatureData(' + 'Algorithm:' + str(self.Algorithm) + ', '  + \
1993
             'Signature:' + str(self.Signature) + ')'
1994
    
1995 1
    __repr__ = __str__
1996
    
1997 1
class CreateSessionParameters(FrozenClass):
1998
    '''
1999
    :ivar ClientDescription: 
2000
    :vartype ClientDescription: ApplicationDescription 
2001
    :ivar ServerUri: 
2002
    :vartype ServerUri: String 
2003
    :ivar EndpointUrl: 
2004
    :vartype EndpointUrl: String 
2005
    :ivar SessionName: 
2006
    :vartype SessionName: String 
2007
    :ivar ClientNonce: 
2008
    :vartype ClientNonce: ByteString 
2009
    :ivar ClientCertificate: 
2010
    :vartype ClientCertificate: ByteString 
2011
    :ivar RequestedSessionTimeout: 
2012
    :vartype RequestedSessionTimeout: Double 
2013
    :ivar MaxResponseMessageSize: 
2014
    :vartype MaxResponseMessageSize: UInt32 
2015
    '''
2016 1
    def __init__(self):
2017 1
        self.ClientDescription = ApplicationDescription()
2018 1
        self.ServerUri = ''
2019 1
        self.EndpointUrl = ''
2020 1
        self.SessionName = ''
2021 1
        self.ClientNonce = b''
2022 1
        self.ClientCertificate = b''
2023 1
        self.RequestedSessionTimeout = 0
2024 1
        self.MaxResponseMessageSize = 0
2025 1
        self._freeze()
2026
    
2027 1
    def to_binary(self):
2028 1
        packet = []
2029 1
        packet.append(self.ClientDescription.to_binary())
2030 1
        packet.append(pack_uatype('String', self.ServerUri))
2031 1
        packet.append(pack_uatype('String', self.EndpointUrl))
2032 1
        packet.append(pack_uatype('String', self.SessionName))
2033 1
        packet.append(pack_uatype('ByteString', self.ClientNonce))
2034 1
        packet.append(pack_uatype('ByteString', self.ClientCertificate))
2035 1
        packet.append(pack_uatype('Double', self.RequestedSessionTimeout))
2036 1
        packet.append(pack_uatype('UInt32', self.MaxResponseMessageSize))
2037 1
        return b''.join(packet)
2038
        
2039 1
    @staticmethod
2040
    def from_binary(data):
2041 1
        obj = CreateSessionParameters()
2042 1
        obj.ClientDescription = ApplicationDescription.from_binary(data)
2043 1
        obj.ServerUri = unpack_uatype('String', data)
2044 1
        obj.EndpointUrl = unpack_uatype('String', data)
2045 1
        obj.SessionName = unpack_uatype('String', data)
2046 1
        obj.ClientNonce = unpack_uatype('ByteString', data)
2047 1
        obj.ClientCertificate = unpack_uatype('ByteString', data)
2048 1
        obj.RequestedSessionTimeout = unpack_uatype('Double', data)
2049 1
        obj.MaxResponseMessageSize = unpack_uatype('UInt32', data)
2050 1
        return obj
2051
    
2052 1
    def __str__(self):
2053
        return 'CreateSessionParameters(' + 'ClientDescription:' + str(self.ClientDescription) + ', '  + \
2054
             'ServerUri:' + str(self.ServerUri) + ', '  + \
2055
             'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
2056
             'SessionName:' + str(self.SessionName) + ', '  + \
2057
             'ClientNonce:' + str(self.ClientNonce) + ', '  + \
2058
             'ClientCertificate:' + str(self.ClientCertificate) + ', '  + \
2059
             'RequestedSessionTimeout:' + str(self.RequestedSessionTimeout) + ', '  + \
2060
             'MaxResponseMessageSize:' + str(self.MaxResponseMessageSize) + ')'
2061
    
2062 1
    __repr__ = __str__
2063
    
2064 1
class CreateSessionRequest(FrozenClass):
2065
    '''
2066
    Creates a new session with the server.
2067
    
2068
    :ivar TypeId: 
2069
    :vartype TypeId: NodeId 
2070
    :ivar RequestHeader: 
2071
    :vartype RequestHeader: RequestHeader 
2072
    :ivar Parameters: 
2073
    :vartype Parameters: CreateSessionParameters 
2074
    '''
2075 1
    def __init__(self):
2076 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSessionRequest_Encoding_DefaultBinary)
2077 1
        self.RequestHeader = RequestHeader()
2078 1
        self.Parameters = CreateSessionParameters()
2079 1
        self._freeze()
2080
    
2081 1
    def to_binary(self):
2082 1
        packet = []
2083 1
        packet.append(self.TypeId.to_binary())
2084 1
        packet.append(self.RequestHeader.to_binary())
2085 1
        packet.append(self.Parameters.to_binary())
2086 1
        return b''.join(packet)
2087
        
2088 1
    @staticmethod
2089
    def from_binary(data):
2090
        obj = CreateSessionRequest()
2091
        obj.TypeId = NodeId.from_binary(data)
2092
        obj.RequestHeader = RequestHeader.from_binary(data)
2093
        obj.Parameters = CreateSessionParameters.from_binary(data)
2094
        return obj
2095
    
2096 1
    def __str__(self):
2097
        return 'CreateSessionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2098
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
2099
             'Parameters:' + str(self.Parameters) + ')'
2100
    
2101 1
    __repr__ = __str__
2102
    
2103 1
class CreateSessionResult(FrozenClass):
2104
    '''
2105
    :ivar SessionId: 
2106
    :vartype SessionId: NodeId 
2107
    :ivar AuthenticationToken: 
2108
    :vartype AuthenticationToken: NodeId 
2109
    :ivar RevisedSessionTimeout: 
2110
    :vartype RevisedSessionTimeout: Double 
2111
    :ivar ServerNonce: 
2112
    :vartype ServerNonce: ByteString 
2113
    :ivar ServerCertificate: 
2114
    :vartype ServerCertificate: ByteString 
2115
    :ivar ServerEndpoints: 
2116
    :vartype ServerEndpoints: EndpointDescription 
2117
    :ivar ServerSoftwareCertificates: 
2118
    :vartype ServerSoftwareCertificates: SignedSoftwareCertificate 
2119
    :ivar ServerSignature: 
2120
    :vartype ServerSignature: SignatureData 
2121
    :ivar MaxRequestMessageSize: 
2122
    :vartype MaxRequestMessageSize: UInt32 
2123
    '''
2124 1
    def __init__(self):
2125 1
        self.SessionId = NodeId()
2126 1
        self.AuthenticationToken = NodeId()
2127 1
        self.RevisedSessionTimeout = 0
2128 1
        self.ServerNonce = b''
2129 1
        self.ServerCertificate = b''
2130 1
        self.ServerEndpoints = []
2131 1
        self.ServerSoftwareCertificates = []
2132 1
        self.ServerSignature = SignatureData()
2133 1
        self.MaxRequestMessageSize = 0
2134 1
        self._freeze()
2135
    
2136 1
    def to_binary(self):
2137 1
        packet = []
2138 1
        packet.append(self.SessionId.to_binary())
2139 1
        packet.append(self.AuthenticationToken.to_binary())
2140 1
        packet.append(pack_uatype('Double', self.RevisedSessionTimeout))
2141 1
        packet.append(pack_uatype('ByteString', self.ServerNonce))
2142 1
        packet.append(pack_uatype('ByteString', self.ServerCertificate))
2143 1
        packet.append(struct.pack('<i', len(self.ServerEndpoints)))
2144 1
        for fieldname in self.ServerEndpoints:
2145 1
            packet.append(fieldname.to_binary())
2146 1
        packet.append(struct.pack('<i', len(self.ServerSoftwareCertificates)))
2147 1
        for fieldname in self.ServerSoftwareCertificates:
2148
            packet.append(fieldname.to_binary())
2149 1
        packet.append(self.ServerSignature.to_binary())
2150 1
        packet.append(pack_uatype('UInt32', self.MaxRequestMessageSize))
2151 1
        return b''.join(packet)
2152
        
2153 1
    @staticmethod
2154
    def from_binary(data):
2155 1
        obj = CreateSessionResult()
2156 1
        obj.SessionId = NodeId.from_binary(data)
2157 1
        obj.AuthenticationToken = NodeId.from_binary(data)
2158 1
        obj.RevisedSessionTimeout = unpack_uatype('Double', data)
2159 1
        obj.ServerNonce = unpack_uatype('ByteString', data)
2160 1
        obj.ServerCertificate = unpack_uatype('ByteString', data)
2161 1
        length = struct.unpack('<i', data.read(4))[0]
2162 1
        if length != -1:
2163 1
            for _ in range(0, length):
2164 1
                obj.ServerEndpoints.append(EndpointDescription.from_binary(data))
2165 1
        length = struct.unpack('<i', data.read(4))[0]
2166 1
        if length != -1:
2167 1
            for _ in range(0, length):
2168
                obj.ServerSoftwareCertificates.append(SignedSoftwareCertificate.from_binary(data))
2169 1
        obj.ServerSignature = SignatureData.from_binary(data)
2170 1
        obj.MaxRequestMessageSize = unpack_uatype('UInt32', data)
2171 1
        return obj
2172
    
2173 1
    def __str__(self):
2174
        return 'CreateSessionResult(' + 'SessionId:' + str(self.SessionId) + ', '  + \
2175
             'AuthenticationToken:' + str(self.AuthenticationToken) + ', '  + \
2176
             'RevisedSessionTimeout:' + str(self.RevisedSessionTimeout) + ', '  + \
2177
             'ServerNonce:' + str(self.ServerNonce) + ', '  + \
2178
             'ServerCertificate:' + str(self.ServerCertificate) + ', '  + \
2179
             'ServerEndpoints:' + str(self.ServerEndpoints) + ', '  + \
2180
             'ServerSoftwareCertificates:' + str(self.ServerSoftwareCertificates) + ', '  + \
2181
             'ServerSignature:' + str(self.ServerSignature) + ', '  + \
2182
             'MaxRequestMessageSize:' + str(self.MaxRequestMessageSize) + ')'
2183
    
2184 1
    __repr__ = __str__
2185
    
2186 1
class CreateSessionResponse(FrozenClass):
2187
    '''
2188
    Creates a new session with the server.
2189
    
2190
    :ivar TypeId: 
2191
    :vartype TypeId: NodeId 
2192
    :ivar ResponseHeader: 
2193
    :vartype ResponseHeader: ResponseHeader 
2194
    :ivar Parameters: 
2195
    :vartype Parameters: CreateSessionResult 
2196
    '''
2197 1
    def __init__(self):
2198 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSessionResponse_Encoding_DefaultBinary)
2199 1
        self.ResponseHeader = ResponseHeader()
2200 1
        self.Parameters = CreateSessionResult()
2201 1
        self._freeze()
2202
    
2203 1
    def to_binary(self):
2204 1
        packet = []
2205 1
        packet.append(self.TypeId.to_binary())
2206 1
        packet.append(self.ResponseHeader.to_binary())
2207 1
        packet.append(self.Parameters.to_binary())
2208 1
        return b''.join(packet)
2209
        
2210 1
    @staticmethod
2211
    def from_binary(data):
2212 1
        obj = CreateSessionResponse()
2213 1
        obj.TypeId = NodeId.from_binary(data)
2214 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
2215 1
        obj.Parameters = CreateSessionResult.from_binary(data)
2216 1
        return obj
2217
    
2218 1
    def __str__(self):
2219
        return 'CreateSessionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2220
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
2221
             'Parameters:' + str(self.Parameters) + ')'
2222
    
2223 1
    __repr__ = __str__
2224
    
2225 1
class UserIdentityToken(FrozenClass):
2226
    '''
2227
    A base type for a user identity token.
2228
    
2229
    :ivar PolicyId: 
2230
    :vartype PolicyId: String 
2231
    '''
2232 1
    def __init__(self):
2233
        self.PolicyId = ''
2234
        self._freeze()
2235
    
2236 1
    def to_binary(self):
2237
        packet = []
2238
        packet.append(pack_uatype('String', self.PolicyId))
2239
        return b''.join(packet)
2240
        
2241 1
    @staticmethod
2242
    def from_binary(data):
2243
        obj = UserIdentityToken()
2244
        obj.PolicyId = unpack_uatype('String', data)
2245
        return obj
2246
    
2247 1
    def __str__(self):
2248
        return 'UserIdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ')'
2249
    
2250 1
    __repr__ = __str__
2251
    
2252 1
class AnonymousIdentityToken(FrozenClass):
2253
    '''
2254
    A token representing an anonymous user.
2255
    
2256
    :ivar PolicyId: 
2257
    :vartype PolicyId: String 
2258
    '''
2259 1
    def __init__(self):
2260 1
        self.PolicyId = ''
2261 1
        self._freeze()
2262
    
2263 1
    def to_binary(self):
2264 1
        packet = []
2265 1
        packet.append(pack_uatype('String', self.PolicyId))
2266 1
        return b''.join(packet)
2267
        
2268 1
    @staticmethod
2269
    def from_binary(data):
2270 1
        obj = AnonymousIdentityToken()
2271 1
        obj.PolicyId = unpack_uatype('String', data)
2272 1
        return obj
2273
    
2274 1
    def __str__(self):
2275
        return 'AnonymousIdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ')'
2276
    
2277 1
    __repr__ = __str__
2278
    
2279 1
class UserNameIdentityToken(FrozenClass):
2280
    '''
2281
    A token representing a user identified by a user name and password.
2282
    
2283
    :ivar PolicyId: 
2284
    :vartype PolicyId: String 
2285
    :ivar UserName: 
2286
    :vartype UserName: String 
2287
    :ivar Password: 
2288
    :vartype Password: ByteString 
2289
    :ivar EncryptionAlgorithm: 
2290
    :vartype EncryptionAlgorithm: String 
2291
    '''
2292 1
    def __init__(self):
2293 1
        self.PolicyId = ''
2294 1
        self.UserName = ''
2295 1
        self.Password = b''
2296 1
        self.EncryptionAlgorithm = ''
2297 1
        self._freeze()
2298
    
2299 1
    def to_binary(self):
2300 1
        packet = []
2301 1
        packet.append(pack_uatype('String', self.PolicyId))
2302 1
        packet.append(pack_uatype('String', self.UserName))
2303 1
        packet.append(pack_uatype('ByteString', self.Password))
2304 1
        packet.append(pack_uatype('String', self.EncryptionAlgorithm))
2305 1
        return b''.join(packet)
2306
        
2307 1
    @staticmethod
2308
    def from_binary(data):
2309 1
        obj = UserNameIdentityToken()
2310 1
        obj.PolicyId = unpack_uatype('String', data)
2311 1
        obj.UserName = unpack_uatype('String', data)
2312 1
        obj.Password = unpack_uatype('ByteString', data)
2313 1
        obj.EncryptionAlgorithm = unpack_uatype('String', data)
2314 1
        return obj
2315
    
2316 1
    def __str__(self):
2317
        return 'UserNameIdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ', '  + \
2318
             'UserName:' + str(self.UserName) + ', '  + \
2319
             'Password:' + str(self.Password) + ', '  + \
2320
             'EncryptionAlgorithm:' + str(self.EncryptionAlgorithm) + ')'
2321
    
2322 1
    __repr__ = __str__
2323
    
2324 1
class X509IdentityToken(FrozenClass):
2325
    '''
2326
    A token representing a user identified by an X509 certificate.
2327
    
2328
    :ivar PolicyId: 
2329
    :vartype PolicyId: String 
2330
    :ivar CertificateData: 
2331
    :vartype CertificateData: ByteString 
2332
    '''
2333 1
    def __init__(self):
2334
        self.PolicyId = ''
2335
        self.CertificateData = b''
2336
        self._freeze()
2337
    
2338 1
    def to_binary(self):
2339
        packet = []
2340
        packet.append(pack_uatype('String', self.PolicyId))
2341
        packet.append(pack_uatype('ByteString', self.CertificateData))
2342
        return b''.join(packet)
2343
        
2344 1
    @staticmethod
2345
    def from_binary(data):
2346
        obj = X509IdentityToken()
2347
        obj.PolicyId = unpack_uatype('String', data)
2348
        obj.CertificateData = unpack_uatype('ByteString', data)
2349
        return obj
2350
    
2351 1
    def __str__(self):
2352
        return 'X509IdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ', '  + \
2353
             'CertificateData:' + str(self.CertificateData) + ')'
2354
    
2355 1
    __repr__ = __str__
2356
    
2357 1
class IssuedIdentityToken(FrozenClass):
2358
    '''
2359
    A token representing a user identified by a WS-Security XML token.
2360
    
2361
    :ivar PolicyId: 
2362
    :vartype PolicyId: String 
2363
    :ivar TokenData: 
2364
    :vartype TokenData: ByteString 
2365
    :ivar EncryptionAlgorithm: 
2366
    :vartype EncryptionAlgorithm: String 
2367
    '''
2368 1
    def __init__(self):
2369
        self.PolicyId = ''
2370
        self.TokenData = b''
2371
        self.EncryptionAlgorithm = ''
2372
        self._freeze()
2373
    
2374 1
    def to_binary(self):
2375
        packet = []
2376
        packet.append(pack_uatype('String', self.PolicyId))
2377
        packet.append(pack_uatype('ByteString', self.TokenData))
2378
        packet.append(pack_uatype('String', self.EncryptionAlgorithm))
2379
        return b''.join(packet)
2380
        
2381 1
    @staticmethod
2382
    def from_binary(data):
2383
        obj = IssuedIdentityToken()
2384
        obj.PolicyId = unpack_uatype('String', data)
2385
        obj.TokenData = unpack_uatype('ByteString', data)
2386
        obj.EncryptionAlgorithm = unpack_uatype('String', data)
2387
        return obj
2388
    
2389 1
    def __str__(self):
2390
        return 'IssuedIdentityToken(' + 'PolicyId:' + str(self.PolicyId) + ', '  + \
2391
             'TokenData:' + str(self.TokenData) + ', '  + \
2392
             'EncryptionAlgorithm:' + str(self.EncryptionAlgorithm) + ')'
2393
    
2394 1
    __repr__ = __str__
2395
    
2396 1
class ActivateSessionParameters(FrozenClass):
2397
    '''
2398
    :ivar ClientSignature: 
2399
    :vartype ClientSignature: SignatureData 
2400
    :ivar ClientSoftwareCertificates: 
2401
    :vartype ClientSoftwareCertificates: SignedSoftwareCertificate 
2402
    :ivar LocaleIds: 
2403
    :vartype LocaleIds: String 
2404
    :ivar UserIdentityToken: 
2405
    :vartype UserIdentityToken: ExtensionObject 
2406
    :ivar UserTokenSignature: 
2407
    :vartype UserTokenSignature: SignatureData 
2408
    '''
2409 1
    def __init__(self):
2410 1
        self.ClientSignature = SignatureData()
2411 1
        self.ClientSoftwareCertificates = []
2412 1
        self.LocaleIds = []
2413 1
        self.UserIdentityToken = None
2414 1
        self.UserTokenSignature = SignatureData()
2415 1
        self._freeze()
2416
    
2417 1
    def to_binary(self):
2418 1
        packet = []
2419 1
        packet.append(self.ClientSignature.to_binary())
2420 1
        packet.append(struct.pack('<i', len(self.ClientSoftwareCertificates)))
2421 1
        for fieldname in self.ClientSoftwareCertificates:
2422
            packet.append(fieldname.to_binary())
2423 1
        packet.append(struct.pack('<i', len(self.LocaleIds)))
2424 1
        for fieldname in self.LocaleIds:
2425 1
            packet.append(pack_uatype('String', fieldname))
2426 1
        packet.append(extensionobject_to_binary(self.UserIdentityToken))
2427 1
        packet.append(self.UserTokenSignature.to_binary())
2428 1
        return b''.join(packet)
2429
        
2430 1
    @staticmethod
2431
    def from_binary(data):
2432 1
        obj = ActivateSessionParameters()
2433 1
        obj.ClientSignature = SignatureData.from_binary(data)
2434 1
        length = struct.unpack('<i', data.read(4))[0]
2435 1
        if length != -1:
2436 1
            for _ in range(0, length):
2437
                obj.ClientSoftwareCertificates.append(SignedSoftwareCertificate.from_binary(data))
2438 1
        obj.LocaleIds = unpack_uatype_array('String', data)
2439 1
        obj.UserIdentityToken = extensionobject_from_binary(data)
2440 1
        obj.UserTokenSignature = SignatureData.from_binary(data)
2441 1
        return obj
2442
    
2443 1
    def __str__(self):
2444
        return 'ActivateSessionParameters(' + 'ClientSignature:' + str(self.ClientSignature) + ', '  + \
2445
             'ClientSoftwareCertificates:' + str(self.ClientSoftwareCertificates) + ', '  + \
2446
             'LocaleIds:' + str(self.LocaleIds) + ', '  + \
2447
             'UserIdentityToken:' + str(self.UserIdentityToken) + ', '  + \
2448
             'UserTokenSignature:' + str(self.UserTokenSignature) + ')'
2449
    
2450 1
    __repr__ = __str__
2451
    
2452 1
class ActivateSessionRequest(FrozenClass):
2453
    '''
2454
    Activates a session with the server.
2455
    
2456
    :ivar TypeId: 
2457
    :vartype TypeId: NodeId 
2458
    :ivar RequestHeader: 
2459
    :vartype RequestHeader: RequestHeader 
2460
    :ivar Parameters: 
2461
    :vartype Parameters: ActivateSessionParameters 
2462
    '''
2463 1
    def __init__(self):
2464 1
        self.TypeId = FourByteNodeId(ObjectIds.ActivateSessionRequest_Encoding_DefaultBinary)
2465 1
        self.RequestHeader = RequestHeader()
2466 1
        self.Parameters = ActivateSessionParameters()
2467 1
        self._freeze()
2468
    
2469 1
    def to_binary(self):
2470 1
        packet = []
2471 1
        packet.append(self.TypeId.to_binary())
2472 1
        packet.append(self.RequestHeader.to_binary())
2473 1
        packet.append(self.Parameters.to_binary())
2474 1
        return b''.join(packet)
2475
        
2476 1
    @staticmethod
2477
    def from_binary(data):
2478
        obj = ActivateSessionRequest()
2479
        obj.TypeId = NodeId.from_binary(data)
2480
        obj.RequestHeader = RequestHeader.from_binary(data)
2481
        obj.Parameters = ActivateSessionParameters.from_binary(data)
2482
        return obj
2483
    
2484 1
    def __str__(self):
2485
        return 'ActivateSessionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2486
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
2487
             'Parameters:' + str(self.Parameters) + ')'
2488
    
2489 1
    __repr__ = __str__
2490
    
2491 1
class ActivateSessionResult(FrozenClass):
2492
    '''
2493
    :ivar ServerNonce: 
2494
    :vartype ServerNonce: ByteString 
2495
    :ivar Results: 
2496
    :vartype Results: StatusCode 
2497
    :ivar DiagnosticInfos: 
2498
    :vartype DiagnosticInfos: DiagnosticInfo 
2499
    '''
2500 1
    def __init__(self):
2501 1
        self.ServerNonce = b''
2502 1
        self.Results = []
2503 1
        self.DiagnosticInfos = []
2504 1
        self._freeze()
2505
    
2506 1
    def to_binary(self):
2507 1
        packet = []
2508 1
        packet.append(pack_uatype('ByteString', self.ServerNonce))
2509 1
        packet.append(struct.pack('<i', len(self.Results)))
2510 1
        for fieldname in self.Results:
2511
            packet.append(fieldname.to_binary())
2512 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
2513 1
        for fieldname in self.DiagnosticInfos:
2514
            packet.append(fieldname.to_binary())
2515 1
        return b''.join(packet)
2516
        
2517 1
    @staticmethod
2518
    def from_binary(data):
2519 1
        obj = ActivateSessionResult()
2520 1
        obj.ServerNonce = unpack_uatype('ByteString', data)
2521 1
        length = struct.unpack('<i', data.read(4))[0]
2522 1
        if length != -1:
2523 1
            for _ in range(0, length):
2524
                obj.Results.append(StatusCode.from_binary(data))
2525 1
        length = struct.unpack('<i', data.read(4))[0]
2526 1
        if length != -1:
2527 1
            for _ in range(0, length):
2528
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
2529 1
        return obj
2530
    
2531 1
    def __str__(self):
2532
        return 'ActivateSessionResult(' + 'ServerNonce:' + str(self.ServerNonce) + ', '  + \
2533
             'Results:' + str(self.Results) + ', '  + \
2534
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
2535
    
2536 1
    __repr__ = __str__
2537
    
2538 1
class ActivateSessionResponse(FrozenClass):
2539
    '''
2540
    Activates a session with the server.
2541
    
2542
    :ivar TypeId: 
2543
    :vartype TypeId: NodeId 
2544
    :ivar ResponseHeader: 
2545
    :vartype ResponseHeader: ResponseHeader 
2546
    :ivar Parameters: 
2547
    :vartype Parameters: ActivateSessionResult 
2548
    '''
2549 1
    def __init__(self):
2550 1
        self.TypeId = FourByteNodeId(ObjectIds.ActivateSessionResponse_Encoding_DefaultBinary)
2551 1
        self.ResponseHeader = ResponseHeader()
2552 1
        self.Parameters = ActivateSessionResult()
2553 1
        self._freeze()
2554
    
2555 1
    def to_binary(self):
2556 1
        packet = []
2557 1
        packet.append(self.TypeId.to_binary())
2558 1
        packet.append(self.ResponseHeader.to_binary())
2559 1
        packet.append(self.Parameters.to_binary())
2560 1
        return b''.join(packet)
2561
        
2562 1
    @staticmethod
2563
    def from_binary(data):
2564 1
        obj = ActivateSessionResponse()
2565 1
        obj.TypeId = NodeId.from_binary(data)
2566 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
2567 1
        obj.Parameters = ActivateSessionResult.from_binary(data)
2568 1
        return obj
2569
    
2570 1
    def __str__(self):
2571
        return 'ActivateSessionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2572
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
2573
             'Parameters:' + str(self.Parameters) + ')'
2574
    
2575 1
    __repr__ = __str__
2576
    
2577 1
class CloseSessionRequest(FrozenClass):
2578
    '''
2579
    Closes a session with the server.
2580
    
2581
    :ivar TypeId: 
2582
    :vartype TypeId: NodeId 
2583
    :ivar RequestHeader: 
2584
    :vartype RequestHeader: RequestHeader 
2585
    :ivar DeleteSubscriptions: 
2586
    :vartype DeleteSubscriptions: Boolean 
2587
    '''
2588 1
    def __init__(self):
2589 1
        self.TypeId = FourByteNodeId(ObjectIds.CloseSessionRequest_Encoding_DefaultBinary)
2590 1
        self.RequestHeader = RequestHeader()
2591 1
        self.DeleteSubscriptions = True
2592 1
        self._freeze()
2593
    
2594 1
    def to_binary(self):
2595 1
        packet = []
2596 1
        packet.append(self.TypeId.to_binary())
2597 1
        packet.append(self.RequestHeader.to_binary())
2598 1
        packet.append(pack_uatype('Boolean', self.DeleteSubscriptions))
2599 1
        return b''.join(packet)
2600
        
2601 1
    @staticmethod
2602
    def from_binary(data):
2603
        obj = CloseSessionRequest()
2604
        obj.TypeId = NodeId.from_binary(data)
2605
        obj.RequestHeader = RequestHeader.from_binary(data)
2606
        obj.DeleteSubscriptions = unpack_uatype('Boolean', data)
2607
        return obj
2608
    
2609 1
    def __str__(self):
2610
        return 'CloseSessionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2611
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
2612
             'DeleteSubscriptions:' + str(self.DeleteSubscriptions) + ')'
2613
    
2614 1
    __repr__ = __str__
2615
    
2616 1
class CloseSessionResponse(FrozenClass):
2617
    '''
2618
    Closes a session with the server.
2619
    
2620
    :ivar TypeId: 
2621
    :vartype TypeId: NodeId 
2622
    :ivar ResponseHeader: 
2623
    :vartype ResponseHeader: ResponseHeader 
2624
    '''
2625 1
    def __init__(self):
2626 1
        self.TypeId = FourByteNodeId(ObjectIds.CloseSessionResponse_Encoding_DefaultBinary)
2627 1
        self.ResponseHeader = ResponseHeader()
2628 1
        self._freeze()
2629
    
2630 1
    def to_binary(self):
2631 1
        packet = []
2632 1
        packet.append(self.TypeId.to_binary())
2633 1
        packet.append(self.ResponseHeader.to_binary())
2634 1
        return b''.join(packet)
2635
        
2636 1
    @staticmethod
2637
    def from_binary(data):
2638 1
        obj = CloseSessionResponse()
2639 1
        obj.TypeId = NodeId.from_binary(data)
2640 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
2641 1
        return obj
2642
    
2643 1
    def __str__(self):
2644
        return 'CloseSessionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2645
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
2646
    
2647 1
    __repr__ = __str__
2648
    
2649 1
class CancelParameters(FrozenClass):
2650
    '''
2651
    :ivar RequestHandle: 
2652
    :vartype RequestHandle: UInt32 
2653
    '''
2654 1
    def __init__(self):
2655
        self.RequestHandle = 0
2656
        self._freeze()
2657
    
2658 1
    def to_binary(self):
2659
        packet = []
2660
        packet.append(pack_uatype('UInt32', self.RequestHandle))
2661
        return b''.join(packet)
2662
        
2663 1
    @staticmethod
2664
    def from_binary(data):
2665
        obj = CancelParameters()
2666
        obj.RequestHandle = unpack_uatype('UInt32', data)
2667
        return obj
2668
    
2669 1
    def __str__(self):
2670
        return 'CancelParameters(' + 'RequestHandle:' + str(self.RequestHandle) + ')'
2671
    
2672 1
    __repr__ = __str__
2673
    
2674 1
class CancelRequest(FrozenClass):
2675
    '''
2676
    Cancels an outstanding request.
2677
    
2678
    :ivar TypeId: 
2679
    :vartype TypeId: NodeId 
2680
    :ivar RequestHeader: 
2681
    :vartype RequestHeader: RequestHeader 
2682
    :ivar Parameters: 
2683
    :vartype Parameters: CancelParameters 
2684
    '''
2685 1
    def __init__(self):
2686
        self.TypeId = FourByteNodeId(ObjectIds.CancelRequest_Encoding_DefaultBinary)
2687
        self.RequestHeader = RequestHeader()
2688
        self.Parameters = CancelParameters()
2689
        self._freeze()
2690
    
2691 1
    def to_binary(self):
2692
        packet = []
2693
        packet.append(self.TypeId.to_binary())
2694
        packet.append(self.RequestHeader.to_binary())
2695
        packet.append(self.Parameters.to_binary())
2696
        return b''.join(packet)
2697
        
2698 1
    @staticmethod
2699
    def from_binary(data):
2700
        obj = CancelRequest()
2701
        obj.TypeId = NodeId.from_binary(data)
2702
        obj.RequestHeader = RequestHeader.from_binary(data)
2703
        obj.Parameters = CancelParameters.from_binary(data)
2704
        return obj
2705
    
2706 1
    def __str__(self):
2707
        return 'CancelRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2708
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
2709
             'Parameters:' + str(self.Parameters) + ')'
2710
    
2711 1
    __repr__ = __str__
2712
    
2713 1
class CancelResult(FrozenClass):
2714
    '''
2715
    :ivar CancelCount: 
2716
    :vartype CancelCount: UInt32 
2717
    '''
2718 1
    def __init__(self):
2719
        self.CancelCount = 0
2720
        self._freeze()
2721
    
2722 1
    def to_binary(self):
2723
        packet = []
2724
        packet.append(pack_uatype('UInt32', self.CancelCount))
2725
        return b''.join(packet)
2726
        
2727 1
    @staticmethod
2728
    def from_binary(data):
2729
        obj = CancelResult()
2730
        obj.CancelCount = unpack_uatype('UInt32', data)
2731
        return obj
2732
    
2733 1
    def __str__(self):
2734
        return 'CancelResult(' + 'CancelCount:' + str(self.CancelCount) + ')'
2735
    
2736 1
    __repr__ = __str__
2737
    
2738 1
class CancelResponse(FrozenClass):
2739
    '''
2740
    Cancels an outstanding request.
2741
    
2742
    :ivar TypeId: 
2743
    :vartype TypeId: NodeId 
2744
    :ivar ResponseHeader: 
2745
    :vartype ResponseHeader: ResponseHeader 
2746
    :ivar Parameters: 
2747
    :vartype Parameters: CancelResult 
2748
    '''
2749 1
    def __init__(self):
2750
        self.TypeId = FourByteNodeId(ObjectIds.CancelResponse_Encoding_DefaultBinary)
2751
        self.ResponseHeader = ResponseHeader()
2752
        self.Parameters = CancelResult()
2753
        self._freeze()
2754
    
2755 1
    def to_binary(self):
2756
        packet = []
2757
        packet.append(self.TypeId.to_binary())
2758
        packet.append(self.ResponseHeader.to_binary())
2759
        packet.append(self.Parameters.to_binary())
2760
        return b''.join(packet)
2761
        
2762 1
    @staticmethod
2763
    def from_binary(data):
2764
        obj = CancelResponse()
2765
        obj.TypeId = NodeId.from_binary(data)
2766
        obj.ResponseHeader = ResponseHeader.from_binary(data)
2767
        obj.Parameters = CancelResult.from_binary(data)
2768
        return obj
2769
    
2770 1
    def __str__(self):
2771
        return 'CancelResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
2772
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
2773
             'Parameters:' + str(self.Parameters) + ')'
2774
    
2775 1
    __repr__ = __str__
2776
    
2777 1
class NodeAttributes(FrozenClass):
2778
    '''
2779
    The base attributes for all nodes.
2780
    
2781
    :ivar SpecifiedAttributes: 
2782
    :vartype SpecifiedAttributes: UInt32 
2783
    :ivar DisplayName: 
2784
    :vartype DisplayName: LocalizedText 
2785
    :ivar Description: 
2786
    :vartype Description: LocalizedText 
2787
    :ivar WriteMask: 
2788
    :vartype WriteMask: UInt32 
2789
    :ivar UserWriteMask: 
2790
    :vartype UserWriteMask: UInt32 
2791
    '''
2792 1
    def __init__(self):
2793
        self.SpecifiedAttributes = 0
2794
        self.DisplayName = LocalizedText()
2795
        self.Description = LocalizedText()
2796
        self.WriteMask = 0
2797
        self.UserWriteMask = 0
2798
        self._freeze()
2799
    
2800 1
    def to_binary(self):
2801
        packet = []
2802
        packet.append(pack_uatype('UInt32', self.SpecifiedAttributes))
2803
        packet.append(self.DisplayName.to_binary())
2804
        packet.append(self.Description.to_binary())
2805
        packet.append(pack_uatype('UInt32', self.WriteMask))
2806
        packet.append(pack_uatype('UInt32', self.UserWriteMask))
2807
        return b''.join(packet)
2808
        
2809 1
    @staticmethod
2810
    def from_binary(data):
2811
        obj = NodeAttributes()
2812
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
2813
        obj.DisplayName = LocalizedText.from_binary(data)
2814
        obj.Description = LocalizedText.from_binary(data)
2815
        obj.WriteMask = unpack_uatype('UInt32', data)
2816
        obj.UserWriteMask = unpack_uatype('UInt32', data)
2817
        return obj
2818
    
2819 1
    def __str__(self):
2820
        return 'NodeAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
2821
             'DisplayName:' + str(self.DisplayName) + ', '  + \
2822
             'Description:' + str(self.Description) + ', '  + \
2823
             'WriteMask:' + str(self.WriteMask) + ', '  + \
2824
             'UserWriteMask:' + str(self.UserWriteMask) + ')'
2825
    
2826 1
    __repr__ = __str__
2827
    
2828 1
class ObjectAttributes(FrozenClass):
2829
    '''
2830
    The attributes for an object node.
2831
    
2832
    :ivar SpecifiedAttributes: 
2833
    :vartype SpecifiedAttributes: UInt32 
2834
    :ivar DisplayName: 
2835
    :vartype DisplayName: LocalizedText 
2836
    :ivar Description: 
2837
    :vartype Description: LocalizedText 
2838
    :ivar WriteMask: 
2839
    :vartype WriteMask: UInt32 
2840
    :ivar UserWriteMask: 
2841
    :vartype UserWriteMask: UInt32 
2842
    :ivar EventNotifier: 
2843
    :vartype EventNotifier: Byte 
2844
    '''
2845 1
    def __init__(self):
2846 1
        self.SpecifiedAttributes = 0
2847 1
        self.DisplayName = LocalizedText()
2848 1
        self.Description = LocalizedText()
2849 1
        self.WriteMask = 0
2850 1
        self.UserWriteMask = 0
2851 1
        self.EventNotifier = 0
2852 1
        self._freeze()
2853
    
2854 1
    def to_binary(self):
2855 1
        packet = []
2856 1
        packet.append(pack_uatype('UInt32', self.SpecifiedAttributes))
2857 1
        packet.append(self.DisplayName.to_binary())
2858 1
        packet.append(self.Description.to_binary())
2859 1
        packet.append(pack_uatype('UInt32', self.WriteMask))
2860 1
        packet.append(pack_uatype('UInt32', self.UserWriteMask))
2861 1
        packet.append(pack_uatype('Byte', self.EventNotifier))
2862 1
        return b''.join(packet)
2863
        
2864 1
    @staticmethod
2865
    def from_binary(data):
2866 1
        obj = ObjectAttributes()
2867 1
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
2868 1
        obj.DisplayName = LocalizedText.from_binary(data)
2869 1
        obj.Description = LocalizedText.from_binary(data)
2870 1
        obj.WriteMask = unpack_uatype('UInt32', data)
2871 1
        obj.UserWriteMask = unpack_uatype('UInt32', data)
2872 1
        obj.EventNotifier = unpack_uatype('Byte', data)
2873 1
        return obj
2874
    
2875 1
    def __str__(self):
2876
        return 'ObjectAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
2877
             'DisplayName:' + str(self.DisplayName) + ', '  + \
2878
             'Description:' + str(self.Description) + ', '  + \
2879
             'WriteMask:' + str(self.WriteMask) + ', '  + \
2880
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
2881
             'EventNotifier:' + str(self.EventNotifier) + ')'
2882
    
2883 1
    __repr__ = __str__
2884
    
2885 1
class VariableAttributes(FrozenClass):
2886
    '''
2887
    The attributes for a variable node.
2888
    
2889
    :ivar SpecifiedAttributes: 
2890
    :vartype SpecifiedAttributes: UInt32 
2891
    :ivar DisplayName: 
2892
    :vartype DisplayName: LocalizedText 
2893
    :ivar Description: 
2894
    :vartype Description: LocalizedText 
2895
    :ivar WriteMask: 
2896
    :vartype WriteMask: UInt32 
2897
    :ivar UserWriteMask: 
2898
    :vartype UserWriteMask: UInt32 
2899
    :ivar Value: 
2900
    :vartype Value: Variant 
2901
    :ivar DataType: 
2902
    :vartype DataType: NodeId 
2903
    :ivar ValueRank: 
2904
    :vartype ValueRank: Int32 
2905
    :ivar ArrayDimensions: 
2906
    :vartype ArrayDimensions: UInt32 
2907
    :ivar AccessLevel: 
2908
    :vartype AccessLevel: Byte 
2909
    :ivar UserAccessLevel: 
2910
    :vartype UserAccessLevel: Byte 
2911
    :ivar MinimumSamplingInterval: 
2912
    :vartype MinimumSamplingInterval: Double 
2913
    :ivar Historizing: 
2914
    :vartype Historizing: Boolean 
2915
    '''
2916 1
    def __init__(self):
2917 1
        self.SpecifiedAttributes = 0
2918 1
        self.DisplayName = LocalizedText()
2919 1
        self.Description = LocalizedText()
2920 1
        self.WriteMask = 0
2921 1
        self.UserWriteMask = 0
2922 1
        self.Value = Variant()
2923 1
        self.DataType = NodeId()
2924 1
        self.ValueRank = 0
2925 1
        self.ArrayDimensions = []
2926 1
        self.AccessLevel = 0
2927 1
        self.UserAccessLevel = 0
2928 1
        self.MinimumSamplingInterval = 0
2929 1
        self.Historizing = True
2930 1
        self._freeze()
2931
    
2932 1
    def to_binary(self):
2933 1
        packet = []
2934 1
        packet.append(pack_uatype('UInt32', self.SpecifiedAttributes))
2935 1
        packet.append(self.DisplayName.to_binary())
2936 1
        packet.append(self.Description.to_binary())
2937 1
        packet.append(pack_uatype('UInt32', self.WriteMask))
2938 1
        packet.append(pack_uatype('UInt32', self.UserWriteMask))
2939 1
        packet.append(self.Value.to_binary())
2940 1
        packet.append(self.DataType.to_binary())
2941 1
        packet.append(pack_uatype('Int32', self.ValueRank))
2942 1
        packet.append(struct.pack('<i', len(self.ArrayDimensions)))
2943 1
        for fieldname in self.ArrayDimensions:
2944
            packet.append(pack_uatype('UInt32', fieldname))
2945 1
        packet.append(pack_uatype('Byte', self.AccessLevel))
2946 1
        packet.append(pack_uatype('Byte', self.UserAccessLevel))
2947 1
        packet.append(pack_uatype('Double', self.MinimumSamplingInterval))
2948 1
        packet.append(pack_uatype('Boolean', self.Historizing))
2949 1
        return b''.join(packet)
2950
        
2951 1
    @staticmethod
2952
    def from_binary(data):
2953 1
        obj = VariableAttributes()
2954 1
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
2955 1
        obj.DisplayName = LocalizedText.from_binary(data)
2956 1
        obj.Description = LocalizedText.from_binary(data)
2957 1
        obj.WriteMask = unpack_uatype('UInt32', data)
2958 1
        obj.UserWriteMask = unpack_uatype('UInt32', data)
2959 1
        obj.Value = Variant.from_binary(data)
2960 1
        obj.DataType = NodeId.from_binary(data)
2961 1
        obj.ValueRank = unpack_uatype('Int32', data)
2962 1
        obj.ArrayDimensions = unpack_uatype_array('UInt32', data)
2963 1
        obj.AccessLevel = unpack_uatype('Byte', data)
2964 1
        obj.UserAccessLevel = unpack_uatype('Byte', data)
2965 1
        obj.MinimumSamplingInterval = unpack_uatype('Double', data)
2966 1
        obj.Historizing = unpack_uatype('Boolean', data)
2967 1
        return obj
2968
    
2969 1
    def __str__(self):
2970
        return 'VariableAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
2971
             'DisplayName:' + str(self.DisplayName) + ', '  + \
2972
             'Description:' + str(self.Description) + ', '  + \
2973
             'WriteMask:' + str(self.WriteMask) + ', '  + \
2974
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
2975
             'Value:' + str(self.Value) + ', '  + \
2976
             'DataType:' + str(self.DataType) + ', '  + \
2977
             'ValueRank:' + str(self.ValueRank) + ', '  + \
2978
             'ArrayDimensions:' + str(self.ArrayDimensions) + ', '  + \
2979
             'AccessLevel:' + str(self.AccessLevel) + ', '  + \
2980
             'UserAccessLevel:' + str(self.UserAccessLevel) + ', '  + \
2981
             'MinimumSamplingInterval:' + str(self.MinimumSamplingInterval) + ', '  + \
2982
             'Historizing:' + str(self.Historizing) + ')'
2983
    
2984 1
    __repr__ = __str__
2985
    
2986 1
class MethodAttributes(FrozenClass):
2987
    '''
2988
    The attributes for a method node.
2989
    
2990
    :ivar SpecifiedAttributes: 
2991
    :vartype SpecifiedAttributes: UInt32 
2992
    :ivar DisplayName: 
2993
    :vartype DisplayName: LocalizedText 
2994
    :ivar Description: 
2995
    :vartype Description: LocalizedText 
2996
    :ivar WriteMask: 
2997
    :vartype WriteMask: UInt32 
2998
    :ivar UserWriteMask: 
2999
    :vartype UserWriteMask: UInt32 
3000
    :ivar Executable: 
3001
    :vartype Executable: Boolean 
3002
    :ivar UserExecutable: 
3003
    :vartype UserExecutable: Boolean 
3004
    '''
3005 1
    def __init__(self):
3006 1
        self.SpecifiedAttributes = 0
3007 1
        self.DisplayName = LocalizedText()
3008 1
        self.Description = LocalizedText()
3009 1
        self.WriteMask = 0
3010 1
        self.UserWriteMask = 0
3011 1
        self.Executable = True
3012 1
        self.UserExecutable = True
3013 1
        self._freeze()
3014
    
3015 1
    def to_binary(self):
3016
        packet = []
3017
        packet.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3018
        packet.append(self.DisplayName.to_binary())
3019
        packet.append(self.Description.to_binary())
3020
        packet.append(pack_uatype('UInt32', self.WriteMask))
3021
        packet.append(pack_uatype('UInt32', self.UserWriteMask))
3022
        packet.append(pack_uatype('Boolean', self.Executable))
3023
        packet.append(pack_uatype('Boolean', self.UserExecutable))
3024
        return b''.join(packet)
3025
        
3026 1
    @staticmethod
3027
    def from_binary(data):
3028
        obj = MethodAttributes()
3029
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3030
        obj.DisplayName = LocalizedText.from_binary(data)
3031
        obj.Description = LocalizedText.from_binary(data)
3032
        obj.WriteMask = unpack_uatype('UInt32', data)
3033
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3034
        obj.Executable = unpack_uatype('Boolean', data)
3035
        obj.UserExecutable = unpack_uatype('Boolean', data)
3036
        return obj
3037
    
3038 1
    def __str__(self):
3039
        return 'MethodAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3040
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3041
             'Description:' + str(self.Description) + ', '  + \
3042
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3043
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3044
             'Executable:' + str(self.Executable) + ', '  + \
3045
             'UserExecutable:' + str(self.UserExecutable) + ')'
3046
    
3047 1
    __repr__ = __str__
3048
    
3049 1
class ObjectTypeAttributes(FrozenClass):
3050
    '''
3051
    The attributes for an object type node.
3052
    
3053
    :ivar SpecifiedAttributes: 
3054
    :vartype SpecifiedAttributes: UInt32 
3055
    :ivar DisplayName: 
3056
    :vartype DisplayName: LocalizedText 
3057
    :ivar Description: 
3058
    :vartype Description: LocalizedText 
3059
    :ivar WriteMask: 
3060
    :vartype WriteMask: UInt32 
3061
    :ivar UserWriteMask: 
3062
    :vartype UserWriteMask: UInt32 
3063
    :ivar IsAbstract: 
3064
    :vartype IsAbstract: Boolean 
3065
    '''
3066 1
    def __init__(self):
3067 1
        self.SpecifiedAttributes = 0
3068 1
        self.DisplayName = LocalizedText()
3069 1
        self.Description = LocalizedText()
3070 1
        self.WriteMask = 0
3071 1
        self.UserWriteMask = 0
3072 1
        self.IsAbstract = True
3073 1
        self._freeze()
3074
    
3075 1
    def to_binary(self):
3076
        packet = []
3077
        packet.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3078
        packet.append(self.DisplayName.to_binary())
3079
        packet.append(self.Description.to_binary())
3080
        packet.append(pack_uatype('UInt32', self.WriteMask))
3081
        packet.append(pack_uatype('UInt32', self.UserWriteMask))
3082
        packet.append(pack_uatype('Boolean', self.IsAbstract))
3083
        return b''.join(packet)
3084
        
3085 1
    @staticmethod
3086
    def from_binary(data):
3087
        obj = ObjectTypeAttributes()
3088
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3089
        obj.DisplayName = LocalizedText.from_binary(data)
3090
        obj.Description = LocalizedText.from_binary(data)
3091
        obj.WriteMask = unpack_uatype('UInt32', data)
3092
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3093
        obj.IsAbstract = unpack_uatype('Boolean', data)
3094
        return obj
3095
    
3096 1
    def __str__(self):
3097
        return 'ObjectTypeAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3098
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3099
             'Description:' + str(self.Description) + ', '  + \
3100
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3101
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3102
             'IsAbstract:' + str(self.IsAbstract) + ')'
3103
    
3104 1
    __repr__ = __str__
3105
    
3106 1
class VariableTypeAttributes(FrozenClass):
3107
    '''
3108
    The attributes for a variable type node.
3109
    
3110
    :ivar SpecifiedAttributes: 
3111
    :vartype SpecifiedAttributes: UInt32 
3112
    :ivar DisplayName: 
3113
    :vartype DisplayName: LocalizedText 
3114
    :ivar Description: 
3115
    :vartype Description: LocalizedText 
3116
    :ivar WriteMask: 
3117
    :vartype WriteMask: UInt32 
3118
    :ivar UserWriteMask: 
3119
    :vartype UserWriteMask: UInt32 
3120
    :ivar Value: 
3121
    :vartype Value: Variant 
3122
    :ivar DataType: 
3123
    :vartype DataType: NodeId 
3124
    :ivar ValueRank: 
3125
    :vartype ValueRank: Int32 
3126
    :ivar ArrayDimensions: 
3127
    :vartype ArrayDimensions: UInt32 
3128
    :ivar IsAbstract: 
3129
    :vartype IsAbstract: Boolean 
3130
    '''
3131 1
    def __init__(self):
3132 1
        self.SpecifiedAttributes = 0
3133 1
        self.DisplayName = LocalizedText()
3134 1
        self.Description = LocalizedText()
3135 1
        self.WriteMask = 0
3136 1
        self.UserWriteMask = 0
3137 1
        self.Value = Variant()
3138 1
        self.DataType = NodeId()
3139 1
        self.ValueRank = 0
3140 1
        self.ArrayDimensions = []
3141 1
        self.IsAbstract = True
3142 1
        self._freeze()
3143
    
3144 1
    def to_binary(self):
3145
        packet = []
3146
        packet.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3147
        packet.append(self.DisplayName.to_binary())
3148
        packet.append(self.Description.to_binary())
3149
        packet.append(pack_uatype('UInt32', self.WriteMask))
3150
        packet.append(pack_uatype('UInt32', self.UserWriteMask))
3151
        packet.append(self.Value.to_binary())
3152
        packet.append(self.DataType.to_binary())
3153
        packet.append(pack_uatype('Int32', self.ValueRank))
3154
        packet.append(struct.pack('<i', len(self.ArrayDimensions)))
3155
        for fieldname in self.ArrayDimensions:
3156
            packet.append(pack_uatype('UInt32', fieldname))
3157
        packet.append(pack_uatype('Boolean', self.IsAbstract))
3158
        return b''.join(packet)
3159
        
3160 1
    @staticmethod
3161
    def from_binary(data):
3162
        obj = VariableTypeAttributes()
3163
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3164
        obj.DisplayName = LocalizedText.from_binary(data)
3165
        obj.Description = LocalizedText.from_binary(data)
3166
        obj.WriteMask = unpack_uatype('UInt32', data)
3167
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3168
        obj.Value = Variant.from_binary(data)
3169
        obj.DataType = NodeId.from_binary(data)
3170
        obj.ValueRank = unpack_uatype('Int32', data)
3171
        obj.ArrayDimensions = unpack_uatype_array('UInt32', data)
3172
        obj.IsAbstract = unpack_uatype('Boolean', data)
3173
        return obj
3174
    
3175 1
    def __str__(self):
3176
        return 'VariableTypeAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3177
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3178
             'Description:' + str(self.Description) + ', '  + \
3179
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3180
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3181
             'Value:' + str(self.Value) + ', '  + \
3182
             'DataType:' + str(self.DataType) + ', '  + \
3183
             'ValueRank:' + str(self.ValueRank) + ', '  + \
3184
             'ArrayDimensions:' + str(self.ArrayDimensions) + ', '  + \
3185
             'IsAbstract:' + str(self.IsAbstract) + ')'
3186
    
3187 1
    __repr__ = __str__
3188
    
3189 1
class ReferenceTypeAttributes(FrozenClass):
3190
    '''
3191
    The attributes for a reference type node.
3192
    
3193
    :ivar SpecifiedAttributes: 
3194
    :vartype SpecifiedAttributes: UInt32 
3195
    :ivar DisplayName: 
3196
    :vartype DisplayName: LocalizedText 
3197
    :ivar Description: 
3198
    :vartype Description: LocalizedText 
3199
    :ivar WriteMask: 
3200
    :vartype WriteMask: UInt32 
3201
    :ivar UserWriteMask: 
3202
    :vartype UserWriteMask: UInt32 
3203
    :ivar IsAbstract: 
3204
    :vartype IsAbstract: Boolean 
3205
    :ivar Symmetric: 
3206
    :vartype Symmetric: Boolean 
3207
    :ivar InverseName: 
3208
    :vartype InverseName: LocalizedText 
3209
    '''
3210 1
    def __init__(self):
3211 1
        self.SpecifiedAttributes = 0
3212 1
        self.DisplayName = LocalizedText()
3213 1
        self.Description = LocalizedText()
3214 1
        self.WriteMask = 0
3215 1
        self.UserWriteMask = 0
3216 1
        self.IsAbstract = True
3217 1
        self.Symmetric = True
3218 1
        self.InverseName = LocalizedText()
3219 1
        self._freeze()
3220
    
3221 1
    def to_binary(self):
3222
        packet = []
3223
        packet.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3224
        packet.append(self.DisplayName.to_binary())
3225
        packet.append(self.Description.to_binary())
3226
        packet.append(pack_uatype('UInt32', self.WriteMask))
3227
        packet.append(pack_uatype('UInt32', self.UserWriteMask))
3228
        packet.append(pack_uatype('Boolean', self.IsAbstract))
3229
        packet.append(pack_uatype('Boolean', self.Symmetric))
3230
        packet.append(self.InverseName.to_binary())
3231
        return b''.join(packet)
3232
        
3233 1
    @staticmethod
3234
    def from_binary(data):
3235
        obj = ReferenceTypeAttributes()
3236
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3237
        obj.DisplayName = LocalizedText.from_binary(data)
3238
        obj.Description = LocalizedText.from_binary(data)
3239
        obj.WriteMask = unpack_uatype('UInt32', data)
3240
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3241
        obj.IsAbstract = unpack_uatype('Boolean', data)
3242
        obj.Symmetric = unpack_uatype('Boolean', data)
3243
        obj.InverseName = LocalizedText.from_binary(data)
3244
        return obj
3245
    
3246 1
    def __str__(self):
3247
        return 'ReferenceTypeAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3248
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3249
             'Description:' + str(self.Description) + ', '  + \
3250
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3251
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3252
             'IsAbstract:' + str(self.IsAbstract) + ', '  + \
3253
             'Symmetric:' + str(self.Symmetric) + ', '  + \
3254
             'InverseName:' + str(self.InverseName) + ')'
3255
    
3256 1
    __repr__ = __str__
3257
    
3258 1
class DataTypeAttributes(FrozenClass):
3259
    '''
3260
    The attributes for a data type node.
3261
    
3262
    :ivar SpecifiedAttributes: 
3263
    :vartype SpecifiedAttributes: UInt32 
3264
    :ivar DisplayName: 
3265
    :vartype DisplayName: LocalizedText 
3266
    :ivar Description: 
3267
    :vartype Description: LocalizedText 
3268
    :ivar WriteMask: 
3269
    :vartype WriteMask: UInt32 
3270
    :ivar UserWriteMask: 
3271
    :vartype UserWriteMask: UInt32 
3272
    :ivar IsAbstract: 
3273
    :vartype IsAbstract: Boolean 
3274
    '''
3275 1
    def __init__(self):
3276 1
        self.SpecifiedAttributes = 0
3277 1
        self.DisplayName = LocalizedText()
3278 1
        self.Description = LocalizedText()
3279 1
        self.WriteMask = 0
3280 1
        self.UserWriteMask = 0
3281 1
        self.IsAbstract = True
3282 1
        self._freeze()
3283
    
3284 1
    def to_binary(self):
3285
        packet = []
3286
        packet.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3287
        packet.append(self.DisplayName.to_binary())
3288
        packet.append(self.Description.to_binary())
3289
        packet.append(pack_uatype('UInt32', self.WriteMask))
3290
        packet.append(pack_uatype('UInt32', self.UserWriteMask))
3291
        packet.append(pack_uatype('Boolean', self.IsAbstract))
3292
        return b''.join(packet)
3293
        
3294 1
    @staticmethod
3295
    def from_binary(data):
3296
        obj = DataTypeAttributes()
3297
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3298
        obj.DisplayName = LocalizedText.from_binary(data)
3299
        obj.Description = LocalizedText.from_binary(data)
3300
        obj.WriteMask = unpack_uatype('UInt32', data)
3301
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3302
        obj.IsAbstract = unpack_uatype('Boolean', data)
3303
        return obj
3304
    
3305 1
    def __str__(self):
3306
        return 'DataTypeAttributes(' + '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 ViewAttributes(FrozenClass):
3316
    '''
3317
    The attributes for a view node.
3318
    
3319
    :ivar SpecifiedAttributes: 
3320
    :vartype SpecifiedAttributes: UInt32 
3321
    :ivar DisplayName: 
3322
    :vartype DisplayName: LocalizedText 
3323
    :ivar Description: 
3324
    :vartype Description: LocalizedText 
3325
    :ivar WriteMask: 
3326
    :vartype WriteMask: UInt32 
3327
    :ivar UserWriteMask: 
3328
    :vartype UserWriteMask: UInt32 
3329
    :ivar ContainsNoLoops: 
3330
    :vartype ContainsNoLoops: Boolean 
3331
    :ivar EventNotifier: 
3332
    :vartype EventNotifier: Byte 
3333
    '''
3334 1
    def __init__(self):
3335
        self.SpecifiedAttributes = 0
3336
        self.DisplayName = LocalizedText()
3337
        self.Description = LocalizedText()
3338
        self.WriteMask = 0
3339
        self.UserWriteMask = 0
3340
        self.ContainsNoLoops = True
3341
        self.EventNotifier = 0
3342
        self._freeze()
3343
    
3344 1
    def to_binary(self):
3345
        packet = []
3346
        packet.append(pack_uatype('UInt32', self.SpecifiedAttributes))
3347
        packet.append(self.DisplayName.to_binary())
3348
        packet.append(self.Description.to_binary())
3349
        packet.append(pack_uatype('UInt32', self.WriteMask))
3350
        packet.append(pack_uatype('UInt32', self.UserWriteMask))
3351
        packet.append(pack_uatype('Boolean', self.ContainsNoLoops))
3352
        packet.append(pack_uatype('Byte', self.EventNotifier))
3353
        return b''.join(packet)
3354
        
3355 1
    @staticmethod
3356
    def from_binary(data):
3357
        obj = ViewAttributes()
3358
        obj.SpecifiedAttributes = unpack_uatype('UInt32', data)
3359
        obj.DisplayName = LocalizedText.from_binary(data)
3360
        obj.Description = LocalizedText.from_binary(data)
3361
        obj.WriteMask = unpack_uatype('UInt32', data)
3362
        obj.UserWriteMask = unpack_uatype('UInt32', data)
3363
        obj.ContainsNoLoops = unpack_uatype('Boolean', data)
3364
        obj.EventNotifier = unpack_uatype('Byte', data)
3365
        return obj
3366
    
3367 1
    def __str__(self):
3368
        return 'ViewAttributes(' + 'SpecifiedAttributes:' + str(self.SpecifiedAttributes) + ', '  + \
3369
             'DisplayName:' + str(self.DisplayName) + ', '  + \
3370
             'Description:' + str(self.Description) + ', '  + \
3371
             'WriteMask:' + str(self.WriteMask) + ', '  + \
3372
             'UserWriteMask:' + str(self.UserWriteMask) + ', '  + \
3373
             'ContainsNoLoops:' + str(self.ContainsNoLoops) + ', '  + \
3374
             'EventNotifier:' + str(self.EventNotifier) + ')'
3375
    
3376 1
    __repr__ = __str__
3377
    
3378 1
class AddNodesItem(FrozenClass):
3379
    '''
3380
    A request to add a node to the server address space.
3381
    
3382
    :ivar ParentNodeId: 
3383
    :vartype ParentNodeId: ExpandedNodeId 
3384
    :ivar ReferenceTypeId: 
3385
    :vartype ReferenceTypeId: NodeId 
3386
    :ivar RequestedNewNodeId: 
3387
    :vartype RequestedNewNodeId: ExpandedNodeId 
3388
    :ivar BrowseName: 
3389
    :vartype BrowseName: QualifiedName 
3390
    :ivar NodeClass: 
3391
    :vartype NodeClass: NodeClass 
3392
    :ivar NodeAttributes: 
3393
    :vartype NodeAttributes: ExtensionObject 
3394
    :ivar TypeDefinition: 
3395
    :vartype TypeDefinition: ExpandedNodeId 
3396
    '''
3397 1
    def __init__(self):
3398 1
        self.ParentNodeId = ExpandedNodeId()
3399 1
        self.ReferenceTypeId = NodeId()
3400 1
        self.RequestedNewNodeId = ExpandedNodeId()
3401 1
        self.BrowseName = QualifiedName()
3402 1
        self.NodeClass = 0
3403 1
        self.NodeAttributes = None
3404 1
        self.TypeDefinition = ExpandedNodeId()
3405 1
        self._freeze()
3406
    
3407 1
    def to_binary(self):
3408 1
        packet = []
3409 1
        packet.append(self.ParentNodeId.to_binary())
3410 1
        packet.append(self.ReferenceTypeId.to_binary())
3411 1
        packet.append(self.RequestedNewNodeId.to_binary())
3412 1
        packet.append(self.BrowseName.to_binary())
3413 1
        packet.append(pack_uatype('UInt32', self.NodeClass))
3414 1
        packet.append(extensionobject_to_binary(self.NodeAttributes))
3415 1
        packet.append(self.TypeDefinition.to_binary())
3416 1
        return b''.join(packet)
3417
        
3418 1
    @staticmethod
3419
    def from_binary(data):
3420 1
        obj = AddNodesItem()
3421 1
        obj.ParentNodeId = ExpandedNodeId.from_binary(data)
3422 1
        obj.ReferenceTypeId = NodeId.from_binary(data)
3423 1
        obj.RequestedNewNodeId = ExpandedNodeId.from_binary(data)
3424 1
        obj.BrowseName = QualifiedName.from_binary(data)
3425 1
        obj.NodeClass = unpack_uatype('UInt32', data)
3426 1
        obj.NodeAttributes = extensionobject_from_binary(data)
3427 1
        obj.TypeDefinition = ExpandedNodeId.from_binary(data)
3428 1
        return obj
3429
    
3430 1
    def __str__(self):
3431
        return 'AddNodesItem(' + 'ParentNodeId:' + str(self.ParentNodeId) + ', '  + \
3432
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
3433
             'RequestedNewNodeId:' + str(self.RequestedNewNodeId) + ', '  + \
3434
             'BrowseName:' + str(self.BrowseName) + ', '  + \
3435
             'NodeClass:' + str(self.NodeClass) + ', '  + \
3436
             'NodeAttributes:' + str(self.NodeAttributes) + ', '  + \
3437
             'TypeDefinition:' + str(self.TypeDefinition) + ')'
3438
    
3439 1
    __repr__ = __str__
3440
    
3441 1
class AddNodesResult(FrozenClass):
3442
    '''
3443
    A result of an add node operation.
3444
    
3445
    :ivar StatusCode: 
3446
    :vartype StatusCode: StatusCode 
3447
    :ivar AddedNodeId: 
3448
    :vartype AddedNodeId: NodeId 
3449
    '''
3450 1
    def __init__(self):
3451 1
        self.StatusCode = StatusCode()
3452 1
        self.AddedNodeId = NodeId()
3453 1
        self._freeze()
3454
    
3455 1
    def to_binary(self):
3456 1
        packet = []
3457 1
        packet.append(self.StatusCode.to_binary())
3458 1
        packet.append(self.AddedNodeId.to_binary())
3459 1
        return b''.join(packet)
3460
        
3461 1
    @staticmethod
3462
    def from_binary(data):
3463 1
        obj = AddNodesResult()
3464 1
        obj.StatusCode = StatusCode.from_binary(data)
3465 1
        obj.AddedNodeId = NodeId.from_binary(data)
3466 1
        return obj
3467
    
3468 1
    def __str__(self):
3469
        return 'AddNodesResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
3470
             'AddedNodeId:' + str(self.AddedNodeId) + ')'
3471
    
3472 1
    __repr__ = __str__
3473
    
3474 1
class AddNodesParameters(FrozenClass):
3475
    '''
3476
    :ivar NodesToAdd: 
3477
    :vartype NodesToAdd: AddNodesItem 
3478
    '''
3479 1
    def __init__(self):
3480 1
        self.NodesToAdd = []
3481 1
        self._freeze()
3482
    
3483 1
    def to_binary(self):
3484 1
        packet = []
3485 1
        packet.append(struct.pack('<i', len(self.NodesToAdd)))
3486 1
        for fieldname in self.NodesToAdd:
3487 1
            packet.append(fieldname.to_binary())
3488 1
        return b''.join(packet)
3489
        
3490 1
    @staticmethod
3491
    def from_binary(data):
3492 1
        obj = AddNodesParameters()
3493 1
        length = struct.unpack('<i', data.read(4))[0]
3494 1
        if length != -1:
3495 1
            for _ in range(0, length):
3496 1
                obj.NodesToAdd.append(AddNodesItem.from_binary(data))
3497 1
        return obj
3498
    
3499 1
    def __str__(self):
3500
        return 'AddNodesParameters(' + 'NodesToAdd:' + str(self.NodesToAdd) + ')'
3501
    
3502 1
    __repr__ = __str__
3503
    
3504 1
class AddNodesRequest(FrozenClass):
3505
    '''
3506
    Adds one or more nodes to the server address space.
3507
    
3508
    :ivar TypeId: 
3509
    :vartype TypeId: NodeId 
3510
    :ivar RequestHeader: 
3511
    :vartype RequestHeader: RequestHeader 
3512
    :ivar Parameters: 
3513
    :vartype Parameters: AddNodesParameters 
3514
    '''
3515 1
    def __init__(self):
3516 1
        self.TypeId = FourByteNodeId(ObjectIds.AddNodesRequest_Encoding_DefaultBinary)
3517 1
        self.RequestHeader = RequestHeader()
3518 1
        self.Parameters = AddNodesParameters()
3519 1
        self._freeze()
3520
    
3521 1
    def to_binary(self):
3522 1
        packet = []
3523 1
        packet.append(self.TypeId.to_binary())
3524 1
        packet.append(self.RequestHeader.to_binary())
3525 1
        packet.append(self.Parameters.to_binary())
3526 1
        return b''.join(packet)
3527
        
3528 1
    @staticmethod
3529
    def from_binary(data):
3530
        obj = AddNodesRequest()
3531
        obj.TypeId = NodeId.from_binary(data)
3532
        obj.RequestHeader = RequestHeader.from_binary(data)
3533
        obj.Parameters = AddNodesParameters.from_binary(data)
3534
        return obj
3535
    
3536 1
    def __str__(self):
3537
        return 'AddNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3538
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
3539
             'Parameters:' + str(self.Parameters) + ')'
3540
    
3541 1
    __repr__ = __str__
3542
    
3543 1
class AddNodesResponse(FrozenClass):
3544
    '''
3545
    Adds one or more nodes to the server address space.
3546
    
3547
    :ivar TypeId: 
3548
    :vartype TypeId: NodeId 
3549
    :ivar ResponseHeader: 
3550
    :vartype ResponseHeader: ResponseHeader 
3551
    :ivar Results: 
3552
    :vartype Results: AddNodesResult 
3553
    :ivar DiagnosticInfos: 
3554
    :vartype DiagnosticInfos: DiagnosticInfo 
3555
    '''
3556 1
    def __init__(self):
3557 1
        self.TypeId = FourByteNodeId(ObjectIds.AddNodesResponse_Encoding_DefaultBinary)
3558 1
        self.ResponseHeader = ResponseHeader()
3559 1
        self.Results = []
3560 1
        self.DiagnosticInfos = []
3561 1
        self._freeze()
3562
    
3563 1
    def to_binary(self):
3564 1
        packet = []
3565 1
        packet.append(self.TypeId.to_binary())
3566 1
        packet.append(self.ResponseHeader.to_binary())
3567 1
        packet.append(struct.pack('<i', len(self.Results)))
3568 1
        for fieldname in self.Results:
3569 1
            packet.append(fieldname.to_binary())
3570 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
3571 1
        for fieldname in self.DiagnosticInfos:
3572
            packet.append(fieldname.to_binary())
3573 1
        return b''.join(packet)
3574
        
3575 1
    @staticmethod
3576
    def from_binary(data):
3577 1
        obj = AddNodesResponse()
3578 1
        obj.TypeId = NodeId.from_binary(data)
3579 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
3580 1
        length = struct.unpack('<i', data.read(4))[0]
3581 1
        if length != -1:
3582 1
            for _ in range(0, length):
3583 1
                obj.Results.append(AddNodesResult.from_binary(data))
3584 1
        length = struct.unpack('<i', data.read(4))[0]
3585 1
        if length != -1:
3586 1
            for _ in range(0, length):
3587
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
3588 1
        return obj
3589
    
3590 1
    def __str__(self):
3591
        return 'AddNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3592
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
3593
             'Results:' + str(self.Results) + ', '  + \
3594
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
3595
    
3596 1
    __repr__ = __str__
3597
    
3598 1
class AddReferencesItem(FrozenClass):
3599
    '''
3600
    A request to add a reference to the server address space.
3601
    
3602
    :ivar SourceNodeId: 
3603
    :vartype SourceNodeId: NodeId 
3604
    :ivar ReferenceTypeId: 
3605
    :vartype ReferenceTypeId: NodeId 
3606
    :ivar IsForward: 
3607
    :vartype IsForward: Boolean 
3608
    :ivar TargetServerUri: 
3609
    :vartype TargetServerUri: String 
3610
    :ivar TargetNodeId: 
3611
    :vartype TargetNodeId: ExpandedNodeId 
3612
    :ivar TargetNodeClass: 
3613
    :vartype TargetNodeClass: NodeClass 
3614
    '''
3615 1
    def __init__(self):
3616 1
        self.SourceNodeId = NodeId()
3617 1
        self.ReferenceTypeId = NodeId()
3618 1
        self.IsForward = True
3619 1
        self.TargetServerUri = ''
3620 1
        self.TargetNodeId = ExpandedNodeId()
3621 1
        self.TargetNodeClass = 0
3622 1
        self._freeze()
3623
    
3624 1
    def to_binary(self):
3625
        packet = []
3626
        packet.append(self.SourceNodeId.to_binary())
3627
        packet.append(self.ReferenceTypeId.to_binary())
3628
        packet.append(pack_uatype('Boolean', self.IsForward))
3629
        packet.append(pack_uatype('String', self.TargetServerUri))
3630
        packet.append(self.TargetNodeId.to_binary())
3631
        packet.append(pack_uatype('UInt32', self.TargetNodeClass))
3632
        return b''.join(packet)
3633
        
3634 1
    @staticmethod
3635
    def from_binary(data):
3636
        obj = AddReferencesItem()
3637
        obj.SourceNodeId = NodeId.from_binary(data)
3638
        obj.ReferenceTypeId = NodeId.from_binary(data)
3639
        obj.IsForward = unpack_uatype('Boolean', data)
3640
        obj.TargetServerUri = unpack_uatype('String', data)
3641
        obj.TargetNodeId = ExpandedNodeId.from_binary(data)
3642
        obj.TargetNodeClass = unpack_uatype('UInt32', data)
3643
        return obj
3644
    
3645 1
    def __str__(self):
3646
        return 'AddReferencesItem(' + 'SourceNodeId:' + str(self.SourceNodeId) + ', '  + \
3647
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
3648
             'IsForward:' + str(self.IsForward) + ', '  + \
3649
             'TargetServerUri:' + str(self.TargetServerUri) + ', '  + \
3650
             'TargetNodeId:' + str(self.TargetNodeId) + ', '  + \
3651
             'TargetNodeClass:' + str(self.TargetNodeClass) + ')'
3652
    
3653 1
    __repr__ = __str__
3654
    
3655 1
class AddReferencesRequest(FrozenClass):
3656
    '''
3657
    Adds one or more references to the server address space.
3658
    
3659
    :ivar TypeId: 
3660
    :vartype TypeId: NodeId 
3661
    :ivar RequestHeader: 
3662
    :vartype RequestHeader: RequestHeader 
3663
    :ivar ReferencesToAdd: 
3664
    :vartype ReferencesToAdd: AddReferencesItem 
3665
    '''
3666 1
    def __init__(self):
3667
        self.TypeId = FourByteNodeId(ObjectIds.AddReferencesRequest_Encoding_DefaultBinary)
3668
        self.RequestHeader = RequestHeader()
3669
        self.ReferencesToAdd = []
3670
        self._freeze()
3671
    
3672 1
    def to_binary(self):
3673
        packet = []
3674
        packet.append(self.TypeId.to_binary())
3675
        packet.append(self.RequestHeader.to_binary())
3676
        packet.append(struct.pack('<i', len(self.ReferencesToAdd)))
3677
        for fieldname in self.ReferencesToAdd:
3678
            packet.append(fieldname.to_binary())
3679
        return b''.join(packet)
3680
        
3681 1
    @staticmethod
3682
    def from_binary(data):
3683
        obj = AddReferencesRequest()
3684
        obj.TypeId = NodeId.from_binary(data)
3685
        obj.RequestHeader = RequestHeader.from_binary(data)
3686
        length = struct.unpack('<i', data.read(4))[0]
3687
        if length != -1:
3688
            for _ in range(0, length):
3689
                obj.ReferencesToAdd.append(AddReferencesItem.from_binary(data))
3690
        return obj
3691
    
3692 1
    def __str__(self):
3693
        return 'AddReferencesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3694
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
3695
             'ReferencesToAdd:' + str(self.ReferencesToAdd) + ')'
3696
    
3697 1
    __repr__ = __str__
3698
    
3699 1
class AddReferencesResponse(FrozenClass):
3700
    '''
3701
    Adds one or more references to the server address space.
3702
    
3703
    :ivar TypeId: 
3704
    :vartype TypeId: NodeId 
3705
    :ivar ResponseHeader: 
3706
    :vartype ResponseHeader: ResponseHeader 
3707
    :ivar Results: 
3708
    :vartype Results: StatusCode 
3709
    :ivar DiagnosticInfos: 
3710
    :vartype DiagnosticInfos: DiagnosticInfo 
3711
    '''
3712 1
    def __init__(self):
3713
        self.TypeId = FourByteNodeId(ObjectIds.AddReferencesResponse_Encoding_DefaultBinary)
3714
        self.ResponseHeader = ResponseHeader()
3715
        self.Results = []
3716
        self.DiagnosticInfos = []
3717
        self._freeze()
3718
    
3719 1
    def to_binary(self):
3720
        packet = []
3721
        packet.append(self.TypeId.to_binary())
3722
        packet.append(self.ResponseHeader.to_binary())
3723
        packet.append(struct.pack('<i', len(self.Results)))
3724
        for fieldname in self.Results:
3725
            packet.append(fieldname.to_binary())
3726
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
3727
        for fieldname in self.DiagnosticInfos:
3728
            packet.append(fieldname.to_binary())
3729
        return b''.join(packet)
3730
        
3731 1
    @staticmethod
3732
    def from_binary(data):
3733
        obj = AddReferencesResponse()
3734
        obj.TypeId = NodeId.from_binary(data)
3735
        obj.ResponseHeader = ResponseHeader.from_binary(data)
3736
        length = struct.unpack('<i', data.read(4))[0]
3737
        if length != -1:
3738
            for _ in range(0, length):
3739
                obj.Results.append(StatusCode.from_binary(data))
3740
        length = struct.unpack('<i', data.read(4))[0]
3741
        if length != -1:
3742
            for _ in range(0, length):
3743
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
3744
        return obj
3745
    
3746 1
    def __str__(self):
3747
        return 'AddReferencesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3748
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
3749
             'Results:' + str(self.Results) + ', '  + \
3750
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
3751
    
3752 1
    __repr__ = __str__
3753
    
3754 1
class DeleteNodesItem(FrozenClass):
3755
    '''
3756
    A request to delete a node to the server address space.
3757
    
3758
    :ivar NodeId: 
3759
    :vartype NodeId: NodeId 
3760
    :ivar DeleteTargetReferences: 
3761
    :vartype DeleteTargetReferences: Boolean 
3762
    '''
3763 1
    def __init__(self):
3764
        self.NodeId = NodeId()
3765
        self.DeleteTargetReferences = True
3766
        self._freeze()
3767
    
3768 1
    def to_binary(self):
3769
        packet = []
3770
        packet.append(self.NodeId.to_binary())
3771
        packet.append(pack_uatype('Boolean', self.DeleteTargetReferences))
3772
        return b''.join(packet)
3773
        
3774 1
    @staticmethod
3775
    def from_binary(data):
3776
        obj = DeleteNodesItem()
3777
        obj.NodeId = NodeId.from_binary(data)
3778
        obj.DeleteTargetReferences = unpack_uatype('Boolean', data)
3779
        return obj
3780
    
3781 1
    def __str__(self):
3782
        return 'DeleteNodesItem(' + 'NodeId:' + str(self.NodeId) + ', '  + \
3783
             'DeleteTargetReferences:' + str(self.DeleteTargetReferences) + ')'
3784
    
3785 1
    __repr__ = __str__
3786
    
3787 1
class DeleteNodesParameters(FrozenClass):
3788
    '''
3789
    :ivar NodesToDelete: 
3790
    :vartype NodesToDelete: DeleteNodesItem 
3791
    '''
3792 1
    def __init__(self):
3793
        self.NodesToDelete = []
3794
        self._freeze()
3795
    
3796 1
    def to_binary(self):
3797
        packet = []
3798
        packet.append(struct.pack('<i', len(self.NodesToDelete)))
3799
        for fieldname in self.NodesToDelete:
3800
            packet.append(fieldname.to_binary())
3801
        return b''.join(packet)
3802
        
3803 1
    @staticmethod
3804
    def from_binary(data):
3805
        obj = DeleteNodesParameters()
3806
        length = struct.unpack('<i', data.read(4))[0]
3807
        if length != -1:
3808
            for _ in range(0, length):
3809
                obj.NodesToDelete.append(DeleteNodesItem.from_binary(data))
3810
        return obj
3811
    
3812 1
    def __str__(self):
3813
        return 'DeleteNodesParameters(' + 'NodesToDelete:' + str(self.NodesToDelete) + ')'
3814
    
3815 1
    __repr__ = __str__
3816
    
3817 1
class DeleteNodesRequest(FrozenClass):
3818
    '''
3819
    Delete one or more nodes from the server address space.
3820
    
3821
    :ivar TypeId: 
3822
    :vartype TypeId: NodeId 
3823
    :ivar RequestHeader: 
3824
    :vartype RequestHeader: RequestHeader 
3825
    :ivar Parameters: 
3826
    :vartype Parameters: DeleteNodesParameters 
3827
    '''
3828 1
    def __init__(self):
3829
        self.TypeId = FourByteNodeId(ObjectIds.DeleteNodesRequest_Encoding_DefaultBinary)
3830
        self.RequestHeader = RequestHeader()
3831
        self.Parameters = DeleteNodesParameters()
3832
        self._freeze()
3833
    
3834 1
    def to_binary(self):
3835
        packet = []
3836
        packet.append(self.TypeId.to_binary())
3837
        packet.append(self.RequestHeader.to_binary())
3838
        packet.append(self.Parameters.to_binary())
3839
        return b''.join(packet)
3840
        
3841 1
    @staticmethod
3842
    def from_binary(data):
3843
        obj = DeleteNodesRequest()
3844
        obj.TypeId = NodeId.from_binary(data)
3845
        obj.RequestHeader = RequestHeader.from_binary(data)
3846
        obj.Parameters = DeleteNodesParameters.from_binary(data)
3847
        return obj
3848
    
3849 1
    def __str__(self):
3850
        return 'DeleteNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3851
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
3852
             'Parameters:' + str(self.Parameters) + ')'
3853
    
3854 1
    __repr__ = __str__
3855
    
3856 1
class DeleteNodesResult(FrozenClass):
3857
    '''
3858
    :ivar Results: 
3859
    :vartype Results: StatusCode 
3860
    :ivar DiagnosticInfos: 
3861
    :vartype DiagnosticInfos: DiagnosticInfo 
3862
    '''
3863 1
    def __init__(self):
3864
        self.Results = []
3865
        self.DiagnosticInfos = []
3866
        self._freeze()
3867
    
3868 1
    def to_binary(self):
3869
        packet = []
3870
        packet.append(struct.pack('<i', len(self.Results)))
3871
        for fieldname in self.Results:
3872
            packet.append(fieldname.to_binary())
3873
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
3874
        for fieldname in self.DiagnosticInfos:
3875
            packet.append(fieldname.to_binary())
3876
        return b''.join(packet)
3877
        
3878 1
    @staticmethod
3879
    def from_binary(data):
3880
        obj = DeleteNodesResult()
3881
        length = struct.unpack('<i', data.read(4))[0]
3882
        if length != -1:
3883
            for _ in range(0, length):
3884
                obj.Results.append(StatusCode.from_binary(data))
3885
        length = struct.unpack('<i', data.read(4))[0]
3886
        if length != -1:
3887
            for _ in range(0, length):
3888
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
3889
        return obj
3890
    
3891 1
    def __str__(self):
3892
        return 'DeleteNodesResult(' + 'Results:' + str(self.Results) + ', '  + \
3893
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
3894
    
3895 1
    __repr__ = __str__
3896
    
3897 1
class DeleteNodesResponse(FrozenClass):
3898
    '''
3899
    Delete one or more nodes from the server address space.
3900
    
3901
    :ivar TypeId: 
3902
    :vartype TypeId: NodeId 
3903
    :ivar ResponseHeader: 
3904
    :vartype ResponseHeader: ResponseHeader 
3905
    :ivar Parameters: 
3906
    :vartype Parameters: DeleteNodesResult 
3907
    '''
3908 1
    def __init__(self):
3909
        self.TypeId = FourByteNodeId(ObjectIds.DeleteNodesResponse_Encoding_DefaultBinary)
3910
        self.ResponseHeader = ResponseHeader()
3911
        self.Parameters = DeleteNodesResult()
3912
        self._freeze()
3913
    
3914 1
    def to_binary(self):
3915
        packet = []
3916
        packet.append(self.TypeId.to_binary())
3917
        packet.append(self.ResponseHeader.to_binary())
3918
        packet.append(self.Parameters.to_binary())
3919
        return b''.join(packet)
3920
        
3921 1
    @staticmethod
3922
    def from_binary(data):
3923
        obj = DeleteNodesResponse()
3924
        obj.TypeId = NodeId.from_binary(data)
3925
        obj.ResponseHeader = ResponseHeader.from_binary(data)
3926
        obj.Parameters = DeleteNodesResult.from_binary(data)
3927
        return obj
3928
    
3929 1
    def __str__(self):
3930
        return 'DeleteNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
3931
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
3932
             'Parameters:' + str(self.Parameters) + ')'
3933
    
3934 1
    __repr__ = __str__
3935
    
3936 1
class DeleteReferencesItem(FrozenClass):
3937
    '''
3938
    A request to delete a node from the server address space.
3939
    
3940
    :ivar SourceNodeId: 
3941
    :vartype SourceNodeId: NodeId 
3942
    :ivar ReferenceTypeId: 
3943
    :vartype ReferenceTypeId: NodeId 
3944
    :ivar IsForward: 
3945
    :vartype IsForward: Boolean 
3946
    :ivar TargetNodeId: 
3947
    :vartype TargetNodeId: ExpandedNodeId 
3948
    :ivar DeleteBidirectional: 
3949
    :vartype DeleteBidirectional: Boolean 
3950
    '''
3951 1
    def __init__(self):
3952
        self.SourceNodeId = NodeId()
3953
        self.ReferenceTypeId = NodeId()
3954
        self.IsForward = True
3955
        self.TargetNodeId = ExpandedNodeId()
3956
        self.DeleteBidirectional = True
3957
        self._freeze()
3958
    
3959 1
    def to_binary(self):
3960
        packet = []
3961
        packet.append(self.SourceNodeId.to_binary())
3962
        packet.append(self.ReferenceTypeId.to_binary())
3963
        packet.append(pack_uatype('Boolean', self.IsForward))
3964
        packet.append(self.TargetNodeId.to_binary())
3965
        packet.append(pack_uatype('Boolean', self.DeleteBidirectional))
3966
        return b''.join(packet)
3967
        
3968 1
    @staticmethod
3969
    def from_binary(data):
3970
        obj = DeleteReferencesItem()
3971
        obj.SourceNodeId = NodeId.from_binary(data)
3972
        obj.ReferenceTypeId = NodeId.from_binary(data)
3973
        obj.IsForward = unpack_uatype('Boolean', data)
3974
        obj.TargetNodeId = ExpandedNodeId.from_binary(data)
3975
        obj.DeleteBidirectional = unpack_uatype('Boolean', data)
3976
        return obj
3977
    
3978 1
    def __str__(self):
3979
        return 'DeleteReferencesItem(' + 'SourceNodeId:' + str(self.SourceNodeId) + ', '  + \
3980
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
3981
             'IsForward:' + str(self.IsForward) + ', '  + \
3982
             'TargetNodeId:' + str(self.TargetNodeId) + ', '  + \
3983
             'DeleteBidirectional:' + str(self.DeleteBidirectional) + ')'
3984
    
3985 1
    __repr__ = __str__
3986
    
3987 1
class DeleteReferencesParameters(FrozenClass):
3988
    '''
3989
    :ivar ReferencesToDelete: 
3990
    :vartype ReferencesToDelete: DeleteReferencesItem 
3991
    '''
3992 1
    def __init__(self):
3993
        self.ReferencesToDelete = []
3994
        self._freeze()
3995
    
3996 1
    def to_binary(self):
3997
        packet = []
3998
        packet.append(struct.pack('<i', len(self.ReferencesToDelete)))
3999
        for fieldname in self.ReferencesToDelete:
4000
            packet.append(fieldname.to_binary())
4001
        return b''.join(packet)
4002
        
4003 1
    @staticmethod
4004
    def from_binary(data):
4005
        obj = DeleteReferencesParameters()
4006
        length = struct.unpack('<i', data.read(4))[0]
4007
        if length != -1:
4008
            for _ in range(0, length):
4009
                obj.ReferencesToDelete.append(DeleteReferencesItem.from_binary(data))
4010
        return obj
4011
    
4012 1
    def __str__(self):
4013
        return 'DeleteReferencesParameters(' + 'ReferencesToDelete:' + str(self.ReferencesToDelete) + ')'
4014
    
4015 1
    __repr__ = __str__
4016
    
4017 1
class DeleteReferencesRequest(FrozenClass):
4018
    '''
4019
    Delete one or more references from the server address space.
4020
    
4021
    :ivar TypeId: 
4022
    :vartype TypeId: NodeId 
4023
    :ivar RequestHeader: 
4024
    :vartype RequestHeader: RequestHeader 
4025
    :ivar Parameters: 
4026
    :vartype Parameters: DeleteReferencesParameters 
4027
    '''
4028 1
    def __init__(self):
4029
        self.TypeId = FourByteNodeId(ObjectIds.DeleteReferencesRequest_Encoding_DefaultBinary)
4030
        self.RequestHeader = RequestHeader()
4031
        self.Parameters = DeleteReferencesParameters()
4032
        self._freeze()
4033
    
4034 1
    def to_binary(self):
4035
        packet = []
4036
        packet.append(self.TypeId.to_binary())
4037
        packet.append(self.RequestHeader.to_binary())
4038
        packet.append(self.Parameters.to_binary())
4039
        return b''.join(packet)
4040
        
4041 1
    @staticmethod
4042
    def from_binary(data):
4043
        obj = DeleteReferencesRequest()
4044
        obj.TypeId = NodeId.from_binary(data)
4045
        obj.RequestHeader = RequestHeader.from_binary(data)
4046
        obj.Parameters = DeleteReferencesParameters.from_binary(data)
4047
        return obj
4048
    
4049 1
    def __str__(self):
4050
        return 'DeleteReferencesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4051
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
4052
             'Parameters:' + str(self.Parameters) + ')'
4053
    
4054 1
    __repr__ = __str__
4055
    
4056 1
class DeleteReferencesResult(FrozenClass):
4057
    '''
4058
    :ivar Results: 
4059
    :vartype Results: StatusCode 
4060
    :ivar DiagnosticInfos: 
4061
    :vartype DiagnosticInfos: DiagnosticInfo 
4062
    '''
4063 1
    def __init__(self):
4064
        self.Results = []
4065
        self.DiagnosticInfos = []
4066
        self._freeze()
4067
    
4068 1
    def to_binary(self):
4069
        packet = []
4070
        packet.append(struct.pack('<i', len(self.Results)))
4071
        for fieldname in self.Results:
4072
            packet.append(fieldname.to_binary())
4073
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
4074
        for fieldname in self.DiagnosticInfos:
4075
            packet.append(fieldname.to_binary())
4076
        return b''.join(packet)
4077
        
4078 1
    @staticmethod
4079
    def from_binary(data):
4080
        obj = DeleteReferencesResult()
4081
        length = struct.unpack('<i', data.read(4))[0]
4082
        if length != -1:
4083
            for _ in range(0, length):
4084
                obj.Results.append(StatusCode.from_binary(data))
4085
        length = struct.unpack('<i', data.read(4))[0]
4086
        if length != -1:
4087
            for _ in range(0, length):
4088
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
4089
        return obj
4090
    
4091 1
    def __str__(self):
4092
        return 'DeleteReferencesResult(' + 'Results:' + str(self.Results) + ', '  + \
4093
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4094
    
4095 1
    __repr__ = __str__
4096
    
4097 1
class DeleteReferencesResponse(FrozenClass):
4098
    '''
4099
    Delete one or more references from the server address space.
4100
    
4101
    :ivar TypeId: 
4102
    :vartype TypeId: NodeId 
4103
    :ivar ResponseHeader: 
4104
    :vartype ResponseHeader: ResponseHeader 
4105
    :ivar Parameters: 
4106
    :vartype Parameters: DeleteReferencesResult 
4107
    '''
4108 1
    def __init__(self):
4109
        self.TypeId = FourByteNodeId(ObjectIds.DeleteReferencesResponse_Encoding_DefaultBinary)
4110
        self.ResponseHeader = ResponseHeader()
4111
        self.Parameters = DeleteReferencesResult()
4112
        self._freeze()
4113
    
4114 1
    def to_binary(self):
4115
        packet = []
4116
        packet.append(self.TypeId.to_binary())
4117
        packet.append(self.ResponseHeader.to_binary())
4118
        packet.append(self.Parameters.to_binary())
4119
        return b''.join(packet)
4120
        
4121 1
    @staticmethod
4122
    def from_binary(data):
4123
        obj = DeleteReferencesResponse()
4124
        obj.TypeId = NodeId.from_binary(data)
4125
        obj.ResponseHeader = ResponseHeader.from_binary(data)
4126
        obj.Parameters = DeleteReferencesResult.from_binary(data)
4127
        return obj
4128
    
4129 1
    def __str__(self):
4130
        return 'DeleteReferencesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4131
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
4132
             'Parameters:' + str(self.Parameters) + ')'
4133
    
4134 1
    __repr__ = __str__
4135
    
4136 1
class ViewDescription(FrozenClass):
4137
    '''
4138
    The view to browse.
4139
    
4140
    :ivar ViewId: 
4141
    :vartype ViewId: NodeId 
4142
    :ivar Timestamp: 
4143
    :vartype Timestamp: DateTime 
4144
    :ivar ViewVersion: 
4145
    :vartype ViewVersion: UInt32 
4146
    '''
4147 1
    def __init__(self):
4148 1
        self.ViewId = NodeId()
4149 1
        self.Timestamp = datetime.now()
4150 1
        self.ViewVersion = 0
4151 1
        self._freeze()
4152
    
4153 1
    def to_binary(self):
4154 1
        packet = []
4155 1
        packet.append(self.ViewId.to_binary())
4156 1
        packet.append(pack_uatype('DateTime', self.Timestamp))
4157 1
        packet.append(pack_uatype('UInt32', self.ViewVersion))
4158 1
        return b''.join(packet)
4159
        
4160 1
    @staticmethod
4161
    def from_binary(data):
4162 1
        obj = ViewDescription()
4163 1
        obj.ViewId = NodeId.from_binary(data)
4164 1
        obj.Timestamp = unpack_uatype('DateTime', data)
4165 1
        obj.ViewVersion = unpack_uatype('UInt32', data)
4166 1
        return obj
4167
    
4168 1
    def __str__(self):
4169
        return 'ViewDescription(' + 'ViewId:' + str(self.ViewId) + ', '  + \
4170
             'Timestamp:' + str(self.Timestamp) + ', '  + \
4171
             'ViewVersion:' + str(self.ViewVersion) + ')'
4172
    
4173 1
    __repr__ = __str__
4174
    
4175 1
class BrowseDescription(FrozenClass):
4176
    '''
4177
    A request to browse the the references from a node.
4178
    
4179
    :ivar NodeId: 
4180
    :vartype NodeId: NodeId 
4181
    :ivar BrowseDirection: 
4182
    :vartype BrowseDirection: BrowseDirection 
4183
    :ivar ReferenceTypeId: 
4184
    :vartype ReferenceTypeId: NodeId 
4185
    :ivar IncludeSubtypes: 
4186
    :vartype IncludeSubtypes: Boolean 
4187
    :ivar NodeClassMask: 
4188
    :vartype NodeClassMask: UInt32 
4189
    :ivar ResultMask: 
4190
    :vartype ResultMask: UInt32 
4191
    '''
4192 1
    def __init__(self):
4193 1
        self.NodeId = NodeId()
4194 1
        self.BrowseDirection = 0
4195 1
        self.ReferenceTypeId = NodeId()
4196 1
        self.IncludeSubtypes = True
4197 1
        self.NodeClassMask = 0
4198 1
        self.ResultMask = 0
4199 1
        self._freeze()
4200
    
4201 1
    def to_binary(self):
4202 1
        packet = []
4203 1
        packet.append(self.NodeId.to_binary())
4204 1
        packet.append(pack_uatype('UInt32', self.BrowseDirection))
4205 1
        packet.append(self.ReferenceTypeId.to_binary())
4206 1
        packet.append(pack_uatype('Boolean', self.IncludeSubtypes))
4207 1
        packet.append(pack_uatype('UInt32', self.NodeClassMask))
4208 1
        packet.append(pack_uatype('UInt32', self.ResultMask))
4209 1
        return b''.join(packet)
4210
        
4211 1
    @staticmethod
4212
    def from_binary(data):
4213 1
        obj = BrowseDescription()
4214 1
        obj.NodeId = NodeId.from_binary(data)
4215 1
        obj.BrowseDirection = unpack_uatype('UInt32', data)
4216 1
        obj.ReferenceTypeId = NodeId.from_binary(data)
4217 1
        obj.IncludeSubtypes = unpack_uatype('Boolean', data)
4218 1
        obj.NodeClassMask = unpack_uatype('UInt32', data)
4219 1
        obj.ResultMask = unpack_uatype('UInt32', data)
4220 1
        return obj
4221
    
4222 1
    def __str__(self):
4223
        return 'BrowseDescription(' + 'NodeId:' + str(self.NodeId) + ', '  + \
4224
             'BrowseDirection:' + str(self.BrowseDirection) + ', '  + \
4225
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
4226
             'IncludeSubtypes:' + str(self.IncludeSubtypes) + ', '  + \
4227
             'NodeClassMask:' + str(self.NodeClassMask) + ', '  + \
4228
             'ResultMask:' + str(self.ResultMask) + ')'
4229
    
4230 1
    __repr__ = __str__
4231
    
4232 1
class ReferenceDescription(FrozenClass):
4233
    '''
4234
    The description of a reference.
4235
    
4236
    :ivar ReferenceTypeId: 
4237
    :vartype ReferenceTypeId: NodeId 
4238
    :ivar IsForward: 
4239
    :vartype IsForward: Boolean 
4240
    :ivar NodeId: 
4241
    :vartype NodeId: ExpandedNodeId 
4242
    :ivar BrowseName: 
4243
    :vartype BrowseName: QualifiedName 
4244
    :ivar DisplayName: 
4245
    :vartype DisplayName: LocalizedText 
4246
    :ivar NodeClass: 
4247
    :vartype NodeClass: NodeClass 
4248
    :ivar TypeDefinition: 
4249
    :vartype TypeDefinition: ExpandedNodeId 
4250
    '''
4251 1
    def __init__(self):
4252 1
        self.ReferenceTypeId = NodeId()
4253 1
        self.IsForward = True
4254 1
        self.NodeId = ExpandedNodeId()
4255 1
        self.BrowseName = QualifiedName()
4256 1
        self.DisplayName = LocalizedText()
4257 1
        self.NodeClass = 0
4258 1
        self.TypeDefinition = ExpandedNodeId()
4259 1
        self._freeze()
4260
    
4261 1
    def to_binary(self):
4262 1
        packet = []
4263 1
        packet.append(self.ReferenceTypeId.to_binary())
4264 1
        packet.append(pack_uatype('Boolean', self.IsForward))
4265 1
        packet.append(self.NodeId.to_binary())
4266 1
        packet.append(self.BrowseName.to_binary())
4267 1
        packet.append(self.DisplayName.to_binary())
4268 1
        packet.append(pack_uatype('UInt32', self.NodeClass))
4269 1
        packet.append(self.TypeDefinition.to_binary())
4270 1
        return b''.join(packet)
4271
        
4272 1
    @staticmethod
4273
    def from_binary(data):
4274 1
        obj = ReferenceDescription()
4275 1
        obj.ReferenceTypeId = NodeId.from_binary(data)
4276 1
        obj.IsForward = unpack_uatype('Boolean', data)
4277 1
        obj.NodeId = ExpandedNodeId.from_binary(data)
4278 1
        obj.BrowseName = QualifiedName.from_binary(data)
4279 1
        obj.DisplayName = LocalizedText.from_binary(data)
4280 1
        obj.NodeClass = unpack_uatype('UInt32', data)
4281 1
        obj.TypeDefinition = ExpandedNodeId.from_binary(data)
4282 1
        return obj
4283
    
4284 1
    def __str__(self):
4285
        return 'ReferenceDescription(' + 'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
4286
             'IsForward:' + str(self.IsForward) + ', '  + \
4287
             'NodeId:' + str(self.NodeId) + ', '  + \
4288
             'BrowseName:' + str(self.BrowseName) + ', '  + \
4289
             'DisplayName:' + str(self.DisplayName) + ', '  + \
4290
             'NodeClass:' + str(self.NodeClass) + ', '  + \
4291
             'TypeDefinition:' + str(self.TypeDefinition) + ')'
4292
    
4293 1
    __repr__ = __str__
4294
    
4295 1
class BrowseResult(FrozenClass):
4296
    '''
4297
    The result of a browse operation.
4298
    
4299
    :ivar StatusCode: 
4300
    :vartype StatusCode: StatusCode 
4301
    :ivar ContinuationPoint: 
4302
    :vartype ContinuationPoint: ByteString 
4303
    :ivar References: 
4304
    :vartype References: ReferenceDescription 
4305
    '''
4306 1
    def __init__(self):
4307 1
        self.StatusCode = StatusCode()
4308 1
        self.ContinuationPoint = b''
4309 1
        self.References = []
4310 1
        self._freeze()
4311
    
4312 1
    def to_binary(self):
4313 1
        packet = []
4314 1
        packet.append(self.StatusCode.to_binary())
4315 1
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
4316 1
        packet.append(struct.pack('<i', len(self.References)))
4317 1
        for fieldname in self.References:
4318 1
            packet.append(fieldname.to_binary())
4319 1
        return b''.join(packet)
4320
        
4321 1
    @staticmethod
4322
    def from_binary(data):
4323 1
        obj = BrowseResult()
4324 1
        obj.StatusCode = StatusCode.from_binary(data)
4325 1
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
4326 1
        length = struct.unpack('<i', data.read(4))[0]
4327 1
        if length != -1:
4328 1
            for _ in range(0, length):
4329 1
                obj.References.append(ReferenceDescription.from_binary(data))
4330 1
        return obj
4331
    
4332 1
    def __str__(self):
4333
        return 'BrowseResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
4334
             'ContinuationPoint:' + str(self.ContinuationPoint) + ', '  + \
4335
             'References:' + str(self.References) + ')'
4336
    
4337 1
    __repr__ = __str__
4338
    
4339 1
class BrowseParameters(FrozenClass):
4340
    '''
4341
    :ivar View: 
4342
    :vartype View: ViewDescription 
4343
    :ivar RequestedMaxReferencesPerNode: 
4344
    :vartype RequestedMaxReferencesPerNode: UInt32 
4345
    :ivar NodesToBrowse: 
4346
    :vartype NodesToBrowse: BrowseDescription 
4347
    '''
4348 1
    def __init__(self):
4349 1
        self.View = ViewDescription()
4350 1
        self.RequestedMaxReferencesPerNode = 0
4351 1
        self.NodesToBrowse = []
4352 1
        self._freeze()
4353
    
4354 1
    def to_binary(self):
4355 1
        packet = []
4356 1
        packet.append(self.View.to_binary())
4357 1
        packet.append(pack_uatype('UInt32', self.RequestedMaxReferencesPerNode))
4358 1
        packet.append(struct.pack('<i', len(self.NodesToBrowse)))
4359 1
        for fieldname in self.NodesToBrowse:
4360 1
            packet.append(fieldname.to_binary())
4361 1
        return b''.join(packet)
4362
        
4363 1
    @staticmethod
4364
    def from_binary(data):
4365 1
        obj = BrowseParameters()
4366 1
        obj.View = ViewDescription.from_binary(data)
4367 1
        obj.RequestedMaxReferencesPerNode = unpack_uatype('UInt32', data)
4368 1
        length = struct.unpack('<i', data.read(4))[0]
4369 1
        if length != -1:
4370 1
            for _ in range(0, length):
4371 1
                obj.NodesToBrowse.append(BrowseDescription.from_binary(data))
4372 1
        return obj
4373
    
4374 1
    def __str__(self):
4375
        return 'BrowseParameters(' + 'View:' + str(self.View) + ', '  + \
4376
             'RequestedMaxReferencesPerNode:' + str(self.RequestedMaxReferencesPerNode) + ', '  + \
4377
             'NodesToBrowse:' + str(self.NodesToBrowse) + ')'
4378
    
4379 1
    __repr__ = __str__
4380
    
4381 1
class BrowseRequest(FrozenClass):
4382
    '''
4383
    Browse the references for one or more nodes from the server address space.
4384
    
4385
    :ivar TypeId: 
4386
    :vartype TypeId: NodeId 
4387
    :ivar RequestHeader: 
4388
    :vartype RequestHeader: RequestHeader 
4389
    :ivar Parameters: 
4390
    :vartype Parameters: BrowseParameters 
4391
    '''
4392 1
    def __init__(self):
4393 1
        self.TypeId = FourByteNodeId(ObjectIds.BrowseRequest_Encoding_DefaultBinary)
4394 1
        self.RequestHeader = RequestHeader()
4395 1
        self.Parameters = BrowseParameters()
4396 1
        self._freeze()
4397
    
4398 1
    def to_binary(self):
4399 1
        packet = []
4400 1
        packet.append(self.TypeId.to_binary())
4401 1
        packet.append(self.RequestHeader.to_binary())
4402 1
        packet.append(self.Parameters.to_binary())
4403 1
        return b''.join(packet)
4404
        
4405 1
    @staticmethod
4406
    def from_binary(data):
4407
        obj = BrowseRequest()
4408
        obj.TypeId = NodeId.from_binary(data)
4409
        obj.RequestHeader = RequestHeader.from_binary(data)
4410
        obj.Parameters = BrowseParameters.from_binary(data)
4411
        return obj
4412
    
4413 1
    def __str__(self):
4414
        return 'BrowseRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4415
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
4416
             'Parameters:' + str(self.Parameters) + ')'
4417
    
4418 1
    __repr__ = __str__
4419
    
4420 1
class BrowseResponse(FrozenClass):
4421
    '''
4422
    Browse the references for one or more nodes from the server address space.
4423
    
4424
    :ivar TypeId: 
4425
    :vartype TypeId: NodeId 
4426
    :ivar ResponseHeader: 
4427
    :vartype ResponseHeader: ResponseHeader 
4428
    :ivar Results: 
4429
    :vartype Results: BrowseResult 
4430
    :ivar DiagnosticInfos: 
4431
    :vartype DiagnosticInfos: DiagnosticInfo 
4432
    '''
4433 1
    def __init__(self):
4434 1
        self.TypeId = FourByteNodeId(ObjectIds.BrowseResponse_Encoding_DefaultBinary)
4435 1
        self.ResponseHeader = ResponseHeader()
4436 1
        self.Results = []
4437 1
        self.DiagnosticInfos = []
4438 1
        self._freeze()
4439
    
4440 1
    def to_binary(self):
4441 1
        packet = []
4442 1
        packet.append(self.TypeId.to_binary())
4443 1
        packet.append(self.ResponseHeader.to_binary())
4444 1
        packet.append(struct.pack('<i', len(self.Results)))
4445 1
        for fieldname in self.Results:
4446 1
            packet.append(fieldname.to_binary())
4447 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
4448 1
        for fieldname in self.DiagnosticInfos:
4449
            packet.append(fieldname.to_binary())
4450 1
        return b''.join(packet)
4451
        
4452 1
    @staticmethod
4453
    def from_binary(data):
4454 1
        obj = BrowseResponse()
4455 1
        obj.TypeId = NodeId.from_binary(data)
4456 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
4457 1
        length = struct.unpack('<i', data.read(4))[0]
4458 1
        if length != -1:
4459 1
            for _ in range(0, length):
4460 1
                obj.Results.append(BrowseResult.from_binary(data))
4461 1
        length = struct.unpack('<i', data.read(4))[0]
4462 1
        if length != -1:
4463 1
            for _ in range(0, length):
4464
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
4465 1
        return obj
4466
    
4467 1
    def __str__(self):
4468
        return 'BrowseResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4469
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
4470
             'Results:' + str(self.Results) + ', '  + \
4471
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4472
    
4473 1
    __repr__ = __str__
4474
    
4475 1
class BrowseNextParameters(FrozenClass):
4476
    '''
4477
    :ivar ReleaseContinuationPoints: 
4478
    :vartype ReleaseContinuationPoints: Boolean 
4479
    :ivar ContinuationPoints: 
4480
    :vartype ContinuationPoints: ByteString 
4481
    '''
4482 1
    def __init__(self):
4483
        self.ReleaseContinuationPoints = True
4484
        self.ContinuationPoints = []
4485
        self._freeze()
4486
    
4487 1
    def to_binary(self):
4488
        packet = []
4489
        packet.append(pack_uatype('Boolean', self.ReleaseContinuationPoints))
4490
        packet.append(struct.pack('<i', len(self.ContinuationPoints)))
4491
        for fieldname in self.ContinuationPoints:
4492
            packet.append(pack_uatype('ByteString', fieldname))
4493
        return b''.join(packet)
4494
        
4495 1
    @staticmethod
4496
    def from_binary(data):
4497
        obj = BrowseNextParameters()
4498
        obj.ReleaseContinuationPoints = unpack_uatype('Boolean', data)
4499
        obj.ContinuationPoints = unpack_uatype_array('ByteString', data)
4500
        return obj
4501
    
4502 1
    def __str__(self):
4503
        return 'BrowseNextParameters(' + 'ReleaseContinuationPoints:' + str(self.ReleaseContinuationPoints) + ', '  + \
4504
             'ContinuationPoints:' + str(self.ContinuationPoints) + ')'
4505
    
4506 1
    __repr__ = __str__
4507
    
4508 1
class BrowseNextRequest(FrozenClass):
4509
    '''
4510
    Continues one or more browse operations.
4511
    
4512
    :ivar TypeId: 
4513
    :vartype TypeId: NodeId 
4514
    :ivar RequestHeader: 
4515
    :vartype RequestHeader: RequestHeader 
4516
    :ivar Parameters: 
4517
    :vartype Parameters: BrowseNextParameters 
4518
    '''
4519 1
    def __init__(self):
4520
        self.TypeId = FourByteNodeId(ObjectIds.BrowseNextRequest_Encoding_DefaultBinary)
4521
        self.RequestHeader = RequestHeader()
4522
        self.Parameters = BrowseNextParameters()
4523
        self._freeze()
4524
    
4525 1
    def to_binary(self):
4526
        packet = []
4527
        packet.append(self.TypeId.to_binary())
4528
        packet.append(self.RequestHeader.to_binary())
4529
        packet.append(self.Parameters.to_binary())
4530
        return b''.join(packet)
4531
        
4532 1
    @staticmethod
4533
    def from_binary(data):
4534
        obj = BrowseNextRequest()
4535
        obj.TypeId = NodeId.from_binary(data)
4536
        obj.RequestHeader = RequestHeader.from_binary(data)
4537
        obj.Parameters = BrowseNextParameters.from_binary(data)
4538
        return obj
4539
    
4540 1
    def __str__(self):
4541
        return 'BrowseNextRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4542
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
4543
             'Parameters:' + str(self.Parameters) + ')'
4544
    
4545 1
    __repr__ = __str__
4546
    
4547 1
class BrowseNextResult(FrozenClass):
4548
    '''
4549
    :ivar Results: 
4550
    :vartype Results: BrowseResult 
4551
    :ivar DiagnosticInfos: 
4552
    :vartype DiagnosticInfos: DiagnosticInfo 
4553
    '''
4554 1
    def __init__(self):
4555
        self.Results = []
4556
        self.DiagnosticInfos = []
4557
        self._freeze()
4558
    
4559 1
    def to_binary(self):
4560
        packet = []
4561
        packet.append(struct.pack('<i', len(self.Results)))
4562
        for fieldname in self.Results:
4563
            packet.append(fieldname.to_binary())
4564
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
4565
        for fieldname in self.DiagnosticInfos:
4566
            packet.append(fieldname.to_binary())
4567
        return b''.join(packet)
4568
        
4569 1
    @staticmethod
4570
    def from_binary(data):
4571
        obj = BrowseNextResult()
4572
        length = struct.unpack('<i', data.read(4))[0]
4573
        if length != -1:
4574
            for _ in range(0, length):
4575
                obj.Results.append(BrowseResult.from_binary(data))
4576
        length = struct.unpack('<i', data.read(4))[0]
4577
        if length != -1:
4578
            for _ in range(0, length):
4579
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
4580
        return obj
4581
    
4582 1
    def __str__(self):
4583
        return 'BrowseNextResult(' + 'Results:' + str(self.Results) + ', '  + \
4584
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4585
    
4586 1
    __repr__ = __str__
4587
    
4588 1
class BrowseNextResponse(FrozenClass):
4589
    '''
4590
    Continues one or more browse operations.
4591
    
4592
    :ivar TypeId: 
4593
    :vartype TypeId: NodeId 
4594
    :ivar ResponseHeader: 
4595
    :vartype ResponseHeader: ResponseHeader 
4596
    :ivar Parameters: 
4597
    :vartype Parameters: BrowseNextResult 
4598
    '''
4599 1
    def __init__(self):
4600
        self.TypeId = FourByteNodeId(ObjectIds.BrowseNextResponse_Encoding_DefaultBinary)
4601
        self.ResponseHeader = ResponseHeader()
4602
        self.Parameters = BrowseNextResult()
4603
        self._freeze()
4604
    
4605 1
    def to_binary(self):
4606
        packet = []
4607
        packet.append(self.TypeId.to_binary())
4608
        packet.append(self.ResponseHeader.to_binary())
4609
        packet.append(self.Parameters.to_binary())
4610
        return b''.join(packet)
4611
        
4612 1
    @staticmethod
4613
    def from_binary(data):
4614
        obj = BrowseNextResponse()
4615
        obj.TypeId = NodeId.from_binary(data)
4616
        obj.ResponseHeader = ResponseHeader.from_binary(data)
4617
        obj.Parameters = BrowseNextResult.from_binary(data)
4618
        return obj
4619
    
4620 1
    def __str__(self):
4621
        return 'BrowseNextResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4622
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
4623
             'Parameters:' + str(self.Parameters) + ')'
4624
    
4625 1
    __repr__ = __str__
4626
    
4627 1
class RelativePathElement(FrozenClass):
4628
    '''
4629
    An element in a relative path.
4630
    
4631
    :ivar ReferenceTypeId: 
4632
    :vartype ReferenceTypeId: NodeId 
4633
    :ivar IsInverse: 
4634
    :vartype IsInverse: Boolean 
4635
    :ivar IncludeSubtypes: 
4636
    :vartype IncludeSubtypes: Boolean 
4637
    :ivar TargetName: 
4638
    :vartype TargetName: QualifiedName 
4639
    '''
4640 1
    def __init__(self):
4641 1
        self.ReferenceTypeId = NodeId()
4642 1
        self.IsInverse = True
4643 1
        self.IncludeSubtypes = True
4644 1
        self.TargetName = QualifiedName()
4645 1
        self._freeze()
4646
    
4647 1
    def to_binary(self):
4648 1
        packet = []
4649 1
        packet.append(self.ReferenceTypeId.to_binary())
4650 1
        packet.append(pack_uatype('Boolean', self.IsInverse))
4651 1
        packet.append(pack_uatype('Boolean', self.IncludeSubtypes))
4652 1
        packet.append(self.TargetName.to_binary())
4653 1
        return b''.join(packet)
4654
        
4655 1
    @staticmethod
4656
    def from_binary(data):
4657 1
        obj = RelativePathElement()
4658 1
        obj.ReferenceTypeId = NodeId.from_binary(data)
4659 1
        obj.IsInverse = unpack_uatype('Boolean', data)
4660 1
        obj.IncludeSubtypes = unpack_uatype('Boolean', data)
4661 1
        obj.TargetName = QualifiedName.from_binary(data)
4662 1
        return obj
4663
    
4664 1
    def __str__(self):
4665
        return 'RelativePathElement(' + 'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
4666
             'IsInverse:' + str(self.IsInverse) + ', '  + \
4667
             'IncludeSubtypes:' + str(self.IncludeSubtypes) + ', '  + \
4668
             'TargetName:' + str(self.TargetName) + ')'
4669
    
4670 1
    __repr__ = __str__
4671
    
4672 1
class RelativePath(FrozenClass):
4673
    '''
4674
    A relative path constructed from reference types and browse names.
4675
    
4676
    :ivar Elements: 
4677
    :vartype Elements: RelativePathElement 
4678
    '''
4679 1
    def __init__(self):
4680 1
        self.Elements = []
4681 1
        self._freeze()
4682
    
4683 1
    def to_binary(self):
4684 1
        packet = []
4685 1
        packet.append(struct.pack('<i', len(self.Elements)))
4686 1
        for fieldname in self.Elements:
4687 1
            packet.append(fieldname.to_binary())
4688 1
        return b''.join(packet)
4689
        
4690 1
    @staticmethod
4691
    def from_binary(data):
4692 1
        obj = RelativePath()
4693 1
        length = struct.unpack('<i', data.read(4))[0]
4694 1
        if length != -1:
4695 1
            for _ in range(0, length):
4696 1
                obj.Elements.append(RelativePathElement.from_binary(data))
4697 1
        return obj
4698
    
4699 1
    def __str__(self):
4700
        return 'RelativePath(' + 'Elements:' + str(self.Elements) + ')'
4701
    
4702 1
    __repr__ = __str__
4703
    
4704 1
class BrowsePath(FrozenClass):
4705
    '''
4706
    A request to translate a path into a node id.
4707
    
4708
    :ivar StartingNode: 
4709
    :vartype StartingNode: NodeId 
4710
    :ivar RelativePath: 
4711
    :vartype RelativePath: RelativePath 
4712
    '''
4713 1
    def __init__(self):
4714 1
        self.StartingNode = NodeId()
4715 1
        self.RelativePath = RelativePath()
4716 1
        self._freeze()
4717
    
4718 1
    def to_binary(self):
4719 1
        packet = []
4720 1
        packet.append(self.StartingNode.to_binary())
4721 1
        packet.append(self.RelativePath.to_binary())
4722 1
        return b''.join(packet)
4723
        
4724 1
    @staticmethod
4725
    def from_binary(data):
4726 1
        obj = BrowsePath()
4727 1
        obj.StartingNode = NodeId.from_binary(data)
4728 1
        obj.RelativePath = RelativePath.from_binary(data)
4729 1
        return obj
4730
    
4731 1
    def __str__(self):
4732
        return 'BrowsePath(' + 'StartingNode:' + str(self.StartingNode) + ', '  + \
4733
             'RelativePath:' + str(self.RelativePath) + ')'
4734
    
4735 1
    __repr__ = __str__
4736
    
4737 1
class BrowsePathTarget(FrozenClass):
4738
    '''
4739
    The target of the translated path.
4740
    
4741
    :ivar TargetId: 
4742
    :vartype TargetId: ExpandedNodeId 
4743
    :ivar RemainingPathIndex: 
4744
    :vartype RemainingPathIndex: UInt32 
4745
    '''
4746 1
    def __init__(self):
4747 1
        self.TargetId = ExpandedNodeId()
4748 1
        self.RemainingPathIndex = 0
4749 1
        self._freeze()
4750
    
4751 1
    def to_binary(self):
4752 1
        packet = []
4753 1
        packet.append(self.TargetId.to_binary())
4754 1
        packet.append(pack_uatype('UInt32', self.RemainingPathIndex))
4755 1
        return b''.join(packet)
4756
        
4757 1
    @staticmethod
4758
    def from_binary(data):
4759 1
        obj = BrowsePathTarget()
4760 1
        obj.TargetId = ExpandedNodeId.from_binary(data)
4761 1
        obj.RemainingPathIndex = unpack_uatype('UInt32', data)
4762 1
        return obj
4763
    
4764 1
    def __str__(self):
4765
        return 'BrowsePathTarget(' + 'TargetId:' + str(self.TargetId) + ', '  + \
4766
             'RemainingPathIndex:' + str(self.RemainingPathIndex) + ')'
4767
    
4768 1
    __repr__ = __str__
4769
    
4770 1
class BrowsePathResult(FrozenClass):
4771
    '''
4772
    The result of a translate opearation.
4773
    
4774
    :ivar StatusCode: 
4775
    :vartype StatusCode: StatusCode 
4776
    :ivar Targets: 
4777
    :vartype Targets: BrowsePathTarget 
4778
    '''
4779 1
    def __init__(self):
4780 1
        self.StatusCode = StatusCode()
4781 1
        self.Targets = []
4782 1
        self._freeze()
4783
    
4784 1
    def to_binary(self):
4785 1
        packet = []
4786 1
        packet.append(self.StatusCode.to_binary())
4787 1
        packet.append(struct.pack('<i', len(self.Targets)))
4788 1
        for fieldname in self.Targets:
4789 1
            packet.append(fieldname.to_binary())
4790 1
        return b''.join(packet)
4791
        
4792 1
    @staticmethod
4793
    def from_binary(data):
4794 1
        obj = BrowsePathResult()
4795 1
        obj.StatusCode = StatusCode.from_binary(data)
4796 1
        length = struct.unpack('<i', data.read(4))[0]
4797 1
        if length != -1:
4798 1
            for _ in range(0, length):
4799 1
                obj.Targets.append(BrowsePathTarget.from_binary(data))
4800 1
        return obj
4801
    
4802 1
    def __str__(self):
4803
        return 'BrowsePathResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
4804
             'Targets:' + str(self.Targets) + ')'
4805
    
4806 1
    __repr__ = __str__
4807
    
4808 1
class TranslateBrowsePathsToNodeIdsParameters(FrozenClass):
4809
    '''
4810
    :ivar BrowsePaths: 
4811
    :vartype BrowsePaths: BrowsePath 
4812
    '''
4813 1
    def __init__(self):
4814 1
        self.BrowsePaths = []
4815 1
        self._freeze()
4816
    
4817 1
    def to_binary(self):
4818 1
        packet = []
4819 1
        packet.append(struct.pack('<i', len(self.BrowsePaths)))
4820 1
        for fieldname in self.BrowsePaths:
4821 1
            packet.append(fieldname.to_binary())
4822 1
        return b''.join(packet)
4823
        
4824 1
    @staticmethod
4825
    def from_binary(data):
4826 1
        obj = TranslateBrowsePathsToNodeIdsParameters()
4827 1
        length = struct.unpack('<i', data.read(4))[0]
4828 1
        if length != -1:
4829 1
            for _ in range(0, length):
4830 1
                obj.BrowsePaths.append(BrowsePath.from_binary(data))
4831 1
        return obj
4832
    
4833 1
    def __str__(self):
4834
        return 'TranslateBrowsePathsToNodeIdsParameters(' + 'BrowsePaths:' + str(self.BrowsePaths) + ')'
4835
    
4836 1
    __repr__ = __str__
4837
    
4838 1
class TranslateBrowsePathsToNodeIdsRequest(FrozenClass):
4839
    '''
4840
    Translates one or more paths in the server address space.
4841
    
4842
    :ivar TypeId: 
4843
    :vartype TypeId: NodeId 
4844
    :ivar RequestHeader: 
4845
    :vartype RequestHeader: RequestHeader 
4846
    :ivar Parameters: 
4847
    :vartype Parameters: TranslateBrowsePathsToNodeIdsParameters 
4848
    '''
4849 1
    def __init__(self):
4850 1
        self.TypeId = FourByteNodeId(ObjectIds.TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultBinary)
4851 1
        self.RequestHeader = RequestHeader()
4852 1
        self.Parameters = TranslateBrowsePathsToNodeIdsParameters()
4853 1
        self._freeze()
4854
    
4855 1
    def to_binary(self):
4856 1
        packet = []
4857 1
        packet.append(self.TypeId.to_binary())
4858 1
        packet.append(self.RequestHeader.to_binary())
4859 1
        packet.append(self.Parameters.to_binary())
4860 1
        return b''.join(packet)
4861
        
4862 1
    @staticmethod
4863
    def from_binary(data):
4864
        obj = TranslateBrowsePathsToNodeIdsRequest()
4865
        obj.TypeId = NodeId.from_binary(data)
4866
        obj.RequestHeader = RequestHeader.from_binary(data)
4867
        obj.Parameters = TranslateBrowsePathsToNodeIdsParameters.from_binary(data)
4868
        return obj
4869
    
4870 1
    def __str__(self):
4871
        return 'TranslateBrowsePathsToNodeIdsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4872
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
4873
             'Parameters:' + str(self.Parameters) + ')'
4874
    
4875 1
    __repr__ = __str__
4876
    
4877 1
class TranslateBrowsePathsToNodeIdsResponse(FrozenClass):
4878
    '''
4879
    Translates one or more paths in the server address space.
4880
    
4881
    :ivar TypeId: 
4882
    :vartype TypeId: NodeId 
4883
    :ivar ResponseHeader: 
4884
    :vartype ResponseHeader: ResponseHeader 
4885
    :ivar Results: 
4886
    :vartype Results: BrowsePathResult 
4887
    :ivar DiagnosticInfos: 
4888
    :vartype DiagnosticInfos: DiagnosticInfo 
4889
    '''
4890 1
    def __init__(self):
4891 1
        self.TypeId = FourByteNodeId(ObjectIds.TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultBinary)
4892 1
        self.ResponseHeader = ResponseHeader()
4893 1
        self.Results = []
4894 1
        self.DiagnosticInfos = []
4895 1
        self._freeze()
4896
    
4897 1
    def to_binary(self):
4898 1
        packet = []
4899 1
        packet.append(self.TypeId.to_binary())
4900 1
        packet.append(self.ResponseHeader.to_binary())
4901 1
        packet.append(struct.pack('<i', len(self.Results)))
4902 1
        for fieldname in self.Results:
4903 1
            packet.append(fieldname.to_binary())
4904 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
4905 1
        for fieldname in self.DiagnosticInfos:
4906
            packet.append(fieldname.to_binary())
4907 1
        return b''.join(packet)
4908
        
4909 1
    @staticmethod
4910
    def from_binary(data):
4911 1
        obj = TranslateBrowsePathsToNodeIdsResponse()
4912 1
        obj.TypeId = NodeId.from_binary(data)
4913 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
4914 1
        length = struct.unpack('<i', data.read(4))[0]
4915 1
        if length != -1:
4916 1
            for _ in range(0, length):
4917 1
                obj.Results.append(BrowsePathResult.from_binary(data))
4918 1
        length = struct.unpack('<i', data.read(4))[0]
4919 1
        if length != -1:
4920 1
            for _ in range(0, length):
4921
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
4922 1
        return obj
4923
    
4924 1
    def __str__(self):
4925
        return 'TranslateBrowsePathsToNodeIdsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4926
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
4927
             'Results:' + str(self.Results) + ', '  + \
4928
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
4929
    
4930 1
    __repr__ = __str__
4931
    
4932 1
class RegisterNodesParameters(FrozenClass):
4933
    '''
4934
    :ivar NodesToRegister: 
4935
    :vartype NodesToRegister: NodeId 
4936
    '''
4937 1
    def __init__(self):
4938
        self.NodesToRegister = []
4939
        self._freeze()
4940
    
4941 1
    def to_binary(self):
4942
        packet = []
4943
        packet.append(struct.pack('<i', len(self.NodesToRegister)))
4944
        for fieldname in self.NodesToRegister:
4945
            packet.append(fieldname.to_binary())
4946
        return b''.join(packet)
4947
        
4948 1
    @staticmethod
4949
    def from_binary(data):
4950
        obj = RegisterNodesParameters()
4951
        length = struct.unpack('<i', data.read(4))[0]
4952
        if length != -1:
4953
            for _ in range(0, length):
4954
                obj.NodesToRegister.append(NodeId.from_binary(data))
4955
        return obj
4956
    
4957 1
    def __str__(self):
4958
        return 'RegisterNodesParameters(' + 'NodesToRegister:' + str(self.NodesToRegister) + ')'
4959
    
4960 1
    __repr__ = __str__
4961
    
4962 1
class RegisterNodesRequest(FrozenClass):
4963
    '''
4964
    Registers one or more nodes for repeated use within a session.
4965
    
4966
    :ivar TypeId: 
4967
    :vartype TypeId: NodeId 
4968
    :ivar RequestHeader: 
4969
    :vartype RequestHeader: RequestHeader 
4970
    :ivar Parameters: 
4971
    :vartype Parameters: RegisterNodesParameters 
4972
    '''
4973 1
    def __init__(self):
4974
        self.TypeId = FourByteNodeId(ObjectIds.RegisterNodesRequest_Encoding_DefaultBinary)
4975
        self.RequestHeader = RequestHeader()
4976
        self.Parameters = RegisterNodesParameters()
4977
        self._freeze()
4978
    
4979 1
    def to_binary(self):
4980
        packet = []
4981
        packet.append(self.TypeId.to_binary())
4982
        packet.append(self.RequestHeader.to_binary())
4983
        packet.append(self.Parameters.to_binary())
4984
        return b''.join(packet)
4985
        
4986 1
    @staticmethod
4987
    def from_binary(data):
4988
        obj = RegisterNodesRequest()
4989
        obj.TypeId = NodeId.from_binary(data)
4990
        obj.RequestHeader = RequestHeader.from_binary(data)
4991
        obj.Parameters = RegisterNodesParameters.from_binary(data)
4992
        return obj
4993
    
4994 1
    def __str__(self):
4995
        return 'RegisterNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
4996
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
4997
             'Parameters:' + str(self.Parameters) + ')'
4998
    
4999 1
    __repr__ = __str__
5000
    
5001 1
class RegisterNodesResult(FrozenClass):
5002
    '''
5003
    :ivar RegisteredNodeIds: 
5004
    :vartype RegisteredNodeIds: NodeId 
5005
    '''
5006 1
    def __init__(self):
5007
        self.RegisteredNodeIds = []
5008
        self._freeze()
5009
    
5010 1
    def to_binary(self):
5011
        packet = []
5012
        packet.append(struct.pack('<i', len(self.RegisteredNodeIds)))
5013
        for fieldname in self.RegisteredNodeIds:
5014
            packet.append(fieldname.to_binary())
5015
        return b''.join(packet)
5016
        
5017 1
    @staticmethod
5018
    def from_binary(data):
5019
        obj = RegisterNodesResult()
5020
        length = struct.unpack('<i', data.read(4))[0]
5021
        if length != -1:
5022
            for _ in range(0, length):
5023
                obj.RegisteredNodeIds.append(NodeId.from_binary(data))
5024
        return obj
5025
    
5026 1
    def __str__(self):
5027
        return 'RegisterNodesResult(' + 'RegisteredNodeIds:' + str(self.RegisteredNodeIds) + ')'
5028
    
5029 1
    __repr__ = __str__
5030
    
5031 1
class RegisterNodesResponse(FrozenClass):
5032
    '''
5033
    Registers one or more nodes for repeated use within a session.
5034
    
5035
    :ivar TypeId: 
5036
    :vartype TypeId: NodeId 
5037
    :ivar ResponseHeader: 
5038
    :vartype ResponseHeader: ResponseHeader 
5039
    :ivar Parameters: 
5040
    :vartype Parameters: RegisterNodesResult 
5041
    '''
5042 1
    def __init__(self):
5043
        self.TypeId = FourByteNodeId(ObjectIds.RegisterNodesResponse_Encoding_DefaultBinary)
5044
        self.ResponseHeader = ResponseHeader()
5045
        self.Parameters = RegisterNodesResult()
5046
        self._freeze()
5047
    
5048 1
    def to_binary(self):
5049
        packet = []
5050
        packet.append(self.TypeId.to_binary())
5051
        packet.append(self.ResponseHeader.to_binary())
5052
        packet.append(self.Parameters.to_binary())
5053
        return b''.join(packet)
5054
        
5055 1
    @staticmethod
5056
    def from_binary(data):
5057
        obj = RegisterNodesResponse()
5058
        obj.TypeId = NodeId.from_binary(data)
5059
        obj.ResponseHeader = ResponseHeader.from_binary(data)
5060
        obj.Parameters = RegisterNodesResult.from_binary(data)
5061
        return obj
5062
    
5063 1
    def __str__(self):
5064
        return 'RegisterNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5065
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
5066
             'Parameters:' + str(self.Parameters) + ')'
5067
    
5068 1
    __repr__ = __str__
5069
    
5070 1
class UnregisterNodesParameters(FrozenClass):
5071
    '''
5072
    :ivar NodesToUnregister: 
5073
    :vartype NodesToUnregister: NodeId 
5074
    '''
5075 1
    def __init__(self):
5076
        self.NodesToUnregister = []
5077
        self._freeze()
5078
    
5079 1
    def to_binary(self):
5080
        packet = []
5081
        packet.append(struct.pack('<i', len(self.NodesToUnregister)))
5082
        for fieldname in self.NodesToUnregister:
5083
            packet.append(fieldname.to_binary())
5084
        return b''.join(packet)
5085
        
5086 1
    @staticmethod
5087
    def from_binary(data):
5088
        obj = UnregisterNodesParameters()
5089
        length = struct.unpack('<i', data.read(4))[0]
5090
        if length != -1:
5091
            for _ in range(0, length):
5092
                obj.NodesToUnregister.append(NodeId.from_binary(data))
5093
        return obj
5094
    
5095 1
    def __str__(self):
5096
        return 'UnregisterNodesParameters(' + 'NodesToUnregister:' + str(self.NodesToUnregister) + ')'
5097
    
5098 1
    __repr__ = __str__
5099
    
5100 1
class UnregisterNodesRequest(FrozenClass):
5101
    '''
5102
    Unregisters one or more previously registered nodes.
5103
    
5104
    :ivar TypeId: 
5105
    :vartype TypeId: NodeId 
5106
    :ivar RequestHeader: 
5107
    :vartype RequestHeader: RequestHeader 
5108
    :ivar Parameters: 
5109
    :vartype Parameters: UnregisterNodesParameters 
5110
    '''
5111 1
    def __init__(self):
5112
        self.TypeId = FourByteNodeId(ObjectIds.UnregisterNodesRequest_Encoding_DefaultBinary)
5113
        self.RequestHeader = RequestHeader()
5114
        self.Parameters = UnregisterNodesParameters()
5115
        self._freeze()
5116
    
5117 1
    def to_binary(self):
5118
        packet = []
5119
        packet.append(self.TypeId.to_binary())
5120
        packet.append(self.RequestHeader.to_binary())
5121
        packet.append(self.Parameters.to_binary())
5122
        return b''.join(packet)
5123
        
5124 1
    @staticmethod
5125
    def from_binary(data):
5126
        obj = UnregisterNodesRequest()
5127
        obj.TypeId = NodeId.from_binary(data)
5128
        obj.RequestHeader = RequestHeader.from_binary(data)
5129
        obj.Parameters = UnregisterNodesParameters.from_binary(data)
5130
        return obj
5131
    
5132 1
    def __str__(self):
5133
        return 'UnregisterNodesRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5134
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
5135
             'Parameters:' + str(self.Parameters) + ')'
5136
    
5137 1
    __repr__ = __str__
5138
    
5139 1
class UnregisterNodesResponse(FrozenClass):
5140
    '''
5141
    Unregisters one or more previously registered nodes.
5142
    
5143
    :ivar TypeId: 
5144
    :vartype TypeId: NodeId 
5145
    :ivar ResponseHeader: 
5146
    :vartype ResponseHeader: ResponseHeader 
5147
    '''
5148 1
    def __init__(self):
5149
        self.TypeId = FourByteNodeId(ObjectIds.UnregisterNodesResponse_Encoding_DefaultBinary)
5150
        self.ResponseHeader = ResponseHeader()
5151
        self._freeze()
5152
    
5153 1
    def to_binary(self):
5154
        packet = []
5155
        packet.append(self.TypeId.to_binary())
5156
        packet.append(self.ResponseHeader.to_binary())
5157
        return b''.join(packet)
5158
        
5159 1
    @staticmethod
5160
    def from_binary(data):
5161
        obj = UnregisterNodesResponse()
5162
        obj.TypeId = NodeId.from_binary(data)
5163
        obj.ResponseHeader = ResponseHeader.from_binary(data)
5164
        return obj
5165
    
5166 1
    def __str__(self):
5167
        return 'UnregisterNodesResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5168
             'ResponseHeader:' + str(self.ResponseHeader) + ')'
5169
    
5170 1
    __repr__ = __str__
5171
    
5172 1
class EndpointConfiguration(FrozenClass):
5173
    '''
5174
    :ivar OperationTimeout: 
5175
    :vartype OperationTimeout: Int32 
5176
    :ivar UseBinaryEncoding: 
5177
    :vartype UseBinaryEncoding: Boolean 
5178
    :ivar MaxStringLength: 
5179
    :vartype MaxStringLength: Int32 
5180
    :ivar MaxByteStringLength: 
5181
    :vartype MaxByteStringLength: Int32 
5182
    :ivar MaxArrayLength: 
5183
    :vartype MaxArrayLength: Int32 
5184
    :ivar MaxMessageSize: 
5185
    :vartype MaxMessageSize: Int32 
5186
    :ivar MaxBufferSize: 
5187
    :vartype MaxBufferSize: Int32 
5188
    :ivar ChannelLifetime: 
5189
    :vartype ChannelLifetime: Int32 
5190
    :ivar SecurityTokenLifetime: 
5191
    :vartype SecurityTokenLifetime: Int32 
5192
    '''
5193 1
    def __init__(self):
5194
        self.OperationTimeout = 0
5195
        self.UseBinaryEncoding = True
5196
        self.MaxStringLength = 0
5197
        self.MaxByteStringLength = 0
5198
        self.MaxArrayLength = 0
5199
        self.MaxMessageSize = 0
5200
        self.MaxBufferSize = 0
5201
        self.ChannelLifetime = 0
5202
        self.SecurityTokenLifetime = 0
5203
        self._freeze()
5204
    
5205 1
    def to_binary(self):
5206
        packet = []
5207
        packet.append(pack_uatype('Int32', self.OperationTimeout))
5208
        packet.append(pack_uatype('Boolean', self.UseBinaryEncoding))
5209
        packet.append(pack_uatype('Int32', self.MaxStringLength))
5210
        packet.append(pack_uatype('Int32', self.MaxByteStringLength))
5211
        packet.append(pack_uatype('Int32', self.MaxArrayLength))
5212
        packet.append(pack_uatype('Int32', self.MaxMessageSize))
5213
        packet.append(pack_uatype('Int32', self.MaxBufferSize))
5214
        packet.append(pack_uatype('Int32', self.ChannelLifetime))
5215
        packet.append(pack_uatype('Int32', self.SecurityTokenLifetime))
5216
        return b''.join(packet)
5217
        
5218 1
    @staticmethod
5219
    def from_binary(data):
5220
        obj = EndpointConfiguration()
5221
        obj.OperationTimeout = unpack_uatype('Int32', data)
5222
        obj.UseBinaryEncoding = unpack_uatype('Boolean', data)
5223
        obj.MaxStringLength = unpack_uatype('Int32', data)
5224
        obj.MaxByteStringLength = unpack_uatype('Int32', data)
5225
        obj.MaxArrayLength = unpack_uatype('Int32', data)
5226
        obj.MaxMessageSize = unpack_uatype('Int32', data)
5227
        obj.MaxBufferSize = unpack_uatype('Int32', data)
5228
        obj.ChannelLifetime = unpack_uatype('Int32', data)
5229
        obj.SecurityTokenLifetime = unpack_uatype('Int32', data)
5230
        return obj
5231
    
5232 1
    def __str__(self):
5233
        return 'EndpointConfiguration(' + 'OperationTimeout:' + str(self.OperationTimeout) + ', '  + \
5234
             'UseBinaryEncoding:' + str(self.UseBinaryEncoding) + ', '  + \
5235
             'MaxStringLength:' + str(self.MaxStringLength) + ', '  + \
5236
             'MaxByteStringLength:' + str(self.MaxByteStringLength) + ', '  + \
5237
             'MaxArrayLength:' + str(self.MaxArrayLength) + ', '  + \
5238
             'MaxMessageSize:' + str(self.MaxMessageSize) + ', '  + \
5239
             'MaxBufferSize:' + str(self.MaxBufferSize) + ', '  + \
5240
             'ChannelLifetime:' + str(self.ChannelLifetime) + ', '  + \
5241
             'SecurityTokenLifetime:' + str(self.SecurityTokenLifetime) + ')'
5242
    
5243 1
    __repr__ = __str__
5244
    
5245 1
class SupportedProfile(FrozenClass):
5246
    '''
5247
    :ivar OrganizationUri: 
5248
    :vartype OrganizationUri: String 
5249
    :ivar ProfileId: 
5250
    :vartype ProfileId: String 
5251
    :ivar ComplianceTool: 
5252
    :vartype ComplianceTool: String 
5253
    :ivar ComplianceDate: 
5254
    :vartype ComplianceDate: DateTime 
5255
    :ivar ComplianceLevel: 
5256
    :vartype ComplianceLevel: ComplianceLevel 
5257
    :ivar UnsupportedUnitIds: 
5258
    :vartype UnsupportedUnitIds: String 
5259
    '''
5260 1
    def __init__(self):
5261
        self.OrganizationUri = ''
5262
        self.ProfileId = ''
5263
        self.ComplianceTool = ''
5264
        self.ComplianceDate = datetime.now()
5265
        self.ComplianceLevel = 0
5266
        self.UnsupportedUnitIds = []
5267
        self._freeze()
5268
    
5269 1
    def to_binary(self):
5270
        packet = []
5271
        packet.append(pack_uatype('String', self.OrganizationUri))
5272
        packet.append(pack_uatype('String', self.ProfileId))
5273
        packet.append(pack_uatype('String', self.ComplianceTool))
5274
        packet.append(pack_uatype('DateTime', self.ComplianceDate))
5275
        packet.append(pack_uatype('UInt32', self.ComplianceLevel))
5276
        packet.append(struct.pack('<i', len(self.UnsupportedUnitIds)))
5277
        for fieldname in self.UnsupportedUnitIds:
5278
            packet.append(pack_uatype('String', fieldname))
5279
        return b''.join(packet)
5280
        
5281 1
    @staticmethod
5282
    def from_binary(data):
5283
        obj = SupportedProfile()
5284
        obj.OrganizationUri = unpack_uatype('String', data)
5285
        obj.ProfileId = unpack_uatype('String', data)
5286
        obj.ComplianceTool = unpack_uatype('String', data)
5287
        obj.ComplianceDate = unpack_uatype('DateTime', data)
5288
        obj.ComplianceLevel = unpack_uatype('UInt32', data)
5289
        obj.UnsupportedUnitIds = unpack_uatype_array('String', data)
5290
        return obj
5291
    
5292 1
    def __str__(self):
5293
        return 'SupportedProfile(' + 'OrganizationUri:' + str(self.OrganizationUri) + ', '  + \
5294
             'ProfileId:' + str(self.ProfileId) + ', '  + \
5295
             'ComplianceTool:' + str(self.ComplianceTool) + ', '  + \
5296
             'ComplianceDate:' + str(self.ComplianceDate) + ', '  + \
5297
             'ComplianceLevel:' + str(self.ComplianceLevel) + ', '  + \
5298
             'UnsupportedUnitIds:' + str(self.UnsupportedUnitIds) + ')'
5299
    
5300 1
    __repr__ = __str__
5301
    
5302 1
class SoftwareCertificate(FrozenClass):
5303
    '''
5304
    :ivar ProductName: 
5305
    :vartype ProductName: String 
5306
    :ivar ProductUri: 
5307
    :vartype ProductUri: String 
5308
    :ivar VendorName: 
5309
    :vartype VendorName: String 
5310
    :ivar VendorProductCertificate: 
5311
    :vartype VendorProductCertificate: ByteString 
5312
    :ivar SoftwareVersion: 
5313
    :vartype SoftwareVersion: String 
5314
    :ivar BuildNumber: 
5315
    :vartype BuildNumber: String 
5316
    :ivar BuildDate: 
5317
    :vartype BuildDate: DateTime 
5318
    :ivar IssuedBy: 
5319
    :vartype IssuedBy: String 
5320
    :ivar IssueDate: 
5321
    :vartype IssueDate: DateTime 
5322
    :ivar SupportedProfiles: 
5323
    :vartype SupportedProfiles: SupportedProfile 
5324
    '''
5325 1
    def __init__(self):
5326
        self.ProductName = ''
5327
        self.ProductUri = ''
5328
        self.VendorName = ''
5329
        self.VendorProductCertificate = b''
5330
        self.SoftwareVersion = ''
5331
        self.BuildNumber = ''
5332
        self.BuildDate = datetime.now()
5333
        self.IssuedBy = ''
5334
        self.IssueDate = datetime.now()
5335
        self.SupportedProfiles = []
5336
        self._freeze()
5337
    
5338 1
    def to_binary(self):
5339
        packet = []
5340
        packet.append(pack_uatype('String', self.ProductName))
5341
        packet.append(pack_uatype('String', self.ProductUri))
5342
        packet.append(pack_uatype('String', self.VendorName))
5343
        packet.append(pack_uatype('ByteString', self.VendorProductCertificate))
5344
        packet.append(pack_uatype('String', self.SoftwareVersion))
5345
        packet.append(pack_uatype('String', self.BuildNumber))
5346
        packet.append(pack_uatype('DateTime', self.BuildDate))
5347
        packet.append(pack_uatype('String', self.IssuedBy))
5348
        packet.append(pack_uatype('DateTime', self.IssueDate))
5349
        packet.append(struct.pack('<i', len(self.SupportedProfiles)))
5350
        for fieldname in self.SupportedProfiles:
5351
            packet.append(fieldname.to_binary())
5352
        return b''.join(packet)
5353
        
5354 1
    @staticmethod
5355
    def from_binary(data):
5356
        obj = SoftwareCertificate()
5357
        obj.ProductName = unpack_uatype('String', data)
5358
        obj.ProductUri = unpack_uatype('String', data)
5359
        obj.VendorName = unpack_uatype('String', data)
5360
        obj.VendorProductCertificate = unpack_uatype('ByteString', data)
5361
        obj.SoftwareVersion = unpack_uatype('String', data)
5362
        obj.BuildNumber = unpack_uatype('String', data)
5363
        obj.BuildDate = unpack_uatype('DateTime', data)
5364
        obj.IssuedBy = unpack_uatype('String', data)
5365
        obj.IssueDate = unpack_uatype('DateTime', data)
5366
        length = struct.unpack('<i', data.read(4))[0]
5367
        if length != -1:
5368
            for _ in range(0, length):
5369
                obj.SupportedProfiles.append(SupportedProfile.from_binary(data))
5370
        return obj
5371
    
5372 1
    def __str__(self):
5373
        return 'SoftwareCertificate(' + 'ProductName:' + str(self.ProductName) + ', '  + \
5374
             'ProductUri:' + str(self.ProductUri) + ', '  + \
5375
             'VendorName:' + str(self.VendorName) + ', '  + \
5376
             'VendorProductCertificate:' + str(self.VendorProductCertificate) + ', '  + \
5377
             'SoftwareVersion:' + str(self.SoftwareVersion) + ', '  + \
5378
             'BuildNumber:' + str(self.BuildNumber) + ', '  + \
5379
             'BuildDate:' + str(self.BuildDate) + ', '  + \
5380
             'IssuedBy:' + str(self.IssuedBy) + ', '  + \
5381
             'IssueDate:' + str(self.IssueDate) + ', '  + \
5382
             'SupportedProfiles:' + str(self.SupportedProfiles) + ')'
5383
    
5384 1
    __repr__ = __str__
5385
    
5386 1
class QueryDataDescription(FrozenClass):
5387
    '''
5388
    :ivar RelativePath: 
5389
    :vartype RelativePath: RelativePath 
5390
    :ivar AttributeId: 
5391
    :vartype AttributeId: UInt32 
5392
    :ivar IndexRange: 
5393
    :vartype IndexRange: String 
5394
    '''
5395 1
    def __init__(self):
5396
        self.RelativePath = RelativePath()
5397
        self.AttributeId = 0
5398
        self.IndexRange = ''
5399
        self._freeze()
5400
    
5401 1
    def to_binary(self):
5402
        packet = []
5403
        packet.append(self.RelativePath.to_binary())
5404
        packet.append(pack_uatype('UInt32', self.AttributeId))
5405
        packet.append(pack_uatype('String', self.IndexRange))
5406
        return b''.join(packet)
5407
        
5408 1
    @staticmethod
5409
    def from_binary(data):
5410
        obj = QueryDataDescription()
5411
        obj.RelativePath = RelativePath.from_binary(data)
5412
        obj.AttributeId = unpack_uatype('UInt32', data)
5413
        obj.IndexRange = unpack_uatype('String', data)
5414
        return obj
5415
    
5416 1
    def __str__(self):
5417
        return 'QueryDataDescription(' + 'RelativePath:' + str(self.RelativePath) + ', '  + \
5418
             'AttributeId:' + str(self.AttributeId) + ', '  + \
5419
             'IndexRange:' + str(self.IndexRange) + ')'
5420
    
5421 1
    __repr__ = __str__
5422
    
5423 1
class NodeTypeDescription(FrozenClass):
5424
    '''
5425
    :ivar TypeDefinitionNode: 
5426
    :vartype TypeDefinitionNode: ExpandedNodeId 
5427
    :ivar IncludeSubTypes: 
5428
    :vartype IncludeSubTypes: Boolean 
5429
    :ivar DataToReturn: 
5430
    :vartype DataToReturn: QueryDataDescription 
5431
    '''
5432 1
    def __init__(self):
5433
        self.TypeDefinitionNode = ExpandedNodeId()
5434
        self.IncludeSubTypes = True
5435
        self.DataToReturn = []
5436
        self._freeze()
5437
    
5438 1
    def to_binary(self):
5439
        packet = []
5440
        packet.append(self.TypeDefinitionNode.to_binary())
5441
        packet.append(pack_uatype('Boolean', self.IncludeSubTypes))
5442
        packet.append(struct.pack('<i', len(self.DataToReturn)))
5443
        for fieldname in self.DataToReturn:
5444
            packet.append(fieldname.to_binary())
5445
        return b''.join(packet)
5446
        
5447 1
    @staticmethod
5448
    def from_binary(data):
5449
        obj = NodeTypeDescription()
5450
        obj.TypeDefinitionNode = ExpandedNodeId.from_binary(data)
5451
        obj.IncludeSubTypes = unpack_uatype('Boolean', data)
5452
        length = struct.unpack('<i', data.read(4))[0]
5453
        if length != -1:
5454
            for _ in range(0, length):
5455
                obj.DataToReturn.append(QueryDataDescription.from_binary(data))
5456
        return obj
5457
    
5458 1
    def __str__(self):
5459
        return 'NodeTypeDescription(' + 'TypeDefinitionNode:' + str(self.TypeDefinitionNode) + ', '  + \
5460
             'IncludeSubTypes:' + str(self.IncludeSubTypes) + ', '  + \
5461
             'DataToReturn:' + str(self.DataToReturn) + ')'
5462
    
5463 1
    __repr__ = __str__
5464
    
5465 1
class QueryDataSet(FrozenClass):
5466
    '''
5467
    :ivar NodeId: 
5468
    :vartype NodeId: ExpandedNodeId 
5469
    :ivar TypeDefinitionNode: 
5470
    :vartype TypeDefinitionNode: ExpandedNodeId 
5471
    :ivar Values: 
5472
    :vartype Values: Variant 
5473
    '''
5474 1
    def __init__(self):
5475
        self.NodeId = ExpandedNodeId()
5476
        self.TypeDefinitionNode = ExpandedNodeId()
5477
        self.Values = []
5478
        self._freeze()
5479
    
5480 1
    def to_binary(self):
5481
        packet = []
5482
        packet.append(self.NodeId.to_binary())
5483
        packet.append(self.TypeDefinitionNode.to_binary())
5484
        packet.append(struct.pack('<i', len(self.Values)))
5485
        for fieldname in self.Values:
5486
            packet.append(fieldname.to_binary())
5487
        return b''.join(packet)
5488
        
5489 1
    @staticmethod
5490
    def from_binary(data):
5491
        obj = QueryDataSet()
5492
        obj.NodeId = ExpandedNodeId.from_binary(data)
5493
        obj.TypeDefinitionNode = ExpandedNodeId.from_binary(data)
5494
        length = struct.unpack('<i', data.read(4))[0]
5495
        if length != -1:
5496
            for _ in range(0, length):
5497
                obj.Values.append(Variant.from_binary(data))
5498
        return obj
5499
    
5500 1
    def __str__(self):
5501
        return 'QueryDataSet(' + 'NodeId:' + str(self.NodeId) + ', '  + \
5502
             'TypeDefinitionNode:' + str(self.TypeDefinitionNode) + ', '  + \
5503
             'Values:' + str(self.Values) + ')'
5504
    
5505 1
    __repr__ = __str__
5506
    
5507 1
class NodeReference(FrozenClass):
5508
    '''
5509
    :ivar NodeId: 
5510
    :vartype NodeId: NodeId 
5511
    :ivar ReferenceTypeId: 
5512
    :vartype ReferenceTypeId: NodeId 
5513
    :ivar IsForward: 
5514
    :vartype IsForward: Boolean 
5515
    :ivar ReferencedNodeIds: 
5516
    :vartype ReferencedNodeIds: NodeId 
5517
    '''
5518 1
    def __init__(self):
5519
        self.NodeId = NodeId()
5520
        self.ReferenceTypeId = NodeId()
5521
        self.IsForward = True
5522
        self.ReferencedNodeIds = []
5523
        self._freeze()
5524
    
5525 1
    def to_binary(self):
5526
        packet = []
5527
        packet.append(self.NodeId.to_binary())
5528
        packet.append(self.ReferenceTypeId.to_binary())
5529
        packet.append(pack_uatype('Boolean', self.IsForward))
5530
        packet.append(struct.pack('<i', len(self.ReferencedNodeIds)))
5531
        for fieldname in self.ReferencedNodeIds:
5532
            packet.append(fieldname.to_binary())
5533
        return b''.join(packet)
5534
        
5535 1
    @staticmethod
5536
    def from_binary(data):
5537
        obj = NodeReference()
5538
        obj.NodeId = NodeId.from_binary(data)
5539
        obj.ReferenceTypeId = NodeId.from_binary(data)
5540
        obj.IsForward = unpack_uatype('Boolean', data)
5541
        length = struct.unpack('<i', data.read(4))[0]
5542
        if length != -1:
5543
            for _ in range(0, length):
5544
                obj.ReferencedNodeIds.append(NodeId.from_binary(data))
5545
        return obj
5546
    
5547 1
    def __str__(self):
5548
        return 'NodeReference(' + 'NodeId:' + str(self.NodeId) + ', '  + \
5549
             'ReferenceTypeId:' + str(self.ReferenceTypeId) + ', '  + \
5550
             'IsForward:' + str(self.IsForward) + ', '  + \
5551
             'ReferencedNodeIds:' + str(self.ReferencedNodeIds) + ')'
5552
    
5553 1
    __repr__ = __str__
5554
    
5555 1
class ContentFilterElement(FrozenClass):
5556
    '''
5557
    :ivar FilterOperator: 
5558
    :vartype FilterOperator: FilterOperator 
5559
    :ivar FilterOperands: 
5560
    :vartype FilterOperands: ExtensionObject 
5561
    '''
5562 1
    def __init__(self):
5563
        self.FilterOperator = 0
5564
        self.FilterOperands = []
5565
        self._freeze()
5566
    
5567 1
    def to_binary(self):
5568
        packet = []
5569
        packet.append(pack_uatype('UInt32', self.FilterOperator))
5570
        packet.append(struct.pack('<i', len(self.FilterOperands)))
5571
        for fieldname in self.FilterOperands:
5572
            packet.append(extensionobject_to_binary(fieldname))
5573
        return b''.join(packet)
5574
        
5575 1
    @staticmethod
5576
    def from_binary(data):
5577
        obj = ContentFilterElement()
5578
        obj.FilterOperator = unpack_uatype('UInt32', data)
5579
        length = struct.unpack('<i', data.read(4))[0]
5580
        if length != -1:
5581
            for _ in range(0, length):
5582
                obj.FilterOperands.append(extensionobject_from_binary(data))
5583
        return obj
5584
    
5585 1
    def __str__(self):
5586
        return 'ContentFilterElement(' + 'FilterOperator:' + str(self.FilterOperator) + ', '  + \
5587
             'FilterOperands:' + str(self.FilterOperands) + ')'
5588
    
5589 1
    __repr__ = __str__
5590
    
5591 1
class ContentFilter(FrozenClass):
5592
    '''
5593
    :ivar Elements: 
5594
    :vartype Elements: ContentFilterElement 
5595
    '''
5596 1
    def __init__(self):
5597 1
        self.Elements = []
5598 1
        self._freeze()
5599
    
5600 1
    def to_binary(self):
5601 1
        packet = []
5602 1
        packet.append(struct.pack('<i', len(self.Elements)))
5603 1
        for fieldname in self.Elements:
5604
            packet.append(fieldname.to_binary())
5605 1
        return b''.join(packet)
5606
        
5607 1
    @staticmethod
5608
    def from_binary(data):
5609 1
        obj = ContentFilter()
5610 1
        length = struct.unpack('<i', data.read(4))[0]
5611 1
        if length != -1:
5612 1
            for _ in range(0, length):
5613
                obj.Elements.append(ContentFilterElement.from_binary(data))
5614 1
        return obj
5615
    
5616 1
    def __str__(self):
5617
        return 'ContentFilter(' + 'Elements:' + str(self.Elements) + ')'
5618
    
5619 1
    __repr__ = __str__
5620
    
5621 1
class ElementOperand(FrozenClass):
5622
    '''
5623
    :ivar Index: 
5624
    :vartype Index: UInt32 
5625
    '''
5626 1
    def __init__(self):
5627
        self.Index = 0
5628
        self._freeze()
5629
    
5630 1
    def to_binary(self):
5631
        packet = []
5632
        packet.append(pack_uatype('UInt32', self.Index))
5633
        return b''.join(packet)
5634
        
5635 1
    @staticmethod
5636
    def from_binary(data):
5637
        obj = ElementOperand()
5638
        obj.Index = unpack_uatype('UInt32', data)
5639
        return obj
5640
    
5641 1
    def __str__(self):
5642
        return 'ElementOperand(' + 'Index:' + str(self.Index) + ')'
5643
    
5644 1
    __repr__ = __str__
5645
    
5646 1
class LiteralOperand(FrozenClass):
5647
    '''
5648
    :ivar Value: 
5649
    :vartype Value: Variant 
5650
    '''
5651 1
    def __init__(self):
5652
        self.Value = Variant()
5653
        self._freeze()
5654
    
5655 1
    def to_binary(self):
5656
        packet = []
5657
        packet.append(self.Value.to_binary())
5658
        return b''.join(packet)
5659
        
5660 1
    @staticmethod
5661
    def from_binary(data):
5662
        obj = LiteralOperand()
5663
        obj.Value = Variant.from_binary(data)
5664
        return obj
5665
    
5666 1
    def __str__(self):
5667
        return 'LiteralOperand(' + 'Value:' + str(self.Value) + ')'
5668
    
5669 1
    __repr__ = __str__
5670
    
5671 1
class AttributeOperand(FrozenClass):
5672
    '''
5673
    :ivar NodeId: 
5674
    :vartype NodeId: NodeId 
5675
    :ivar Alias: 
5676
    :vartype Alias: String 
5677
    :ivar BrowsePath: 
5678
    :vartype BrowsePath: RelativePath 
5679
    :ivar AttributeId: 
5680
    :vartype AttributeId: UInt32 
5681
    :ivar IndexRange: 
5682
    :vartype IndexRange: String 
5683
    '''
5684 1
    def __init__(self):
5685
        self.NodeId = NodeId()
5686
        self.Alias = ''
5687
        self.BrowsePath = RelativePath()
5688
        self.AttributeId = 0
5689
        self.IndexRange = ''
5690
        self._freeze()
5691
    
5692 1
    def to_binary(self):
5693
        packet = []
5694
        packet.append(self.NodeId.to_binary())
5695
        packet.append(pack_uatype('String', self.Alias))
5696
        packet.append(self.BrowsePath.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 = AttributeOperand()
5704
        obj.NodeId = NodeId.from_binary(data)
5705
        obj.Alias = unpack_uatype('String', data)
5706
        obj.BrowsePath = RelativePath.from_binary(data)
5707
        obj.AttributeId = unpack_uatype('UInt32', data)
5708
        obj.IndexRange = unpack_uatype('String', data)
5709
        return obj
5710
    
5711 1
    def __str__(self):
5712
        return 'AttributeOperand(' + 'NodeId:' + str(self.NodeId) + ', '  + \
5713
             'Alias:' + str(self.Alias) + ', '  + \
5714
             'BrowsePath:' + str(self.BrowsePath) + ', '  + \
5715
             'AttributeId:' + str(self.AttributeId) + ', '  + \
5716
             'IndexRange:' + str(self.IndexRange) + ')'
5717
    
5718 1
    __repr__ = __str__
5719
    
5720 1
class SimpleAttributeOperand(FrozenClass):
5721
    '''
5722
    :ivar TypeDefinitionId: 
5723
    :vartype TypeDefinitionId: NodeId 
5724
    :ivar BrowsePath: 
5725
    :vartype BrowsePath: QualifiedName 
5726
    :ivar AttributeId: 
5727
    :vartype AttributeId: UInt32 
5728
    :ivar IndexRange: 
5729
    :vartype IndexRange: String 
5730
    '''
5731 1
    def __init__(self):
5732 1
        self.TypeDefinitionId = NodeId()
5733 1
        self.BrowsePath = []
5734 1
        self.AttributeId = 0
5735 1
        self.IndexRange = ''
5736 1
        self._freeze()
5737
    
5738 1
    def to_binary(self):
5739 1
        packet = []
5740 1
        packet.append(self.TypeDefinitionId.to_binary())
5741 1
        packet.append(struct.pack('<i', len(self.BrowsePath)))
5742 1
        for fieldname in self.BrowsePath:
5743 1
            packet.append(fieldname.to_binary())
5744 1
        packet.append(pack_uatype('UInt32', self.AttributeId))
5745 1
        packet.append(pack_uatype('String', self.IndexRange))
5746 1
        return b''.join(packet)
5747
        
5748 1
    @staticmethod
5749
    def from_binary(data):
5750 1
        obj = SimpleAttributeOperand()
5751 1
        obj.TypeDefinitionId = NodeId.from_binary(data)
5752 1
        length = struct.unpack('<i', data.read(4))[0]
5753 1
        if length != -1:
5754 1
            for _ in range(0, length):
5755 1
                obj.BrowsePath.append(QualifiedName.from_binary(data))
5756 1
        obj.AttributeId = unpack_uatype('UInt32', data)
5757 1
        obj.IndexRange = unpack_uatype('String', data)
5758 1
        return obj
5759
    
5760 1
    def __str__(self):
5761
        return 'SimpleAttributeOperand(' + 'TypeDefinitionId:' + str(self.TypeDefinitionId) + ', '  + \
5762
             'BrowsePath:' + str(self.BrowsePath) + ', '  + \
5763
             'AttributeId:' + str(self.AttributeId) + ', '  + \
5764
             'IndexRange:' + str(self.IndexRange) + ')'
5765
    
5766 1
    __repr__ = __str__
5767
    
5768 1
class ContentFilterElementResult(FrozenClass):
5769
    '''
5770
    :ivar StatusCode: 
5771
    :vartype StatusCode: StatusCode 
5772
    :ivar OperandStatusCodes: 
5773
    :vartype OperandStatusCodes: StatusCode 
5774
    :ivar OperandDiagnosticInfos: 
5775
    :vartype OperandDiagnosticInfos: DiagnosticInfo 
5776
    '''
5777 1
    def __init__(self):
5778
        self.StatusCode = StatusCode()
5779
        self.OperandStatusCodes = []
5780
        self.OperandDiagnosticInfos = []
5781
        self._freeze()
5782
    
5783 1
    def to_binary(self):
5784
        packet = []
5785
        packet.append(self.StatusCode.to_binary())
5786
        packet.append(struct.pack('<i', len(self.OperandStatusCodes)))
5787
        for fieldname in self.OperandStatusCodes:
5788
            packet.append(fieldname.to_binary())
5789
        packet.append(struct.pack('<i', len(self.OperandDiagnosticInfos)))
5790
        for fieldname in self.OperandDiagnosticInfos:
5791
            packet.append(fieldname.to_binary())
5792
        return b''.join(packet)
5793
        
5794 1
    @staticmethod
5795
    def from_binary(data):
5796
        obj = ContentFilterElementResult()
5797
        obj.StatusCode = StatusCode.from_binary(data)
5798
        length = struct.unpack('<i', data.read(4))[0]
5799
        if length != -1:
5800
            for _ in range(0, length):
5801
                obj.OperandStatusCodes.append(StatusCode.from_binary(data))
5802
        length = struct.unpack('<i', data.read(4))[0]
5803
        if length != -1:
5804
            for _ in range(0, length):
5805
                obj.OperandDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
5806
        return obj
5807
    
5808 1
    def __str__(self):
5809
        return 'ContentFilterElementResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
5810
             'OperandStatusCodes:' + str(self.OperandStatusCodes) + ', '  + \
5811
             'OperandDiagnosticInfos:' + str(self.OperandDiagnosticInfos) + ')'
5812
    
5813 1
    __repr__ = __str__
5814
    
5815 1
class ContentFilterResult(FrozenClass):
5816
    '''
5817
    :ivar ElementResults: 
5818
    :vartype ElementResults: ContentFilterElementResult 
5819
    :ivar ElementDiagnosticInfos: 
5820
    :vartype ElementDiagnosticInfos: DiagnosticInfo 
5821
    '''
5822 1
    def __init__(self):
5823
        self.ElementResults = []
5824
        self.ElementDiagnosticInfos = []
5825
        self._freeze()
5826
    
5827 1
    def to_binary(self):
5828
        packet = []
5829
        packet.append(struct.pack('<i', len(self.ElementResults)))
5830
        for fieldname in self.ElementResults:
5831
            packet.append(fieldname.to_binary())
5832
        packet.append(struct.pack('<i', len(self.ElementDiagnosticInfos)))
5833
        for fieldname in self.ElementDiagnosticInfos:
5834
            packet.append(fieldname.to_binary())
5835
        return b''.join(packet)
5836
        
5837 1
    @staticmethod
5838
    def from_binary(data):
5839
        obj = ContentFilterResult()
5840
        length = struct.unpack('<i', data.read(4))[0]
5841
        if length != -1:
5842
            for _ in range(0, length):
5843
                obj.ElementResults.append(ContentFilterElementResult.from_binary(data))
5844
        length = struct.unpack('<i', data.read(4))[0]
5845
        if length != -1:
5846
            for _ in range(0, length):
5847
                obj.ElementDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
5848
        return obj
5849
    
5850 1
    def __str__(self):
5851
        return 'ContentFilterResult(' + 'ElementResults:' + str(self.ElementResults) + ', '  + \
5852
             'ElementDiagnosticInfos:' + str(self.ElementDiagnosticInfos) + ')'
5853
    
5854 1
    __repr__ = __str__
5855
    
5856 1
class ParsingResult(FrozenClass):
5857
    '''
5858
    :ivar StatusCode: 
5859
    :vartype StatusCode: StatusCode 
5860
    :ivar DataStatusCodes: 
5861
    :vartype DataStatusCodes: StatusCode 
5862
    :ivar DataDiagnosticInfos: 
5863
    :vartype DataDiagnosticInfos: DiagnosticInfo 
5864
    '''
5865 1
    def __init__(self):
5866
        self.StatusCode = StatusCode()
5867
        self.DataStatusCodes = []
5868
        self.DataDiagnosticInfos = []
5869
        self._freeze()
5870
    
5871 1
    def to_binary(self):
5872
        packet = []
5873
        packet.append(self.StatusCode.to_binary())
5874
        packet.append(struct.pack('<i', len(self.DataStatusCodes)))
5875
        for fieldname in self.DataStatusCodes:
5876
            packet.append(fieldname.to_binary())
5877
        packet.append(struct.pack('<i', len(self.DataDiagnosticInfos)))
5878
        for fieldname in self.DataDiagnosticInfos:
5879
            packet.append(fieldname.to_binary())
5880
        return b''.join(packet)
5881
        
5882 1
    @staticmethod
5883
    def from_binary(data):
5884
        obj = ParsingResult()
5885
        obj.StatusCode = StatusCode.from_binary(data)
5886
        length = struct.unpack('<i', data.read(4))[0]
5887
        if length != -1:
5888
            for _ in range(0, length):
5889
                obj.DataStatusCodes.append(StatusCode.from_binary(data))
5890
        length = struct.unpack('<i', data.read(4))[0]
5891
        if length != -1:
5892
            for _ in range(0, length):
5893
                obj.DataDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
5894
        return obj
5895
    
5896 1
    def __str__(self):
5897
        return 'ParsingResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
5898
             'DataStatusCodes:' + str(self.DataStatusCodes) + ', '  + \
5899
             'DataDiagnosticInfos:' + str(self.DataDiagnosticInfos) + ')'
5900
    
5901 1
    __repr__ = __str__
5902
    
5903 1
class QueryFirstParameters(FrozenClass):
5904
    '''
5905
    :ivar View: 
5906
    :vartype View: ViewDescription 
5907
    :ivar NodeTypes: 
5908
    :vartype NodeTypes: NodeTypeDescription 
5909
    :ivar Filter: 
5910
    :vartype Filter: ContentFilter 
5911
    :ivar MaxDataSetsToReturn: 
5912
    :vartype MaxDataSetsToReturn: UInt32 
5913
    :ivar MaxReferencesToReturn: 
5914
    :vartype MaxReferencesToReturn: UInt32 
5915
    '''
5916 1
    def __init__(self):
5917
        self.View = ViewDescription()
5918
        self.NodeTypes = []
5919
        self.Filter = ContentFilter()
5920
        self.MaxDataSetsToReturn = 0
5921
        self.MaxReferencesToReturn = 0
5922
        self._freeze()
5923
    
5924 1
    def to_binary(self):
5925
        packet = []
5926
        packet.append(self.View.to_binary())
5927
        packet.append(struct.pack('<i', len(self.NodeTypes)))
5928
        for fieldname in self.NodeTypes:
5929
            packet.append(fieldname.to_binary())
5930
        packet.append(self.Filter.to_binary())
5931
        packet.append(pack_uatype('UInt32', self.MaxDataSetsToReturn))
5932
        packet.append(pack_uatype('UInt32', self.MaxReferencesToReturn))
5933
        return b''.join(packet)
5934
        
5935 1
    @staticmethod
5936
    def from_binary(data):
5937
        obj = QueryFirstParameters()
5938
        obj.View = ViewDescription.from_binary(data)
5939
        length = struct.unpack('<i', data.read(4))[0]
5940
        if length != -1:
5941
            for _ in range(0, length):
5942
                obj.NodeTypes.append(NodeTypeDescription.from_binary(data))
5943
        obj.Filter = ContentFilter.from_binary(data)
5944
        obj.MaxDataSetsToReturn = unpack_uatype('UInt32', data)
5945
        obj.MaxReferencesToReturn = unpack_uatype('UInt32', data)
5946
        return obj
5947
    
5948 1
    def __str__(self):
5949
        return 'QueryFirstParameters(' + 'View:' + str(self.View) + ', '  + \
5950
             'NodeTypes:' + str(self.NodeTypes) + ', '  + \
5951
             'Filter:' + str(self.Filter) + ', '  + \
5952
             'MaxDataSetsToReturn:' + str(self.MaxDataSetsToReturn) + ', '  + \
5953
             'MaxReferencesToReturn:' + str(self.MaxReferencesToReturn) + ')'
5954
    
5955 1
    __repr__ = __str__
5956
    
5957 1
class QueryFirstRequest(FrozenClass):
5958
    '''
5959
    :ivar TypeId: 
5960
    :vartype TypeId: NodeId 
5961
    :ivar RequestHeader: 
5962
    :vartype RequestHeader: RequestHeader 
5963
    :ivar Parameters: 
5964
    :vartype Parameters: QueryFirstParameters 
5965
    '''
5966 1
    def __init__(self):
5967
        self.TypeId = FourByteNodeId(ObjectIds.QueryFirstRequest_Encoding_DefaultBinary)
5968
        self.RequestHeader = RequestHeader()
5969
        self.Parameters = QueryFirstParameters()
5970
        self._freeze()
5971
    
5972 1
    def to_binary(self):
5973
        packet = []
5974
        packet.append(self.TypeId.to_binary())
5975
        packet.append(self.RequestHeader.to_binary())
5976
        packet.append(self.Parameters.to_binary())
5977
        return b''.join(packet)
5978
        
5979 1
    @staticmethod
5980
    def from_binary(data):
5981
        obj = QueryFirstRequest()
5982
        obj.TypeId = NodeId.from_binary(data)
5983
        obj.RequestHeader = RequestHeader.from_binary(data)
5984
        obj.Parameters = QueryFirstParameters.from_binary(data)
5985
        return obj
5986
    
5987 1
    def __str__(self):
5988
        return 'QueryFirstRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
5989
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
5990
             'Parameters:' + str(self.Parameters) + ')'
5991
    
5992 1
    __repr__ = __str__
5993
    
5994 1
class QueryFirstResult(FrozenClass):
5995
    '''
5996
    :ivar QueryDataSets: 
5997
    :vartype QueryDataSets: QueryDataSet 
5998
    :ivar ContinuationPoint: 
5999
    :vartype ContinuationPoint: ByteString 
6000
    :ivar ParsingResults: 
6001
    :vartype ParsingResults: ParsingResult 
6002
    :ivar DiagnosticInfos: 
6003
    :vartype DiagnosticInfos: DiagnosticInfo 
6004
    :ivar FilterResult: 
6005
    :vartype FilterResult: ContentFilterResult 
6006
    '''
6007 1
    def __init__(self):
6008
        self.QueryDataSets = []
6009
        self.ContinuationPoint = b''
6010
        self.ParsingResults = []
6011
        self.DiagnosticInfos = []
6012
        self.FilterResult = ContentFilterResult()
6013
        self._freeze()
6014
    
6015 1
    def to_binary(self):
6016
        packet = []
6017
        packet.append(struct.pack('<i', len(self.QueryDataSets)))
6018
        for fieldname in self.QueryDataSets:
6019
            packet.append(fieldname.to_binary())
6020
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
6021
        packet.append(struct.pack('<i', len(self.ParsingResults)))
6022
        for fieldname in self.ParsingResults:
6023
            packet.append(fieldname.to_binary())
6024
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
6025
        for fieldname in self.DiagnosticInfos:
6026
            packet.append(fieldname.to_binary())
6027
        packet.append(self.FilterResult.to_binary())
6028
        return b''.join(packet)
6029
        
6030 1
    @staticmethod
6031
    def from_binary(data):
6032
        obj = QueryFirstResult()
6033
        length = struct.unpack('<i', data.read(4))[0]
6034
        if length != -1:
6035
            for _ in range(0, length):
6036
                obj.QueryDataSets.append(QueryDataSet.from_binary(data))
6037
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
6038
        length = struct.unpack('<i', data.read(4))[0]
6039
        if length != -1:
6040
            for _ in range(0, length):
6041
                obj.ParsingResults.append(ParsingResult.from_binary(data))
6042
        length = struct.unpack('<i', data.read(4))[0]
6043
        if length != -1:
6044
            for _ in range(0, length):
6045
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
6046
        obj.FilterResult = ContentFilterResult.from_binary(data)
6047
        return obj
6048
    
6049 1
    def __str__(self):
6050
        return 'QueryFirstResult(' + 'QueryDataSets:' + str(self.QueryDataSets) + ', '  + \
6051
             'ContinuationPoint:' + str(self.ContinuationPoint) + ', '  + \
6052
             'ParsingResults:' + str(self.ParsingResults) + ', '  + \
6053
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ', '  + \
6054
             'FilterResult:' + str(self.FilterResult) + ')'
6055
    
6056 1
    __repr__ = __str__
6057
    
6058 1
class QueryFirstResponse(FrozenClass):
6059
    '''
6060
    :ivar TypeId: 
6061
    :vartype TypeId: NodeId 
6062
    :ivar ResponseHeader: 
6063
    :vartype ResponseHeader: ResponseHeader 
6064
    :ivar Parameters: 
6065
    :vartype Parameters: QueryFirstResult 
6066
    '''
6067 1
    def __init__(self):
6068
        self.TypeId = FourByteNodeId(ObjectIds.QueryFirstResponse_Encoding_DefaultBinary)
6069
        self.ResponseHeader = ResponseHeader()
6070
        self.Parameters = QueryFirstResult()
6071
        self._freeze()
6072
    
6073 1
    def to_binary(self):
6074
        packet = []
6075
        packet.append(self.TypeId.to_binary())
6076
        packet.append(self.ResponseHeader.to_binary())
6077
        packet.append(self.Parameters.to_binary())
6078
        return b''.join(packet)
6079
        
6080 1
    @staticmethod
6081
    def from_binary(data):
6082
        obj = QueryFirstResponse()
6083
        obj.TypeId = NodeId.from_binary(data)
6084
        obj.ResponseHeader = ResponseHeader.from_binary(data)
6085
        obj.Parameters = QueryFirstResult.from_binary(data)
6086
        return obj
6087
    
6088 1
    def __str__(self):
6089
        return 'QueryFirstResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6090
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
6091
             'Parameters:' + str(self.Parameters) + ')'
6092
    
6093 1
    __repr__ = __str__
6094
    
6095 1
class QueryNextParameters(FrozenClass):
6096
    '''
6097
    :ivar ReleaseContinuationPoint: 
6098
    :vartype ReleaseContinuationPoint: Boolean 
6099
    :ivar ContinuationPoint: 
6100
    :vartype ContinuationPoint: ByteString 
6101
    '''
6102 1
    def __init__(self):
6103
        self.ReleaseContinuationPoint = True
6104
        self.ContinuationPoint = b''
6105
        self._freeze()
6106
    
6107 1
    def to_binary(self):
6108
        packet = []
6109
        packet.append(pack_uatype('Boolean', self.ReleaseContinuationPoint))
6110
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
6111
        return b''.join(packet)
6112
        
6113 1
    @staticmethod
6114
    def from_binary(data):
6115
        obj = QueryNextParameters()
6116
        obj.ReleaseContinuationPoint = unpack_uatype('Boolean', data)
6117
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
6118
        return obj
6119
    
6120 1
    def __str__(self):
6121
        return 'QueryNextParameters(' + 'ReleaseContinuationPoint:' + str(self.ReleaseContinuationPoint) + ', '  + \
6122
             'ContinuationPoint:' + str(self.ContinuationPoint) + ')'
6123
    
6124 1
    __repr__ = __str__
6125
    
6126 1
class QueryNextRequest(FrozenClass):
6127
    '''
6128
    :ivar TypeId: 
6129
    :vartype TypeId: NodeId 
6130
    :ivar RequestHeader: 
6131
    :vartype RequestHeader: RequestHeader 
6132
    :ivar Parameters: 
6133
    :vartype Parameters: QueryNextParameters 
6134
    '''
6135 1
    def __init__(self):
6136
        self.TypeId = FourByteNodeId(ObjectIds.QueryNextRequest_Encoding_DefaultBinary)
6137
        self.RequestHeader = RequestHeader()
6138
        self.Parameters = QueryNextParameters()
6139
        self._freeze()
6140
    
6141 1
    def to_binary(self):
6142
        packet = []
6143
        packet.append(self.TypeId.to_binary())
6144
        packet.append(self.RequestHeader.to_binary())
6145
        packet.append(self.Parameters.to_binary())
6146
        return b''.join(packet)
6147
        
6148 1
    @staticmethod
6149
    def from_binary(data):
6150
        obj = QueryNextRequest()
6151
        obj.TypeId = NodeId.from_binary(data)
6152
        obj.RequestHeader = RequestHeader.from_binary(data)
6153
        obj.Parameters = QueryNextParameters.from_binary(data)
6154
        return obj
6155
    
6156 1
    def __str__(self):
6157
        return 'QueryNextRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6158
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
6159
             'Parameters:' + str(self.Parameters) + ')'
6160
    
6161 1
    __repr__ = __str__
6162
    
6163 1
class QueryNextResult(FrozenClass):
6164
    '''
6165
    :ivar QueryDataSets: 
6166
    :vartype QueryDataSets: QueryDataSet 
6167
    :ivar RevisedContinuationPoint: 
6168
    :vartype RevisedContinuationPoint: ByteString 
6169
    '''
6170 1
    def __init__(self):
6171
        self.QueryDataSets = []
6172
        self.RevisedContinuationPoint = b''
6173
        self._freeze()
6174
    
6175 1
    def to_binary(self):
6176
        packet = []
6177
        packet.append(struct.pack('<i', len(self.QueryDataSets)))
6178
        for fieldname in self.QueryDataSets:
6179
            packet.append(fieldname.to_binary())
6180
        packet.append(pack_uatype('ByteString', self.RevisedContinuationPoint))
6181
        return b''.join(packet)
6182
        
6183 1
    @staticmethod
6184
    def from_binary(data):
6185
        obj = QueryNextResult()
6186
        length = struct.unpack('<i', data.read(4))[0]
6187
        if length != -1:
6188
            for _ in range(0, length):
6189
                obj.QueryDataSets.append(QueryDataSet.from_binary(data))
6190
        obj.RevisedContinuationPoint = unpack_uatype('ByteString', data)
6191
        return obj
6192
    
6193 1
    def __str__(self):
6194
        return 'QueryNextResult(' + 'QueryDataSets:' + str(self.QueryDataSets) + ', '  + \
6195
             'RevisedContinuationPoint:' + str(self.RevisedContinuationPoint) + ')'
6196
    
6197 1
    __repr__ = __str__
6198
    
6199 1
class QueryNextResponse(FrozenClass):
6200
    '''
6201
    :ivar TypeId: 
6202
    :vartype TypeId: NodeId 
6203
    :ivar ResponseHeader: 
6204
    :vartype ResponseHeader: ResponseHeader 
6205
    :ivar Parameters: 
6206
    :vartype Parameters: QueryNextResult 
6207
    '''
6208 1
    def __init__(self):
6209
        self.TypeId = FourByteNodeId(ObjectIds.QueryNextResponse_Encoding_DefaultBinary)
6210
        self.ResponseHeader = ResponseHeader()
6211
        self.Parameters = QueryNextResult()
6212
        self._freeze()
6213
    
6214 1
    def to_binary(self):
6215
        packet = []
6216
        packet.append(self.TypeId.to_binary())
6217
        packet.append(self.ResponseHeader.to_binary())
6218
        packet.append(self.Parameters.to_binary())
6219
        return b''.join(packet)
6220
        
6221 1
    @staticmethod
6222
    def from_binary(data):
6223
        obj = QueryNextResponse()
6224
        obj.TypeId = NodeId.from_binary(data)
6225
        obj.ResponseHeader = ResponseHeader.from_binary(data)
6226
        obj.Parameters = QueryNextResult.from_binary(data)
6227
        return obj
6228
    
6229 1
    def __str__(self):
6230
        return 'QueryNextResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6231
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
6232
             'Parameters:' + str(self.Parameters) + ')'
6233
    
6234 1
    __repr__ = __str__
6235
    
6236 1
class ReadValueId(FrozenClass):
6237
    '''
6238
    :ivar NodeId: 
6239
    :vartype NodeId: NodeId 
6240
    :ivar AttributeId: 
6241
    :vartype AttributeId: UInt32 
6242
    :ivar IndexRange: 
6243
    :vartype IndexRange: String 
6244
    :ivar DataEncoding: 
6245
    :vartype DataEncoding: QualifiedName 
6246
    '''
6247 1
    def __init__(self):
6248 1
        self.NodeId = NodeId()
6249 1
        self.AttributeId = 0
6250 1
        self.IndexRange = ''
6251 1
        self.DataEncoding = QualifiedName()
6252 1
        self._freeze()
6253
    
6254 1
    def to_binary(self):
6255 1
        packet = []
6256 1
        packet.append(self.NodeId.to_binary())
6257 1
        packet.append(pack_uatype('UInt32', self.AttributeId))
6258 1
        packet.append(pack_uatype('String', self.IndexRange))
6259 1
        packet.append(self.DataEncoding.to_binary())
6260 1
        return b''.join(packet)
6261
        
6262 1
    @staticmethod
6263
    def from_binary(data):
6264 1
        obj = ReadValueId()
6265 1
        obj.NodeId = NodeId.from_binary(data)
6266 1
        obj.AttributeId = unpack_uatype('UInt32', data)
6267 1
        obj.IndexRange = unpack_uatype('String', data)
6268 1
        obj.DataEncoding = QualifiedName.from_binary(data)
6269 1
        return obj
6270
    
6271 1
    def __str__(self):
6272
        return 'ReadValueId(' + 'NodeId:' + str(self.NodeId) + ', '  + \
6273
             'AttributeId:' + str(self.AttributeId) + ', '  + \
6274
             'IndexRange:' + str(self.IndexRange) + ', '  + \
6275
             'DataEncoding:' + str(self.DataEncoding) + ')'
6276
    
6277 1
    __repr__ = __str__
6278
    
6279 1
class ReadParameters(FrozenClass):
6280
    '''
6281
    :ivar MaxAge: 
6282
    :vartype MaxAge: Double 
6283
    :ivar TimestampsToReturn: 
6284
    :vartype TimestampsToReturn: TimestampsToReturn 
6285
    :ivar NodesToRead: 
6286
    :vartype NodesToRead: ReadValueId 
6287
    '''
6288 1
    def __init__(self):
6289 1
        self.MaxAge = 0
6290 1
        self.TimestampsToReturn = 0
6291 1
        self.NodesToRead = []
6292 1
        self._freeze()
6293
    
6294 1
    def to_binary(self):
6295 1
        packet = []
6296 1
        packet.append(pack_uatype('Double', self.MaxAge))
6297 1
        packet.append(pack_uatype('UInt32', self.TimestampsToReturn))
6298 1
        packet.append(struct.pack('<i', len(self.NodesToRead)))
6299 1
        for fieldname in self.NodesToRead:
6300 1
            packet.append(fieldname.to_binary())
6301 1
        return b''.join(packet)
6302
        
6303 1
    @staticmethod
6304
    def from_binary(data):
6305 1
        obj = ReadParameters()
6306 1
        obj.MaxAge = unpack_uatype('Double', data)
6307 1
        obj.TimestampsToReturn = unpack_uatype('UInt32', data)
6308 1
        length = struct.unpack('<i', data.read(4))[0]
6309 1
        if length != -1:
6310 1
            for _ in range(0, length):
6311 1
                obj.NodesToRead.append(ReadValueId.from_binary(data))
6312 1
        return obj
6313
    
6314 1
    def __str__(self):
6315
        return 'ReadParameters(' + 'MaxAge:' + str(self.MaxAge) + ', '  + \
6316
             'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', '  + \
6317
             'NodesToRead:' + str(self.NodesToRead) + ')'
6318
    
6319 1
    __repr__ = __str__
6320
    
6321 1
class ReadRequest(FrozenClass):
6322
    '''
6323
    :ivar TypeId: 
6324
    :vartype TypeId: NodeId 
6325
    :ivar RequestHeader: 
6326
    :vartype RequestHeader: RequestHeader 
6327
    :ivar Parameters: 
6328
    :vartype Parameters: ReadParameters 
6329
    '''
6330 1
    def __init__(self):
6331 1
        self.TypeId = FourByteNodeId(ObjectIds.ReadRequest_Encoding_DefaultBinary)
6332 1
        self.RequestHeader = RequestHeader()
6333 1
        self.Parameters = ReadParameters()
6334 1
        self._freeze()
6335
    
6336 1
    def to_binary(self):
6337 1
        packet = []
6338 1
        packet.append(self.TypeId.to_binary())
6339 1
        packet.append(self.RequestHeader.to_binary())
6340 1
        packet.append(self.Parameters.to_binary())
6341 1
        return b''.join(packet)
6342
        
6343 1
    @staticmethod
6344
    def from_binary(data):
6345
        obj = ReadRequest()
6346
        obj.TypeId = NodeId.from_binary(data)
6347
        obj.RequestHeader = RequestHeader.from_binary(data)
6348
        obj.Parameters = ReadParameters.from_binary(data)
6349
        return obj
6350
    
6351 1
    def __str__(self):
6352
        return 'ReadRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6353
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
6354
             'Parameters:' + str(self.Parameters) + ')'
6355
    
6356 1
    __repr__ = __str__
6357
    
6358 1
class ReadResponse(FrozenClass):
6359
    '''
6360
    :ivar TypeId: 
6361
    :vartype TypeId: NodeId 
6362
    :ivar ResponseHeader: 
6363
    :vartype ResponseHeader: ResponseHeader 
6364
    :ivar Results: 
6365
    :vartype Results: DataValue 
6366
    :ivar DiagnosticInfos: 
6367
    :vartype DiagnosticInfos: DiagnosticInfo 
6368
    '''
6369 1
    def __init__(self):
6370 1
        self.TypeId = FourByteNodeId(ObjectIds.ReadResponse_Encoding_DefaultBinary)
6371 1
        self.ResponseHeader = ResponseHeader()
6372 1
        self.Results = []
6373 1
        self.DiagnosticInfos = []
6374 1
        self._freeze()
6375
    
6376 1
    def to_binary(self):
6377 1
        packet = []
6378 1
        packet.append(self.TypeId.to_binary())
6379 1
        packet.append(self.ResponseHeader.to_binary())
6380 1
        packet.append(struct.pack('<i', len(self.Results)))
6381 1
        for fieldname in self.Results:
6382 1
            packet.append(fieldname.to_binary())
6383 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
6384 1
        for fieldname in self.DiagnosticInfos:
6385
            packet.append(fieldname.to_binary())
6386 1
        return b''.join(packet)
6387
        
6388 1
    @staticmethod
6389
    def from_binary(data):
6390 1
        obj = ReadResponse()
6391 1
        obj.TypeId = NodeId.from_binary(data)
6392 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
6393 1
        length = struct.unpack('<i', data.read(4))[0]
6394 1
        if length != -1:
6395 1
            for _ in range(0, length):
6396 1
                obj.Results.append(DataValue.from_binary(data))
6397 1
        length = struct.unpack('<i', data.read(4))[0]
6398 1
        if length != -1:
6399 1
            for _ in range(0, length):
6400
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
6401 1
        return obj
6402
    
6403 1
    def __str__(self):
6404
        return 'ReadResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6405
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
6406
             'Results:' + str(self.Results) + ', '  + \
6407
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
6408
    
6409 1
    __repr__ = __str__
6410
    
6411 1
class HistoryReadValueId(FrozenClass):
6412
    '''
6413
    :ivar NodeId: 
6414
    :vartype NodeId: NodeId 
6415
    :ivar IndexRange: 
6416
    :vartype IndexRange: String 
6417
    :ivar DataEncoding: 
6418
    :vartype DataEncoding: QualifiedName 
6419
    :ivar ContinuationPoint: 
6420
    :vartype ContinuationPoint: ByteString 
6421
    '''
6422 1
    def __init__(self):
6423
        self.NodeId = NodeId()
6424
        self.IndexRange = ''
6425
        self.DataEncoding = QualifiedName()
6426
        self.ContinuationPoint = b''
6427
        self._freeze()
6428
    
6429 1
    def to_binary(self):
6430
        packet = []
6431
        packet.append(self.NodeId.to_binary())
6432
        packet.append(pack_uatype('String', self.IndexRange))
6433
        packet.append(self.DataEncoding.to_binary())
6434
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
6435
        return b''.join(packet)
6436
        
6437 1
    @staticmethod
6438
    def from_binary(data):
6439
        obj = HistoryReadValueId()
6440
        obj.NodeId = NodeId.from_binary(data)
6441
        obj.IndexRange = unpack_uatype('String', data)
6442
        obj.DataEncoding = QualifiedName.from_binary(data)
6443
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
6444
        return obj
6445
    
6446 1
    def __str__(self):
6447
        return 'HistoryReadValueId(' + 'NodeId:' + str(self.NodeId) + ', '  + \
6448
             'IndexRange:' + str(self.IndexRange) + ', '  + \
6449
             'DataEncoding:' + str(self.DataEncoding) + ', '  + \
6450
             'ContinuationPoint:' + str(self.ContinuationPoint) + ')'
6451
    
6452 1
    __repr__ = __str__
6453
    
6454 1
class HistoryReadResult(FrozenClass):
6455
    '''
6456
    :ivar StatusCode: 
6457
    :vartype StatusCode: StatusCode 
6458
    :ivar ContinuationPoint: 
6459
    :vartype ContinuationPoint: ByteString 
6460
    :ivar HistoryData: 
6461
    :vartype HistoryData: ExtensionObject 
6462
    '''
6463 1
    def __init__(self):
6464
        self.StatusCode = StatusCode()
6465
        self.ContinuationPoint = b''
6466
        self.HistoryData = None
6467
        self._freeze()
6468
    
6469 1
    def to_binary(self):
6470
        packet = []
6471
        packet.append(self.StatusCode.to_binary())
6472
        packet.append(pack_uatype('ByteString', self.ContinuationPoint))
6473
        packet.append(extensionobject_to_binary(self.HistoryData))
6474
        return b''.join(packet)
6475
        
6476 1
    @staticmethod
6477
    def from_binary(data):
6478
        obj = HistoryReadResult()
6479
        obj.StatusCode = StatusCode.from_binary(data)
6480
        obj.ContinuationPoint = unpack_uatype('ByteString', data)
6481
        obj.HistoryData = extensionobject_from_binary(data)
6482
        return obj
6483
    
6484 1
    def __str__(self):
6485
        return 'HistoryReadResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
6486
             'ContinuationPoint:' + str(self.ContinuationPoint) + ', '  + \
6487
             'HistoryData:' + str(self.HistoryData) + ')'
6488
    
6489 1
    __repr__ = __str__
6490
    
6491 1
class HistoryReadDetails(FrozenClass):
6492
    '''
6493
    '''
6494 1
    def __init__(self):
6495
        self._freeze()
6496
    
6497 1
    def to_binary(self):
6498
        packet = []
6499
        return b''.join(packet)
6500
        
6501 1
    @staticmethod
6502
    def from_binary(data):
6503
        obj = HistoryReadDetails()
6504
        return obj
6505
    
6506 1
    def __str__(self):
6507
        return 'HistoryReadDetails(' +  + ')'
6508
    
6509 1
    __repr__ = __str__
6510
    
6511 1
class ReadEventDetails(FrozenClass):
6512
    '''
6513
    :ivar NumValuesPerNode: 
6514
    :vartype NumValuesPerNode: UInt32 
6515
    :ivar StartTime: 
6516
    :vartype StartTime: DateTime 
6517
    :ivar EndTime: 
6518
    :vartype EndTime: DateTime 
6519
    :ivar Filter: 
6520
    :vartype Filter: EventFilter 
6521
    '''
6522 1
    def __init__(self):
6523
        self.NumValuesPerNode = 0
6524
        self.StartTime = datetime.now()
6525
        self.EndTime = datetime.now()
6526
        self.Filter = EventFilter()
6527
        self._freeze()
6528
    
6529 1
    def to_binary(self):
6530
        packet = []
6531
        packet.append(pack_uatype('UInt32', self.NumValuesPerNode))
6532
        packet.append(pack_uatype('DateTime', self.StartTime))
6533
        packet.append(pack_uatype('DateTime', self.EndTime))
6534
        packet.append(self.Filter.to_binary())
6535
        return b''.join(packet)
6536
        
6537 1
    @staticmethod
6538
    def from_binary(data):
6539
        obj = ReadEventDetails()
6540
        obj.NumValuesPerNode = unpack_uatype('UInt32', data)
6541
        obj.StartTime = unpack_uatype('DateTime', data)
6542
        obj.EndTime = unpack_uatype('DateTime', data)
6543
        obj.Filter = EventFilter.from_binary(data)
6544
        return obj
6545
    
6546 1
    def __str__(self):
6547
        return 'ReadEventDetails(' + 'NumValuesPerNode:' + str(self.NumValuesPerNode) + ', '  + \
6548
             'StartTime:' + str(self.StartTime) + ', '  + \
6549
             'EndTime:' + str(self.EndTime) + ', '  + \
6550
             'Filter:' + str(self.Filter) + ')'
6551
    
6552 1
    __repr__ = __str__
6553
    
6554 1
class ReadRawModifiedDetails(FrozenClass):
6555
    '''
6556
    :ivar IsReadModified: 
6557
    :vartype IsReadModified: Boolean 
6558
    :ivar StartTime: 
6559
    :vartype StartTime: DateTime 
6560
    :ivar EndTime: 
6561
    :vartype EndTime: DateTime 
6562
    :ivar NumValuesPerNode: 
6563
    :vartype NumValuesPerNode: UInt32 
6564
    :ivar ReturnBounds: 
6565
    :vartype ReturnBounds: Boolean 
6566
    '''
6567 1
    def __init__(self):
6568
        self.IsReadModified = True
6569
        self.StartTime = datetime.now()
6570
        self.EndTime = datetime.now()
6571
        self.NumValuesPerNode = 0
6572
        self.ReturnBounds = True
6573
        self._freeze()
6574
    
6575 1
    def to_binary(self):
6576
        packet = []
6577
        packet.append(pack_uatype('Boolean', self.IsReadModified))
6578
        packet.append(pack_uatype('DateTime', self.StartTime))
6579
        packet.append(pack_uatype('DateTime', self.EndTime))
6580
        packet.append(pack_uatype('UInt32', self.NumValuesPerNode))
6581
        packet.append(pack_uatype('Boolean', self.ReturnBounds))
6582
        return b''.join(packet)
6583
        
6584 1
    @staticmethod
6585
    def from_binary(data):
6586
        obj = ReadRawModifiedDetails()
6587
        obj.IsReadModified = unpack_uatype('Boolean', data)
6588
        obj.StartTime = unpack_uatype('DateTime', data)
6589
        obj.EndTime = unpack_uatype('DateTime', data)
6590
        obj.NumValuesPerNode = unpack_uatype('UInt32', data)
6591
        obj.ReturnBounds = unpack_uatype('Boolean', data)
6592
        return obj
6593
    
6594 1
    def __str__(self):
6595
        return 'ReadRawModifiedDetails(' + 'IsReadModified:' + str(self.IsReadModified) + ', '  + \
6596
             'StartTime:' + str(self.StartTime) + ', '  + \
6597
             'EndTime:' + str(self.EndTime) + ', '  + \
6598
             'NumValuesPerNode:' + str(self.NumValuesPerNode) + ', '  + \
6599
             'ReturnBounds:' + str(self.ReturnBounds) + ')'
6600
    
6601 1
    __repr__ = __str__
6602
    
6603 1
class ReadProcessedDetails(FrozenClass):
6604
    '''
6605
    :ivar StartTime: 
6606
    :vartype StartTime: DateTime 
6607
    :ivar EndTime: 
6608
    :vartype EndTime: DateTime 
6609
    :ivar ProcessingInterval: 
6610
    :vartype ProcessingInterval: Double 
6611
    :ivar AggregateType: 
6612
    :vartype AggregateType: NodeId 
6613
    :ivar AggregateConfiguration: 
6614
    :vartype AggregateConfiguration: AggregateConfiguration 
6615
    '''
6616 1
    def __init__(self):
6617
        self.StartTime = datetime.now()
6618
        self.EndTime = datetime.now()
6619
        self.ProcessingInterval = 0
6620
        self.AggregateType = []
6621
        self.AggregateConfiguration = AggregateConfiguration()
6622
        self._freeze()
6623
    
6624 1
    def to_binary(self):
6625
        packet = []
6626
        packet.append(pack_uatype('DateTime', self.StartTime))
6627
        packet.append(pack_uatype('DateTime', self.EndTime))
6628
        packet.append(pack_uatype('Double', self.ProcessingInterval))
6629
        packet.append(struct.pack('<i', len(self.AggregateType)))
6630
        for fieldname in self.AggregateType:
6631
            packet.append(fieldname.to_binary())
6632
        packet.append(self.AggregateConfiguration.to_binary())
6633
        return b''.join(packet)
6634
        
6635 1
    @staticmethod
6636
    def from_binary(data):
6637
        obj = ReadProcessedDetails()
6638
        obj.StartTime = unpack_uatype('DateTime', data)
6639
        obj.EndTime = unpack_uatype('DateTime', data)
6640
        obj.ProcessingInterval = unpack_uatype('Double', data)
6641
        length = struct.unpack('<i', data.read(4))[0]
6642
        if length != -1:
6643
            for _ in range(0, length):
6644
                obj.AggregateType.append(NodeId.from_binary(data))
6645
        obj.AggregateConfiguration = AggregateConfiguration.from_binary(data)
6646
        return obj
6647
    
6648 1
    def __str__(self):
6649
        return 'ReadProcessedDetails(' + 'StartTime:' + str(self.StartTime) + ', '  + \
6650
             'EndTime:' + str(self.EndTime) + ', '  + \
6651
             'ProcessingInterval:' + str(self.ProcessingInterval) + ', '  + \
6652
             'AggregateType:' + str(self.AggregateType) + ', '  + \
6653
             'AggregateConfiguration:' + str(self.AggregateConfiguration) + ')'
6654
    
6655 1
    __repr__ = __str__
6656
    
6657 1
class ReadAtTimeDetails(FrozenClass):
6658
    '''
6659
    :ivar ReqTimes: 
6660
    :vartype ReqTimes: DateTime 
6661
    :ivar UseSimpleBounds: 
6662
    :vartype UseSimpleBounds: Boolean 
6663
    '''
6664 1
    def __init__(self):
6665
        self.ReqTimes = []
6666
        self.UseSimpleBounds = True
6667
        self._freeze()
6668
    
6669 1
    def to_binary(self):
6670
        packet = []
6671
        packet.append(struct.pack('<i', len(self.ReqTimes)))
6672
        for fieldname in self.ReqTimes:
6673
            packet.append(pack_uatype('DateTime', fieldname))
6674
        packet.append(pack_uatype('Boolean', self.UseSimpleBounds))
6675
        return b''.join(packet)
6676
        
6677 1
    @staticmethod
6678
    def from_binary(data):
6679
        obj = ReadAtTimeDetails()
6680
        obj.ReqTimes = unpack_uatype_array('DateTime', data)
6681
        obj.UseSimpleBounds = unpack_uatype('Boolean', data)
6682
        return obj
6683
    
6684 1
    def __str__(self):
6685
        return 'ReadAtTimeDetails(' + 'ReqTimes:' + str(self.ReqTimes) + ', '  + \
6686
             'UseSimpleBounds:' + str(self.UseSimpleBounds) + ')'
6687
    
6688 1
    __repr__ = __str__
6689
    
6690 1
class HistoryData(FrozenClass):
6691
    '''
6692
    :ivar DataValues: 
6693
    :vartype DataValues: DataValue 
6694
    '''
6695 1
    def __init__(self):
6696
        self.DataValues = []
6697
        self._freeze()
6698
    
6699 1
    def to_binary(self):
6700
        packet = []
6701
        packet.append(struct.pack('<i', len(self.DataValues)))
6702
        for fieldname in self.DataValues:
6703
            packet.append(fieldname.to_binary())
6704
        return b''.join(packet)
6705
        
6706 1
    @staticmethod
6707
    def from_binary(data):
6708
        obj = HistoryData()
6709
        length = struct.unpack('<i', data.read(4))[0]
6710
        if length != -1:
6711
            for _ in range(0, length):
6712
                obj.DataValues.append(DataValue.from_binary(data))
6713
        return obj
6714
    
6715 1
    def __str__(self):
6716
        return 'HistoryData(' + 'DataValues:' + str(self.DataValues) + ')'
6717
    
6718 1
    __repr__ = __str__
6719
    
6720 1
class ModificationInfo(FrozenClass):
6721
    '''
6722
    :ivar ModificationTime: 
6723
    :vartype ModificationTime: DateTime 
6724
    :ivar UpdateType: 
6725
    :vartype UpdateType: HistoryUpdateType 
6726
    :ivar UserName: 
6727
    :vartype UserName: String 
6728
    '''
6729 1
    def __init__(self):
6730
        self.ModificationTime = datetime.now()
6731
        self.UpdateType = 0
6732
        self.UserName = ''
6733
        self._freeze()
6734
    
6735 1
    def to_binary(self):
6736
        packet = []
6737
        packet.append(pack_uatype('DateTime', self.ModificationTime))
6738
        packet.append(pack_uatype('UInt32', self.UpdateType))
6739
        packet.append(pack_uatype('String', self.UserName))
6740
        return b''.join(packet)
6741
        
6742 1
    @staticmethod
6743
    def from_binary(data):
6744
        obj = ModificationInfo()
6745
        obj.ModificationTime = unpack_uatype('DateTime', data)
6746
        obj.UpdateType = unpack_uatype('UInt32', data)
6747
        obj.UserName = unpack_uatype('String', data)
6748
        return obj
6749
    
6750 1
    def __str__(self):
6751
        return 'ModificationInfo(' + 'ModificationTime:' + str(self.ModificationTime) + ', '  + \
6752
             'UpdateType:' + str(self.UpdateType) + ', '  + \
6753
             'UserName:' + str(self.UserName) + ')'
6754
    
6755 1
    __repr__ = __str__
6756
    
6757 1
class HistoryModifiedData(FrozenClass):
6758
    '''
6759
    :ivar DataValues: 
6760
    :vartype DataValues: DataValue 
6761
    :ivar ModificationInfos: 
6762
    :vartype ModificationInfos: ModificationInfo 
6763
    '''
6764 1
    def __init__(self):
6765
        self.DataValues = []
6766
        self.ModificationInfos = []
6767
        self._freeze()
6768
    
6769 1
    def to_binary(self):
6770
        packet = []
6771
        packet.append(struct.pack('<i', len(self.DataValues)))
6772
        for fieldname in self.DataValues:
6773
            packet.append(fieldname.to_binary())
6774
        packet.append(struct.pack('<i', len(self.ModificationInfos)))
6775
        for fieldname in self.ModificationInfos:
6776
            packet.append(fieldname.to_binary())
6777
        return b''.join(packet)
6778
        
6779 1
    @staticmethod
6780
    def from_binary(data):
6781
        obj = HistoryModifiedData()
6782
        length = struct.unpack('<i', data.read(4))[0]
6783
        if length != -1:
6784
            for _ in range(0, length):
6785
                obj.DataValues.append(DataValue.from_binary(data))
6786
        length = struct.unpack('<i', data.read(4))[0]
6787
        if length != -1:
6788
            for _ in range(0, length):
6789
                obj.ModificationInfos.append(ModificationInfo.from_binary(data))
6790
        return obj
6791
    
6792 1
    def __str__(self):
6793
        return 'HistoryModifiedData(' + 'DataValues:' + str(self.DataValues) + ', '  + \
6794
             'ModificationInfos:' + str(self.ModificationInfos) + ')'
6795
    
6796 1
    __repr__ = __str__
6797
    
6798 1
class HistoryEvent(FrozenClass):
6799
    '''
6800
    :ivar Events: 
6801
    :vartype Events: HistoryEventFieldList 
6802
    '''
6803 1
    def __init__(self):
6804
        self.Events = []
6805
        self._freeze()
6806
    
6807 1
    def to_binary(self):
6808
        packet = []
6809
        packet.append(struct.pack('<i', len(self.Events)))
6810
        for fieldname in self.Events:
6811
            packet.append(fieldname.to_binary())
6812
        return b''.join(packet)
6813
        
6814 1
    @staticmethod
6815
    def from_binary(data):
6816
        obj = HistoryEvent()
6817
        length = struct.unpack('<i', data.read(4))[0]
6818
        if length != -1:
6819
            for _ in range(0, length):
6820
                obj.Events.append(HistoryEventFieldList.from_binary(data))
6821
        return obj
6822
    
6823 1
    def __str__(self):
6824
        return 'HistoryEvent(' + 'Events:' + str(self.Events) + ')'
6825
    
6826 1
    __repr__ = __str__
6827
    
6828 1
class HistoryReadParameters(FrozenClass):
6829
    '''
6830
    :ivar HistoryReadDetails: 
6831
    :vartype HistoryReadDetails: ExtensionObject 
6832
    :ivar TimestampsToReturn: 
6833
    :vartype TimestampsToReturn: TimestampsToReturn 
6834
    :ivar ReleaseContinuationPoints: 
6835
    :vartype ReleaseContinuationPoints: Boolean 
6836
    :ivar NodesToRead: 
6837
    :vartype NodesToRead: HistoryReadValueId 
6838
    '''
6839 1
    def __init__(self):
6840
        self.HistoryReadDetails = None
6841
        self.TimestampsToReturn = 0
6842
        self.ReleaseContinuationPoints = True
6843
        self.NodesToRead = []
6844
        self._freeze()
6845
    
6846 1
    def to_binary(self):
6847
        packet = []
6848
        packet.append(extensionobject_to_binary(self.HistoryReadDetails))
6849
        packet.append(pack_uatype('UInt32', self.TimestampsToReturn))
6850
        packet.append(pack_uatype('Boolean', self.ReleaseContinuationPoints))
6851
        packet.append(struct.pack('<i', len(self.NodesToRead)))
6852
        for fieldname in self.NodesToRead:
6853
            packet.append(fieldname.to_binary())
6854
        return b''.join(packet)
6855
        
6856 1
    @staticmethod
6857
    def from_binary(data):
6858
        obj = HistoryReadParameters()
6859
        obj.HistoryReadDetails = extensionobject_from_binary(data)
6860
        obj.TimestampsToReturn = unpack_uatype('UInt32', data)
6861
        obj.ReleaseContinuationPoints = unpack_uatype('Boolean', data)
6862
        length = struct.unpack('<i', data.read(4))[0]
6863
        if length != -1:
6864
            for _ in range(0, length):
6865
                obj.NodesToRead.append(HistoryReadValueId.from_binary(data))
6866
        return obj
6867
    
6868 1
    def __str__(self):
6869
        return 'HistoryReadParameters(' + 'HistoryReadDetails:' + str(self.HistoryReadDetails) + ', '  + \
6870
             'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', '  + \
6871
             'ReleaseContinuationPoints:' + str(self.ReleaseContinuationPoints) + ', '  + \
6872
             'NodesToRead:' + str(self.NodesToRead) + ')'
6873
    
6874 1
    __repr__ = __str__
6875
    
6876 1
class HistoryReadRequest(FrozenClass):
6877
    '''
6878
    :ivar TypeId: 
6879
    :vartype TypeId: NodeId 
6880
    :ivar RequestHeader: 
6881
    :vartype RequestHeader: RequestHeader 
6882
    :ivar Parameters: 
6883
    :vartype Parameters: HistoryReadParameters 
6884
    '''
6885 1
    def __init__(self):
6886
        self.TypeId = FourByteNodeId(ObjectIds.HistoryReadRequest_Encoding_DefaultBinary)
6887
        self.RequestHeader = RequestHeader()
6888
        self.Parameters = HistoryReadParameters()
6889
        self._freeze()
6890
    
6891 1
    def to_binary(self):
6892
        packet = []
6893
        packet.append(self.TypeId.to_binary())
6894
        packet.append(self.RequestHeader.to_binary())
6895
        packet.append(self.Parameters.to_binary())
6896
        return b''.join(packet)
6897
        
6898 1
    @staticmethod
6899
    def from_binary(data):
6900
        obj = HistoryReadRequest()
6901
        obj.TypeId = NodeId.from_binary(data)
6902
        obj.RequestHeader = RequestHeader.from_binary(data)
6903
        obj.Parameters = HistoryReadParameters.from_binary(data)
6904
        return obj
6905
    
6906 1
    def __str__(self):
6907
        return 'HistoryReadRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6908
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
6909
             'Parameters:' + str(self.Parameters) + ')'
6910
    
6911 1
    __repr__ = __str__
6912
    
6913 1
class HistoryReadResponse(FrozenClass):
6914
    '''
6915
    :ivar TypeId: 
6916
    :vartype TypeId: NodeId 
6917
    :ivar ResponseHeader: 
6918
    :vartype ResponseHeader: ResponseHeader 
6919
    :ivar Results: 
6920
    :vartype Results: HistoryReadResult 
6921
    :ivar DiagnosticInfos: 
6922
    :vartype DiagnosticInfos: DiagnosticInfo 
6923
    '''
6924 1
    def __init__(self):
6925
        self.TypeId = FourByteNodeId(ObjectIds.HistoryReadResponse_Encoding_DefaultBinary)
6926
        self.ResponseHeader = ResponseHeader()
6927
        self.Results = []
6928
        self.DiagnosticInfos = []
6929
        self._freeze()
6930
    
6931 1
    def to_binary(self):
6932
        packet = []
6933
        packet.append(self.TypeId.to_binary())
6934
        packet.append(self.ResponseHeader.to_binary())
6935
        packet.append(struct.pack('<i', len(self.Results)))
6936
        for fieldname in self.Results:
6937
            packet.append(fieldname.to_binary())
6938
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
6939
        for fieldname in self.DiagnosticInfos:
6940
            packet.append(fieldname.to_binary())
6941
        return b''.join(packet)
6942
        
6943 1
    @staticmethod
6944
    def from_binary(data):
6945
        obj = HistoryReadResponse()
6946
        obj.TypeId = NodeId.from_binary(data)
6947
        obj.ResponseHeader = ResponseHeader.from_binary(data)
6948
        length = struct.unpack('<i', data.read(4))[0]
6949
        if length != -1:
6950
            for _ in range(0, length):
6951
                obj.Results.append(HistoryReadResult.from_binary(data))
6952
        length = struct.unpack('<i', data.read(4))[0]
6953
        if length != -1:
6954
            for _ in range(0, length):
6955
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
6956
        return obj
6957
    
6958 1
    def __str__(self):
6959
        return 'HistoryReadResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
6960
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
6961
             'Results:' + str(self.Results) + ', '  + \
6962
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
6963
    
6964 1
    __repr__ = __str__
6965
    
6966 1
class WriteValue(FrozenClass):
6967
    '''
6968
    :ivar NodeId: 
6969
    :vartype NodeId: NodeId 
6970
    :ivar AttributeId: 
6971
    :vartype AttributeId: UInt32 
6972
    :ivar IndexRange: 
6973
    :vartype IndexRange: String 
6974
    :ivar Value: 
6975
    :vartype Value: DataValue 
6976
    '''
6977 1
    def __init__(self):
6978 1
        self.NodeId = NodeId()
6979 1
        self.AttributeId = 0
6980 1
        self.IndexRange = ''
6981 1
        self.Value = DataValue()
6982 1
        self._freeze()
6983
    
6984 1
    def to_binary(self):
6985 1
        packet = []
6986 1
        packet.append(self.NodeId.to_binary())
6987 1
        packet.append(pack_uatype('UInt32', self.AttributeId))
6988 1
        packet.append(pack_uatype('String', self.IndexRange))
6989 1
        packet.append(self.Value.to_binary())
6990 1
        return b''.join(packet)
6991
        
6992 1
    @staticmethod
6993
    def from_binary(data):
6994 1
        obj = WriteValue()
6995 1
        obj.NodeId = NodeId.from_binary(data)
6996 1
        obj.AttributeId = unpack_uatype('UInt32', data)
6997 1
        obj.IndexRange = unpack_uatype('String', data)
6998 1
        obj.Value = DataValue.from_binary(data)
6999 1
        return obj
7000
    
7001 1
    def __str__(self):
7002
        return 'WriteValue(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7003
             'AttributeId:' + str(self.AttributeId) + ', '  + \
7004
             'IndexRange:' + str(self.IndexRange) + ', '  + \
7005
             'Value:' + str(self.Value) + ')'
7006
    
7007 1
    __repr__ = __str__
7008
    
7009 1
class WriteParameters(FrozenClass):
7010
    '''
7011
    :ivar NodesToWrite: 
7012
    :vartype NodesToWrite: WriteValue 
7013
    '''
7014 1
    def __init__(self):
7015 1
        self.NodesToWrite = []
7016 1
        self._freeze()
7017
    
7018 1
    def to_binary(self):
7019 1
        packet = []
7020 1
        packet.append(struct.pack('<i', len(self.NodesToWrite)))
7021 1
        for fieldname in self.NodesToWrite:
7022 1
            packet.append(fieldname.to_binary())
7023 1
        return b''.join(packet)
7024
        
7025 1
    @staticmethod
7026
    def from_binary(data):
7027 1
        obj = WriteParameters()
7028 1
        length = struct.unpack('<i', data.read(4))[0]
7029 1
        if length != -1:
7030 1
            for _ in range(0, length):
7031 1
                obj.NodesToWrite.append(WriteValue.from_binary(data))
7032 1
        return obj
7033
    
7034 1
    def __str__(self):
7035
        return 'WriteParameters(' + 'NodesToWrite:' + str(self.NodesToWrite) + ')'
7036
    
7037 1
    __repr__ = __str__
7038
    
7039 1
class WriteRequest(FrozenClass):
7040
    '''
7041
    :ivar TypeId: 
7042
    :vartype TypeId: NodeId 
7043
    :ivar RequestHeader: 
7044
    :vartype RequestHeader: RequestHeader 
7045
    :ivar Parameters: 
7046
    :vartype Parameters: WriteParameters 
7047
    '''
7048 1
    def __init__(self):
7049 1
        self.TypeId = FourByteNodeId(ObjectIds.WriteRequest_Encoding_DefaultBinary)
7050 1
        self.RequestHeader = RequestHeader()
7051 1
        self.Parameters = WriteParameters()
7052 1
        self._freeze()
7053
    
7054 1
    def to_binary(self):
7055 1
        packet = []
7056 1
        packet.append(self.TypeId.to_binary())
7057 1
        packet.append(self.RequestHeader.to_binary())
7058 1
        packet.append(self.Parameters.to_binary())
7059 1
        return b''.join(packet)
7060
        
7061 1
    @staticmethod
7062
    def from_binary(data):
7063
        obj = WriteRequest()
7064
        obj.TypeId = NodeId.from_binary(data)
7065
        obj.RequestHeader = RequestHeader.from_binary(data)
7066
        obj.Parameters = WriteParameters.from_binary(data)
7067
        return obj
7068
    
7069 1
    def __str__(self):
7070
        return 'WriteRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7071
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
7072
             'Parameters:' + str(self.Parameters) + ')'
7073
    
7074 1
    __repr__ = __str__
7075
    
7076 1
class WriteResponse(FrozenClass):
7077
    '''
7078
    :ivar TypeId: 
7079
    :vartype TypeId: NodeId 
7080
    :ivar ResponseHeader: 
7081
    :vartype ResponseHeader: ResponseHeader 
7082
    :ivar Results: 
7083
    :vartype Results: StatusCode 
7084
    :ivar DiagnosticInfos: 
7085
    :vartype DiagnosticInfos: DiagnosticInfo 
7086
    '''
7087 1
    def __init__(self):
7088 1
        self.TypeId = FourByteNodeId(ObjectIds.WriteResponse_Encoding_DefaultBinary)
7089 1
        self.ResponseHeader = ResponseHeader()
7090 1
        self.Results = []
7091 1
        self.DiagnosticInfos = []
7092 1
        self._freeze()
7093
    
7094 1
    def to_binary(self):
7095 1
        packet = []
7096 1
        packet.append(self.TypeId.to_binary())
7097 1
        packet.append(self.ResponseHeader.to_binary())
7098 1
        packet.append(struct.pack('<i', len(self.Results)))
7099 1
        for fieldname in self.Results:
7100 1
            packet.append(fieldname.to_binary())
7101 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
7102 1
        for fieldname in self.DiagnosticInfos:
7103
            packet.append(fieldname.to_binary())
7104 1
        return b''.join(packet)
7105
        
7106 1
    @staticmethod
7107
    def from_binary(data):
7108 1
        obj = WriteResponse()
7109 1
        obj.TypeId = NodeId.from_binary(data)
7110 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
7111 1
        length = struct.unpack('<i', data.read(4))[0]
7112 1
        if length != -1:
7113 1
            for _ in range(0, length):
7114 1
                obj.Results.append(StatusCode.from_binary(data))
7115 1
        length = struct.unpack('<i', data.read(4))[0]
7116 1
        if length != -1:
7117 1
            for _ in range(0, length):
7118
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7119 1
        return obj
7120
    
7121 1
    def __str__(self):
7122
        return 'WriteResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7123
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
7124
             'Results:' + str(self.Results) + ', '  + \
7125
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
7126
    
7127 1
    __repr__ = __str__
7128
    
7129 1
class HistoryUpdateDetails(FrozenClass):
7130
    '''
7131
    :ivar NodeId: 
7132
    :vartype NodeId: NodeId 
7133
    '''
7134 1
    def __init__(self):
7135
        self.NodeId = NodeId()
7136
        self._freeze()
7137
    
7138 1
    def to_binary(self):
7139
        packet = []
7140
        packet.append(self.NodeId.to_binary())
7141
        return b''.join(packet)
7142
        
7143 1
    @staticmethod
7144
    def from_binary(data):
7145
        obj = HistoryUpdateDetails()
7146
        obj.NodeId = NodeId.from_binary(data)
7147
        return obj
7148
    
7149 1
    def __str__(self):
7150
        return 'HistoryUpdateDetails(' + 'NodeId:' + str(self.NodeId) + ')'
7151
    
7152 1
    __repr__ = __str__
7153
    
7154 1
class UpdateDataDetails(FrozenClass):
7155
    '''
7156
    :ivar NodeId: 
7157
    :vartype NodeId: NodeId 
7158
    :ivar PerformInsertReplace: 
7159
    :vartype PerformInsertReplace: PerformUpdateType 
7160
    :ivar UpdateValues: 
7161
    :vartype UpdateValues: DataValue 
7162
    '''
7163 1
    def __init__(self):
7164
        self.NodeId = NodeId()
7165
        self.PerformInsertReplace = 0
7166
        self.UpdateValues = []
7167
        self._freeze()
7168
    
7169 1
    def to_binary(self):
7170
        packet = []
7171
        packet.append(self.NodeId.to_binary())
7172
        packet.append(pack_uatype('UInt32', self.PerformInsertReplace))
7173
        packet.append(struct.pack('<i', len(self.UpdateValues)))
7174
        for fieldname in self.UpdateValues:
7175
            packet.append(fieldname.to_binary())
7176
        return b''.join(packet)
7177
        
7178 1
    @staticmethod
7179
    def from_binary(data):
7180
        obj = UpdateDataDetails()
7181
        obj.NodeId = NodeId.from_binary(data)
7182
        obj.PerformInsertReplace = unpack_uatype('UInt32', data)
7183
        length = struct.unpack('<i', data.read(4))[0]
7184
        if length != -1:
7185
            for _ in range(0, length):
7186
                obj.UpdateValues.append(DataValue.from_binary(data))
7187
        return obj
7188
    
7189 1
    def __str__(self):
7190
        return 'UpdateDataDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7191
             'PerformInsertReplace:' + str(self.PerformInsertReplace) + ', '  + \
7192
             'UpdateValues:' + str(self.UpdateValues) + ')'
7193
    
7194 1
    __repr__ = __str__
7195
    
7196 1
class UpdateStructureDataDetails(FrozenClass):
7197
    '''
7198
    :ivar NodeId: 
7199
    :vartype NodeId: NodeId 
7200
    :ivar PerformInsertReplace: 
7201
    :vartype PerformInsertReplace: PerformUpdateType 
7202
    :ivar UpdateValues: 
7203
    :vartype UpdateValues: DataValue 
7204
    '''
7205 1
    def __init__(self):
7206
        self.NodeId = NodeId()
7207
        self.PerformInsertReplace = 0
7208
        self.UpdateValues = []
7209
        self._freeze()
7210
    
7211 1
    def to_binary(self):
7212
        packet = []
7213
        packet.append(self.NodeId.to_binary())
7214
        packet.append(pack_uatype('UInt32', self.PerformInsertReplace))
7215
        packet.append(struct.pack('<i', len(self.UpdateValues)))
7216
        for fieldname in self.UpdateValues:
7217
            packet.append(fieldname.to_binary())
7218
        return b''.join(packet)
7219
        
7220 1
    @staticmethod
7221
    def from_binary(data):
7222
        obj = UpdateStructureDataDetails()
7223
        obj.NodeId = NodeId.from_binary(data)
7224
        obj.PerformInsertReplace = unpack_uatype('UInt32', data)
7225
        length = struct.unpack('<i', data.read(4))[0]
7226
        if length != -1:
7227
            for _ in range(0, length):
7228
                obj.UpdateValues.append(DataValue.from_binary(data))
7229
        return obj
7230
    
7231 1
    def __str__(self):
7232
        return 'UpdateStructureDataDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7233
             'PerformInsertReplace:' + str(self.PerformInsertReplace) + ', '  + \
7234
             'UpdateValues:' + str(self.UpdateValues) + ')'
7235
    
7236 1
    __repr__ = __str__
7237
    
7238 1
class UpdateEventDetails(FrozenClass):
7239
    '''
7240
    :ivar NodeId: 
7241
    :vartype NodeId: NodeId 
7242
    :ivar PerformInsertReplace: 
7243
    :vartype PerformInsertReplace: PerformUpdateType 
7244
    :ivar Filter: 
7245
    :vartype Filter: EventFilter 
7246
    :ivar EventData: 
7247
    :vartype EventData: HistoryEventFieldList 
7248
    '''
7249 1
    def __init__(self):
7250
        self.NodeId = NodeId()
7251
        self.PerformInsertReplace = 0
7252
        self.Filter = EventFilter()
7253
        self.EventData = []
7254
        self._freeze()
7255
    
7256 1
    def to_binary(self):
7257
        packet = []
7258
        packet.append(self.NodeId.to_binary())
7259
        packet.append(pack_uatype('UInt32', self.PerformInsertReplace))
7260
        packet.append(self.Filter.to_binary())
7261
        packet.append(struct.pack('<i', len(self.EventData)))
7262
        for fieldname in self.EventData:
7263
            packet.append(fieldname.to_binary())
7264
        return b''.join(packet)
7265
        
7266 1
    @staticmethod
7267
    def from_binary(data):
7268
        obj = UpdateEventDetails()
7269
        obj.NodeId = NodeId.from_binary(data)
7270
        obj.PerformInsertReplace = unpack_uatype('UInt32', data)
7271
        obj.Filter = EventFilter.from_binary(data)
7272
        length = struct.unpack('<i', data.read(4))[0]
7273
        if length != -1:
7274
            for _ in range(0, length):
7275
                obj.EventData.append(HistoryEventFieldList.from_binary(data))
7276
        return obj
7277
    
7278 1
    def __str__(self):
7279
        return 'UpdateEventDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7280
             'PerformInsertReplace:' + str(self.PerformInsertReplace) + ', '  + \
7281
             'Filter:' + str(self.Filter) + ', '  + \
7282
             'EventData:' + str(self.EventData) + ')'
7283
    
7284 1
    __repr__ = __str__
7285
    
7286 1
class DeleteRawModifiedDetails(FrozenClass):
7287
    '''
7288
    :ivar NodeId: 
7289
    :vartype NodeId: NodeId 
7290
    :ivar IsDeleteModified: 
7291
    :vartype IsDeleteModified: Boolean 
7292
    :ivar StartTime: 
7293
    :vartype StartTime: DateTime 
7294
    :ivar EndTime: 
7295
    :vartype EndTime: DateTime 
7296
    '''
7297 1
    def __init__(self):
7298
        self.NodeId = NodeId()
7299
        self.IsDeleteModified = True
7300
        self.StartTime = datetime.now()
7301
        self.EndTime = datetime.now()
7302
        self._freeze()
7303
    
7304 1
    def to_binary(self):
7305
        packet = []
7306
        packet.append(self.NodeId.to_binary())
7307
        packet.append(pack_uatype('Boolean', self.IsDeleteModified))
7308
        packet.append(pack_uatype('DateTime', self.StartTime))
7309
        packet.append(pack_uatype('DateTime', self.EndTime))
7310
        return b''.join(packet)
7311
        
7312 1
    @staticmethod
7313
    def from_binary(data):
7314
        obj = DeleteRawModifiedDetails()
7315
        obj.NodeId = NodeId.from_binary(data)
7316
        obj.IsDeleteModified = unpack_uatype('Boolean', data)
7317
        obj.StartTime = unpack_uatype('DateTime', data)
7318
        obj.EndTime = unpack_uatype('DateTime', data)
7319
        return obj
7320
    
7321 1
    def __str__(self):
7322
        return 'DeleteRawModifiedDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7323
             'IsDeleteModified:' + str(self.IsDeleteModified) + ', '  + \
7324
             'StartTime:' + str(self.StartTime) + ', '  + \
7325
             'EndTime:' + str(self.EndTime) + ')'
7326
    
7327 1
    __repr__ = __str__
7328
    
7329 1
class DeleteAtTimeDetails(FrozenClass):
7330
    '''
7331
    :ivar NodeId: 
7332
    :vartype NodeId: NodeId 
7333
    :ivar ReqTimes: 
7334
    :vartype ReqTimes: DateTime 
7335
    '''
7336 1
    def __init__(self):
7337
        self.NodeId = NodeId()
7338
        self.ReqTimes = []
7339
        self._freeze()
7340
    
7341 1
    def to_binary(self):
7342
        packet = []
7343
        packet.append(self.NodeId.to_binary())
7344
        packet.append(struct.pack('<i', len(self.ReqTimes)))
7345
        for fieldname in self.ReqTimes:
7346
            packet.append(pack_uatype('DateTime', fieldname))
7347
        return b''.join(packet)
7348
        
7349 1
    @staticmethod
7350
    def from_binary(data):
7351
        obj = DeleteAtTimeDetails()
7352
        obj.NodeId = NodeId.from_binary(data)
7353
        obj.ReqTimes = unpack_uatype_array('DateTime', data)
7354
        return obj
7355
    
7356 1
    def __str__(self):
7357
        return 'DeleteAtTimeDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7358
             'ReqTimes:' + str(self.ReqTimes) + ')'
7359
    
7360 1
    __repr__ = __str__
7361
    
7362 1
class DeleteEventDetails(FrozenClass):
7363
    '''
7364
    :ivar NodeId: 
7365
    :vartype NodeId: NodeId 
7366
    :ivar EventIds: 
7367
    :vartype EventIds: ByteString 
7368
    '''
7369 1
    def __init__(self):
7370
        self.NodeId = NodeId()
7371
        self.EventIds = []
7372
        self._freeze()
7373
    
7374 1
    def to_binary(self):
7375
        packet = []
7376
        packet.append(self.NodeId.to_binary())
7377
        packet.append(struct.pack('<i', len(self.EventIds)))
7378
        for fieldname in self.EventIds:
7379
            packet.append(pack_uatype('ByteString', fieldname))
7380
        return b''.join(packet)
7381
        
7382 1
    @staticmethod
7383
    def from_binary(data):
7384
        obj = DeleteEventDetails()
7385
        obj.NodeId = NodeId.from_binary(data)
7386
        obj.EventIds = unpack_uatype_array('ByteString', data)
7387
        return obj
7388
    
7389 1
    def __str__(self):
7390
        return 'DeleteEventDetails(' + 'NodeId:' + str(self.NodeId) + ', '  + \
7391
             'EventIds:' + str(self.EventIds) + ')'
7392
    
7393 1
    __repr__ = __str__
7394
    
7395 1
class HistoryUpdateResult(FrozenClass):
7396
    '''
7397
    :ivar StatusCode: 
7398
    :vartype StatusCode: StatusCode 
7399
    :ivar OperationResults: 
7400
    :vartype OperationResults: StatusCode 
7401
    :ivar DiagnosticInfos: 
7402
    :vartype DiagnosticInfos: DiagnosticInfo 
7403
    '''
7404 1
    def __init__(self):
7405
        self.StatusCode = StatusCode()
7406
        self.OperationResults = []
7407
        self.DiagnosticInfos = []
7408
        self._freeze()
7409
    
7410 1
    def to_binary(self):
7411
        packet = []
7412
        packet.append(self.StatusCode.to_binary())
7413
        packet.append(struct.pack('<i', len(self.OperationResults)))
7414
        for fieldname in self.OperationResults:
7415
            packet.append(fieldname.to_binary())
7416
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
7417
        for fieldname in self.DiagnosticInfos:
7418
            packet.append(fieldname.to_binary())
7419
        return b''.join(packet)
7420
        
7421 1
    @staticmethod
7422
    def from_binary(data):
7423
        obj = HistoryUpdateResult()
7424
        obj.StatusCode = StatusCode.from_binary(data)
7425
        length = struct.unpack('<i', data.read(4))[0]
7426
        if length != -1:
7427
            for _ in range(0, length):
7428
                obj.OperationResults.append(StatusCode.from_binary(data))
7429
        length = struct.unpack('<i', data.read(4))[0]
7430
        if length != -1:
7431
            for _ in range(0, length):
7432
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7433
        return obj
7434
    
7435 1
    def __str__(self):
7436
        return 'HistoryUpdateResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
7437
             'OperationResults:' + str(self.OperationResults) + ', '  + \
7438
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
7439
    
7440 1
    __repr__ = __str__
7441
    
7442 1
class HistoryUpdateEventResult(FrozenClass):
7443
    '''
7444
    :ivar StatusCode: 
7445
    :vartype StatusCode: StatusCode 
7446
    :ivar EventFilterResult: 
7447
    :vartype EventFilterResult: EventFilterResult 
7448
    '''
7449 1
    def __init__(self):
7450
        self.StatusCode = StatusCode()
7451
        self.EventFilterResult = EventFilterResult()
7452
        self._freeze()
7453
    
7454 1
    def to_binary(self):
7455
        packet = []
7456
        packet.append(self.StatusCode.to_binary())
7457
        packet.append(self.EventFilterResult.to_binary())
7458
        return b''.join(packet)
7459
        
7460 1
    @staticmethod
7461
    def from_binary(data):
7462
        obj = HistoryUpdateEventResult()
7463
        obj.StatusCode = StatusCode.from_binary(data)
7464
        obj.EventFilterResult = EventFilterResult.from_binary(data)
7465
        return obj
7466
    
7467 1
    def __str__(self):
7468
        return 'HistoryUpdateEventResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
7469
             'EventFilterResult:' + str(self.EventFilterResult) + ')'
7470
    
7471 1
    __repr__ = __str__
7472
    
7473 1
class HistoryUpdateParameters(FrozenClass):
7474
    '''
7475
    :ivar HistoryUpdateDetails: 
7476
    :vartype HistoryUpdateDetails: ExtensionObject 
7477
    '''
7478 1
    def __init__(self):
7479
        self.HistoryUpdateDetails = []
7480
        self._freeze()
7481
    
7482 1
    def to_binary(self):
7483
        packet = []
7484
        packet.append(struct.pack('<i', len(self.HistoryUpdateDetails)))
7485
        for fieldname in self.HistoryUpdateDetails:
7486
            packet.append(extensionobject_to_binary(fieldname))
7487
        return b''.join(packet)
7488
        
7489 1
    @staticmethod
7490
    def from_binary(data):
7491
        obj = HistoryUpdateParameters()
7492
        length = struct.unpack('<i', data.read(4))[0]
7493
        if length != -1:
7494
            for _ in range(0, length):
7495
                obj.HistoryUpdateDetails.append(extensionobject_from_binary(data))
7496
        return obj
7497
    
7498 1
    def __str__(self):
7499
        return 'HistoryUpdateParameters(' + 'HistoryUpdateDetails:' + str(self.HistoryUpdateDetails) + ')'
7500
    
7501 1
    __repr__ = __str__
7502
    
7503 1
class HistoryUpdateRequest(FrozenClass):
7504
    '''
7505
    :ivar TypeId: 
7506
    :vartype TypeId: NodeId 
7507
    :ivar RequestHeader: 
7508
    :vartype RequestHeader: RequestHeader 
7509
    :ivar Parameters: 
7510
    :vartype Parameters: HistoryUpdateParameters 
7511
    '''
7512 1
    def __init__(self):
7513
        self.TypeId = FourByteNodeId(ObjectIds.HistoryUpdateRequest_Encoding_DefaultBinary)
7514
        self.RequestHeader = RequestHeader()
7515
        self.Parameters = HistoryUpdateParameters()
7516
        self._freeze()
7517
    
7518 1
    def to_binary(self):
7519
        packet = []
7520
        packet.append(self.TypeId.to_binary())
7521
        packet.append(self.RequestHeader.to_binary())
7522
        packet.append(self.Parameters.to_binary())
7523
        return b''.join(packet)
7524
        
7525 1
    @staticmethod
7526
    def from_binary(data):
7527
        obj = HistoryUpdateRequest()
7528
        obj.TypeId = NodeId.from_binary(data)
7529
        obj.RequestHeader = RequestHeader.from_binary(data)
7530
        obj.Parameters = HistoryUpdateParameters.from_binary(data)
7531
        return obj
7532
    
7533 1
    def __str__(self):
7534
        return 'HistoryUpdateRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7535
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
7536
             'Parameters:' + str(self.Parameters) + ')'
7537
    
7538 1
    __repr__ = __str__
7539
    
7540 1
class HistoryUpdateResponse(FrozenClass):
7541
    '''
7542
    :ivar TypeId: 
7543
    :vartype TypeId: NodeId 
7544
    :ivar ResponseHeader: 
7545
    :vartype ResponseHeader: ResponseHeader 
7546
    :ivar Results: 
7547
    :vartype Results: HistoryUpdateResult 
7548
    :ivar DiagnosticInfos: 
7549
    :vartype DiagnosticInfos: DiagnosticInfo 
7550
    '''
7551 1
    def __init__(self):
7552
        self.TypeId = FourByteNodeId(ObjectIds.HistoryUpdateResponse_Encoding_DefaultBinary)
7553
        self.ResponseHeader = ResponseHeader()
7554
        self.Results = []
7555
        self.DiagnosticInfos = []
7556
        self._freeze()
7557
    
7558 1
    def to_binary(self):
7559
        packet = []
7560
        packet.append(self.TypeId.to_binary())
7561
        packet.append(self.ResponseHeader.to_binary())
7562
        packet.append(struct.pack('<i', len(self.Results)))
7563
        for fieldname in self.Results:
7564
            packet.append(fieldname.to_binary())
7565
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
7566
        for fieldname in self.DiagnosticInfos:
7567
            packet.append(fieldname.to_binary())
7568
        return b''.join(packet)
7569
        
7570 1
    @staticmethod
7571
    def from_binary(data):
7572
        obj = HistoryUpdateResponse()
7573
        obj.TypeId = NodeId.from_binary(data)
7574
        obj.ResponseHeader = ResponseHeader.from_binary(data)
7575
        length = struct.unpack('<i', data.read(4))[0]
7576
        if length != -1:
7577
            for _ in range(0, length):
7578
                obj.Results.append(HistoryUpdateResult.from_binary(data))
7579
        length = struct.unpack('<i', data.read(4))[0]
7580
        if length != -1:
7581
            for _ in range(0, length):
7582
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7583
        return obj
7584
    
7585 1
    def __str__(self):
7586
        return 'HistoryUpdateResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7587
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
7588
             'Results:' + str(self.Results) + ', '  + \
7589
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
7590
    
7591 1
    __repr__ = __str__
7592
    
7593 1
class CallMethodRequest(FrozenClass):
7594
    '''
7595
    :ivar ObjectId: 
7596
    :vartype ObjectId: NodeId 
7597
    :ivar MethodId: 
7598
    :vartype MethodId: NodeId 
7599
    :ivar InputArguments: 
7600
    :vartype InputArguments: Variant 
7601
    '''
7602 1
    def __init__(self):
7603 1
        self.ObjectId = NodeId()
7604 1
        self.MethodId = NodeId()
7605 1
        self.InputArguments = []
7606 1
        self._freeze()
7607
    
7608 1
    def to_binary(self):
7609 1
        packet = []
7610 1
        packet.append(self.ObjectId.to_binary())
7611 1
        packet.append(self.MethodId.to_binary())
7612 1
        packet.append(struct.pack('<i', len(self.InputArguments)))
7613 1
        for fieldname in self.InputArguments:
7614 1
            packet.append(fieldname.to_binary())
7615 1
        return b''.join(packet)
7616
        
7617 1
    @staticmethod
7618
    def from_binary(data):
7619 1
        obj = CallMethodRequest()
7620 1
        obj.ObjectId = NodeId.from_binary(data)
7621 1
        obj.MethodId = NodeId.from_binary(data)
7622 1
        length = struct.unpack('<i', data.read(4))[0]
7623 1
        if length != -1:
7624 1
            for _ in range(0, length):
7625 1
                obj.InputArguments.append(Variant.from_binary(data))
7626 1
        return obj
7627
    
7628 1
    def __str__(self):
7629 1
        return 'CallMethodRequest(' + 'ObjectId:' + str(self.ObjectId) + ', '  + \
7630
             'MethodId:' + str(self.MethodId) + ', '  + \
7631
             'InputArguments:' + str(self.InputArguments) + ')'
7632
    
7633 1
    __repr__ = __str__
7634
    
7635 1
class CallMethodResult(FrozenClass):
7636
    '''
7637
    :ivar StatusCode: 
7638
    :vartype StatusCode: StatusCode 
7639
    :ivar InputArgumentResults: 
7640
    :vartype InputArgumentResults: StatusCode 
7641
    :ivar InputArgumentDiagnosticInfos: 
7642
    :vartype InputArgumentDiagnosticInfos: DiagnosticInfo 
7643
    :ivar OutputArguments: 
7644
    :vartype OutputArguments: Variant 
7645
    '''
7646 1
    def __init__(self):
7647 1
        self.StatusCode = StatusCode()
7648 1
        self.InputArgumentResults = []
7649 1
        self.InputArgumentDiagnosticInfos = []
7650 1
        self.OutputArguments = []
7651 1
        self._freeze()
7652
    
7653 1
    def to_binary(self):
7654 1
        packet = []
7655 1
        packet.append(self.StatusCode.to_binary())
7656 1
        packet.append(struct.pack('<i', len(self.InputArgumentResults)))
7657 1
        for fieldname in self.InputArgumentResults:
7658 1
            packet.append(fieldname.to_binary())
7659 1
        packet.append(struct.pack('<i', len(self.InputArgumentDiagnosticInfos)))
7660 1
        for fieldname in self.InputArgumentDiagnosticInfos:
7661
            packet.append(fieldname.to_binary())
7662 1
        packet.append(struct.pack('<i', len(self.OutputArguments)))
7663 1
        for fieldname in self.OutputArguments:
7664 1
            packet.append(fieldname.to_binary())
7665 1
        return b''.join(packet)
7666
        
7667 1
    @staticmethod
7668
    def from_binary(data):
7669 1
        obj = CallMethodResult()
7670 1
        obj.StatusCode = StatusCode.from_binary(data)
7671 1
        length = struct.unpack('<i', data.read(4))[0]
7672 1
        if length != -1:
7673 1
            for _ in range(0, length):
7674 1
                obj.InputArgumentResults.append(StatusCode.from_binary(data))
7675 1
        length = struct.unpack('<i', data.read(4))[0]
7676 1
        if length != -1:
7677 1
            for _ in range(0, length):
7678
                obj.InputArgumentDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7679 1
        length = struct.unpack('<i', data.read(4))[0]
7680 1
        if length != -1:
7681 1
            for _ in range(0, length):
7682 1
                obj.OutputArguments.append(Variant.from_binary(data))
7683 1
        return obj
7684
    
7685 1
    def __str__(self):
7686
        return 'CallMethodResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
7687
             'InputArgumentResults:' + str(self.InputArgumentResults) + ', '  + \
7688
             'InputArgumentDiagnosticInfos:' + str(self.InputArgumentDiagnosticInfos) + ', '  + \
7689
             'OutputArguments:' + str(self.OutputArguments) + ')'
7690
    
7691 1
    __repr__ = __str__
7692
    
7693 1
class CallParameters(FrozenClass):
7694
    '''
7695
    :ivar MethodsToCall: 
7696
    :vartype MethodsToCall: CallMethodRequest 
7697
    '''
7698 1
    def __init__(self):
7699 1
        self.MethodsToCall = []
7700 1
        self._freeze()
7701
    
7702 1
    def to_binary(self):
7703 1
        packet = []
7704 1
        packet.append(struct.pack('<i', len(self.MethodsToCall)))
7705 1
        for fieldname in self.MethodsToCall:
7706 1
            packet.append(fieldname.to_binary())
7707 1
        return b''.join(packet)
7708
        
7709 1
    @staticmethod
7710
    def from_binary(data):
7711 1
        obj = CallParameters()
7712 1
        length = struct.unpack('<i', data.read(4))[0]
7713 1
        if length != -1:
7714 1
            for _ in range(0, length):
7715 1
                obj.MethodsToCall.append(CallMethodRequest.from_binary(data))
7716 1
        return obj
7717
    
7718 1
    def __str__(self):
7719
        return 'CallParameters(' + 'MethodsToCall:' + str(self.MethodsToCall) + ')'
7720
    
7721 1
    __repr__ = __str__
7722
    
7723 1
class CallRequest(FrozenClass):
7724
    '''
7725
    :ivar TypeId: 
7726
    :vartype TypeId: NodeId 
7727
    :ivar RequestHeader: 
7728
    :vartype RequestHeader: RequestHeader 
7729
    :ivar Parameters: 
7730
    :vartype Parameters: CallParameters 
7731
    '''
7732 1
    def __init__(self):
7733 1
        self.TypeId = FourByteNodeId(ObjectIds.CallRequest_Encoding_DefaultBinary)
7734 1
        self.RequestHeader = RequestHeader()
7735 1
        self.Parameters = CallParameters()
7736 1
        self._freeze()
7737
    
7738 1
    def to_binary(self):
7739 1
        packet = []
7740 1
        packet.append(self.TypeId.to_binary())
7741 1
        packet.append(self.RequestHeader.to_binary())
7742 1
        packet.append(self.Parameters.to_binary())
7743 1
        return b''.join(packet)
7744
        
7745 1
    @staticmethod
7746
    def from_binary(data):
7747
        obj = CallRequest()
7748
        obj.TypeId = NodeId.from_binary(data)
7749
        obj.RequestHeader = RequestHeader.from_binary(data)
7750
        obj.Parameters = CallParameters.from_binary(data)
7751
        return obj
7752
    
7753 1
    def __str__(self):
7754
        return 'CallRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7755
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
7756
             'Parameters:' + str(self.Parameters) + ')'
7757
    
7758 1
    __repr__ = __str__
7759
    
7760 1
class CallResponse(FrozenClass):
7761
    '''
7762
    :ivar TypeId: 
7763
    :vartype TypeId: NodeId 
7764
    :ivar ResponseHeader: 
7765
    :vartype ResponseHeader: ResponseHeader 
7766
    :ivar Results: 
7767
    :vartype Results: CallMethodResult 
7768
    :ivar DiagnosticInfos: 
7769
    :vartype DiagnosticInfos: DiagnosticInfo 
7770
    '''
7771 1
    def __init__(self):
7772 1
        self.TypeId = FourByteNodeId(ObjectIds.CallResponse_Encoding_DefaultBinary)
7773 1
        self.ResponseHeader = ResponseHeader()
7774 1
        self.Results = []
7775 1
        self.DiagnosticInfos = []
7776 1
        self._freeze()
7777
    
7778 1
    def to_binary(self):
7779 1
        packet = []
7780 1
        packet.append(self.TypeId.to_binary())
7781 1
        packet.append(self.ResponseHeader.to_binary())
7782 1
        packet.append(struct.pack('<i', len(self.Results)))
7783 1
        for fieldname in self.Results:
7784 1
            packet.append(fieldname.to_binary())
7785 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
7786 1
        for fieldname in self.DiagnosticInfos:
7787
            packet.append(fieldname.to_binary())
7788 1
        return b''.join(packet)
7789
        
7790 1
    @staticmethod
7791
    def from_binary(data):
7792 1
        obj = CallResponse()
7793 1
        obj.TypeId = NodeId.from_binary(data)
7794 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
7795 1
        length = struct.unpack('<i', data.read(4))[0]
7796 1
        if length != -1:
7797 1
            for _ in range(0, length):
7798 1
                obj.Results.append(CallMethodResult.from_binary(data))
7799 1
        length = struct.unpack('<i', data.read(4))[0]
7800 1
        if length != -1:
7801 1
            for _ in range(0, length):
7802
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
7803 1
        return obj
7804
    
7805 1
    def __str__(self):
7806
        return 'CallResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
7807
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
7808
             'Results:' + str(self.Results) + ', '  + \
7809
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
7810
    
7811 1
    __repr__ = __str__
7812
    
7813 1
class MonitoringFilter(FrozenClass):
7814
    '''
7815
    '''
7816 1
    def __init__(self):
7817
        self._freeze()
7818
    
7819 1
    def to_binary(self):
7820
        packet = []
7821
        return b''.join(packet)
7822
        
7823 1
    @staticmethod
7824
    def from_binary(data):
7825
        obj = MonitoringFilter()
7826
        return obj
7827
    
7828 1
    def __str__(self):
7829
        return 'MonitoringFilter(' +  + ')'
7830
    
7831 1
    __repr__ = __str__
7832
    
7833 1
class DataChangeFilter(FrozenClass):
7834
    '''
7835
    :ivar Trigger: 
7836
    :vartype Trigger: DataChangeTrigger 
7837
    :ivar DeadbandType: 
7838
    :vartype DeadbandType: UInt32 
7839
    :ivar DeadbandValue: 
7840
    :vartype DeadbandValue: Double 
7841
    '''
7842 1
    def __init__(self):
7843
        self.Trigger = 0
7844
        self.DeadbandType = 0
7845
        self.DeadbandValue = 0
7846
        self._freeze()
7847
    
7848 1
    def to_binary(self):
7849
        packet = []
7850
        packet.append(pack_uatype('UInt32', self.Trigger))
7851
        packet.append(pack_uatype('UInt32', self.DeadbandType))
7852
        packet.append(pack_uatype('Double', self.DeadbandValue))
7853
        return b''.join(packet)
7854
        
7855 1
    @staticmethod
7856
    def from_binary(data):
7857
        obj = DataChangeFilter()
7858
        obj.Trigger = unpack_uatype('UInt32', data)
7859
        obj.DeadbandType = unpack_uatype('UInt32', data)
7860
        obj.DeadbandValue = unpack_uatype('Double', data)
7861
        return obj
7862
    
7863 1
    def __str__(self):
7864
        return 'DataChangeFilter(' + 'Trigger:' + str(self.Trigger) + ', '  + \
7865
             'DeadbandType:' + str(self.DeadbandType) + ', '  + \
7866
             'DeadbandValue:' + str(self.DeadbandValue) + ')'
7867
    
7868 1
    __repr__ = __str__
7869
    
7870 1
class EventFilter(FrozenClass):
7871
    '''
7872
    :ivar SelectClauses: 
7873
    :vartype SelectClauses: SimpleAttributeOperand 
7874
    :ivar WhereClause: 
7875
    :vartype WhereClause: ContentFilter 
7876
    '''
7877 1
    def __init__(self):
7878 1
        self.SelectClauses = []
7879 1
        self.WhereClause = ContentFilter()
7880 1
        self._freeze()
7881
    
7882 1
    def to_binary(self):
7883 1
        packet = []
7884 1
        packet.append(struct.pack('<i', len(self.SelectClauses)))
7885 1
        for fieldname in self.SelectClauses:
7886 1
            packet.append(fieldname.to_binary())
7887 1
        packet.append(self.WhereClause.to_binary())
7888 1
        return b''.join(packet)
7889
        
7890 1
    @staticmethod
7891
    def from_binary(data):
7892 1
        obj = EventFilter()
7893 1
        length = struct.unpack('<i', data.read(4))[0]
7894 1
        if length != -1:
7895 1
            for _ in range(0, length):
7896 1
                obj.SelectClauses.append(SimpleAttributeOperand.from_binary(data))
7897 1
        obj.WhereClause = ContentFilter.from_binary(data)
7898 1
        return obj
7899
    
7900 1
    def __str__(self):
7901
        return 'EventFilter(' + 'SelectClauses:' + str(self.SelectClauses) + ', '  + \
7902
             'WhereClause:' + str(self.WhereClause) + ')'
7903
    
7904 1
    __repr__ = __str__
7905
    
7906 1
class AggregateConfiguration(FrozenClass):
7907
    '''
7908
    :ivar UseServerCapabilitiesDefaults: 
7909
    :vartype UseServerCapabilitiesDefaults: Boolean 
7910
    :ivar TreatUncertainAsBad: 
7911
    :vartype TreatUncertainAsBad: Boolean 
7912
    :ivar PercentDataBad: 
7913
    :vartype PercentDataBad: Byte 
7914
    :ivar PercentDataGood: 
7915
    :vartype PercentDataGood: Byte 
7916
    :ivar UseSlopedExtrapolation: 
7917
    :vartype UseSlopedExtrapolation: Boolean 
7918
    '''
7919 1
    def __init__(self):
7920
        self.UseServerCapabilitiesDefaults = True
7921
        self.TreatUncertainAsBad = True
7922
        self.PercentDataBad = 0
7923
        self.PercentDataGood = 0
7924
        self.UseSlopedExtrapolation = True
7925
        self._freeze()
7926
    
7927 1
    def to_binary(self):
7928
        packet = []
7929
        packet.append(pack_uatype('Boolean', self.UseServerCapabilitiesDefaults))
7930
        packet.append(pack_uatype('Boolean', self.TreatUncertainAsBad))
7931
        packet.append(pack_uatype('Byte', self.PercentDataBad))
7932
        packet.append(pack_uatype('Byte', self.PercentDataGood))
7933
        packet.append(pack_uatype('Boolean', self.UseSlopedExtrapolation))
7934
        return b''.join(packet)
7935
        
7936 1
    @staticmethod
7937
    def from_binary(data):
7938
        obj = AggregateConfiguration()
7939
        obj.UseServerCapabilitiesDefaults = unpack_uatype('Boolean', data)
7940
        obj.TreatUncertainAsBad = unpack_uatype('Boolean', data)
7941
        obj.PercentDataBad = unpack_uatype('Byte', data)
7942
        obj.PercentDataGood = unpack_uatype('Byte', data)
7943
        obj.UseSlopedExtrapolation = unpack_uatype('Boolean', data)
7944
        return obj
7945
    
7946 1
    def __str__(self):
7947
        return 'AggregateConfiguration(' + 'UseServerCapabilitiesDefaults:' + str(self.UseServerCapabilitiesDefaults) + ', '  + \
7948
             'TreatUncertainAsBad:' + str(self.TreatUncertainAsBad) + ', '  + \
7949
             'PercentDataBad:' + str(self.PercentDataBad) + ', '  + \
7950
             'PercentDataGood:' + str(self.PercentDataGood) + ', '  + \
7951
             'UseSlopedExtrapolation:' + str(self.UseSlopedExtrapolation) + ')'
7952
    
7953 1
    __repr__ = __str__
7954
    
7955 1
class AggregateFilter(FrozenClass):
7956
    '''
7957
    :ivar StartTime: 
7958
    :vartype StartTime: DateTime 
7959
    :ivar AggregateType: 
7960
    :vartype AggregateType: NodeId 
7961
    :ivar ProcessingInterval: 
7962
    :vartype ProcessingInterval: Double 
7963
    :ivar AggregateConfiguration: 
7964
    :vartype AggregateConfiguration: AggregateConfiguration 
7965
    '''
7966 1
    def __init__(self):
7967
        self.StartTime = datetime.now()
7968
        self.AggregateType = NodeId()
7969
        self.ProcessingInterval = 0
7970
        self.AggregateConfiguration = AggregateConfiguration()
7971
        self._freeze()
7972
    
7973 1
    def to_binary(self):
7974
        packet = []
7975
        packet.append(pack_uatype('DateTime', self.StartTime))
7976
        packet.append(self.AggregateType.to_binary())
7977
        packet.append(pack_uatype('Double', self.ProcessingInterval))
7978
        packet.append(self.AggregateConfiguration.to_binary())
7979
        return b''.join(packet)
7980
        
7981 1
    @staticmethod
7982
    def from_binary(data):
7983
        obj = AggregateFilter()
7984
        obj.StartTime = unpack_uatype('DateTime', data)
7985
        obj.AggregateType = NodeId.from_binary(data)
7986
        obj.ProcessingInterval = unpack_uatype('Double', data)
7987
        obj.AggregateConfiguration = AggregateConfiguration.from_binary(data)
7988
        return obj
7989
    
7990 1
    def __str__(self):
7991
        return 'AggregateFilter(' + 'StartTime:' + str(self.StartTime) + ', '  + \
7992
             'AggregateType:' + str(self.AggregateType) + ', '  + \
7993
             'ProcessingInterval:' + str(self.ProcessingInterval) + ', '  + \
7994
             'AggregateConfiguration:' + str(self.AggregateConfiguration) + ')'
7995
    
7996 1
    __repr__ = __str__
7997
    
7998 1
class MonitoringFilterResult(FrozenClass):
7999
    '''
8000
    '''
8001 1
    def __init__(self):
8002
        self._freeze()
8003
    
8004 1
    def to_binary(self):
8005
        packet = []
8006
        return b''.join(packet)
8007
        
8008 1
    @staticmethod
8009
    def from_binary(data):
8010
        obj = MonitoringFilterResult()
8011
        return obj
8012
    
8013 1
    def __str__(self):
8014
        return 'MonitoringFilterResult(' +  + ')'
8015
    
8016 1
    __repr__ = __str__
8017
    
8018 1
class EventFilterResult(FrozenClass):
8019
    '''
8020
    :ivar SelectClauseResults: 
8021
    :vartype SelectClauseResults: StatusCode 
8022
    :ivar SelectClauseDiagnosticInfos: 
8023
    :vartype SelectClauseDiagnosticInfos: DiagnosticInfo 
8024
    :ivar WhereClauseResult: 
8025
    :vartype WhereClauseResult: ContentFilterResult 
8026
    '''
8027 1
    def __init__(self):
8028
        self.SelectClauseResults = []
8029
        self.SelectClauseDiagnosticInfos = []
8030
        self.WhereClauseResult = ContentFilterResult()
8031
        self._freeze()
8032
    
8033 1
    def to_binary(self):
8034
        packet = []
8035
        packet.append(struct.pack('<i', len(self.SelectClauseResults)))
8036
        for fieldname in self.SelectClauseResults:
8037
            packet.append(fieldname.to_binary())
8038
        packet.append(struct.pack('<i', len(self.SelectClauseDiagnosticInfos)))
8039
        for fieldname in self.SelectClauseDiagnosticInfos:
8040
            packet.append(fieldname.to_binary())
8041
        packet.append(self.WhereClauseResult.to_binary())
8042
        return b''.join(packet)
8043
        
8044 1
    @staticmethod
8045
    def from_binary(data):
8046
        obj = EventFilterResult()
8047
        length = struct.unpack('<i', data.read(4))[0]
8048
        if length != -1:
8049
            for _ in range(0, length):
8050
                obj.SelectClauseResults.append(StatusCode.from_binary(data))
8051
        length = struct.unpack('<i', data.read(4))[0]
8052
        if length != -1:
8053
            for _ in range(0, length):
8054
                obj.SelectClauseDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8055
        obj.WhereClauseResult = ContentFilterResult.from_binary(data)
8056
        return obj
8057
    
8058 1
    def __str__(self):
8059
        return 'EventFilterResult(' + 'SelectClauseResults:' + str(self.SelectClauseResults) + ', '  + \
8060
             'SelectClauseDiagnosticInfos:' + str(self.SelectClauseDiagnosticInfos) + ', '  + \
8061
             'WhereClauseResult:' + str(self.WhereClauseResult) + ')'
8062
    
8063 1
    __repr__ = __str__
8064
    
8065 1
class AggregateFilterResult(FrozenClass):
8066
    '''
8067
    :ivar RevisedStartTime: 
8068
    :vartype RevisedStartTime: DateTime 
8069
    :ivar RevisedProcessingInterval: 
8070
    :vartype RevisedProcessingInterval: Double 
8071
    :ivar RevisedAggregateConfiguration: 
8072
    :vartype RevisedAggregateConfiguration: AggregateConfiguration 
8073
    '''
8074 1
    def __init__(self):
8075
        self.RevisedStartTime = datetime.now()
8076
        self.RevisedProcessingInterval = 0
8077
        self.RevisedAggregateConfiguration = AggregateConfiguration()
8078
        self._freeze()
8079
    
8080 1
    def to_binary(self):
8081
        packet = []
8082
        packet.append(pack_uatype('DateTime', self.RevisedStartTime))
8083
        packet.append(pack_uatype('Double', self.RevisedProcessingInterval))
8084
        packet.append(self.RevisedAggregateConfiguration.to_binary())
8085
        return b''.join(packet)
8086
        
8087 1
    @staticmethod
8088
    def from_binary(data):
8089
        obj = AggregateFilterResult()
8090
        obj.RevisedStartTime = unpack_uatype('DateTime', data)
8091
        obj.RevisedProcessingInterval = unpack_uatype('Double', data)
8092
        obj.RevisedAggregateConfiguration = AggregateConfiguration.from_binary(data)
8093
        return obj
8094
    
8095 1
    def __str__(self):
8096
        return 'AggregateFilterResult(' + 'RevisedStartTime:' + str(self.RevisedStartTime) + ', '  + \
8097
             'RevisedProcessingInterval:' + str(self.RevisedProcessingInterval) + ', '  + \
8098
             'RevisedAggregateConfiguration:' + str(self.RevisedAggregateConfiguration) + ')'
8099
    
8100 1
    __repr__ = __str__
8101
    
8102 1
class MonitoringParameters(FrozenClass):
8103
    '''
8104
    :ivar ClientHandle: 
8105
    :vartype ClientHandle: UInt32 
8106
    :ivar SamplingInterval: 
8107
    :vartype SamplingInterval: Double 
8108
    :ivar Filter: 
8109
    :vartype Filter: ExtensionObject 
8110
    :ivar QueueSize: 
8111
    :vartype QueueSize: UInt32 
8112
    :ivar DiscardOldest: 
8113
    :vartype DiscardOldest: Boolean 
8114
    '''
8115 1
    def __init__(self):
8116 1
        self.ClientHandle = 0
8117 1
        self.SamplingInterval = 0
8118 1
        self.Filter = None
8119 1
        self.QueueSize = 0
8120 1
        self.DiscardOldest = True
8121 1
        self._freeze()
8122
    
8123 1
    def to_binary(self):
8124 1
        packet = []
8125 1
        packet.append(pack_uatype('UInt32', self.ClientHandle))
8126 1
        packet.append(pack_uatype('Double', self.SamplingInterval))
8127 1
        packet.append(extensionobject_to_binary(self.Filter))
8128 1
        packet.append(pack_uatype('UInt32', self.QueueSize))
8129 1
        packet.append(pack_uatype('Boolean', self.DiscardOldest))
8130 1
        return b''.join(packet)
8131
        
8132 1
    @staticmethod
8133
    def from_binary(data):
8134 1
        obj = MonitoringParameters()
8135 1
        obj.ClientHandle = unpack_uatype('UInt32', data)
8136 1
        obj.SamplingInterval = unpack_uatype('Double', data)
8137 1
        obj.Filter = extensionobject_from_binary(data)
8138 1
        obj.QueueSize = unpack_uatype('UInt32', data)
8139 1
        obj.DiscardOldest = unpack_uatype('Boolean', data)
8140 1
        return obj
8141
    
8142 1
    def __str__(self):
8143
        return 'MonitoringParameters(' + 'ClientHandle:' + str(self.ClientHandle) + ', '  + \
8144
             'SamplingInterval:' + str(self.SamplingInterval) + ', '  + \
8145
             'Filter:' + str(self.Filter) + ', '  + \
8146
             'QueueSize:' + str(self.QueueSize) + ', '  + \
8147
             'DiscardOldest:' + str(self.DiscardOldest) + ')'
8148
    
8149 1
    __repr__ = __str__
8150
    
8151 1
class MonitoredItemCreateRequest(FrozenClass):
8152
    '''
8153
    :ivar ItemToMonitor: 
8154
    :vartype ItemToMonitor: ReadValueId 
8155
    :ivar MonitoringMode: 
8156
    :vartype MonitoringMode: MonitoringMode 
8157
    :ivar RequestedParameters: 
8158
    :vartype RequestedParameters: MonitoringParameters 
8159
    '''
8160 1
    def __init__(self):
8161 1
        self.ItemToMonitor = ReadValueId()
8162 1
        self.MonitoringMode = 0
8163 1
        self.RequestedParameters = MonitoringParameters()
8164 1
        self._freeze()
8165
    
8166 1
    def to_binary(self):
8167 1
        packet = []
8168 1
        packet.append(self.ItemToMonitor.to_binary())
8169 1
        packet.append(pack_uatype('UInt32', self.MonitoringMode))
8170 1
        packet.append(self.RequestedParameters.to_binary())
8171 1
        return b''.join(packet)
8172
        
8173 1
    @staticmethod
8174
    def from_binary(data):
8175 1
        obj = MonitoredItemCreateRequest()
8176 1
        obj.ItemToMonitor = ReadValueId.from_binary(data)
8177 1
        obj.MonitoringMode = unpack_uatype('UInt32', data)
8178 1
        obj.RequestedParameters = MonitoringParameters.from_binary(data)
8179 1
        return obj
8180
    
8181 1
    def __str__(self):
8182
        return 'MonitoredItemCreateRequest(' + 'ItemToMonitor:' + str(self.ItemToMonitor) + ', '  + \
8183
             'MonitoringMode:' + str(self.MonitoringMode) + ', '  + \
8184
             'RequestedParameters:' + str(self.RequestedParameters) + ')'
8185
    
8186 1
    __repr__ = __str__
8187
    
8188 1
class MonitoredItemCreateResult(FrozenClass):
8189
    '''
8190
    :ivar StatusCode: 
8191
    :vartype StatusCode: StatusCode 
8192
    :ivar MonitoredItemId: 
8193
    :vartype MonitoredItemId: UInt32 
8194
    :ivar RevisedSamplingInterval: 
8195
    :vartype RevisedSamplingInterval: Double 
8196
    :ivar RevisedQueueSize: 
8197
    :vartype RevisedQueueSize: UInt32 
8198
    :ivar FilterResult: 
8199
    :vartype FilterResult: ExtensionObject 
8200
    '''
8201 1
    def __init__(self):
8202 1
        self.StatusCode = StatusCode()
8203 1
        self.MonitoredItemId = 0
8204 1
        self.RevisedSamplingInterval = 0
8205 1
        self.RevisedQueueSize = 0
8206 1
        self.FilterResult = None
8207 1
        self._freeze()
8208
    
8209 1
    def to_binary(self):
8210 1
        packet = []
8211 1
        packet.append(self.StatusCode.to_binary())
8212 1
        packet.append(pack_uatype('UInt32', self.MonitoredItemId))
8213 1
        packet.append(pack_uatype('Double', self.RevisedSamplingInterval))
8214 1
        packet.append(pack_uatype('UInt32', self.RevisedQueueSize))
8215 1
        packet.append(extensionobject_to_binary(self.FilterResult))
8216 1
        return b''.join(packet)
8217
        
8218 1
    @staticmethod
8219
    def from_binary(data):
8220 1
        obj = MonitoredItemCreateResult()
8221 1
        obj.StatusCode = StatusCode.from_binary(data)
8222 1
        obj.MonitoredItemId = unpack_uatype('UInt32', data)
8223 1
        obj.RevisedSamplingInterval = unpack_uatype('Double', data)
8224 1
        obj.RevisedQueueSize = unpack_uatype('UInt32', data)
8225 1
        obj.FilterResult = extensionobject_from_binary(data)
8226 1
        return obj
8227
    
8228 1
    def __str__(self):
8229
        return 'MonitoredItemCreateResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
8230
             'MonitoredItemId:' + str(self.MonitoredItemId) + ', '  + \
8231
             'RevisedSamplingInterval:' + str(self.RevisedSamplingInterval) + ', '  + \
8232
             'RevisedQueueSize:' + str(self.RevisedQueueSize) + ', '  + \
8233
             'FilterResult:' + str(self.FilterResult) + ')'
8234
    
8235 1
    __repr__ = __str__
8236
    
8237 1
class CreateMonitoredItemsParameters(FrozenClass):
8238
    '''
8239
    :ivar SubscriptionId: 
8240
    :vartype SubscriptionId: UInt32 
8241
    :ivar TimestampsToReturn: 
8242
    :vartype TimestampsToReturn: TimestampsToReturn 
8243
    :ivar ItemsToCreate: 
8244
    :vartype ItemsToCreate: MonitoredItemCreateRequest 
8245
    '''
8246 1
    def __init__(self):
8247 1
        self.SubscriptionId = 0
8248 1
        self.TimestampsToReturn = 0
8249 1
        self.ItemsToCreate = []
8250 1
        self._freeze()
8251
    
8252 1
    def to_binary(self):
8253 1
        packet = []
8254 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
8255 1
        packet.append(pack_uatype('UInt32', self.TimestampsToReturn))
8256 1
        packet.append(struct.pack('<i', len(self.ItemsToCreate)))
8257 1
        for fieldname in self.ItemsToCreate:
8258 1
            packet.append(fieldname.to_binary())
8259 1
        return b''.join(packet)
8260
        
8261 1
    @staticmethod
8262
    def from_binary(data):
8263 1
        obj = CreateMonitoredItemsParameters()
8264 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
8265 1
        obj.TimestampsToReturn = unpack_uatype('UInt32', data)
8266 1
        length = struct.unpack('<i', data.read(4))[0]
8267 1
        if length != -1:
8268 1
            for _ in range(0, length):
8269 1
                obj.ItemsToCreate.append(MonitoredItemCreateRequest.from_binary(data))
8270 1
        return obj
8271
    
8272 1
    def __str__(self):
8273
        return 'CreateMonitoredItemsParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
8274
             'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', '  + \
8275
             'ItemsToCreate:' + str(self.ItemsToCreate) + ')'
8276
    
8277 1
    __repr__ = __str__
8278
    
8279 1
class CreateMonitoredItemsRequest(FrozenClass):
8280
    '''
8281
    :ivar TypeId: 
8282
    :vartype TypeId: NodeId 
8283
    :ivar RequestHeader: 
8284
    :vartype RequestHeader: RequestHeader 
8285
    :ivar Parameters: 
8286
    :vartype Parameters: CreateMonitoredItemsParameters 
8287
    '''
8288 1
    def __init__(self):
8289 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateMonitoredItemsRequest_Encoding_DefaultBinary)
8290 1
        self.RequestHeader = RequestHeader()
8291 1
        self.Parameters = CreateMonitoredItemsParameters()
8292 1
        self._freeze()
8293
    
8294 1
    def to_binary(self):
8295 1
        packet = []
8296 1
        packet.append(self.TypeId.to_binary())
8297 1
        packet.append(self.RequestHeader.to_binary())
8298 1
        packet.append(self.Parameters.to_binary())
8299 1
        return b''.join(packet)
8300
        
8301 1
    @staticmethod
8302
    def from_binary(data):
8303
        obj = CreateMonitoredItemsRequest()
8304
        obj.TypeId = NodeId.from_binary(data)
8305
        obj.RequestHeader = RequestHeader.from_binary(data)
8306
        obj.Parameters = CreateMonitoredItemsParameters.from_binary(data)
8307
        return obj
8308
    
8309 1
    def __str__(self):
8310
        return 'CreateMonitoredItemsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8311
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
8312
             'Parameters:' + str(self.Parameters) + ')'
8313
    
8314 1
    __repr__ = __str__
8315
    
8316 1
class CreateMonitoredItemsResponse(FrozenClass):
8317
    '''
8318
    :ivar TypeId: 
8319
    :vartype TypeId: NodeId 
8320
    :ivar ResponseHeader: 
8321
    :vartype ResponseHeader: ResponseHeader 
8322
    :ivar Results: 
8323
    :vartype Results: MonitoredItemCreateResult 
8324
    :ivar DiagnosticInfos: 
8325
    :vartype DiagnosticInfos: DiagnosticInfo 
8326
    '''
8327 1
    def __init__(self):
8328 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateMonitoredItemsResponse_Encoding_DefaultBinary)
8329 1
        self.ResponseHeader = ResponseHeader()
8330 1
        self.Results = []
8331 1
        self.DiagnosticInfos = []
8332 1
        self._freeze()
8333
    
8334 1
    def to_binary(self):
8335 1
        packet = []
8336 1
        packet.append(self.TypeId.to_binary())
8337 1
        packet.append(self.ResponseHeader.to_binary())
8338 1
        packet.append(struct.pack('<i', len(self.Results)))
8339 1
        for fieldname in self.Results:
8340 1
            packet.append(fieldname.to_binary())
8341 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
8342 1
        for fieldname in self.DiagnosticInfos:
8343
            packet.append(fieldname.to_binary())
8344 1
        return b''.join(packet)
8345
        
8346 1
    @staticmethod
8347
    def from_binary(data):
8348 1
        obj = CreateMonitoredItemsResponse()
8349 1
        obj.TypeId = NodeId.from_binary(data)
8350 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
8351 1
        length = struct.unpack('<i', data.read(4))[0]
8352 1
        if length != -1:
8353 1
            for _ in range(0, length):
8354 1
                obj.Results.append(MonitoredItemCreateResult.from_binary(data))
8355 1
        length = struct.unpack('<i', data.read(4))[0]
8356 1
        if length != -1:
8357 1
            for _ in range(0, length):
8358
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8359 1
        return obj
8360
    
8361 1
    def __str__(self):
8362
        return 'CreateMonitoredItemsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8363
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
8364
             'Results:' + str(self.Results) + ', '  + \
8365
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
8366
    
8367 1
    __repr__ = __str__
8368
    
8369 1
class MonitoredItemModifyRequest(FrozenClass):
8370
    '''
8371
    :ivar MonitoredItemId: 
8372
    :vartype MonitoredItemId: UInt32 
8373
    :ivar RequestedParameters: 
8374
    :vartype RequestedParameters: MonitoringParameters 
8375
    '''
8376 1
    def __init__(self):
8377
        self.MonitoredItemId = 0
8378
        self.RequestedParameters = MonitoringParameters()
8379
        self._freeze()
8380
    
8381 1
    def to_binary(self):
8382
        packet = []
8383
        packet.append(pack_uatype('UInt32', self.MonitoredItemId))
8384
        packet.append(self.RequestedParameters.to_binary())
8385
        return b''.join(packet)
8386
        
8387 1
    @staticmethod
8388
    def from_binary(data):
8389
        obj = MonitoredItemModifyRequest()
8390
        obj.MonitoredItemId = unpack_uatype('UInt32', data)
8391
        obj.RequestedParameters = MonitoringParameters.from_binary(data)
8392
        return obj
8393
    
8394 1
    def __str__(self):
8395
        return 'MonitoredItemModifyRequest(' + 'MonitoredItemId:' + str(self.MonitoredItemId) + ', '  + \
8396
             'RequestedParameters:' + str(self.RequestedParameters) + ')'
8397
    
8398 1
    __repr__ = __str__
8399
    
8400 1
class MonitoredItemModifyResult(FrozenClass):
8401
    '''
8402
    :ivar StatusCode: 
8403
    :vartype StatusCode: StatusCode 
8404
    :ivar RevisedSamplingInterval: 
8405
    :vartype RevisedSamplingInterval: Double 
8406
    :ivar RevisedQueueSize: 
8407
    :vartype RevisedQueueSize: UInt32 
8408
    :ivar FilterResult: 
8409
    :vartype FilterResult: ExtensionObject 
8410
    '''
8411 1
    def __init__(self):
8412
        self.StatusCode = StatusCode()
8413
        self.RevisedSamplingInterval = 0
8414
        self.RevisedQueueSize = 0
8415
        self.FilterResult = None
8416
        self._freeze()
8417
    
8418 1
    def to_binary(self):
8419
        packet = []
8420
        packet.append(self.StatusCode.to_binary())
8421
        packet.append(pack_uatype('Double', self.RevisedSamplingInterval))
8422
        packet.append(pack_uatype('UInt32', self.RevisedQueueSize))
8423
        packet.append(extensionobject_to_binary(self.FilterResult))
8424
        return b''.join(packet)
8425
        
8426 1
    @staticmethod
8427
    def from_binary(data):
8428
        obj = MonitoredItemModifyResult()
8429
        obj.StatusCode = StatusCode.from_binary(data)
8430
        obj.RevisedSamplingInterval = unpack_uatype('Double', data)
8431
        obj.RevisedQueueSize = unpack_uatype('UInt32', data)
8432
        obj.FilterResult = extensionobject_from_binary(data)
8433
        return obj
8434
    
8435 1
    def __str__(self):
8436
        return 'MonitoredItemModifyResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
8437
             'RevisedSamplingInterval:' + str(self.RevisedSamplingInterval) + ', '  + \
8438
             'RevisedQueueSize:' + str(self.RevisedQueueSize) + ', '  + \
8439
             'FilterResult:' + str(self.FilterResult) + ')'
8440
    
8441 1
    __repr__ = __str__
8442
    
8443 1
class ModifyMonitoredItemsParameters(FrozenClass):
8444
    '''
8445
    :ivar SubscriptionId: 
8446
    :vartype SubscriptionId: UInt32 
8447
    :ivar TimestampsToReturn: 
8448
    :vartype TimestampsToReturn: TimestampsToReturn 
8449
    :ivar ItemsToModify: 
8450
    :vartype ItemsToModify: MonitoredItemModifyRequest 
8451
    '''
8452 1
    def __init__(self):
8453
        self.SubscriptionId = 0
8454
        self.TimestampsToReturn = 0
8455
        self.ItemsToModify = []
8456
        self._freeze()
8457
    
8458 1
    def to_binary(self):
8459
        packet = []
8460
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
8461
        packet.append(pack_uatype('UInt32', self.TimestampsToReturn))
8462
        packet.append(struct.pack('<i', len(self.ItemsToModify)))
8463
        for fieldname in self.ItemsToModify:
8464
            packet.append(fieldname.to_binary())
8465
        return b''.join(packet)
8466
        
8467 1
    @staticmethod
8468
    def from_binary(data):
8469
        obj = ModifyMonitoredItemsParameters()
8470
        obj.SubscriptionId = unpack_uatype('UInt32', data)
8471
        obj.TimestampsToReturn = unpack_uatype('UInt32', data)
8472
        length = struct.unpack('<i', data.read(4))[0]
8473
        if length != -1:
8474
            for _ in range(0, length):
8475
                obj.ItemsToModify.append(MonitoredItemModifyRequest.from_binary(data))
8476
        return obj
8477
    
8478 1
    def __str__(self):
8479
        return 'ModifyMonitoredItemsParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
8480
             'TimestampsToReturn:' + str(self.TimestampsToReturn) + ', '  + \
8481
             'ItemsToModify:' + str(self.ItemsToModify) + ')'
8482
    
8483 1
    __repr__ = __str__
8484
    
8485 1
class ModifyMonitoredItemsRequest(FrozenClass):
8486
    '''
8487
    :ivar TypeId: 
8488
    :vartype TypeId: NodeId 
8489
    :ivar RequestHeader: 
8490
    :vartype RequestHeader: RequestHeader 
8491
    :ivar Parameters: 
8492
    :vartype Parameters: ModifyMonitoredItemsParameters 
8493
    '''
8494 1
    def __init__(self):
8495
        self.TypeId = FourByteNodeId(ObjectIds.ModifyMonitoredItemsRequest_Encoding_DefaultBinary)
8496
        self.RequestHeader = RequestHeader()
8497
        self.Parameters = ModifyMonitoredItemsParameters()
8498
        self._freeze()
8499
    
8500 1
    def to_binary(self):
8501
        packet = []
8502
        packet.append(self.TypeId.to_binary())
8503
        packet.append(self.RequestHeader.to_binary())
8504
        packet.append(self.Parameters.to_binary())
8505
        return b''.join(packet)
8506
        
8507 1
    @staticmethod
8508
    def from_binary(data):
8509
        obj = ModifyMonitoredItemsRequest()
8510
        obj.TypeId = NodeId.from_binary(data)
8511
        obj.RequestHeader = RequestHeader.from_binary(data)
8512
        obj.Parameters = ModifyMonitoredItemsParameters.from_binary(data)
8513
        return obj
8514
    
8515 1
    def __str__(self):
8516
        return 'ModifyMonitoredItemsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8517
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
8518
             'Parameters:' + str(self.Parameters) + ')'
8519
    
8520 1
    __repr__ = __str__
8521
    
8522 1
class ModifyMonitoredItemsResponse(FrozenClass):
8523
    '''
8524
    :ivar TypeId: 
8525
    :vartype TypeId: NodeId 
8526
    :ivar ResponseHeader: 
8527
    :vartype ResponseHeader: ResponseHeader 
8528
    :ivar Results: 
8529
    :vartype Results: MonitoredItemModifyResult 
8530
    :ivar DiagnosticInfos: 
8531
    :vartype DiagnosticInfos: DiagnosticInfo 
8532
    '''
8533 1
    def __init__(self):
8534
        self.TypeId = FourByteNodeId(ObjectIds.ModifyMonitoredItemsResponse_Encoding_DefaultBinary)
8535
        self.ResponseHeader = ResponseHeader()
8536
        self.Results = []
8537
        self.DiagnosticInfos = []
8538
        self._freeze()
8539
    
8540 1
    def to_binary(self):
8541
        packet = []
8542
        packet.append(self.TypeId.to_binary())
8543
        packet.append(self.ResponseHeader.to_binary())
8544
        packet.append(struct.pack('<i', len(self.Results)))
8545
        for fieldname in self.Results:
8546
            packet.append(fieldname.to_binary())
8547
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
8548
        for fieldname in self.DiagnosticInfos:
8549
            packet.append(fieldname.to_binary())
8550
        return b''.join(packet)
8551
        
8552 1
    @staticmethod
8553
    def from_binary(data):
8554
        obj = ModifyMonitoredItemsResponse()
8555
        obj.TypeId = NodeId.from_binary(data)
8556
        obj.ResponseHeader = ResponseHeader.from_binary(data)
8557
        length = struct.unpack('<i', data.read(4))[0]
8558
        if length != -1:
8559
            for _ in range(0, length):
8560
                obj.Results.append(MonitoredItemModifyResult.from_binary(data))
8561
        length = struct.unpack('<i', data.read(4))[0]
8562
        if length != -1:
8563
            for _ in range(0, length):
8564
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8565
        return obj
8566
    
8567 1
    def __str__(self):
8568
        return 'ModifyMonitoredItemsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8569
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
8570
             'Results:' + str(self.Results) + ', '  + \
8571
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
8572
    
8573 1
    __repr__ = __str__
8574
    
8575 1
class SetMonitoringModeParameters(FrozenClass):
8576
    '''
8577
    :ivar SubscriptionId: 
8578
    :vartype SubscriptionId: UInt32 
8579
    :ivar MonitoringMode: 
8580
    :vartype MonitoringMode: MonitoringMode 
8581
    :ivar MonitoredItemIds: 
8582
    :vartype MonitoredItemIds: UInt32 
8583
    '''
8584 1
    def __init__(self):
8585
        self.SubscriptionId = 0
8586
        self.MonitoringMode = 0
8587
        self.MonitoredItemIds = []
8588
        self._freeze()
8589
    
8590 1
    def to_binary(self):
8591
        packet = []
8592
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
8593
        packet.append(pack_uatype('UInt32', self.MonitoringMode))
8594
        packet.append(struct.pack('<i', len(self.MonitoredItemIds)))
8595
        for fieldname in self.MonitoredItemIds:
8596
            packet.append(pack_uatype('UInt32', fieldname))
8597
        return b''.join(packet)
8598
        
8599 1
    @staticmethod
8600
    def from_binary(data):
8601
        obj = SetMonitoringModeParameters()
8602
        obj.SubscriptionId = unpack_uatype('UInt32', data)
8603
        obj.MonitoringMode = unpack_uatype('UInt32', data)
8604
        obj.MonitoredItemIds = unpack_uatype_array('UInt32', data)
8605
        return obj
8606
    
8607 1
    def __str__(self):
8608
        return 'SetMonitoringModeParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
8609
             'MonitoringMode:' + str(self.MonitoringMode) + ', '  + \
8610
             'MonitoredItemIds:' + str(self.MonitoredItemIds) + ')'
8611
    
8612 1
    __repr__ = __str__
8613
    
8614 1
class SetMonitoringModeRequest(FrozenClass):
8615
    '''
8616
    :ivar TypeId: 
8617
    :vartype TypeId: NodeId 
8618
    :ivar RequestHeader: 
8619
    :vartype RequestHeader: RequestHeader 
8620
    :ivar Parameters: 
8621
    :vartype Parameters: SetMonitoringModeParameters 
8622
    '''
8623 1
    def __init__(self):
8624
        self.TypeId = FourByteNodeId(ObjectIds.SetMonitoringModeRequest_Encoding_DefaultBinary)
8625
        self.RequestHeader = RequestHeader()
8626
        self.Parameters = SetMonitoringModeParameters()
8627
        self._freeze()
8628
    
8629 1
    def to_binary(self):
8630
        packet = []
8631
        packet.append(self.TypeId.to_binary())
8632
        packet.append(self.RequestHeader.to_binary())
8633
        packet.append(self.Parameters.to_binary())
8634
        return b''.join(packet)
8635
        
8636 1
    @staticmethod
8637
    def from_binary(data):
8638
        obj = SetMonitoringModeRequest()
8639
        obj.TypeId = NodeId.from_binary(data)
8640
        obj.RequestHeader = RequestHeader.from_binary(data)
8641
        obj.Parameters = SetMonitoringModeParameters.from_binary(data)
8642
        return obj
8643
    
8644 1
    def __str__(self):
8645
        return 'SetMonitoringModeRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8646
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
8647
             'Parameters:' + str(self.Parameters) + ')'
8648
    
8649 1
    __repr__ = __str__
8650
    
8651 1
class SetMonitoringModeResult(FrozenClass):
8652
    '''
8653
    :ivar Results: 
8654
    :vartype Results: StatusCode 
8655
    :ivar DiagnosticInfos: 
8656
    :vartype DiagnosticInfos: DiagnosticInfo 
8657
    '''
8658 1
    def __init__(self):
8659
        self.Results = []
8660
        self.DiagnosticInfos = []
8661
        self._freeze()
8662
    
8663 1
    def to_binary(self):
8664
        packet = []
8665
        packet.append(struct.pack('<i', len(self.Results)))
8666
        for fieldname in self.Results:
8667
            packet.append(fieldname.to_binary())
8668
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
8669
        for fieldname in self.DiagnosticInfos:
8670
            packet.append(fieldname.to_binary())
8671
        return b''.join(packet)
8672
        
8673 1
    @staticmethod
8674
    def from_binary(data):
8675
        obj = SetMonitoringModeResult()
8676
        length = struct.unpack('<i', data.read(4))[0]
8677
        if length != -1:
8678
            for _ in range(0, length):
8679
                obj.Results.append(StatusCode.from_binary(data))
8680
        length = struct.unpack('<i', data.read(4))[0]
8681
        if length != -1:
8682
            for _ in range(0, length):
8683
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8684
        return obj
8685
    
8686 1
    def __str__(self):
8687
        return 'SetMonitoringModeResult(' + 'Results:' + str(self.Results) + ', '  + \
8688
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
8689
    
8690 1
    __repr__ = __str__
8691
    
8692 1
class SetMonitoringModeResponse(FrozenClass):
8693
    '''
8694
    :ivar TypeId: 
8695
    :vartype TypeId: NodeId 
8696
    :ivar ResponseHeader: 
8697
    :vartype ResponseHeader: ResponseHeader 
8698
    :ivar Parameters: 
8699
    :vartype Parameters: SetMonitoringModeResult 
8700
    '''
8701 1
    def __init__(self):
8702
        self.TypeId = FourByteNodeId(ObjectIds.SetMonitoringModeResponse_Encoding_DefaultBinary)
8703
        self.ResponseHeader = ResponseHeader()
8704
        self.Parameters = SetMonitoringModeResult()
8705
        self._freeze()
8706
    
8707 1
    def to_binary(self):
8708
        packet = []
8709
        packet.append(self.TypeId.to_binary())
8710
        packet.append(self.ResponseHeader.to_binary())
8711
        packet.append(self.Parameters.to_binary())
8712
        return b''.join(packet)
8713
        
8714 1
    @staticmethod
8715
    def from_binary(data):
8716
        obj = SetMonitoringModeResponse()
8717
        obj.TypeId = NodeId.from_binary(data)
8718
        obj.ResponseHeader = ResponseHeader.from_binary(data)
8719
        obj.Parameters = SetMonitoringModeResult.from_binary(data)
8720
        return obj
8721
    
8722 1
    def __str__(self):
8723
        return 'SetMonitoringModeResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8724
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
8725
             'Parameters:' + str(self.Parameters) + ')'
8726
    
8727 1
    __repr__ = __str__
8728
    
8729 1
class SetTriggeringParameters(FrozenClass):
8730
    '''
8731
    :ivar SubscriptionId: 
8732
    :vartype SubscriptionId: UInt32 
8733
    :ivar TriggeringItemId: 
8734
    :vartype TriggeringItemId: UInt32 
8735
    :ivar LinksToAdd: 
8736
    :vartype LinksToAdd: UInt32 
8737
    :ivar LinksToRemove: 
8738
    :vartype LinksToRemove: UInt32 
8739
    '''
8740 1
    def __init__(self):
8741
        self.SubscriptionId = 0
8742
        self.TriggeringItemId = 0
8743
        self.LinksToAdd = []
8744
        self.LinksToRemove = []
8745
        self._freeze()
8746
    
8747 1
    def to_binary(self):
8748
        packet = []
8749
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
8750
        packet.append(pack_uatype('UInt32', self.TriggeringItemId))
8751
        packet.append(struct.pack('<i', len(self.LinksToAdd)))
8752
        for fieldname in self.LinksToAdd:
8753
            packet.append(pack_uatype('UInt32', fieldname))
8754
        packet.append(struct.pack('<i', len(self.LinksToRemove)))
8755
        for fieldname in self.LinksToRemove:
8756
            packet.append(pack_uatype('UInt32', fieldname))
8757
        return b''.join(packet)
8758
        
8759 1
    @staticmethod
8760
    def from_binary(data):
8761
        obj = SetTriggeringParameters()
8762
        obj.SubscriptionId = unpack_uatype('UInt32', data)
8763
        obj.TriggeringItemId = unpack_uatype('UInt32', data)
8764
        obj.LinksToAdd = unpack_uatype_array('UInt32', data)
8765
        obj.LinksToRemove = unpack_uatype_array('UInt32', data)
8766
        return obj
8767
    
8768 1
    def __str__(self):
8769
        return 'SetTriggeringParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
8770
             'TriggeringItemId:' + str(self.TriggeringItemId) + ', '  + \
8771
             'LinksToAdd:' + str(self.LinksToAdd) + ', '  + \
8772
             'LinksToRemove:' + str(self.LinksToRemove) + ')'
8773
    
8774 1
    __repr__ = __str__
8775
    
8776 1
class SetTriggeringRequest(FrozenClass):
8777
    '''
8778
    :ivar TypeId: 
8779
    :vartype TypeId: NodeId 
8780
    :ivar RequestHeader: 
8781
    :vartype RequestHeader: RequestHeader 
8782
    :ivar Parameters: 
8783
    :vartype Parameters: SetTriggeringParameters 
8784
    '''
8785 1
    def __init__(self):
8786
        self.TypeId = FourByteNodeId(ObjectIds.SetTriggeringRequest_Encoding_DefaultBinary)
8787
        self.RequestHeader = RequestHeader()
8788
        self.Parameters = SetTriggeringParameters()
8789
        self._freeze()
8790
    
8791 1
    def to_binary(self):
8792
        packet = []
8793
        packet.append(self.TypeId.to_binary())
8794
        packet.append(self.RequestHeader.to_binary())
8795
        packet.append(self.Parameters.to_binary())
8796
        return b''.join(packet)
8797
        
8798 1
    @staticmethod
8799
    def from_binary(data):
8800
        obj = SetTriggeringRequest()
8801
        obj.TypeId = NodeId.from_binary(data)
8802
        obj.RequestHeader = RequestHeader.from_binary(data)
8803
        obj.Parameters = SetTriggeringParameters.from_binary(data)
8804
        return obj
8805
    
8806 1
    def __str__(self):
8807
        return 'SetTriggeringRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8808
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
8809
             'Parameters:' + str(self.Parameters) + ')'
8810
    
8811 1
    __repr__ = __str__
8812
    
8813 1
class SetTriggeringResult(FrozenClass):
8814
    '''
8815
    :ivar AddResults: 
8816
    :vartype AddResults: StatusCode 
8817
    :ivar AddDiagnosticInfos: 
8818
    :vartype AddDiagnosticInfos: DiagnosticInfo 
8819
    :ivar RemoveResults: 
8820
    :vartype RemoveResults: StatusCode 
8821
    :ivar RemoveDiagnosticInfos: 
8822
    :vartype RemoveDiagnosticInfos: DiagnosticInfo 
8823
    '''
8824 1
    def __init__(self):
8825
        self.AddResults = []
8826
        self.AddDiagnosticInfos = []
8827
        self.RemoveResults = []
8828
        self.RemoveDiagnosticInfos = []
8829
        self._freeze()
8830
    
8831 1
    def to_binary(self):
8832
        packet = []
8833
        packet.append(struct.pack('<i', len(self.AddResults)))
8834
        for fieldname in self.AddResults:
8835
            packet.append(fieldname.to_binary())
8836
        packet.append(struct.pack('<i', len(self.AddDiagnosticInfos)))
8837
        for fieldname in self.AddDiagnosticInfos:
8838
            packet.append(fieldname.to_binary())
8839
        packet.append(struct.pack('<i', len(self.RemoveResults)))
8840
        for fieldname in self.RemoveResults:
8841
            packet.append(fieldname.to_binary())
8842
        packet.append(struct.pack('<i', len(self.RemoveDiagnosticInfos)))
8843
        for fieldname in self.RemoveDiagnosticInfos:
8844
            packet.append(fieldname.to_binary())
8845
        return b''.join(packet)
8846
        
8847 1
    @staticmethod
8848
    def from_binary(data):
8849
        obj = SetTriggeringResult()
8850
        length = struct.unpack('<i', data.read(4))[0]
8851
        if length != -1:
8852
            for _ in range(0, length):
8853
                obj.AddResults.append(StatusCode.from_binary(data))
8854
        length = struct.unpack('<i', data.read(4))[0]
8855
        if length != -1:
8856
            for _ in range(0, length):
8857
                obj.AddDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8858
        length = struct.unpack('<i', data.read(4))[0]
8859
        if length != -1:
8860
            for _ in range(0, length):
8861
                obj.RemoveResults.append(StatusCode.from_binary(data))
8862
        length = struct.unpack('<i', data.read(4))[0]
8863
        if length != -1:
8864
            for _ in range(0, length):
8865
                obj.RemoveDiagnosticInfos.append(DiagnosticInfo.from_binary(data))
8866
        return obj
8867
    
8868 1
    def __str__(self):
8869
        return 'SetTriggeringResult(' + 'AddResults:' + str(self.AddResults) + ', '  + \
8870
             'AddDiagnosticInfos:' + str(self.AddDiagnosticInfos) + ', '  + \
8871
             'RemoveResults:' + str(self.RemoveResults) + ', '  + \
8872
             'RemoveDiagnosticInfos:' + str(self.RemoveDiagnosticInfos) + ')'
8873
    
8874 1
    __repr__ = __str__
8875
    
8876 1
class SetTriggeringResponse(FrozenClass):
8877
    '''
8878
    :ivar TypeId: 
8879
    :vartype TypeId: NodeId 
8880
    :ivar ResponseHeader: 
8881
    :vartype ResponseHeader: ResponseHeader 
8882
    :ivar Parameters: 
8883
    :vartype Parameters: SetTriggeringResult 
8884
    '''
8885 1
    def __init__(self):
8886
        self.TypeId = FourByteNodeId(ObjectIds.SetTriggeringResponse_Encoding_DefaultBinary)
8887
        self.ResponseHeader = ResponseHeader()
8888
        self.Parameters = SetTriggeringResult()
8889
        self._freeze()
8890
    
8891 1
    def to_binary(self):
8892
        packet = []
8893
        packet.append(self.TypeId.to_binary())
8894
        packet.append(self.ResponseHeader.to_binary())
8895
        packet.append(self.Parameters.to_binary())
8896
        return b''.join(packet)
8897
        
8898 1
    @staticmethod
8899
    def from_binary(data):
8900
        obj = SetTriggeringResponse()
8901
        obj.TypeId = NodeId.from_binary(data)
8902
        obj.ResponseHeader = ResponseHeader.from_binary(data)
8903
        obj.Parameters = SetTriggeringResult.from_binary(data)
8904
        return obj
8905
    
8906 1
    def __str__(self):
8907
        return 'SetTriggeringResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8908
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
8909
             'Parameters:' + str(self.Parameters) + ')'
8910
    
8911 1
    __repr__ = __str__
8912
    
8913 1
class DeleteMonitoredItemsParameters(FrozenClass):
8914
    '''
8915
    :ivar SubscriptionId: 
8916
    :vartype SubscriptionId: UInt32 
8917
    :ivar MonitoredItemIds: 
8918
    :vartype MonitoredItemIds: UInt32 
8919
    '''
8920 1
    def __init__(self):
8921 1
        self.SubscriptionId = 0
8922 1
        self.MonitoredItemIds = []
8923 1
        self._freeze()
8924
    
8925 1
    def to_binary(self):
8926 1
        packet = []
8927 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
8928 1
        packet.append(struct.pack('<i', len(self.MonitoredItemIds)))
8929 1
        for fieldname in self.MonitoredItemIds:
8930 1
            packet.append(pack_uatype('UInt32', fieldname))
8931 1
        return b''.join(packet)
8932
        
8933 1
    @staticmethod
8934
    def from_binary(data):
8935 1
        obj = DeleteMonitoredItemsParameters()
8936 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
8937 1
        obj.MonitoredItemIds = unpack_uatype_array('UInt32', data)
8938 1
        return obj
8939
    
8940 1
    def __str__(self):
8941
        return 'DeleteMonitoredItemsParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
8942
             'MonitoredItemIds:' + str(self.MonitoredItemIds) + ')'
8943
    
8944 1
    __repr__ = __str__
8945
    
8946 1
class DeleteMonitoredItemsRequest(FrozenClass):
8947
    '''
8948
    :ivar TypeId: 
8949
    :vartype TypeId: NodeId 
8950
    :ivar RequestHeader: 
8951
    :vartype RequestHeader: RequestHeader 
8952
    :ivar Parameters: 
8953
    :vartype Parameters: DeleteMonitoredItemsParameters 
8954
    '''
8955 1
    def __init__(self):
8956 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteMonitoredItemsRequest_Encoding_DefaultBinary)
8957 1
        self.RequestHeader = RequestHeader()
8958 1
        self.Parameters = DeleteMonitoredItemsParameters()
8959 1
        self._freeze()
8960
    
8961 1
    def to_binary(self):
8962 1
        packet = []
8963 1
        packet.append(self.TypeId.to_binary())
8964 1
        packet.append(self.RequestHeader.to_binary())
8965 1
        packet.append(self.Parameters.to_binary())
8966 1
        return b''.join(packet)
8967
        
8968 1
    @staticmethod
8969
    def from_binary(data):
8970
        obj = DeleteMonitoredItemsRequest()
8971
        obj.TypeId = NodeId.from_binary(data)
8972
        obj.RequestHeader = RequestHeader.from_binary(data)
8973
        obj.Parameters = DeleteMonitoredItemsParameters.from_binary(data)
8974
        return obj
8975
    
8976 1
    def __str__(self):
8977
        return 'DeleteMonitoredItemsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
8978
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
8979
             'Parameters:' + str(self.Parameters) + ')'
8980
    
8981 1
    __repr__ = __str__
8982
    
8983 1
class DeleteMonitoredItemsResponse(FrozenClass):
8984
    '''
8985
    :ivar TypeId: 
8986
    :vartype TypeId: NodeId 
8987
    :ivar ResponseHeader: 
8988
    :vartype ResponseHeader: ResponseHeader 
8989
    :ivar Results: 
8990
    :vartype Results: StatusCode 
8991
    :ivar DiagnosticInfos: 
8992
    :vartype DiagnosticInfos: DiagnosticInfo 
8993
    '''
8994 1
    def __init__(self):
8995 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteMonitoredItemsResponse_Encoding_DefaultBinary)
8996 1
        self.ResponseHeader = ResponseHeader()
8997 1
        self.Results = []
8998 1
        self.DiagnosticInfos = []
8999 1
        self._freeze()
9000
    
9001 1
    def to_binary(self):
9002 1
        packet = []
9003 1
        packet.append(self.TypeId.to_binary())
9004 1
        packet.append(self.ResponseHeader.to_binary())
9005 1
        packet.append(struct.pack('<i', len(self.Results)))
9006 1
        for fieldname in self.Results:
9007 1
            packet.append(fieldname.to_binary())
9008 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
9009 1
        for fieldname in self.DiagnosticInfos:
9010
            packet.append(fieldname.to_binary())
9011 1
        return b''.join(packet)
9012
        
9013 1
    @staticmethod
9014
    def from_binary(data):
9015 1
        obj = DeleteMonitoredItemsResponse()
9016 1
        obj.TypeId = NodeId.from_binary(data)
9017 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9018 1
        length = struct.unpack('<i', data.read(4))[0]
9019 1
        if length != -1:
9020 1
            for _ in range(0, length):
9021 1
                obj.Results.append(StatusCode.from_binary(data))
9022 1
        length = struct.unpack('<i', data.read(4))[0]
9023 1
        if length != -1:
9024 1
            for _ in range(0, length):
9025
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
9026 1
        return obj
9027
    
9028 1
    def __str__(self):
9029
        return 'DeleteMonitoredItemsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9030
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9031
             'Results:' + str(self.Results) + ', '  + \
9032
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9033
    
9034 1
    __repr__ = __str__
9035
    
9036 1
class CreateSubscriptionParameters(FrozenClass):
9037
    '''
9038
    :ivar RequestedPublishingInterval: 
9039
    :vartype RequestedPublishingInterval: Double 
9040
    :ivar RequestedLifetimeCount: 
9041
    :vartype RequestedLifetimeCount: UInt32 
9042
    :ivar RequestedMaxKeepAliveCount: 
9043
    :vartype RequestedMaxKeepAliveCount: UInt32 
9044
    :ivar MaxNotificationsPerPublish: 
9045
    :vartype MaxNotificationsPerPublish: UInt32 
9046
    :ivar PublishingEnabled: 
9047
    :vartype PublishingEnabled: Boolean 
9048
    :ivar Priority: 
9049
    :vartype Priority: Byte 
9050
    '''
9051 1
    def __init__(self):
9052 1
        self.RequestedPublishingInterval = 0
9053 1
        self.RequestedLifetimeCount = 0
9054 1
        self.RequestedMaxKeepAliveCount = 0
9055 1
        self.MaxNotificationsPerPublish = 0
9056 1
        self.PublishingEnabled = True
9057 1
        self.Priority = 0
9058 1
        self._freeze()
9059
    
9060 1
    def to_binary(self):
9061 1
        packet = []
9062 1
        packet.append(pack_uatype('Double', self.RequestedPublishingInterval))
9063 1
        packet.append(pack_uatype('UInt32', self.RequestedLifetimeCount))
9064 1
        packet.append(pack_uatype('UInt32', self.RequestedMaxKeepAliveCount))
9065 1
        packet.append(pack_uatype('UInt32', self.MaxNotificationsPerPublish))
9066 1
        packet.append(pack_uatype('Boolean', self.PublishingEnabled))
9067 1
        packet.append(pack_uatype('Byte', self.Priority))
9068 1
        return b''.join(packet)
9069
        
9070 1
    @staticmethod
9071
    def from_binary(data):
9072 1
        obj = CreateSubscriptionParameters()
9073 1
        obj.RequestedPublishingInterval = unpack_uatype('Double', data)
9074 1
        obj.RequestedLifetimeCount = unpack_uatype('UInt32', data)
9075 1
        obj.RequestedMaxKeepAliveCount = unpack_uatype('UInt32', data)
9076 1
        obj.MaxNotificationsPerPublish = unpack_uatype('UInt32', data)
9077 1
        obj.PublishingEnabled = unpack_uatype('Boolean', data)
9078 1
        obj.Priority = unpack_uatype('Byte', data)
9079 1
        return obj
9080
    
9081 1
    def __str__(self):
9082
        return 'CreateSubscriptionParameters(' + 'RequestedPublishingInterval:' + str(self.RequestedPublishingInterval) + ', '  + \
9083
             'RequestedLifetimeCount:' + str(self.RequestedLifetimeCount) + ', '  + \
9084
             'RequestedMaxKeepAliveCount:' + str(self.RequestedMaxKeepAliveCount) + ', '  + \
9085
             'MaxNotificationsPerPublish:' + str(self.MaxNotificationsPerPublish) + ', '  + \
9086
             'PublishingEnabled:' + str(self.PublishingEnabled) + ', '  + \
9087
             'Priority:' + str(self.Priority) + ')'
9088
    
9089 1
    __repr__ = __str__
9090
    
9091 1
class CreateSubscriptionRequest(FrozenClass):
9092
    '''
9093
    :ivar TypeId: 
9094
    :vartype TypeId: NodeId 
9095
    :ivar RequestHeader: 
9096
    :vartype RequestHeader: RequestHeader 
9097
    :ivar Parameters: 
9098
    :vartype Parameters: CreateSubscriptionParameters 
9099
    '''
9100 1
    def __init__(self):
9101 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSubscriptionRequest_Encoding_DefaultBinary)
9102 1
        self.RequestHeader = RequestHeader()
9103 1
        self.Parameters = CreateSubscriptionParameters()
9104 1
        self._freeze()
9105
    
9106 1
    def to_binary(self):
9107 1
        packet = []
9108 1
        packet.append(self.TypeId.to_binary())
9109 1
        packet.append(self.RequestHeader.to_binary())
9110 1
        packet.append(self.Parameters.to_binary())
9111 1
        return b''.join(packet)
9112
        
9113 1
    @staticmethod
9114
    def from_binary(data):
9115
        obj = CreateSubscriptionRequest()
9116
        obj.TypeId = NodeId.from_binary(data)
9117
        obj.RequestHeader = RequestHeader.from_binary(data)
9118
        obj.Parameters = CreateSubscriptionParameters.from_binary(data)
9119
        return obj
9120
    
9121 1
    def __str__(self):
9122
        return 'CreateSubscriptionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9123
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9124
             'Parameters:' + str(self.Parameters) + ')'
9125
    
9126 1
    __repr__ = __str__
9127
    
9128 1
class CreateSubscriptionResult(FrozenClass):
9129
    '''
9130
    :ivar SubscriptionId: 
9131
    :vartype SubscriptionId: UInt32 
9132
    :ivar RevisedPublishingInterval: 
9133
    :vartype RevisedPublishingInterval: Double 
9134
    :ivar RevisedLifetimeCount: 
9135
    :vartype RevisedLifetimeCount: UInt32 
9136
    :ivar RevisedMaxKeepAliveCount: 
9137
    :vartype RevisedMaxKeepAliveCount: UInt32 
9138
    '''
9139 1
    def __init__(self):
9140 1
        self.SubscriptionId = 0
9141 1
        self.RevisedPublishingInterval = 0
9142 1
        self.RevisedLifetimeCount = 0
9143 1
        self.RevisedMaxKeepAliveCount = 0
9144 1
        self._freeze()
9145
    
9146 1
    def to_binary(self):
9147 1
        packet = []
9148 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
9149 1
        packet.append(pack_uatype('Double', self.RevisedPublishingInterval))
9150 1
        packet.append(pack_uatype('UInt32', self.RevisedLifetimeCount))
9151 1
        packet.append(pack_uatype('UInt32', self.RevisedMaxKeepAliveCount))
9152 1
        return b''.join(packet)
9153
        
9154 1
    @staticmethod
9155
    def from_binary(data):
9156 1
        obj = CreateSubscriptionResult()
9157 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
9158 1
        obj.RevisedPublishingInterval = unpack_uatype('Double', data)
9159 1
        obj.RevisedLifetimeCount = unpack_uatype('UInt32', data)
9160 1
        obj.RevisedMaxKeepAliveCount = unpack_uatype('UInt32', data)
9161 1
        return obj
9162
    
9163 1
    def __str__(self):
9164
        return 'CreateSubscriptionResult(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
9165
             'RevisedPublishingInterval:' + str(self.RevisedPublishingInterval) + ', '  + \
9166
             'RevisedLifetimeCount:' + str(self.RevisedLifetimeCount) + ', '  + \
9167
             'RevisedMaxKeepAliveCount:' + str(self.RevisedMaxKeepAliveCount) + ')'
9168
    
9169 1
    __repr__ = __str__
9170
    
9171 1
class CreateSubscriptionResponse(FrozenClass):
9172
    '''
9173
    :ivar TypeId: 
9174
    :vartype TypeId: NodeId 
9175
    :ivar ResponseHeader: 
9176
    :vartype ResponseHeader: ResponseHeader 
9177
    :ivar Parameters: 
9178
    :vartype Parameters: CreateSubscriptionResult 
9179
    '''
9180 1
    def __init__(self):
9181 1
        self.TypeId = FourByteNodeId(ObjectIds.CreateSubscriptionResponse_Encoding_DefaultBinary)
9182 1
        self.ResponseHeader = ResponseHeader()
9183 1
        self.Parameters = CreateSubscriptionResult()
9184 1
        self._freeze()
9185
    
9186 1
    def to_binary(self):
9187 1
        packet = []
9188 1
        packet.append(self.TypeId.to_binary())
9189 1
        packet.append(self.ResponseHeader.to_binary())
9190 1
        packet.append(self.Parameters.to_binary())
9191 1
        return b''.join(packet)
9192
        
9193 1
    @staticmethod
9194
    def from_binary(data):
9195 1
        obj = CreateSubscriptionResponse()
9196 1
        obj.TypeId = NodeId.from_binary(data)
9197 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9198 1
        obj.Parameters = CreateSubscriptionResult.from_binary(data)
9199 1
        return obj
9200
    
9201 1
    def __str__(self):
9202
        return 'CreateSubscriptionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9203
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9204
             'Parameters:' + str(self.Parameters) + ')'
9205
    
9206 1
    __repr__ = __str__
9207
    
9208 1
class ModifySubscriptionParameters(FrozenClass):
9209
    '''
9210
    :ivar SubscriptionId: 
9211
    :vartype SubscriptionId: UInt32 
9212
    :ivar RequestedPublishingInterval: 
9213
    :vartype RequestedPublishingInterval: Double 
9214
    :ivar RequestedLifetimeCount: 
9215
    :vartype RequestedLifetimeCount: UInt32 
9216
    :ivar RequestedMaxKeepAliveCount: 
9217
    :vartype RequestedMaxKeepAliveCount: UInt32 
9218
    :ivar MaxNotificationsPerPublish: 
9219
    :vartype MaxNotificationsPerPublish: UInt32 
9220
    :ivar Priority: 
9221
    :vartype Priority: Byte 
9222
    '''
9223 1
    def __init__(self):
9224
        self.SubscriptionId = 0
9225
        self.RequestedPublishingInterval = 0
9226
        self.RequestedLifetimeCount = 0
9227
        self.RequestedMaxKeepAliveCount = 0
9228
        self.MaxNotificationsPerPublish = 0
9229
        self.Priority = 0
9230
        self._freeze()
9231
    
9232 1
    def to_binary(self):
9233
        packet = []
9234
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
9235
        packet.append(pack_uatype('Double', self.RequestedPublishingInterval))
9236
        packet.append(pack_uatype('UInt32', self.RequestedLifetimeCount))
9237
        packet.append(pack_uatype('UInt32', self.RequestedMaxKeepAliveCount))
9238
        packet.append(pack_uatype('UInt32', self.MaxNotificationsPerPublish))
9239
        packet.append(pack_uatype('Byte', self.Priority))
9240
        return b''.join(packet)
9241
        
9242 1
    @staticmethod
9243
    def from_binary(data):
9244
        obj = ModifySubscriptionParameters()
9245
        obj.SubscriptionId = unpack_uatype('UInt32', data)
9246
        obj.RequestedPublishingInterval = unpack_uatype('Double', data)
9247
        obj.RequestedLifetimeCount = unpack_uatype('UInt32', data)
9248
        obj.RequestedMaxKeepAliveCount = unpack_uatype('UInt32', data)
9249
        obj.MaxNotificationsPerPublish = unpack_uatype('UInt32', data)
9250
        obj.Priority = unpack_uatype('Byte', data)
9251
        return obj
9252
    
9253 1
    def __str__(self):
9254
        return 'ModifySubscriptionParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
9255
             'RequestedPublishingInterval:' + str(self.RequestedPublishingInterval) + ', '  + \
9256
             'RequestedLifetimeCount:' + str(self.RequestedLifetimeCount) + ', '  + \
9257
             'RequestedMaxKeepAliveCount:' + str(self.RequestedMaxKeepAliveCount) + ', '  + \
9258
             'MaxNotificationsPerPublish:' + str(self.MaxNotificationsPerPublish) + ', '  + \
9259
             'Priority:' + str(self.Priority) + ')'
9260
    
9261 1
    __repr__ = __str__
9262
    
9263 1
class ModifySubscriptionRequest(FrozenClass):
9264
    '''
9265
    :ivar TypeId: 
9266
    :vartype TypeId: NodeId 
9267
    :ivar RequestHeader: 
9268
    :vartype RequestHeader: RequestHeader 
9269
    :ivar Parameters: 
9270
    :vartype Parameters: ModifySubscriptionParameters 
9271
    '''
9272 1
    def __init__(self):
9273
        self.TypeId = FourByteNodeId(ObjectIds.ModifySubscriptionRequest_Encoding_DefaultBinary)
9274
        self.RequestHeader = RequestHeader()
9275
        self.Parameters = ModifySubscriptionParameters()
9276
        self._freeze()
9277
    
9278 1
    def to_binary(self):
9279
        packet = []
9280
        packet.append(self.TypeId.to_binary())
9281
        packet.append(self.RequestHeader.to_binary())
9282
        packet.append(self.Parameters.to_binary())
9283
        return b''.join(packet)
9284
        
9285 1
    @staticmethod
9286
    def from_binary(data):
9287
        obj = ModifySubscriptionRequest()
9288
        obj.TypeId = NodeId.from_binary(data)
9289
        obj.RequestHeader = RequestHeader.from_binary(data)
9290
        obj.Parameters = ModifySubscriptionParameters.from_binary(data)
9291
        return obj
9292
    
9293 1
    def __str__(self):
9294
        return 'ModifySubscriptionRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9295
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9296
             'Parameters:' + str(self.Parameters) + ')'
9297
    
9298 1
    __repr__ = __str__
9299
    
9300 1
class ModifySubscriptionResult(FrozenClass):
9301
    '''
9302
    :ivar RevisedPublishingInterval: 
9303
    :vartype RevisedPublishingInterval: Double 
9304
    :ivar RevisedLifetimeCount: 
9305
    :vartype RevisedLifetimeCount: UInt32 
9306
    :ivar RevisedMaxKeepAliveCount: 
9307
    :vartype RevisedMaxKeepAliveCount: UInt32 
9308
    '''
9309 1
    def __init__(self):
9310
        self.RevisedPublishingInterval = 0
9311
        self.RevisedLifetimeCount = 0
9312
        self.RevisedMaxKeepAliveCount = 0
9313
        self._freeze()
9314
    
9315 1
    def to_binary(self):
9316
        packet = []
9317
        packet.append(pack_uatype('Double', self.RevisedPublishingInterval))
9318
        packet.append(pack_uatype('UInt32', self.RevisedLifetimeCount))
9319
        packet.append(pack_uatype('UInt32', self.RevisedMaxKeepAliveCount))
9320
        return b''.join(packet)
9321
        
9322 1
    @staticmethod
9323
    def from_binary(data):
9324
        obj = ModifySubscriptionResult()
9325
        obj.RevisedPublishingInterval = unpack_uatype('Double', data)
9326
        obj.RevisedLifetimeCount = unpack_uatype('UInt32', data)
9327
        obj.RevisedMaxKeepAliveCount = unpack_uatype('UInt32', data)
9328
        return obj
9329
    
9330 1
    def __str__(self):
9331
        return 'ModifySubscriptionResult(' + 'RevisedPublishingInterval:' + str(self.RevisedPublishingInterval) + ', '  + \
9332
             'RevisedLifetimeCount:' + str(self.RevisedLifetimeCount) + ', '  + \
9333
             'RevisedMaxKeepAliveCount:' + str(self.RevisedMaxKeepAliveCount) + ')'
9334
    
9335 1
    __repr__ = __str__
9336
    
9337 1
class ModifySubscriptionResponse(FrozenClass):
9338
    '''
9339
    :ivar TypeId: 
9340
    :vartype TypeId: NodeId 
9341
    :ivar ResponseHeader: 
9342
    :vartype ResponseHeader: ResponseHeader 
9343
    :ivar Parameters: 
9344
    :vartype Parameters: ModifySubscriptionResult 
9345
    '''
9346 1
    def __init__(self):
9347
        self.TypeId = FourByteNodeId(ObjectIds.ModifySubscriptionResponse_Encoding_DefaultBinary)
9348
        self.ResponseHeader = ResponseHeader()
9349
        self.Parameters = ModifySubscriptionResult()
9350
        self._freeze()
9351
    
9352 1
    def to_binary(self):
9353
        packet = []
9354
        packet.append(self.TypeId.to_binary())
9355
        packet.append(self.ResponseHeader.to_binary())
9356
        packet.append(self.Parameters.to_binary())
9357
        return b''.join(packet)
9358
        
9359 1
    @staticmethod
9360
    def from_binary(data):
9361
        obj = ModifySubscriptionResponse()
9362
        obj.TypeId = NodeId.from_binary(data)
9363
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9364
        obj.Parameters = ModifySubscriptionResult.from_binary(data)
9365
        return obj
9366
    
9367 1
    def __str__(self):
9368
        return 'ModifySubscriptionResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9369
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9370
             'Parameters:' + str(self.Parameters) + ')'
9371
    
9372 1
    __repr__ = __str__
9373
    
9374 1
class SetPublishingModeParameters(FrozenClass):
9375
    '''
9376
    :ivar PublishingEnabled: 
9377
    :vartype PublishingEnabled: Boolean 
9378
    :ivar SubscriptionIds: 
9379
    :vartype SubscriptionIds: UInt32 
9380
    '''
9381 1
    def __init__(self):
9382
        self.PublishingEnabled = True
9383
        self.SubscriptionIds = []
9384
        self._freeze()
9385
    
9386 1
    def to_binary(self):
9387
        packet = []
9388
        packet.append(pack_uatype('Boolean', self.PublishingEnabled))
9389
        packet.append(struct.pack('<i', len(self.SubscriptionIds)))
9390
        for fieldname in self.SubscriptionIds:
9391
            packet.append(pack_uatype('UInt32', fieldname))
9392
        return b''.join(packet)
9393
        
9394 1
    @staticmethod
9395
    def from_binary(data):
9396
        obj = SetPublishingModeParameters()
9397
        obj.PublishingEnabled = unpack_uatype('Boolean', data)
9398
        obj.SubscriptionIds = unpack_uatype_array('UInt32', data)
9399
        return obj
9400
    
9401 1
    def __str__(self):
9402
        return 'SetPublishingModeParameters(' + 'PublishingEnabled:' + str(self.PublishingEnabled) + ', '  + \
9403
             'SubscriptionIds:' + str(self.SubscriptionIds) + ')'
9404
    
9405 1
    __repr__ = __str__
9406
    
9407 1
class SetPublishingModeRequest(FrozenClass):
9408
    '''
9409
    :ivar TypeId: 
9410
    :vartype TypeId: NodeId 
9411
    :ivar RequestHeader: 
9412
    :vartype RequestHeader: RequestHeader 
9413
    :ivar Parameters: 
9414
    :vartype Parameters: SetPublishingModeParameters 
9415
    '''
9416 1
    def __init__(self):
9417
        self.TypeId = FourByteNodeId(ObjectIds.SetPublishingModeRequest_Encoding_DefaultBinary)
9418
        self.RequestHeader = RequestHeader()
9419
        self.Parameters = SetPublishingModeParameters()
9420
        self._freeze()
9421
    
9422 1
    def to_binary(self):
9423
        packet = []
9424
        packet.append(self.TypeId.to_binary())
9425
        packet.append(self.RequestHeader.to_binary())
9426
        packet.append(self.Parameters.to_binary())
9427
        return b''.join(packet)
9428
        
9429 1
    @staticmethod
9430
    def from_binary(data):
9431
        obj = SetPublishingModeRequest()
9432
        obj.TypeId = NodeId.from_binary(data)
9433
        obj.RequestHeader = RequestHeader.from_binary(data)
9434
        obj.Parameters = SetPublishingModeParameters.from_binary(data)
9435
        return obj
9436
    
9437 1
    def __str__(self):
9438
        return 'SetPublishingModeRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9439
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9440
             'Parameters:' + str(self.Parameters) + ')'
9441
    
9442 1
    __repr__ = __str__
9443
    
9444 1
class SetPublishingModeResult(FrozenClass):
9445
    '''
9446
    :ivar Results: 
9447
    :vartype Results: StatusCode 
9448
    :ivar DiagnosticInfos: 
9449
    :vartype DiagnosticInfos: DiagnosticInfo 
9450
    '''
9451 1
    def __init__(self):
9452
        self.Results = []
9453
        self.DiagnosticInfos = []
9454
        self._freeze()
9455
    
9456 1
    def to_binary(self):
9457
        packet = []
9458
        packet.append(struct.pack('<i', len(self.Results)))
9459
        for fieldname in self.Results:
9460
            packet.append(fieldname.to_binary())
9461
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
9462
        for fieldname in self.DiagnosticInfos:
9463
            packet.append(fieldname.to_binary())
9464
        return b''.join(packet)
9465
        
9466 1
    @staticmethod
9467
    def from_binary(data):
9468
        obj = SetPublishingModeResult()
9469
        length = struct.unpack('<i', data.read(4))[0]
9470
        if length != -1:
9471
            for _ in range(0, length):
9472
                obj.Results.append(StatusCode.from_binary(data))
9473
        length = struct.unpack('<i', data.read(4))[0]
9474
        if length != -1:
9475
            for _ in range(0, length):
9476
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
9477
        return obj
9478
    
9479 1
    def __str__(self):
9480
        return 'SetPublishingModeResult(' + 'Results:' + str(self.Results) + ', '  + \
9481
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9482
    
9483 1
    __repr__ = __str__
9484
    
9485 1
class SetPublishingModeResponse(FrozenClass):
9486
    '''
9487
    :ivar TypeId: 
9488
    :vartype TypeId: NodeId 
9489
    :ivar ResponseHeader: 
9490
    :vartype ResponseHeader: ResponseHeader 
9491
    :ivar Parameters: 
9492
    :vartype Parameters: SetPublishingModeResult 
9493
    '''
9494 1
    def __init__(self):
9495
        self.TypeId = FourByteNodeId(ObjectIds.SetPublishingModeResponse_Encoding_DefaultBinary)
9496
        self.ResponseHeader = ResponseHeader()
9497
        self.Parameters = SetPublishingModeResult()
9498
        self._freeze()
9499
    
9500 1
    def to_binary(self):
9501
        packet = []
9502
        packet.append(self.TypeId.to_binary())
9503
        packet.append(self.ResponseHeader.to_binary())
9504
        packet.append(self.Parameters.to_binary())
9505
        return b''.join(packet)
9506
        
9507 1
    @staticmethod
9508
    def from_binary(data):
9509
        obj = SetPublishingModeResponse()
9510
        obj.TypeId = NodeId.from_binary(data)
9511
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9512
        obj.Parameters = SetPublishingModeResult.from_binary(data)
9513
        return obj
9514
    
9515 1
    def __str__(self):
9516
        return 'SetPublishingModeResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9517
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9518
             'Parameters:' + str(self.Parameters) + ')'
9519
    
9520 1
    __repr__ = __str__
9521
    
9522 1
class NotificationMessage(FrozenClass):
9523
    '''
9524
    :ivar SequenceNumber: 
9525
    :vartype SequenceNumber: UInt32 
9526
    :ivar PublishTime: 
9527
    :vartype PublishTime: DateTime 
9528
    :ivar NotificationData: 
9529
    :vartype NotificationData: ExtensionObject 
9530
    '''
9531 1
    def __init__(self):
9532 1
        self.SequenceNumber = 0
9533 1
        self.PublishTime = datetime.now()
9534 1
        self.NotificationData = []
9535 1
        self._freeze()
9536
    
9537 1
    def to_binary(self):
9538 1
        packet = []
9539 1
        packet.append(pack_uatype('UInt32', self.SequenceNumber))
9540 1
        packet.append(pack_uatype('DateTime', self.PublishTime))
9541 1
        packet.append(struct.pack('<i', len(self.NotificationData)))
9542 1
        for fieldname in self.NotificationData:
9543 1
            packet.append(extensionobject_to_binary(fieldname))
9544 1
        return b''.join(packet)
9545
        
9546 1
    @staticmethod
9547
    def from_binary(data):
9548 1
        obj = NotificationMessage()
9549 1
        obj.SequenceNumber = unpack_uatype('UInt32', data)
9550 1
        obj.PublishTime = unpack_uatype('DateTime', data)
9551 1
        length = struct.unpack('<i', data.read(4))[0]
9552 1
        if length != -1:
9553 1
            for _ in range(0, length):
9554 1
                obj.NotificationData.append(extensionobject_from_binary(data))
9555 1
        return obj
9556
    
9557 1
    def __str__(self):
9558
        return 'NotificationMessage(' + 'SequenceNumber:' + str(self.SequenceNumber) + ', '  + \
9559
             'PublishTime:' + str(self.PublishTime) + ', '  + \
9560
             'NotificationData:' + str(self.NotificationData) + ')'
9561
    
9562 1
    __repr__ = __str__
9563
    
9564 1
class NotificationData(FrozenClass):
9565
    '''
9566
    '''
9567 1
    def __init__(self):
9568
        self._freeze()
9569
    
9570 1
    def to_binary(self):
9571
        packet = []
9572
        return b''.join(packet)
9573
        
9574 1
    @staticmethod
9575
    def from_binary(data):
9576
        obj = NotificationData()
9577
        return obj
9578
    
9579 1
    def __str__(self):
9580
        return 'NotificationData(' +  + ')'
9581
    
9582 1
    __repr__ = __str__
9583
    
9584 1
class DataChangeNotification(FrozenClass):
9585
    '''
9586
    :ivar MonitoredItems: 
9587
    :vartype MonitoredItems: MonitoredItemNotification 
9588
    :ivar DiagnosticInfos: 
9589
    :vartype DiagnosticInfos: DiagnosticInfo 
9590
    '''
9591 1
    def __init__(self):
9592 1
        self.MonitoredItems = []
9593 1
        self.DiagnosticInfos = []
9594 1
        self._freeze()
9595
    
9596 1
    def to_binary(self):
9597 1
        packet = []
9598 1
        packet.append(struct.pack('<i', len(self.MonitoredItems)))
9599 1
        for fieldname in self.MonitoredItems:
9600 1
            packet.append(fieldname.to_binary())
9601 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
9602 1
        for fieldname in self.DiagnosticInfos:
9603
            packet.append(fieldname.to_binary())
9604 1
        return b''.join(packet)
9605
        
9606 1
    @staticmethod
9607
    def from_binary(data):
9608 1
        obj = DataChangeNotification()
9609 1
        length = struct.unpack('<i', data.read(4))[0]
9610 1
        if length != -1:
9611 1
            for _ in range(0, length):
9612 1
                obj.MonitoredItems.append(MonitoredItemNotification.from_binary(data))
9613 1
        length = struct.unpack('<i', data.read(4))[0]
9614 1
        if length != -1:
9615 1
            for _ in range(0, length):
9616
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
9617 1
        return obj
9618
    
9619 1
    def __str__(self):
9620
        return 'DataChangeNotification(' + 'MonitoredItems:' + str(self.MonitoredItems) + ', '  + \
9621
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9622
    
9623 1
    __repr__ = __str__
9624
    
9625 1
class MonitoredItemNotification(FrozenClass):
9626
    '''
9627
    :ivar ClientHandle: 
9628
    :vartype ClientHandle: UInt32 
9629
    :ivar Value: 
9630
    :vartype Value: DataValue 
9631
    '''
9632 1
    def __init__(self):
9633 1
        self.ClientHandle = 0
9634 1
        self.Value = DataValue()
9635 1
        self._freeze()
9636
    
9637 1
    def to_binary(self):
9638 1
        packet = []
9639 1
        packet.append(pack_uatype('UInt32', self.ClientHandle))
9640 1
        packet.append(self.Value.to_binary())
9641 1
        return b''.join(packet)
9642
        
9643 1
    @staticmethod
9644
    def from_binary(data):
9645 1
        obj = MonitoredItemNotification()
9646 1
        obj.ClientHandle = unpack_uatype('UInt32', data)
9647 1
        obj.Value = DataValue.from_binary(data)
9648 1
        return obj
9649
    
9650 1
    def __str__(self):
9651
        return 'MonitoredItemNotification(' + 'ClientHandle:' + str(self.ClientHandle) + ', '  + \
9652
             'Value:' + str(self.Value) + ')'
9653
    
9654 1
    __repr__ = __str__
9655
    
9656 1
class EventNotificationList(FrozenClass):
9657
    '''
9658
    :ivar Events: 
9659
    :vartype Events: EventFieldList 
9660
    '''
9661 1
    def __init__(self):
9662 1
        self.Events = []
9663 1
        self._freeze()
9664
    
9665 1
    def to_binary(self):
9666 1
        packet = []
9667 1
        packet.append(struct.pack('<i', len(self.Events)))
9668 1
        for fieldname in self.Events:
9669 1
            packet.append(fieldname.to_binary())
9670 1
        return b''.join(packet)
9671
        
9672 1
    @staticmethod
9673
    def from_binary(data):
9674 1
        obj = EventNotificationList()
9675 1
        length = struct.unpack('<i', data.read(4))[0]
9676 1
        if length != -1:
9677 1
            for _ in range(0, length):
9678 1
                obj.Events.append(EventFieldList.from_binary(data))
9679 1
        return obj
9680
    
9681 1
    def __str__(self):
9682
        return 'EventNotificationList(' + 'Events:' + str(self.Events) + ')'
9683
    
9684 1
    __repr__ = __str__
9685
    
9686 1
class EventFieldList(FrozenClass):
9687
    '''
9688
    :ivar ClientHandle: 
9689
    :vartype ClientHandle: UInt32 
9690
    :ivar EventFields: 
9691
    :vartype EventFields: Variant 
9692
    '''
9693 1
    def __init__(self):
9694 1
        self.ClientHandle = 0
9695 1
        self.EventFields = []
9696 1
        self._freeze()
9697
    
9698 1
    def to_binary(self):
9699 1
        packet = []
9700 1
        packet.append(pack_uatype('UInt32', self.ClientHandle))
9701 1
        packet.append(struct.pack('<i', len(self.EventFields)))
9702 1
        for fieldname in self.EventFields:
9703 1
            packet.append(fieldname.to_binary())
9704 1
        return b''.join(packet)
9705
        
9706 1
    @staticmethod
9707
    def from_binary(data):
9708 1
        obj = EventFieldList()
9709 1
        obj.ClientHandle = unpack_uatype('UInt32', data)
9710 1
        length = struct.unpack('<i', data.read(4))[0]
9711 1
        if length != -1:
9712 1
            for _ in range(0, length):
9713 1
                obj.EventFields.append(Variant.from_binary(data))
9714 1
        return obj
9715
    
9716 1
    def __str__(self):
9717
        return 'EventFieldList(' + 'ClientHandle:' + str(self.ClientHandle) + ', '  + \
9718
             'EventFields:' + str(self.EventFields) + ')'
9719
    
9720 1
    __repr__ = __str__
9721
    
9722 1
class HistoryEventFieldList(FrozenClass):
9723
    '''
9724
    :ivar EventFields: 
9725
    :vartype EventFields: Variant 
9726
    '''
9727 1
    def __init__(self):
9728
        self.EventFields = []
9729
        self._freeze()
9730
    
9731 1
    def to_binary(self):
9732
        packet = []
9733
        packet.append(struct.pack('<i', len(self.EventFields)))
9734
        for fieldname in self.EventFields:
9735
            packet.append(fieldname.to_binary())
9736
        return b''.join(packet)
9737
        
9738 1
    @staticmethod
9739
    def from_binary(data):
9740
        obj = HistoryEventFieldList()
9741
        length = struct.unpack('<i', data.read(4))[0]
9742
        if length != -1:
9743
            for _ in range(0, length):
9744
                obj.EventFields.append(Variant.from_binary(data))
9745
        return obj
9746
    
9747 1
    def __str__(self):
9748
        return 'HistoryEventFieldList(' + 'EventFields:' + str(self.EventFields) + ')'
9749
    
9750 1
    __repr__ = __str__
9751
    
9752 1
class StatusChangeNotification(FrozenClass):
9753
    '''
9754
    :ivar Status: 
9755
    :vartype Status: StatusCode 
9756
    :ivar DiagnosticInfo: 
9757
    :vartype DiagnosticInfo: DiagnosticInfo 
9758
    '''
9759 1
    def __init__(self):
9760
        self.Status = StatusCode()
9761
        self.DiagnosticInfo = DiagnosticInfo()
9762
        self._freeze()
9763
    
9764 1
    def to_binary(self):
9765
        packet = []
9766
        packet.append(self.Status.to_binary())
9767
        packet.append(self.DiagnosticInfo.to_binary())
9768
        return b''.join(packet)
9769
        
9770 1
    @staticmethod
9771
    def from_binary(data):
9772
        obj = StatusChangeNotification()
9773
        obj.Status = StatusCode.from_binary(data)
9774
        obj.DiagnosticInfo = DiagnosticInfo.from_binary(data)
9775
        return obj
9776
    
9777 1
    def __str__(self):
9778
        return 'StatusChangeNotification(' + 'Status:' + str(self.Status) + ', '  + \
9779
             'DiagnosticInfo:' + str(self.DiagnosticInfo) + ')'
9780
    
9781 1
    __repr__ = __str__
9782
    
9783 1
class SubscriptionAcknowledgement(FrozenClass):
9784
    '''
9785
    :ivar SubscriptionId: 
9786
    :vartype SubscriptionId: UInt32 
9787
    :ivar SequenceNumber: 
9788
    :vartype SequenceNumber: UInt32 
9789
    '''
9790 1
    def __init__(self):
9791 1
        self.SubscriptionId = 0
9792 1
        self.SequenceNumber = 0
9793 1
        self._freeze()
9794
    
9795 1
    def to_binary(self):
9796 1
        packet = []
9797 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
9798 1
        packet.append(pack_uatype('UInt32', self.SequenceNumber))
9799 1
        return b''.join(packet)
9800
        
9801 1
    @staticmethod
9802
    def from_binary(data):
9803 1
        obj = SubscriptionAcknowledgement()
9804 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
9805 1
        obj.SequenceNumber = unpack_uatype('UInt32', data)
9806 1
        return obj
9807
    
9808 1
    def __str__(self):
9809
        return 'SubscriptionAcknowledgement(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
9810
             'SequenceNumber:' + str(self.SequenceNumber) + ')'
9811
    
9812 1
    __repr__ = __str__
9813
    
9814 1
class PublishParameters(FrozenClass):
9815
    '''
9816
    :ivar SubscriptionAcknowledgements: 
9817
    :vartype SubscriptionAcknowledgements: SubscriptionAcknowledgement 
9818
    '''
9819 1
    def __init__(self):
9820 1
        self.SubscriptionAcknowledgements = []
9821 1
        self._freeze()
9822
    
9823 1
    def to_binary(self):
9824 1
        packet = []
9825 1
        packet.append(struct.pack('<i', len(self.SubscriptionAcknowledgements)))
9826 1
        for fieldname in self.SubscriptionAcknowledgements:
9827 1
            packet.append(fieldname.to_binary())
9828 1
        return b''.join(packet)
9829
        
9830 1
    @staticmethod
9831
    def from_binary(data):
9832 1
        obj = PublishParameters()
9833 1
        length = struct.unpack('<i', data.read(4))[0]
9834 1
        if length != -1:
9835 1
            for _ in range(0, length):
9836 1
                obj.SubscriptionAcknowledgements.append(SubscriptionAcknowledgement.from_binary(data))
9837 1
        return obj
9838
    
9839 1
    def __str__(self):
9840
        return 'PublishParameters(' + 'SubscriptionAcknowledgements:' + str(self.SubscriptionAcknowledgements) + ')'
9841
    
9842 1
    __repr__ = __str__
9843
    
9844 1
class PublishRequest(FrozenClass):
9845
    '''
9846
    :ivar TypeId: 
9847
    :vartype TypeId: NodeId 
9848
    :ivar RequestHeader: 
9849
    :vartype RequestHeader: RequestHeader 
9850
    :ivar Parameters: 
9851
    :vartype Parameters: PublishParameters 
9852
    '''
9853 1
    def __init__(self):
9854 1
        self.TypeId = FourByteNodeId(ObjectIds.PublishRequest_Encoding_DefaultBinary)
9855 1
        self.RequestHeader = RequestHeader()
9856 1
        self.Parameters = PublishParameters()
9857 1
        self._freeze()
9858
    
9859 1
    def to_binary(self):
9860 1
        packet = []
9861 1
        packet.append(self.TypeId.to_binary())
9862 1
        packet.append(self.RequestHeader.to_binary())
9863 1
        packet.append(self.Parameters.to_binary())
9864 1
        return b''.join(packet)
9865
        
9866 1
    @staticmethod
9867
    def from_binary(data):
9868
        obj = PublishRequest()
9869
        obj.TypeId = NodeId.from_binary(data)
9870
        obj.RequestHeader = RequestHeader.from_binary(data)
9871
        obj.Parameters = PublishParameters.from_binary(data)
9872
        return obj
9873
    
9874 1
    def __str__(self):
9875
        return 'PublishRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9876
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
9877
             'Parameters:' + str(self.Parameters) + ')'
9878
    
9879 1
    __repr__ = __str__
9880
    
9881 1
class PublishResult(FrozenClass):
9882
    '''
9883
    :ivar SubscriptionId: 
9884
    :vartype SubscriptionId: UInt32 
9885
    :ivar AvailableSequenceNumbers: 
9886
    :vartype AvailableSequenceNumbers: UInt32 
9887
    :ivar MoreNotifications: 
9888
    :vartype MoreNotifications: Boolean 
9889
    :ivar NotificationMessage: 
9890
    :vartype NotificationMessage: NotificationMessage 
9891
    :ivar Results: 
9892
    :vartype Results: StatusCode 
9893
    :ivar DiagnosticInfos: 
9894
    :vartype DiagnosticInfos: DiagnosticInfo 
9895
    '''
9896 1
    def __init__(self):
9897 1
        self.SubscriptionId = 0
9898 1
        self.AvailableSequenceNumbers = []
9899 1
        self.MoreNotifications = True
9900 1
        self.NotificationMessage = NotificationMessage()
9901 1
        self.Results = []
9902 1
        self.DiagnosticInfos = []
9903 1
        self._freeze()
9904
    
9905 1
    def to_binary(self):
9906 1
        packet = []
9907 1
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
9908 1
        packet.append(struct.pack('<i', len(self.AvailableSequenceNumbers)))
9909 1
        for fieldname in self.AvailableSequenceNumbers:
9910 1
            packet.append(pack_uatype('UInt32', fieldname))
9911 1
        packet.append(pack_uatype('Boolean', self.MoreNotifications))
9912 1
        packet.append(self.NotificationMessage.to_binary())
9913 1
        packet.append(struct.pack('<i', len(self.Results)))
9914 1
        for fieldname in self.Results:
9915
            packet.append(fieldname.to_binary())
9916 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
9917 1
        for fieldname in self.DiagnosticInfos:
9918
            packet.append(fieldname.to_binary())
9919 1
        return b''.join(packet)
9920
        
9921 1
    @staticmethod
9922
    def from_binary(data):
9923 1
        obj = PublishResult()
9924 1
        obj.SubscriptionId = unpack_uatype('UInt32', data)
9925 1
        obj.AvailableSequenceNumbers = unpack_uatype_array('UInt32', data)
9926 1
        obj.MoreNotifications = unpack_uatype('Boolean', data)
9927 1
        obj.NotificationMessage = NotificationMessage.from_binary(data)
9928 1
        length = struct.unpack('<i', data.read(4))[0]
9929 1
        if length != -1:
9930 1
            for _ in range(0, length):
9931
                obj.Results.append(StatusCode.from_binary(data))
9932 1
        length = struct.unpack('<i', data.read(4))[0]
9933 1
        if length != -1:
9934 1
            for _ in range(0, length):
9935
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
9936 1
        return obj
9937
    
9938 1
    def __str__(self):
9939
        return 'PublishResult(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
9940
             'AvailableSequenceNumbers:' + str(self.AvailableSequenceNumbers) + ', '  + \
9941
             'MoreNotifications:' + str(self.MoreNotifications) + ', '  + \
9942
             'NotificationMessage:' + str(self.NotificationMessage) + ', '  + \
9943
             'Results:' + str(self.Results) + ', '  + \
9944
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
9945
    
9946 1
    __repr__ = __str__
9947
    
9948 1
class PublishResponse(FrozenClass):
9949
    '''
9950
    :ivar TypeId: 
9951
    :vartype TypeId: NodeId 
9952
    :ivar ResponseHeader: 
9953
    :vartype ResponseHeader: ResponseHeader 
9954
    :ivar Parameters: 
9955
    :vartype Parameters: PublishResult 
9956
    '''
9957 1
    def __init__(self):
9958 1
        self.TypeId = FourByteNodeId(ObjectIds.PublishResponse_Encoding_DefaultBinary)
9959 1
        self.ResponseHeader = ResponseHeader()
9960 1
        self.Parameters = PublishResult()
9961 1
        self._freeze()
9962
    
9963 1
    def to_binary(self):
9964 1
        packet = []
9965 1
        packet.append(self.TypeId.to_binary())
9966 1
        packet.append(self.ResponseHeader.to_binary())
9967 1
        packet.append(self.Parameters.to_binary())
9968 1
        return b''.join(packet)
9969
        
9970 1
    @staticmethod
9971
    def from_binary(data):
9972 1
        obj = PublishResponse()
9973 1
        obj.TypeId = NodeId.from_binary(data)
9974 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
9975 1
        obj.Parameters = PublishResult.from_binary(data)
9976 1
        return obj
9977
    
9978 1
    def __str__(self):
9979
        return 'PublishResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
9980
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
9981
             'Parameters:' + str(self.Parameters) + ')'
9982
    
9983 1
    __repr__ = __str__
9984
    
9985 1
class RepublishParameters(FrozenClass):
9986
    '''
9987
    :ivar SubscriptionId: 
9988
    :vartype SubscriptionId: UInt32 
9989
    :ivar RetransmitSequenceNumber: 
9990
    :vartype RetransmitSequenceNumber: UInt32 
9991
    '''
9992 1
    def __init__(self):
9993
        self.SubscriptionId = 0
9994
        self.RetransmitSequenceNumber = 0
9995
        self._freeze()
9996
    
9997 1
    def to_binary(self):
9998
        packet = []
9999
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
10000
        packet.append(pack_uatype('UInt32', self.RetransmitSequenceNumber))
10001
        return b''.join(packet)
10002
        
10003 1
    @staticmethod
10004
    def from_binary(data):
10005
        obj = RepublishParameters()
10006
        obj.SubscriptionId = unpack_uatype('UInt32', data)
10007
        obj.RetransmitSequenceNumber = unpack_uatype('UInt32', data)
10008
        return obj
10009
    
10010 1
    def __str__(self):
10011
        return 'RepublishParameters(' + 'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
10012
             'RetransmitSequenceNumber:' + str(self.RetransmitSequenceNumber) + ')'
10013
    
10014 1
    __repr__ = __str__
10015
    
10016 1
class RepublishRequest(FrozenClass):
10017
    '''
10018
    :ivar TypeId: 
10019
    :vartype TypeId: NodeId 
10020
    :ivar RequestHeader: 
10021
    :vartype RequestHeader: RequestHeader 
10022
    :ivar Parameters: 
10023
    :vartype Parameters: RepublishParameters 
10024
    '''
10025 1
    def __init__(self):
10026
        self.TypeId = FourByteNodeId(ObjectIds.RepublishRequest_Encoding_DefaultBinary)
10027
        self.RequestHeader = RequestHeader()
10028
        self.Parameters = RepublishParameters()
10029
        self._freeze()
10030
    
10031 1
    def to_binary(self):
10032
        packet = []
10033
        packet.append(self.TypeId.to_binary())
10034
        packet.append(self.RequestHeader.to_binary())
10035
        packet.append(self.Parameters.to_binary())
10036
        return b''.join(packet)
10037
        
10038 1
    @staticmethod
10039
    def from_binary(data):
10040
        obj = RepublishRequest()
10041
        obj.TypeId = NodeId.from_binary(data)
10042
        obj.RequestHeader = RequestHeader.from_binary(data)
10043
        obj.Parameters = RepublishParameters.from_binary(data)
10044
        return obj
10045
    
10046 1
    def __str__(self):
10047
        return 'RepublishRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10048
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
10049
             'Parameters:' + str(self.Parameters) + ')'
10050
    
10051 1
    __repr__ = __str__
10052
    
10053 1
class RepublishResponse(FrozenClass):
10054
    '''
10055
    :ivar TypeId: 
10056
    :vartype TypeId: NodeId 
10057
    :ivar ResponseHeader: 
10058
    :vartype ResponseHeader: ResponseHeader 
10059
    :ivar NotificationMessage: 
10060
    :vartype NotificationMessage: NotificationMessage 
10061
    '''
10062 1
    def __init__(self):
10063
        self.TypeId = FourByteNodeId(ObjectIds.RepublishResponse_Encoding_DefaultBinary)
10064
        self.ResponseHeader = ResponseHeader()
10065
        self.NotificationMessage = NotificationMessage()
10066
        self._freeze()
10067
    
10068 1
    def to_binary(self):
10069
        packet = []
10070
        packet.append(self.TypeId.to_binary())
10071
        packet.append(self.ResponseHeader.to_binary())
10072
        packet.append(self.NotificationMessage.to_binary())
10073
        return b''.join(packet)
10074
        
10075 1
    @staticmethod
10076
    def from_binary(data):
10077
        obj = RepublishResponse()
10078
        obj.TypeId = NodeId.from_binary(data)
10079
        obj.ResponseHeader = ResponseHeader.from_binary(data)
10080
        obj.NotificationMessage = NotificationMessage.from_binary(data)
10081
        return obj
10082
    
10083 1
    def __str__(self):
10084
        return 'RepublishResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10085
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
10086
             'NotificationMessage:' + str(self.NotificationMessage) + ')'
10087
    
10088 1
    __repr__ = __str__
10089
    
10090 1
class TransferResult(FrozenClass):
10091
    '''
10092
    :ivar StatusCode: 
10093
    :vartype StatusCode: StatusCode 
10094
    :ivar AvailableSequenceNumbers: 
10095
    :vartype AvailableSequenceNumbers: UInt32 
10096
    '''
10097 1
    def __init__(self):
10098
        self.StatusCode = StatusCode()
10099
        self.AvailableSequenceNumbers = []
10100
        self._freeze()
10101
    
10102 1
    def to_binary(self):
10103
        packet = []
10104
        packet.append(self.StatusCode.to_binary())
10105
        packet.append(struct.pack('<i', len(self.AvailableSequenceNumbers)))
10106
        for fieldname in self.AvailableSequenceNumbers:
10107
            packet.append(pack_uatype('UInt32', fieldname))
10108
        return b''.join(packet)
10109
        
10110 1
    @staticmethod
10111
    def from_binary(data):
10112
        obj = TransferResult()
10113
        obj.StatusCode = StatusCode.from_binary(data)
10114
        obj.AvailableSequenceNumbers = unpack_uatype_array('UInt32', data)
10115
        return obj
10116
    
10117 1
    def __str__(self):
10118
        return 'TransferResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
10119
             'AvailableSequenceNumbers:' + str(self.AvailableSequenceNumbers) + ')'
10120
    
10121 1
    __repr__ = __str__
10122
    
10123 1
class TransferSubscriptionsParameters(FrozenClass):
10124
    '''
10125
    :ivar SubscriptionIds: 
10126
    :vartype SubscriptionIds: UInt32 
10127
    :ivar SendInitialValues: 
10128
    :vartype SendInitialValues: Boolean 
10129
    '''
10130 1
    def __init__(self):
10131
        self.SubscriptionIds = []
10132
        self.SendInitialValues = True
10133
        self._freeze()
10134
    
10135 1
    def to_binary(self):
10136
        packet = []
10137
        packet.append(struct.pack('<i', len(self.SubscriptionIds)))
10138
        for fieldname in self.SubscriptionIds:
10139
            packet.append(pack_uatype('UInt32', fieldname))
10140
        packet.append(pack_uatype('Boolean', self.SendInitialValues))
10141
        return b''.join(packet)
10142
        
10143 1
    @staticmethod
10144
    def from_binary(data):
10145
        obj = TransferSubscriptionsParameters()
10146
        obj.SubscriptionIds = unpack_uatype_array('UInt32', data)
10147
        obj.SendInitialValues = unpack_uatype('Boolean', data)
10148
        return obj
10149
    
10150 1
    def __str__(self):
10151
        return 'TransferSubscriptionsParameters(' + 'SubscriptionIds:' + str(self.SubscriptionIds) + ', '  + \
10152
             'SendInitialValues:' + str(self.SendInitialValues) + ')'
10153
    
10154 1
    __repr__ = __str__
10155
    
10156 1
class TransferSubscriptionsRequest(FrozenClass):
10157
    '''
10158
    :ivar TypeId: 
10159
    :vartype TypeId: NodeId 
10160
    :ivar RequestHeader: 
10161
    :vartype RequestHeader: RequestHeader 
10162
    :ivar Parameters: 
10163
    :vartype Parameters: TransferSubscriptionsParameters 
10164
    '''
10165 1
    def __init__(self):
10166
        self.TypeId = FourByteNodeId(ObjectIds.TransferSubscriptionsRequest_Encoding_DefaultBinary)
10167
        self.RequestHeader = RequestHeader()
10168
        self.Parameters = TransferSubscriptionsParameters()
10169
        self._freeze()
10170
    
10171 1
    def to_binary(self):
10172
        packet = []
10173
        packet.append(self.TypeId.to_binary())
10174
        packet.append(self.RequestHeader.to_binary())
10175
        packet.append(self.Parameters.to_binary())
10176
        return b''.join(packet)
10177
        
10178 1
    @staticmethod
10179
    def from_binary(data):
10180
        obj = TransferSubscriptionsRequest()
10181
        obj.TypeId = NodeId.from_binary(data)
10182
        obj.RequestHeader = RequestHeader.from_binary(data)
10183
        obj.Parameters = TransferSubscriptionsParameters.from_binary(data)
10184
        return obj
10185
    
10186 1
    def __str__(self):
10187
        return 'TransferSubscriptionsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10188
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
10189
             'Parameters:' + str(self.Parameters) + ')'
10190
    
10191 1
    __repr__ = __str__
10192
    
10193 1
class TransferSubscriptionsResult(FrozenClass):
10194
    '''
10195
    :ivar Results: 
10196
    :vartype Results: TransferResult 
10197
    :ivar DiagnosticInfos: 
10198
    :vartype DiagnosticInfos: DiagnosticInfo 
10199
    '''
10200 1
    def __init__(self):
10201
        self.Results = []
10202
        self.DiagnosticInfos = []
10203
        self._freeze()
10204
    
10205 1
    def to_binary(self):
10206
        packet = []
10207
        packet.append(struct.pack('<i', len(self.Results)))
10208
        for fieldname in self.Results:
10209
            packet.append(fieldname.to_binary())
10210
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
10211
        for fieldname in self.DiagnosticInfos:
10212
            packet.append(fieldname.to_binary())
10213
        return b''.join(packet)
10214
        
10215 1
    @staticmethod
10216
    def from_binary(data):
10217
        obj = TransferSubscriptionsResult()
10218
        length = struct.unpack('<i', data.read(4))[0]
10219
        if length != -1:
10220
            for _ in range(0, length):
10221
                obj.Results.append(TransferResult.from_binary(data))
10222
        length = struct.unpack('<i', data.read(4))[0]
10223
        if length != -1:
10224
            for _ in range(0, length):
10225
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
10226
        return obj
10227
    
10228 1
    def __str__(self):
10229
        return 'TransferSubscriptionsResult(' + 'Results:' + str(self.Results) + ', '  + \
10230
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10231
    
10232 1
    __repr__ = __str__
10233
    
10234 1
class TransferSubscriptionsResponse(FrozenClass):
10235
    '''
10236
    :ivar TypeId: 
10237
    :vartype TypeId: NodeId 
10238
    :ivar ResponseHeader: 
10239
    :vartype ResponseHeader: ResponseHeader 
10240
    :ivar Parameters: 
10241
    :vartype Parameters: TransferSubscriptionsResult 
10242
    '''
10243 1
    def __init__(self):
10244
        self.TypeId = FourByteNodeId(ObjectIds.TransferSubscriptionsResponse_Encoding_DefaultBinary)
10245
        self.ResponseHeader = ResponseHeader()
10246
        self.Parameters = TransferSubscriptionsResult()
10247
        self._freeze()
10248
    
10249 1
    def to_binary(self):
10250
        packet = []
10251
        packet.append(self.TypeId.to_binary())
10252
        packet.append(self.ResponseHeader.to_binary())
10253
        packet.append(self.Parameters.to_binary())
10254
        return b''.join(packet)
10255
        
10256 1
    @staticmethod
10257
    def from_binary(data):
10258
        obj = TransferSubscriptionsResponse()
10259
        obj.TypeId = NodeId.from_binary(data)
10260
        obj.ResponseHeader = ResponseHeader.from_binary(data)
10261
        obj.Parameters = TransferSubscriptionsResult.from_binary(data)
10262
        return obj
10263
    
10264 1
    def __str__(self):
10265
        return 'TransferSubscriptionsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10266
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
10267
             'Parameters:' + str(self.Parameters) + ')'
10268
    
10269 1
    __repr__ = __str__
10270
    
10271 1
class DeleteSubscriptionsParameters(FrozenClass):
10272
    '''
10273
    :ivar SubscriptionIds: 
10274
    :vartype SubscriptionIds: UInt32 
10275
    '''
10276 1
    def __init__(self):
10277 1
        self.SubscriptionIds = []
10278 1
        self._freeze()
10279
    
10280 1
    def to_binary(self):
10281 1
        packet = []
10282 1
        packet.append(struct.pack('<i', len(self.SubscriptionIds)))
10283 1
        for fieldname in self.SubscriptionIds:
10284 1
            packet.append(pack_uatype('UInt32', fieldname))
10285 1
        return b''.join(packet)
10286
        
10287 1
    @staticmethod
10288
    def from_binary(data):
10289 1
        obj = DeleteSubscriptionsParameters()
10290 1
        obj.SubscriptionIds = unpack_uatype_array('UInt32', data)
10291 1
        return obj
10292
    
10293 1
    def __str__(self):
10294
        return 'DeleteSubscriptionsParameters(' + 'SubscriptionIds:' + str(self.SubscriptionIds) + ')'
10295
    
10296 1
    __repr__ = __str__
10297
    
10298 1
class DeleteSubscriptionsRequest(FrozenClass):
10299
    '''
10300
    :ivar TypeId: 
10301
    :vartype TypeId: NodeId 
10302
    :ivar RequestHeader: 
10303
    :vartype RequestHeader: RequestHeader 
10304
    :ivar Parameters: 
10305
    :vartype Parameters: DeleteSubscriptionsParameters 
10306
    '''
10307 1
    def __init__(self):
10308 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteSubscriptionsRequest_Encoding_DefaultBinary)
10309 1
        self.RequestHeader = RequestHeader()
10310 1
        self.Parameters = DeleteSubscriptionsParameters()
10311 1
        self._freeze()
10312
    
10313 1
    def to_binary(self):
10314 1
        packet = []
10315 1
        packet.append(self.TypeId.to_binary())
10316 1
        packet.append(self.RequestHeader.to_binary())
10317 1
        packet.append(self.Parameters.to_binary())
10318 1
        return b''.join(packet)
10319
        
10320 1
    @staticmethod
10321
    def from_binary(data):
10322
        obj = DeleteSubscriptionsRequest()
10323
        obj.TypeId = NodeId.from_binary(data)
10324
        obj.RequestHeader = RequestHeader.from_binary(data)
10325
        obj.Parameters = DeleteSubscriptionsParameters.from_binary(data)
10326
        return obj
10327
    
10328 1
    def __str__(self):
10329
        return 'DeleteSubscriptionsRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10330
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
10331
             'Parameters:' + str(self.Parameters) + ')'
10332
    
10333 1
    __repr__ = __str__
10334
    
10335 1
class DeleteSubscriptionsResponse(FrozenClass):
10336
    '''
10337
    :ivar TypeId: 
10338
    :vartype TypeId: NodeId 
10339
    :ivar ResponseHeader: 
10340
    :vartype ResponseHeader: ResponseHeader 
10341
    :ivar Results: 
10342
    :vartype Results: StatusCode 
10343
    :ivar DiagnosticInfos: 
10344
    :vartype DiagnosticInfos: DiagnosticInfo 
10345
    '''
10346 1
    def __init__(self):
10347 1
        self.TypeId = FourByteNodeId(ObjectIds.DeleteSubscriptionsResponse_Encoding_DefaultBinary)
10348 1
        self.ResponseHeader = ResponseHeader()
10349 1
        self.Results = []
10350 1
        self.DiagnosticInfos = []
10351 1
        self._freeze()
10352
    
10353 1
    def to_binary(self):
10354 1
        packet = []
10355 1
        packet.append(self.TypeId.to_binary())
10356 1
        packet.append(self.ResponseHeader.to_binary())
10357 1
        packet.append(struct.pack('<i', len(self.Results)))
10358 1
        for fieldname in self.Results:
10359 1
            packet.append(fieldname.to_binary())
10360 1
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
10361 1
        for fieldname in self.DiagnosticInfos:
10362
            packet.append(fieldname.to_binary())
10363 1
        return b''.join(packet)
10364
        
10365 1
    @staticmethod
10366
    def from_binary(data):
10367 1
        obj = DeleteSubscriptionsResponse()
10368 1
        obj.TypeId = NodeId.from_binary(data)
10369 1
        obj.ResponseHeader = ResponseHeader.from_binary(data)
10370 1
        length = struct.unpack('<i', data.read(4))[0]
10371 1
        if length != -1:
10372 1
            for _ in range(0, length):
10373 1
                obj.Results.append(StatusCode.from_binary(data))
10374 1
        length = struct.unpack('<i', data.read(4))[0]
10375 1
        if length != -1:
10376 1
            for _ in range(0, length):
10377
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
10378 1
        return obj
10379
    
10380 1
    def __str__(self):
10381
        return 'DeleteSubscriptionsResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10382
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
10383
             'Results:' + str(self.Results) + ', '  + \
10384
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ')'
10385
    
10386 1
    __repr__ = __str__
10387
    
10388 1
class ScalarTestType(FrozenClass):
10389
    '''
10390
    A complex type containing all possible scalar types used for testing.
10391
    
10392
    :ivar Boolean: 
10393
    :vartype Boolean: Boolean 
10394
    :ivar SByte: 
10395
    :vartype SByte: SByte 
10396
    :ivar Byte: 
10397
    :vartype Byte: Byte 
10398
    :ivar Int16: 
10399
    :vartype Int16: Int16 
10400
    :ivar UInt16: 
10401
    :vartype UInt16: UInt16 
10402
    :ivar Int32: 
10403
    :vartype Int32: Int32 
10404
    :ivar UInt32: 
10405
    :vartype UInt32: UInt32 
10406
    :ivar Int64: 
10407
    :vartype Int64: Int64 
10408
    :ivar UInt64: 
10409
    :vartype UInt64: UInt64 
10410
    :ivar Float: 
10411
    :vartype Float: Float 
10412
    :ivar Double: 
10413
    :vartype Double: Double 
10414
    :ivar String: 
10415
    :vartype String: String 
10416
    :ivar DateTime: 
10417
    :vartype DateTime: DateTime 
10418
    :ivar Guid: 
10419
    :vartype Guid: Guid 
10420
    :ivar ByteString: 
10421
    :vartype ByteString: ByteString 
10422
    :ivar XmlElement: 
10423
    :vartype XmlElement: XmlElement 
10424
    :ivar NodeId: 
10425
    :vartype NodeId: NodeId 
10426
    :ivar ExpandedNodeId: 
10427
    :vartype ExpandedNodeId: ExpandedNodeId 
10428
    :ivar StatusCode: 
10429
    :vartype StatusCode: StatusCode 
10430
    :ivar DiagnosticInfo: 
10431
    :vartype DiagnosticInfo: DiagnosticInfo 
10432
    :ivar QualifiedName: 
10433
    :vartype QualifiedName: QualifiedName 
10434
    :ivar LocalizedText: 
10435
    :vartype LocalizedText: LocalizedText 
10436
    :ivar ExtensionObject: 
10437
    :vartype ExtensionObject: ExtensionObject 
10438
    :ivar DataValue: 
10439
    :vartype DataValue: DataValue 
10440
    :ivar EnumeratedValue: 
10441
    :vartype EnumeratedValue: EnumeratedTestType 
10442
    '''
10443 1
    def __init__(self):
10444
        self.Boolean = True
10445
        self.SByte = SByte()
10446
        self.Byte = 0
10447
        self.Int16 = 0
10448
        self.UInt16 = 0
10449
        self.Int32 = 0
10450
        self.UInt32 = 0
10451
        self.Int64 = 0
10452
        self.UInt64 = 0
10453
        self.Float = 0
10454
        self.Double = 0
10455
        self.String = ''
10456
        self.DateTime = datetime.now()
10457
        self.Guid = Guid()
10458
        self.ByteString = b''
10459
        self.XmlElement = XmlElement()
10460
        self.NodeId = NodeId()
10461
        self.ExpandedNodeId = ExpandedNodeId()
10462
        self.StatusCode = StatusCode()
10463
        self.DiagnosticInfo = DiagnosticInfo()
10464
        self.QualifiedName = QualifiedName()
10465
        self.LocalizedText = LocalizedText()
10466
        self.ExtensionObject = None
10467
        self.DataValue = DataValue()
10468
        self.EnumeratedValue = 0
10469
        self._freeze()
10470
    
10471 1
    def to_binary(self):
10472
        packet = []
10473
        packet.append(pack_uatype('Boolean', self.Boolean))
10474
        packet.append(pack_uatype('SByte', self.SByte))
10475
        packet.append(pack_uatype('Byte', self.Byte))
10476
        packet.append(pack_uatype('Int16', self.Int16))
10477
        packet.append(pack_uatype('UInt16', self.UInt16))
10478
        packet.append(pack_uatype('Int32', self.Int32))
10479
        packet.append(pack_uatype('UInt32', self.UInt32))
10480
        packet.append(pack_uatype('Int64', self.Int64))
10481
        packet.append(pack_uatype('UInt64', self.UInt64))
10482
        packet.append(pack_uatype('Float', self.Float))
10483
        packet.append(pack_uatype('Double', self.Double))
10484
        packet.append(pack_uatype('String', self.String))
10485
        packet.append(pack_uatype('DateTime', self.DateTime))
10486
        packet.append(self.Guid.to_binary())
10487
        packet.append(pack_uatype('ByteString', self.ByteString))
10488
        packet.append(self.XmlElement.to_binary())
10489
        packet.append(self.NodeId.to_binary())
10490
        packet.append(self.ExpandedNodeId.to_binary())
10491
        packet.append(self.StatusCode.to_binary())
10492
        packet.append(self.DiagnosticInfo.to_binary())
10493
        packet.append(self.QualifiedName.to_binary())
10494
        packet.append(self.LocalizedText.to_binary())
10495
        packet.append(extensionobject_to_binary(self.ExtensionObject))
10496
        packet.append(self.DataValue.to_binary())
10497
        packet.append(pack_uatype('UInt32', self.EnumeratedValue))
10498
        return b''.join(packet)
10499
        
10500 1
    @staticmethod
10501
    def from_binary(data):
10502
        obj = ScalarTestType()
10503
        obj.Boolean = unpack_uatype('Boolean', data)
10504
        obj.SByte = unpack_uatype('SByte', data)
10505
        obj.Byte = unpack_uatype('Byte', data)
10506
        obj.Int16 = unpack_uatype('Int16', data)
10507
        obj.UInt16 = unpack_uatype('UInt16', data)
10508
        obj.Int32 = unpack_uatype('Int32', data)
10509
        obj.UInt32 = unpack_uatype('UInt32', data)
10510
        obj.Int64 = unpack_uatype('Int64', data)
10511
        obj.UInt64 = unpack_uatype('UInt64', data)
10512
        obj.Float = unpack_uatype('Float', data)
10513
        obj.Double = unpack_uatype('Double', data)
10514
        obj.String = unpack_uatype('String', data)
10515
        obj.DateTime = unpack_uatype('DateTime', data)
10516
        obj.Guid = Guid.from_binary(data)
10517
        obj.ByteString = unpack_uatype('ByteString', data)
10518
        obj.XmlElement = XmlElement.from_binary(data)
10519
        obj.NodeId = NodeId.from_binary(data)
10520
        obj.ExpandedNodeId = ExpandedNodeId.from_binary(data)
10521
        obj.StatusCode = StatusCode.from_binary(data)
10522
        obj.DiagnosticInfo = DiagnosticInfo.from_binary(data)
10523
        obj.QualifiedName = QualifiedName.from_binary(data)
10524
        obj.LocalizedText = LocalizedText.from_binary(data)
10525
        obj.ExtensionObject = extensionobject_from_binary(data)
10526
        obj.DataValue = DataValue.from_binary(data)
10527
        obj.EnumeratedValue = unpack_uatype('UInt32', data)
10528
        return obj
10529
    
10530 1
    def __str__(self):
10531
        return 'ScalarTestType(' + 'Boolean:' + str(self.Boolean) + ', '  + \
10532
             'SByte:' + str(self.SByte) + ', '  + \
10533
             'Byte:' + str(self.Byte) + ', '  + \
10534
             'Int16:' + str(self.Int16) + ', '  + \
10535
             'UInt16:' + str(self.UInt16) + ', '  + \
10536
             'Int32:' + str(self.Int32) + ', '  + \
10537
             'UInt32:' + str(self.UInt32) + ', '  + \
10538
             'Int64:' + str(self.Int64) + ', '  + \
10539
             'UInt64:' + str(self.UInt64) + ', '  + \
10540
             'Float:' + str(self.Float) + ', '  + \
10541
             'Double:' + str(self.Double) + ', '  + \
10542
             'String:' + str(self.String) + ', '  + \
10543
             'DateTime:' + str(self.DateTime) + ', '  + \
10544
             'Guid:' + str(self.Guid) + ', '  + \
10545
             'ByteString:' + str(self.ByteString) + ', '  + \
10546
             'XmlElement:' + str(self.XmlElement) + ', '  + \
10547
             'NodeId:' + str(self.NodeId) + ', '  + \
10548
             'ExpandedNodeId:' + str(self.ExpandedNodeId) + ', '  + \
10549
             'StatusCode:' + str(self.StatusCode) + ', '  + \
10550
             'DiagnosticInfo:' + str(self.DiagnosticInfo) + ', '  + \
10551
             'QualifiedName:' + str(self.QualifiedName) + ', '  + \
10552
             'LocalizedText:' + str(self.LocalizedText) + ', '  + \
10553
             'ExtensionObject:' + str(self.ExtensionObject) + ', '  + \
10554
             'DataValue:' + str(self.DataValue) + ', '  + \
10555
             'EnumeratedValue:' + str(self.EnumeratedValue) + ')'
10556
    
10557 1
    __repr__ = __str__
10558
    
10559 1
class ArrayTestType(FrozenClass):
10560
    '''
10561
    A complex type containing all possible array types used for testing.
10562
    
10563
    :ivar Booleans: 
10564
    :vartype Booleans: Boolean 
10565
    :ivar SBytes: 
10566
    :vartype SBytes: SByte 
10567
    :ivar Int16s: 
10568
    :vartype Int16s: Int16 
10569
    :ivar UInt16s: 
10570
    :vartype UInt16s: UInt16 
10571
    :ivar Int32s: 
10572
    :vartype Int32s: Int32 
10573
    :ivar UInt32s: 
10574
    :vartype UInt32s: UInt32 
10575
    :ivar Int64s: 
10576
    :vartype Int64s: Int64 
10577
    :ivar UInt64s: 
10578
    :vartype UInt64s: UInt64 
10579
    :ivar Floats: 
10580
    :vartype Floats: Float 
10581
    :ivar Doubles: 
10582
    :vartype Doubles: Double 
10583
    :ivar Strings: 
10584
    :vartype Strings: String 
10585
    :ivar DateTimes: 
10586
    :vartype DateTimes: DateTime 
10587
    :ivar Guids: 
10588
    :vartype Guids: Guid 
10589
    :ivar ByteStrings: 
10590
    :vartype ByteStrings: ByteString 
10591
    :ivar XmlElements: 
10592
    :vartype XmlElements: XmlElement 
10593
    :ivar NodeIds: 
10594
    :vartype NodeIds: NodeId 
10595
    :ivar ExpandedNodeIds: 
10596
    :vartype ExpandedNodeIds: ExpandedNodeId 
10597
    :ivar StatusCodes: 
10598
    :vartype StatusCodes: StatusCode 
10599
    :ivar DiagnosticInfos: 
10600
    :vartype DiagnosticInfos: DiagnosticInfo 
10601
    :ivar QualifiedNames: 
10602
    :vartype QualifiedNames: QualifiedName 
10603
    :ivar LocalizedTexts: 
10604
    :vartype LocalizedTexts: LocalizedText 
10605
    :ivar ExtensionObjects: 
10606
    :vartype ExtensionObjects: ExtensionObject 
10607
    :ivar DataValues: 
10608
    :vartype DataValues: DataValue 
10609
    :ivar Variants: 
10610
    :vartype Variants: Variant 
10611
    :ivar EnumeratedValues: 
10612
    :vartype EnumeratedValues: EnumeratedTestType 
10613
    '''
10614 1
    def __init__(self):
10615
        self.Booleans = []
10616
        self.SBytes = []
10617
        self.Int16s = []
10618
        self.UInt16s = []
10619
        self.Int32s = []
10620
        self.UInt32s = []
10621
        self.Int64s = []
10622
        self.UInt64s = []
10623
        self.Floats = []
10624
        self.Doubles = []
10625
        self.Strings = []
10626
        self.DateTimes = []
10627
        self.Guids = []
10628
        self.ByteStrings = []
10629
        self.XmlElements = []
10630
        self.NodeIds = []
10631
        self.ExpandedNodeIds = []
10632
        self.StatusCodes = []
10633
        self.DiagnosticInfos = []
10634
        self.QualifiedNames = []
10635
        self.LocalizedTexts = []
10636
        self.ExtensionObjects = []
10637
        self.DataValues = []
10638
        self.Variants = []
10639
        self.EnumeratedValues = []
10640
        self._freeze()
10641
    
10642 1
    def to_binary(self):
10643
        packet = []
10644
        packet.append(struct.pack('<i', len(self.Booleans)))
10645
        for fieldname in self.Booleans:
10646
            packet.append(pack_uatype('Boolean', fieldname))
10647
        packet.append(struct.pack('<i', len(self.SBytes)))
10648
        for fieldname in self.SBytes:
10649
            packet.append(pack_uatype('SByte', fieldname))
10650
        packet.append(struct.pack('<i', len(self.Int16s)))
10651
        for fieldname in self.Int16s:
10652
            packet.append(pack_uatype('Int16', fieldname))
10653
        packet.append(struct.pack('<i', len(self.UInt16s)))
10654
        for fieldname in self.UInt16s:
10655
            packet.append(pack_uatype('UInt16', fieldname))
10656
        packet.append(struct.pack('<i', len(self.Int32s)))
10657
        for fieldname in self.Int32s:
10658
            packet.append(pack_uatype('Int32', fieldname))
10659
        packet.append(struct.pack('<i', len(self.UInt32s)))
10660
        for fieldname in self.UInt32s:
10661
            packet.append(pack_uatype('UInt32', fieldname))
10662
        packet.append(struct.pack('<i', len(self.Int64s)))
10663
        for fieldname in self.Int64s:
10664
            packet.append(pack_uatype('Int64', fieldname))
10665
        packet.append(struct.pack('<i', len(self.UInt64s)))
10666
        for fieldname in self.UInt64s:
10667
            packet.append(pack_uatype('UInt64', fieldname))
10668
        packet.append(struct.pack('<i', len(self.Floats)))
10669
        for fieldname in self.Floats:
10670
            packet.append(pack_uatype('Float', fieldname))
10671
        packet.append(struct.pack('<i', len(self.Doubles)))
10672
        for fieldname in self.Doubles:
10673
            packet.append(pack_uatype('Double', fieldname))
10674
        packet.append(struct.pack('<i', len(self.Strings)))
10675
        for fieldname in self.Strings:
10676
            packet.append(pack_uatype('String', fieldname))
10677
        packet.append(struct.pack('<i', len(self.DateTimes)))
10678
        for fieldname in self.DateTimes:
10679
            packet.append(pack_uatype('DateTime', fieldname))
10680
        packet.append(struct.pack('<i', len(self.Guids)))
10681
        for fieldname in self.Guids:
10682
            packet.append(fieldname.to_binary())
10683
        packet.append(struct.pack('<i', len(self.ByteStrings)))
10684
        for fieldname in self.ByteStrings:
10685
            packet.append(pack_uatype('ByteString', fieldname))
10686
        packet.append(struct.pack('<i', len(self.XmlElements)))
10687
        for fieldname in self.XmlElements:
10688
            packet.append(fieldname.to_binary())
10689
        packet.append(struct.pack('<i', len(self.NodeIds)))
10690
        for fieldname in self.NodeIds:
10691
            packet.append(fieldname.to_binary())
10692
        packet.append(struct.pack('<i', len(self.ExpandedNodeIds)))
10693
        for fieldname in self.ExpandedNodeIds:
10694
            packet.append(fieldname.to_binary())
10695
        packet.append(struct.pack('<i', len(self.StatusCodes)))
10696
        for fieldname in self.StatusCodes:
10697
            packet.append(fieldname.to_binary())
10698
        packet.append(struct.pack('<i', len(self.DiagnosticInfos)))
10699
        for fieldname in self.DiagnosticInfos:
10700
            packet.append(fieldname.to_binary())
10701
        packet.append(struct.pack('<i', len(self.QualifiedNames)))
10702
        for fieldname in self.QualifiedNames:
10703
            packet.append(fieldname.to_binary())
10704
        packet.append(struct.pack('<i', len(self.LocalizedTexts)))
10705
        for fieldname in self.LocalizedTexts:
10706
            packet.append(fieldname.to_binary())
10707
        packet.append(struct.pack('<i', len(self.ExtensionObjects)))
10708
        for fieldname in self.ExtensionObjects:
10709
            packet.append(extensionobject_to_binary(fieldname))
10710
        packet.append(struct.pack('<i', len(self.DataValues)))
10711
        for fieldname in self.DataValues:
10712
            packet.append(fieldname.to_binary())
10713
        packet.append(struct.pack('<i', len(self.Variants)))
10714
        for fieldname in self.Variants:
10715
            packet.append(fieldname.to_binary())
10716
        packet.append(struct.pack('<i', len(self.EnumeratedValues)))
10717
        for fieldname in self.EnumeratedValues:
10718
            packet.append(pack_uatype('UInt32', fieldname))
10719
        return b''.join(packet)
10720
        
10721 1
    @staticmethod
10722
    def from_binary(data):
10723
        obj = ArrayTestType()
10724
        obj.Booleans = unpack_uatype_array('Boolean', data)
10725
        obj.SBytes = unpack_uatype_array('SByte', data)
10726
        obj.Int16s = unpack_uatype_array('Int16', data)
10727
        obj.UInt16s = unpack_uatype_array('UInt16', data)
10728
        obj.Int32s = unpack_uatype_array('Int32', data)
10729
        obj.UInt32s = unpack_uatype_array('UInt32', data)
10730
        obj.Int64s = unpack_uatype_array('Int64', data)
10731
        obj.UInt64s = unpack_uatype_array('UInt64', data)
10732
        obj.Floats = unpack_uatype_array('Float', data)
10733
        obj.Doubles = unpack_uatype_array('Double', data)
10734
        obj.Strings = unpack_uatype_array('String', data)
10735
        obj.DateTimes = unpack_uatype_array('DateTime', data)
10736
        length = struct.unpack('<i', data.read(4))[0]
10737
        if length != -1:
10738
            for _ in range(0, length):
10739
                obj.Guids.append(Guid.from_binary(data))
10740
        obj.ByteStrings = unpack_uatype_array('ByteString', data)
10741
        length = struct.unpack('<i', data.read(4))[0]
10742
        if length != -1:
10743
            for _ in range(0, length):
10744
                obj.XmlElements.append(XmlElement.from_binary(data))
10745
        length = struct.unpack('<i', data.read(4))[0]
10746
        if length != -1:
10747
            for _ in range(0, length):
10748
                obj.NodeIds.append(NodeId.from_binary(data))
10749
        length = struct.unpack('<i', data.read(4))[0]
10750
        if length != -1:
10751
            for _ in range(0, length):
10752
                obj.ExpandedNodeIds.append(ExpandedNodeId.from_binary(data))
10753
        length = struct.unpack('<i', data.read(4))[0]
10754
        if length != -1:
10755
            for _ in range(0, length):
10756
                obj.StatusCodes.append(StatusCode.from_binary(data))
10757
        length = struct.unpack('<i', data.read(4))[0]
10758
        if length != -1:
10759
            for _ in range(0, length):
10760
                obj.DiagnosticInfos.append(DiagnosticInfo.from_binary(data))
10761
        length = struct.unpack('<i', data.read(4))[0]
10762
        if length != -1:
10763
            for _ in range(0, length):
10764
                obj.QualifiedNames.append(QualifiedName.from_binary(data))
10765
        length = struct.unpack('<i', data.read(4))[0]
10766
        if length != -1:
10767
            for _ in range(0, length):
10768
                obj.LocalizedTexts.append(LocalizedText.from_binary(data))
10769
        length = struct.unpack('<i', data.read(4))[0]
10770
        if length != -1:
10771
            for _ in range(0, length):
10772
                obj.ExtensionObjects.append(extensionobject_from_binary(data))
10773
        length = struct.unpack('<i', data.read(4))[0]
10774
        if length != -1:
10775
            for _ in range(0, length):
10776
                obj.DataValues.append(DataValue.from_binary(data))
10777
        length = struct.unpack('<i', data.read(4))[0]
10778
        if length != -1:
10779
            for _ in range(0, length):
10780
                obj.Variants.append(Variant.from_binary(data))
10781
        obj.EnumeratedValues = unpack_uatype('UInt32', data)
10782
        return obj
10783
    
10784 1
    def __str__(self):
10785
        return 'ArrayTestType(' + 'Booleans:' + str(self.Booleans) + ', '  + \
10786
             'SBytes:' + str(self.SBytes) + ', '  + \
10787
             'Int16s:' + str(self.Int16s) + ', '  + \
10788
             'UInt16s:' + str(self.UInt16s) + ', '  + \
10789
             'Int32s:' + str(self.Int32s) + ', '  + \
10790
             'UInt32s:' + str(self.UInt32s) + ', '  + \
10791
             'Int64s:' + str(self.Int64s) + ', '  + \
10792
             'UInt64s:' + str(self.UInt64s) + ', '  + \
10793
             'Floats:' + str(self.Floats) + ', '  + \
10794
             'Doubles:' + str(self.Doubles) + ', '  + \
10795
             'Strings:' + str(self.Strings) + ', '  + \
10796
             'DateTimes:' + str(self.DateTimes) + ', '  + \
10797
             'Guids:' + str(self.Guids) + ', '  + \
10798
             'ByteStrings:' + str(self.ByteStrings) + ', '  + \
10799
             'XmlElements:' + str(self.XmlElements) + ', '  + \
10800
             'NodeIds:' + str(self.NodeIds) + ', '  + \
10801
             'ExpandedNodeIds:' + str(self.ExpandedNodeIds) + ', '  + \
10802
             'StatusCodes:' + str(self.StatusCodes) + ', '  + \
10803
             'DiagnosticInfos:' + str(self.DiagnosticInfos) + ', '  + \
10804
             'QualifiedNames:' + str(self.QualifiedNames) + ', '  + \
10805
             'LocalizedTexts:' + str(self.LocalizedTexts) + ', '  + \
10806
             'ExtensionObjects:' + str(self.ExtensionObjects) + ', '  + \
10807
             'DataValues:' + str(self.DataValues) + ', '  + \
10808
             'Variants:' + str(self.Variants) + ', '  + \
10809
             'EnumeratedValues:' + str(self.EnumeratedValues) + ')'
10810
    
10811 1
    __repr__ = __str__
10812
    
10813 1
class CompositeTestType(FrozenClass):
10814
    '''
10815
    :ivar Field1: 
10816
    :vartype Field1: ScalarTestType 
10817
    :ivar Field2: 
10818
    :vartype Field2: ArrayTestType 
10819
    '''
10820 1
    def __init__(self):
10821
        self.Field1 = ScalarTestType()
10822
        self.Field2 = ArrayTestType()
10823
        self._freeze()
10824
    
10825 1
    def to_binary(self):
10826
        packet = []
10827
        packet.append(self.Field1.to_binary())
10828
        packet.append(self.Field2.to_binary())
10829
        return b''.join(packet)
10830
        
10831 1
    @staticmethod
10832
    def from_binary(data):
10833
        obj = CompositeTestType()
10834
        obj.Field1 = ScalarTestType.from_binary(data)
10835
        obj.Field2 = ArrayTestType.from_binary(data)
10836
        return obj
10837
    
10838 1
    def __str__(self):
10839
        return 'CompositeTestType(' + 'Field1:' + str(self.Field1) + ', '  + \
10840
             'Field2:' + str(self.Field2) + ')'
10841
    
10842 1
    __repr__ = __str__
10843
    
10844 1
class TestStackParameters(FrozenClass):
10845
    '''
10846
    :ivar TestId: 
10847
    :vartype TestId: UInt32 
10848
    :ivar Iteration: 
10849
    :vartype Iteration: Int32 
10850
    :ivar Input: 
10851
    :vartype Input: Variant 
10852
    '''
10853 1
    def __init__(self):
10854
        self.TestId = 0
10855
        self.Iteration = 0
10856
        self.Input = Variant()
10857
        self._freeze()
10858
    
10859 1
    def to_binary(self):
10860
        packet = []
10861
        packet.append(pack_uatype('UInt32', self.TestId))
10862
        packet.append(pack_uatype('Int32', self.Iteration))
10863
        packet.append(self.Input.to_binary())
10864
        return b''.join(packet)
10865
        
10866 1
    @staticmethod
10867
    def from_binary(data):
10868
        obj = TestStackParameters()
10869
        obj.TestId = unpack_uatype('UInt32', data)
10870
        obj.Iteration = unpack_uatype('Int32', data)
10871
        obj.Input = Variant.from_binary(data)
10872
        return obj
10873
    
10874 1
    def __str__(self):
10875
        return 'TestStackParameters(' + 'TestId:' + str(self.TestId) + ', '  + \
10876
             'Iteration:' + str(self.Iteration) + ', '  + \
10877
             'Input:' + str(self.Input) + ')'
10878
    
10879 1
    __repr__ = __str__
10880
    
10881 1
class TestStackRequest(FrozenClass):
10882
    '''
10883
    :ivar TypeId: 
10884
    :vartype TypeId: NodeId 
10885
    :ivar RequestHeader: 
10886
    :vartype RequestHeader: RequestHeader 
10887
    :ivar Parameters: 
10888
    :vartype Parameters: TestStackParameters 
10889
    '''
10890 1
    def __init__(self):
10891
        self.TypeId = FourByteNodeId(ObjectIds.TestStackRequest_Encoding_DefaultBinary)
10892
        self.RequestHeader = RequestHeader()
10893
        self.Parameters = TestStackParameters()
10894
        self._freeze()
10895
    
10896 1
    def to_binary(self):
10897
        packet = []
10898
        packet.append(self.TypeId.to_binary())
10899
        packet.append(self.RequestHeader.to_binary())
10900
        packet.append(self.Parameters.to_binary())
10901
        return b''.join(packet)
10902
        
10903 1
    @staticmethod
10904
    def from_binary(data):
10905
        obj = TestStackRequest()
10906
        obj.TypeId = NodeId.from_binary(data)
10907
        obj.RequestHeader = RequestHeader.from_binary(data)
10908
        obj.Parameters = TestStackParameters.from_binary(data)
10909
        return obj
10910
    
10911 1
    def __str__(self):
10912
        return 'TestStackRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10913
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
10914
             'Parameters:' + str(self.Parameters) + ')'
10915
    
10916 1
    __repr__ = __str__
10917
    
10918 1
class TestStackResult(FrozenClass):
10919
    '''
10920
    :ivar Output: 
10921
    :vartype Output: Variant 
10922
    '''
10923 1
    def __init__(self):
10924
        self.Output = Variant()
10925
        self._freeze()
10926
    
10927 1
    def to_binary(self):
10928
        packet = []
10929
        packet.append(self.Output.to_binary())
10930
        return b''.join(packet)
10931
        
10932 1
    @staticmethod
10933
    def from_binary(data):
10934
        obj = TestStackResult()
10935
        obj.Output = Variant.from_binary(data)
10936
        return obj
10937
    
10938 1
    def __str__(self):
10939
        return 'TestStackResult(' + 'Output:' + str(self.Output) + ')'
10940
    
10941 1
    __repr__ = __str__
10942
    
10943 1
class TestStackResponse(FrozenClass):
10944
    '''
10945
    :ivar TypeId: 
10946
    :vartype TypeId: NodeId 
10947
    :ivar ResponseHeader: 
10948
    :vartype ResponseHeader: ResponseHeader 
10949
    :ivar Parameters: 
10950
    :vartype Parameters: TestStackResult 
10951
    '''
10952 1
    def __init__(self):
10953
        self.TypeId = FourByteNodeId(ObjectIds.TestStackResponse_Encoding_DefaultBinary)
10954
        self.ResponseHeader = ResponseHeader()
10955
        self.Parameters = TestStackResult()
10956
        self._freeze()
10957
    
10958 1
    def to_binary(self):
10959
        packet = []
10960
        packet.append(self.TypeId.to_binary())
10961
        packet.append(self.ResponseHeader.to_binary())
10962
        packet.append(self.Parameters.to_binary())
10963
        return b''.join(packet)
10964
        
10965 1
    @staticmethod
10966
    def from_binary(data):
10967
        obj = TestStackResponse()
10968
        obj.TypeId = NodeId.from_binary(data)
10969
        obj.ResponseHeader = ResponseHeader.from_binary(data)
10970
        obj.Parameters = TestStackResult.from_binary(data)
10971
        return obj
10972
    
10973 1
    def __str__(self):
10974
        return 'TestStackResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
10975
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
10976
             'Parameters:' + str(self.Parameters) + ')'
10977
    
10978 1
    __repr__ = __str__
10979
    
10980 1
class TestStackExParameters(FrozenClass):
10981
    '''
10982
    :ivar TestId: 
10983
    :vartype TestId: UInt32 
10984
    :ivar Iteration: 
10985
    :vartype Iteration: Int32 
10986
    :ivar Input: 
10987
    :vartype Input: CompositeTestType 
10988
    '''
10989 1
    def __init__(self):
10990
        self.TestId = 0
10991
        self.Iteration = 0
10992
        self.Input = CompositeTestType()
10993
        self._freeze()
10994
    
10995 1
    def to_binary(self):
10996
        packet = []
10997
        packet.append(pack_uatype('UInt32', self.TestId))
10998
        packet.append(pack_uatype('Int32', self.Iteration))
10999
        packet.append(self.Input.to_binary())
11000
        return b''.join(packet)
11001
        
11002 1
    @staticmethod
11003
    def from_binary(data):
11004
        obj = TestStackExParameters()
11005
        obj.TestId = unpack_uatype('UInt32', data)
11006
        obj.Iteration = unpack_uatype('Int32', data)
11007
        obj.Input = CompositeTestType.from_binary(data)
11008
        return obj
11009
    
11010 1
    def __str__(self):
11011
        return 'TestStackExParameters(' + 'TestId:' + str(self.TestId) + ', '  + \
11012
             'Iteration:' + str(self.Iteration) + ', '  + \
11013
             'Input:' + str(self.Input) + ')'
11014
    
11015 1
    __repr__ = __str__
11016
    
11017 1
class TestStackExRequest(FrozenClass):
11018
    '''
11019
    :ivar TypeId: 
11020
    :vartype TypeId: NodeId 
11021
    :ivar RequestHeader: 
11022
    :vartype RequestHeader: RequestHeader 
11023
    :ivar Parameters: 
11024
    :vartype Parameters: TestStackExParameters 
11025
    '''
11026 1
    def __init__(self):
11027
        self.TypeId = FourByteNodeId(ObjectIds.TestStackExRequest_Encoding_DefaultBinary)
11028
        self.RequestHeader = RequestHeader()
11029
        self.Parameters = TestStackExParameters()
11030
        self._freeze()
11031
    
11032 1
    def to_binary(self):
11033
        packet = []
11034
        packet.append(self.TypeId.to_binary())
11035
        packet.append(self.RequestHeader.to_binary())
11036
        packet.append(self.Parameters.to_binary())
11037
        return b''.join(packet)
11038
        
11039 1
    @staticmethod
11040
    def from_binary(data):
11041
        obj = TestStackExRequest()
11042
        obj.TypeId = NodeId.from_binary(data)
11043
        obj.RequestHeader = RequestHeader.from_binary(data)
11044
        obj.Parameters = TestStackExParameters.from_binary(data)
11045
        return obj
11046
    
11047 1
    def __str__(self):
11048
        return 'TestStackExRequest(' + 'TypeId:' + str(self.TypeId) + ', '  + \
11049
             'RequestHeader:' + str(self.RequestHeader) + ', '  + \
11050
             'Parameters:' + str(self.Parameters) + ')'
11051
    
11052 1
    __repr__ = __str__
11053
    
11054 1
class TestStackExResult(FrozenClass):
11055
    '''
11056
    :ivar Output: 
11057
    :vartype Output: CompositeTestType 
11058
    '''
11059 1
    def __init__(self):
11060
        self.Output = CompositeTestType()
11061
        self._freeze()
11062
    
11063 1
    def to_binary(self):
11064
        packet = []
11065
        packet.append(self.Output.to_binary())
11066
        return b''.join(packet)
11067
        
11068 1
    @staticmethod
11069
    def from_binary(data):
11070
        obj = TestStackExResult()
11071
        obj.Output = CompositeTestType.from_binary(data)
11072
        return obj
11073
    
11074 1
    def __str__(self):
11075
        return 'TestStackExResult(' + 'Output:' + str(self.Output) + ')'
11076
    
11077 1
    __repr__ = __str__
11078
    
11079 1
class TestStackExResponse(FrozenClass):
11080
    '''
11081
    :ivar TypeId: 
11082
    :vartype TypeId: NodeId 
11083
    :ivar ResponseHeader: 
11084
    :vartype ResponseHeader: ResponseHeader 
11085
    :ivar Parameters: 
11086
    :vartype Parameters: TestStackExResult 
11087
    '''
11088 1
    def __init__(self):
11089
        self.TypeId = FourByteNodeId(ObjectIds.TestStackExResponse_Encoding_DefaultBinary)
11090
        self.ResponseHeader = ResponseHeader()
11091
        self.Parameters = TestStackExResult()
11092
        self._freeze()
11093
    
11094 1
    def to_binary(self):
11095
        packet = []
11096
        packet.append(self.TypeId.to_binary())
11097
        packet.append(self.ResponseHeader.to_binary())
11098
        packet.append(self.Parameters.to_binary())
11099
        return b''.join(packet)
11100
        
11101 1
    @staticmethod
11102
    def from_binary(data):
11103
        obj = TestStackExResponse()
11104
        obj.TypeId = NodeId.from_binary(data)
11105
        obj.ResponseHeader = ResponseHeader.from_binary(data)
11106
        obj.Parameters = TestStackExResult.from_binary(data)
11107
        return obj
11108
    
11109 1
    def __str__(self):
11110
        return 'TestStackExResponse(' + 'TypeId:' + str(self.TypeId) + ', '  + \
11111
             'ResponseHeader:' + str(self.ResponseHeader) + ', '  + \
11112
             'Parameters:' + str(self.Parameters) + ')'
11113
    
11114 1
    __repr__ = __str__
11115
    
11116 1
class BuildInfo(FrozenClass):
11117
    '''
11118
    :ivar ProductUri: 
11119
    :vartype ProductUri: String 
11120
    :ivar ManufacturerName: 
11121
    :vartype ManufacturerName: String 
11122
    :ivar ProductName: 
11123
    :vartype ProductName: String 
11124
    :ivar SoftwareVersion: 
11125
    :vartype SoftwareVersion: String 
11126
    :ivar BuildNumber: 
11127
    :vartype BuildNumber: String 
11128
    :ivar BuildDate: 
11129
    :vartype BuildDate: DateTime 
11130
    '''
11131 1
    def __init__(self):
11132
        self.ProductUri = ''
11133
        self.ManufacturerName = ''
11134
        self.ProductName = ''
11135
        self.SoftwareVersion = ''
11136
        self.BuildNumber = ''
11137
        self.BuildDate = datetime.now()
11138
        self._freeze()
11139
    
11140 1
    def to_binary(self):
11141
        packet = []
11142
        packet.append(pack_uatype('String', self.ProductUri))
11143
        packet.append(pack_uatype('String', self.ManufacturerName))
11144
        packet.append(pack_uatype('String', self.ProductName))
11145
        packet.append(pack_uatype('String', self.SoftwareVersion))
11146
        packet.append(pack_uatype('String', self.BuildNumber))
11147
        packet.append(pack_uatype('DateTime', self.BuildDate))
11148
        return b''.join(packet)
11149
        
11150 1
    @staticmethod
11151
    def from_binary(data):
11152
        obj = BuildInfo()
11153
        obj.ProductUri = unpack_uatype('String', data)
11154
        obj.ManufacturerName = unpack_uatype('String', data)
11155
        obj.ProductName = unpack_uatype('String', data)
11156
        obj.SoftwareVersion = unpack_uatype('String', data)
11157
        obj.BuildNumber = unpack_uatype('String', data)
11158
        obj.BuildDate = unpack_uatype('DateTime', data)
11159
        return obj
11160
    
11161 1
    def __str__(self):
11162
        return 'BuildInfo(' + 'ProductUri:' + str(self.ProductUri) + ', '  + \
11163
             'ManufacturerName:' + str(self.ManufacturerName) + ', '  + \
11164
             'ProductName:' + str(self.ProductName) + ', '  + \
11165
             'SoftwareVersion:' + str(self.SoftwareVersion) + ', '  + \
11166
             'BuildNumber:' + str(self.BuildNumber) + ', '  + \
11167
             'BuildDate:' + str(self.BuildDate) + ')'
11168
    
11169 1
    __repr__ = __str__
11170
    
11171 1
class RedundantServerDataType(FrozenClass):
11172
    '''
11173
    :ivar ServerId: 
11174
    :vartype ServerId: String 
11175
    :ivar ServiceLevel: 
11176
    :vartype ServiceLevel: Byte 
11177
    :ivar ServerState: 
11178
    :vartype ServerState: ServerState 
11179
    '''
11180 1
    def __init__(self):
11181
        self.ServerId = ''
11182
        self.ServiceLevel = 0
11183
        self.ServerState = 0
11184
        self._freeze()
11185
    
11186 1
    def to_binary(self):
11187
        packet = []
11188
        packet.append(pack_uatype('String', self.ServerId))
11189
        packet.append(pack_uatype('Byte', self.ServiceLevel))
11190
        packet.append(pack_uatype('UInt32', self.ServerState))
11191
        return b''.join(packet)
11192
        
11193 1
    @staticmethod
11194
    def from_binary(data):
11195
        obj = RedundantServerDataType()
11196
        obj.ServerId = unpack_uatype('String', data)
11197
        obj.ServiceLevel = unpack_uatype('Byte', data)
11198
        obj.ServerState = unpack_uatype('UInt32', data)
11199
        return obj
11200
    
11201 1
    def __str__(self):
11202
        return 'RedundantServerDataType(' + 'ServerId:' + str(self.ServerId) + ', '  + \
11203
             'ServiceLevel:' + str(self.ServiceLevel) + ', '  + \
11204
             'ServerState:' + str(self.ServerState) + ')'
11205
    
11206 1
    __repr__ = __str__
11207
    
11208 1
class EndpointUrlListDataType(FrozenClass):
11209
    '''
11210
    :ivar EndpointUrlList: 
11211
    :vartype EndpointUrlList: String 
11212
    '''
11213 1
    def __init__(self):
11214
        self.EndpointUrlList = []
11215
        self._freeze()
11216
    
11217 1
    def to_binary(self):
11218
        packet = []
11219
        packet.append(struct.pack('<i', len(self.EndpointUrlList)))
11220
        for fieldname in self.EndpointUrlList:
11221
            packet.append(pack_uatype('String', fieldname))
11222
        return b''.join(packet)
11223
        
11224 1
    @staticmethod
11225
    def from_binary(data):
11226
        obj = EndpointUrlListDataType()
11227
        obj.EndpointUrlList = unpack_uatype_array('String', data)
11228
        return obj
11229
    
11230 1
    def __str__(self):
11231
        return 'EndpointUrlListDataType(' + 'EndpointUrlList:' + str(self.EndpointUrlList) + ')'
11232
    
11233 1
    __repr__ = __str__
11234
    
11235 1
class NetworkGroupDataType(FrozenClass):
11236
    '''
11237
    :ivar ServerUri: 
11238
    :vartype ServerUri: String 
11239
    :ivar NetworkPaths: 
11240
    :vartype NetworkPaths: EndpointUrlListDataType 
11241
    '''
11242 1
    def __init__(self):
11243
        self.ServerUri = ''
11244
        self.NetworkPaths = []
11245
        self._freeze()
11246
    
11247 1
    def to_binary(self):
11248
        packet = []
11249
        packet.append(pack_uatype('String', self.ServerUri))
11250
        packet.append(struct.pack('<i', len(self.NetworkPaths)))
11251
        for fieldname in self.NetworkPaths:
11252
            packet.append(fieldname.to_binary())
11253
        return b''.join(packet)
11254
        
11255 1
    @staticmethod
11256
    def from_binary(data):
11257
        obj = NetworkGroupDataType()
11258
        obj.ServerUri = unpack_uatype('String', data)
11259
        length = struct.unpack('<i', data.read(4))[0]
11260
        if length != -1:
11261
            for _ in range(0, length):
11262
                obj.NetworkPaths.append(EndpointUrlListDataType.from_binary(data))
11263
        return obj
11264
    
11265 1
    def __str__(self):
11266
        return 'NetworkGroupDataType(' + 'ServerUri:' + str(self.ServerUri) + ', '  + \
11267
             'NetworkPaths:' + str(self.NetworkPaths) + ')'
11268
    
11269 1
    __repr__ = __str__
11270
    
11271 1
class SamplingIntervalDiagnosticsDataType(FrozenClass):
11272
    '''
11273
    :ivar SamplingInterval: 
11274
    :vartype SamplingInterval: Double 
11275
    :ivar MonitoredItemCount: 
11276
    :vartype MonitoredItemCount: UInt32 
11277
    :ivar MaxMonitoredItemCount: 
11278
    :vartype MaxMonitoredItemCount: UInt32 
11279
    :ivar DisabledMonitoredItemCount: 
11280
    :vartype DisabledMonitoredItemCount: UInt32 
11281
    '''
11282 1
    def __init__(self):
11283
        self.SamplingInterval = 0
11284
        self.MonitoredItemCount = 0
11285
        self.MaxMonitoredItemCount = 0
11286
        self.DisabledMonitoredItemCount = 0
11287
        self._freeze()
11288
    
11289 1
    def to_binary(self):
11290
        packet = []
11291
        packet.append(pack_uatype('Double', self.SamplingInterval))
11292
        packet.append(pack_uatype('UInt32', self.MonitoredItemCount))
11293
        packet.append(pack_uatype('UInt32', self.MaxMonitoredItemCount))
11294
        packet.append(pack_uatype('UInt32', self.DisabledMonitoredItemCount))
11295
        return b''.join(packet)
11296
        
11297 1
    @staticmethod
11298
    def from_binary(data):
11299
        obj = SamplingIntervalDiagnosticsDataType()
11300
        obj.SamplingInterval = unpack_uatype('Double', data)
11301
        obj.MonitoredItemCount = unpack_uatype('UInt32', data)
11302
        obj.MaxMonitoredItemCount = unpack_uatype('UInt32', data)
11303
        obj.DisabledMonitoredItemCount = unpack_uatype('UInt32', data)
11304
        return obj
11305
    
11306 1
    def __str__(self):
11307
        return 'SamplingIntervalDiagnosticsDataType(' + 'SamplingInterval:' + str(self.SamplingInterval) + ', '  + \
11308
             'MonitoredItemCount:' + str(self.MonitoredItemCount) + ', '  + \
11309
             'MaxMonitoredItemCount:' + str(self.MaxMonitoredItemCount) + ', '  + \
11310
             'DisabledMonitoredItemCount:' + str(self.DisabledMonitoredItemCount) + ')'
11311
    
11312 1
    __repr__ = __str__
11313
    
11314 1
class ServerDiagnosticsSummaryDataType(FrozenClass):
11315
    '''
11316
    :ivar ServerViewCount: 
11317
    :vartype ServerViewCount: UInt32 
11318
    :ivar CurrentSessionCount: 
11319
    :vartype CurrentSessionCount: UInt32 
11320
    :ivar CumulatedSessionCount: 
11321
    :vartype CumulatedSessionCount: UInt32 
11322
    :ivar SecurityRejectedSessionCount: 
11323
    :vartype SecurityRejectedSessionCount: UInt32 
11324
    :ivar RejectedSessionCount: 
11325
    :vartype RejectedSessionCount: UInt32 
11326
    :ivar SessionTimeoutCount: 
11327
    :vartype SessionTimeoutCount: UInt32 
11328
    :ivar SessionAbortCount: 
11329
    :vartype SessionAbortCount: UInt32 
11330
    :ivar CurrentSubscriptionCount: 
11331
    :vartype CurrentSubscriptionCount: UInt32 
11332
    :ivar CumulatedSubscriptionCount: 
11333
    :vartype CumulatedSubscriptionCount: UInt32 
11334
    :ivar PublishingIntervalCount: 
11335
    :vartype PublishingIntervalCount: UInt32 
11336
    :ivar SecurityRejectedRequestsCount: 
11337
    :vartype SecurityRejectedRequestsCount: UInt32 
11338
    :ivar RejectedRequestsCount: 
11339
    :vartype RejectedRequestsCount: UInt32 
11340
    '''
11341 1
    def __init__(self):
11342
        self.ServerViewCount = 0
11343
        self.CurrentSessionCount = 0
11344
        self.CumulatedSessionCount = 0
11345
        self.SecurityRejectedSessionCount = 0
11346
        self.RejectedSessionCount = 0
11347
        self.SessionTimeoutCount = 0
11348
        self.SessionAbortCount = 0
11349
        self.CurrentSubscriptionCount = 0
11350
        self.CumulatedSubscriptionCount = 0
11351
        self.PublishingIntervalCount = 0
11352
        self.SecurityRejectedRequestsCount = 0
11353
        self.RejectedRequestsCount = 0
11354
        self._freeze()
11355
    
11356 1
    def to_binary(self):
11357
        packet = []
11358
        packet.append(pack_uatype('UInt32', self.ServerViewCount))
11359
        packet.append(pack_uatype('UInt32', self.CurrentSessionCount))
11360
        packet.append(pack_uatype('UInt32', self.CumulatedSessionCount))
11361
        packet.append(pack_uatype('UInt32', self.SecurityRejectedSessionCount))
11362
        packet.append(pack_uatype('UInt32', self.RejectedSessionCount))
11363
        packet.append(pack_uatype('UInt32', self.SessionTimeoutCount))
11364
        packet.append(pack_uatype('UInt32', self.SessionAbortCount))
11365
        packet.append(pack_uatype('UInt32', self.CurrentSubscriptionCount))
11366
        packet.append(pack_uatype('UInt32', self.CumulatedSubscriptionCount))
11367
        packet.append(pack_uatype('UInt32', self.PublishingIntervalCount))
11368
        packet.append(pack_uatype('UInt32', self.SecurityRejectedRequestsCount))
11369
        packet.append(pack_uatype('UInt32', self.RejectedRequestsCount))
11370
        return b''.join(packet)
11371
        
11372 1
    @staticmethod
11373
    def from_binary(data):
11374
        obj = ServerDiagnosticsSummaryDataType()
11375
        obj.ServerViewCount = unpack_uatype('UInt32', data)
11376
        obj.CurrentSessionCount = unpack_uatype('UInt32', data)
11377
        obj.CumulatedSessionCount = unpack_uatype('UInt32', data)
11378
        obj.SecurityRejectedSessionCount = unpack_uatype('UInt32', data)
11379
        obj.RejectedSessionCount = unpack_uatype('UInt32', data)
11380
        obj.SessionTimeoutCount = unpack_uatype('UInt32', data)
11381
        obj.SessionAbortCount = unpack_uatype('UInt32', data)
11382
        obj.CurrentSubscriptionCount = unpack_uatype('UInt32', data)
11383
        obj.CumulatedSubscriptionCount = unpack_uatype('UInt32', data)
11384
        obj.PublishingIntervalCount = unpack_uatype('UInt32', data)
11385
        obj.SecurityRejectedRequestsCount = unpack_uatype('UInt32', data)
11386
        obj.RejectedRequestsCount = unpack_uatype('UInt32', data)
11387
        return obj
11388
    
11389 1
    def __str__(self):
11390
        return 'ServerDiagnosticsSummaryDataType(' + 'ServerViewCount:' + str(self.ServerViewCount) + ', '  + \
11391
             'CurrentSessionCount:' + str(self.CurrentSessionCount) + ', '  + \
11392
             'CumulatedSessionCount:' + str(self.CumulatedSessionCount) + ', '  + \
11393
             'SecurityRejectedSessionCount:' + str(self.SecurityRejectedSessionCount) + ', '  + \
11394
             'RejectedSessionCount:' + str(self.RejectedSessionCount) + ', '  + \
11395
             'SessionTimeoutCount:' + str(self.SessionTimeoutCount) + ', '  + \
11396
             'SessionAbortCount:' + str(self.SessionAbortCount) + ', '  + \
11397
             'CurrentSubscriptionCount:' + str(self.CurrentSubscriptionCount) + ', '  + \
11398
             'CumulatedSubscriptionCount:' + str(self.CumulatedSubscriptionCount) + ', '  + \
11399
             'PublishingIntervalCount:' + str(self.PublishingIntervalCount) + ', '  + \
11400
             'SecurityRejectedRequestsCount:' + str(self.SecurityRejectedRequestsCount) + ', '  + \
11401
             'RejectedRequestsCount:' + str(self.RejectedRequestsCount) + ')'
11402
    
11403 1
    __repr__ = __str__
11404
    
11405 1
class ServerStatusDataType(FrozenClass):
11406
    '''
11407
    :ivar StartTime: 
11408
    :vartype StartTime: DateTime 
11409
    :ivar CurrentTime: 
11410
    :vartype CurrentTime: DateTime 
11411
    :ivar State: 
11412
    :vartype State: ServerState 
11413
    :ivar BuildInfo: 
11414
    :vartype BuildInfo: BuildInfo 
11415
    :ivar SecondsTillShutdown: 
11416
    :vartype SecondsTillShutdown: UInt32 
11417
    :ivar ShutdownReason: 
11418
    :vartype ShutdownReason: LocalizedText 
11419
    '''
11420 1
    def __init__(self):
11421
        self.StartTime = datetime.now()
11422
        self.CurrentTime = datetime.now()
11423
        self.State = 0
11424
        self.BuildInfo = BuildInfo()
11425
        self.SecondsTillShutdown = 0
11426
        self.ShutdownReason = LocalizedText()
11427
        self._freeze()
11428
    
11429 1
    def to_binary(self):
11430
        packet = []
11431
        packet.append(pack_uatype('DateTime', self.StartTime))
11432
        packet.append(pack_uatype('DateTime', self.CurrentTime))
11433
        packet.append(pack_uatype('UInt32', self.State))
11434
        packet.append(self.BuildInfo.to_binary())
11435
        packet.append(pack_uatype('UInt32', self.SecondsTillShutdown))
11436
        packet.append(self.ShutdownReason.to_binary())
11437
        return b''.join(packet)
11438
        
11439 1
    @staticmethod
11440
    def from_binary(data):
11441
        obj = ServerStatusDataType()
11442
        obj.StartTime = unpack_uatype('DateTime', data)
11443
        obj.CurrentTime = unpack_uatype('DateTime', data)
11444
        obj.State = unpack_uatype('UInt32', data)
11445
        obj.BuildInfo = BuildInfo.from_binary(data)
11446
        obj.SecondsTillShutdown = unpack_uatype('UInt32', data)
11447
        obj.ShutdownReason = LocalizedText.from_binary(data)
11448
        return obj
11449
    
11450 1
    def __str__(self):
11451
        return 'ServerStatusDataType(' + 'StartTime:' + str(self.StartTime) + ', '  + \
11452
             'CurrentTime:' + str(self.CurrentTime) + ', '  + \
11453
             'State:' + str(self.State) + ', '  + \
11454
             'BuildInfo:' + str(self.BuildInfo) + ', '  + \
11455
             'SecondsTillShutdown:' + str(self.SecondsTillShutdown) + ', '  + \
11456
             'ShutdownReason:' + str(self.ShutdownReason) + ')'
11457
    
11458 1
    __repr__ = __str__
11459
    
11460 1
class SessionDiagnosticsDataType(FrozenClass):
11461
    '''
11462
    :ivar SessionId: 
11463
    :vartype SessionId: NodeId 
11464
    :ivar SessionName: 
11465
    :vartype SessionName: String 
11466
    :ivar ClientDescription: 
11467
    :vartype ClientDescription: ApplicationDescription 
11468
    :ivar ServerUri: 
11469
    :vartype ServerUri: String 
11470
    :ivar EndpointUrl: 
11471
    :vartype EndpointUrl: String 
11472
    :ivar LocaleIds: 
11473
    :vartype LocaleIds: String 
11474
    :ivar ActualSessionTimeout: 
11475
    :vartype ActualSessionTimeout: Double 
11476
    :ivar MaxResponseMessageSize: 
11477
    :vartype MaxResponseMessageSize: UInt32 
11478
    :ivar ClientConnectionTime: 
11479
    :vartype ClientConnectionTime: DateTime 
11480
    :ivar ClientLastContactTime: 
11481
    :vartype ClientLastContactTime: DateTime 
11482
    :ivar CurrentSubscriptionsCount: 
11483
    :vartype CurrentSubscriptionsCount: UInt32 
11484
    :ivar CurrentMonitoredItemsCount: 
11485
    :vartype CurrentMonitoredItemsCount: UInt32 
11486
    :ivar CurrentPublishRequestsInQueue: 
11487
    :vartype CurrentPublishRequestsInQueue: UInt32 
11488
    :ivar TotalRequestCount: 
11489
    :vartype TotalRequestCount: ServiceCounterDataType 
11490
    :ivar UnauthorizedRequestCount: 
11491
    :vartype UnauthorizedRequestCount: UInt32 
11492
    :ivar ReadCount: 
11493
    :vartype ReadCount: ServiceCounterDataType 
11494
    :ivar HistoryReadCount: 
11495
    :vartype HistoryReadCount: ServiceCounterDataType 
11496
    :ivar WriteCount: 
11497
    :vartype WriteCount: ServiceCounterDataType 
11498
    :ivar HistoryUpdateCount: 
11499
    :vartype HistoryUpdateCount: ServiceCounterDataType 
11500
    :ivar CallCount: 
11501
    :vartype CallCount: ServiceCounterDataType 
11502
    :ivar CreateMonitoredItemsCount: 
11503
    :vartype CreateMonitoredItemsCount: ServiceCounterDataType 
11504
    :ivar ModifyMonitoredItemsCount: 
11505
    :vartype ModifyMonitoredItemsCount: ServiceCounterDataType 
11506
    :ivar SetMonitoringModeCount: 
11507
    :vartype SetMonitoringModeCount: ServiceCounterDataType 
11508
    :ivar SetTriggeringCount: 
11509
    :vartype SetTriggeringCount: ServiceCounterDataType 
11510
    :ivar DeleteMonitoredItemsCount: 
11511
    :vartype DeleteMonitoredItemsCount: ServiceCounterDataType 
11512
    :ivar CreateSubscriptionCount: 
11513
    :vartype CreateSubscriptionCount: ServiceCounterDataType 
11514
    :ivar ModifySubscriptionCount: 
11515
    :vartype ModifySubscriptionCount: ServiceCounterDataType 
11516
    :ivar SetPublishingModeCount: 
11517
    :vartype SetPublishingModeCount: ServiceCounterDataType 
11518
    :ivar PublishCount: 
11519
    :vartype PublishCount: ServiceCounterDataType 
11520
    :ivar RepublishCount: 
11521
    :vartype RepublishCount: ServiceCounterDataType 
11522
    :ivar TransferSubscriptionsCount: 
11523
    :vartype TransferSubscriptionsCount: ServiceCounterDataType 
11524
    :ivar DeleteSubscriptionsCount: 
11525
    :vartype DeleteSubscriptionsCount: ServiceCounterDataType 
11526
    :ivar AddNodesCount: 
11527
    :vartype AddNodesCount: ServiceCounterDataType 
11528
    :ivar AddReferencesCount: 
11529
    :vartype AddReferencesCount: ServiceCounterDataType 
11530
    :ivar DeleteNodesCount: 
11531
    :vartype DeleteNodesCount: ServiceCounterDataType 
11532
    :ivar DeleteReferencesCount: 
11533
    :vartype DeleteReferencesCount: ServiceCounterDataType 
11534
    :ivar BrowseCount: 
11535
    :vartype BrowseCount: ServiceCounterDataType 
11536
    :ivar BrowseNextCount: 
11537
    :vartype BrowseNextCount: ServiceCounterDataType 
11538
    :ivar TranslateBrowsePathsToNodeIdsCount: 
11539
    :vartype TranslateBrowsePathsToNodeIdsCount: ServiceCounterDataType 
11540
    :ivar QueryFirstCount: 
11541
    :vartype QueryFirstCount: ServiceCounterDataType 
11542
    :ivar QueryNextCount: 
11543
    :vartype QueryNextCount: ServiceCounterDataType 
11544
    :ivar RegisterNodesCount: 
11545
    :vartype RegisterNodesCount: ServiceCounterDataType 
11546
    :ivar UnregisterNodesCount: 
11547
    :vartype UnregisterNodesCount: ServiceCounterDataType 
11548
    '''
11549 1
    def __init__(self):
11550
        self.SessionId = NodeId()
11551
        self.SessionName = ''
11552
        self.ClientDescription = ApplicationDescription()
11553
        self.ServerUri = ''
11554
        self.EndpointUrl = ''
11555
        self.LocaleIds = []
11556
        self.ActualSessionTimeout = 0
11557
        self.MaxResponseMessageSize = 0
11558
        self.ClientConnectionTime = datetime.now()
11559
        self.ClientLastContactTime = datetime.now()
11560
        self.CurrentSubscriptionsCount = 0
11561
        self.CurrentMonitoredItemsCount = 0
11562
        self.CurrentPublishRequestsInQueue = 0
11563
        self.TotalRequestCount = ServiceCounterDataType()
11564
        self.UnauthorizedRequestCount = 0
11565
        self.ReadCount = ServiceCounterDataType()
11566
        self.HistoryReadCount = ServiceCounterDataType()
11567
        self.WriteCount = ServiceCounterDataType()
11568
        self.HistoryUpdateCount = ServiceCounterDataType()
11569
        self.CallCount = ServiceCounterDataType()
11570
        self.CreateMonitoredItemsCount = ServiceCounterDataType()
11571
        self.ModifyMonitoredItemsCount = ServiceCounterDataType()
11572
        self.SetMonitoringModeCount = ServiceCounterDataType()
11573
        self.SetTriggeringCount = ServiceCounterDataType()
11574
        self.DeleteMonitoredItemsCount = ServiceCounterDataType()
11575
        self.CreateSubscriptionCount = ServiceCounterDataType()
11576
        self.ModifySubscriptionCount = ServiceCounterDataType()
11577
        self.SetPublishingModeCount = ServiceCounterDataType()
11578
        self.PublishCount = ServiceCounterDataType()
11579
        self.RepublishCount = ServiceCounterDataType()
11580
        self.TransferSubscriptionsCount = ServiceCounterDataType()
11581
        self.DeleteSubscriptionsCount = ServiceCounterDataType()
11582
        self.AddNodesCount = ServiceCounterDataType()
11583
        self.AddReferencesCount = ServiceCounterDataType()
11584
        self.DeleteNodesCount = ServiceCounterDataType()
11585
        self.DeleteReferencesCount = ServiceCounterDataType()
11586
        self.BrowseCount = ServiceCounterDataType()
11587
        self.BrowseNextCount = ServiceCounterDataType()
11588
        self.TranslateBrowsePathsToNodeIdsCount = ServiceCounterDataType()
11589
        self.QueryFirstCount = ServiceCounterDataType()
11590
        self.QueryNextCount = ServiceCounterDataType()
11591
        self.RegisterNodesCount = ServiceCounterDataType()
11592
        self.UnregisterNodesCount = ServiceCounterDataType()
11593
        self._freeze()
11594
    
11595 1
    def to_binary(self):
11596
        packet = []
11597
        packet.append(self.SessionId.to_binary())
11598
        packet.append(pack_uatype('String', self.SessionName))
11599
        packet.append(self.ClientDescription.to_binary())
11600
        packet.append(pack_uatype('String', self.ServerUri))
11601
        packet.append(pack_uatype('String', self.EndpointUrl))
11602
        packet.append(struct.pack('<i', len(self.LocaleIds)))
11603
        for fieldname in self.LocaleIds:
11604
            packet.append(pack_uatype('String', fieldname))
11605
        packet.append(pack_uatype('Double', self.ActualSessionTimeout))
11606
        packet.append(pack_uatype('UInt32', self.MaxResponseMessageSize))
11607
        packet.append(pack_uatype('DateTime', self.ClientConnectionTime))
11608
        packet.append(pack_uatype('DateTime', self.ClientLastContactTime))
11609
        packet.append(pack_uatype('UInt32', self.CurrentSubscriptionsCount))
11610
        packet.append(pack_uatype('UInt32', self.CurrentMonitoredItemsCount))
11611
        packet.append(pack_uatype('UInt32', self.CurrentPublishRequestsInQueue))
11612
        packet.append(self.TotalRequestCount.to_binary())
11613
        packet.append(pack_uatype('UInt32', self.UnauthorizedRequestCount))
11614
        packet.append(self.ReadCount.to_binary())
11615
        packet.append(self.HistoryReadCount.to_binary())
11616
        packet.append(self.WriteCount.to_binary())
11617
        packet.append(self.HistoryUpdateCount.to_binary())
11618
        packet.append(self.CallCount.to_binary())
11619
        packet.append(self.CreateMonitoredItemsCount.to_binary())
11620
        packet.append(self.ModifyMonitoredItemsCount.to_binary())
11621
        packet.append(self.SetMonitoringModeCount.to_binary())
11622
        packet.append(self.SetTriggeringCount.to_binary())
11623
        packet.append(self.DeleteMonitoredItemsCount.to_binary())
11624
        packet.append(self.CreateSubscriptionCount.to_binary())
11625
        packet.append(self.ModifySubscriptionCount.to_binary())
11626
        packet.append(self.SetPublishingModeCount.to_binary())
11627
        packet.append(self.PublishCount.to_binary())
11628
        packet.append(self.RepublishCount.to_binary())
11629
        packet.append(self.TransferSubscriptionsCount.to_binary())
11630
        packet.append(self.DeleteSubscriptionsCount.to_binary())
11631
        packet.append(self.AddNodesCount.to_binary())
11632
        packet.append(self.AddReferencesCount.to_binary())
11633
        packet.append(self.DeleteNodesCount.to_binary())
11634
        packet.append(self.DeleteReferencesCount.to_binary())
11635
        packet.append(self.BrowseCount.to_binary())
11636
        packet.append(self.BrowseNextCount.to_binary())
11637
        packet.append(self.TranslateBrowsePathsToNodeIdsCount.to_binary())
11638
        packet.append(self.QueryFirstCount.to_binary())
11639
        packet.append(self.QueryNextCount.to_binary())
11640
        packet.append(self.RegisterNodesCount.to_binary())
11641
        packet.append(self.UnregisterNodesCount.to_binary())
11642
        return b''.join(packet)
11643
        
11644 1
    @staticmethod
11645
    def from_binary(data):
11646
        obj = SessionDiagnosticsDataType()
11647
        obj.SessionId = NodeId.from_binary(data)
11648
        obj.SessionName = unpack_uatype('String', data)
11649
        obj.ClientDescription = ApplicationDescription.from_binary(data)
11650
        obj.ServerUri = unpack_uatype('String', data)
11651
        obj.EndpointUrl = unpack_uatype('String', data)
11652
        obj.LocaleIds = unpack_uatype_array('String', data)
11653
        obj.ActualSessionTimeout = unpack_uatype('Double', data)
11654
        obj.MaxResponseMessageSize = unpack_uatype('UInt32', data)
11655
        obj.ClientConnectionTime = unpack_uatype('DateTime', data)
11656
        obj.ClientLastContactTime = unpack_uatype('DateTime', data)
11657
        obj.CurrentSubscriptionsCount = unpack_uatype('UInt32', data)
11658
        obj.CurrentMonitoredItemsCount = unpack_uatype('UInt32', data)
11659
        obj.CurrentPublishRequestsInQueue = unpack_uatype('UInt32', data)
11660
        obj.TotalRequestCount = ServiceCounterDataType.from_binary(data)
11661
        obj.UnauthorizedRequestCount = unpack_uatype('UInt32', data)
11662
        obj.ReadCount = ServiceCounterDataType.from_binary(data)
11663
        obj.HistoryReadCount = ServiceCounterDataType.from_binary(data)
11664
        obj.WriteCount = ServiceCounterDataType.from_binary(data)
11665
        obj.HistoryUpdateCount = ServiceCounterDataType.from_binary(data)
11666
        obj.CallCount = ServiceCounterDataType.from_binary(data)
11667
        obj.CreateMonitoredItemsCount = ServiceCounterDataType.from_binary(data)
11668
        obj.ModifyMonitoredItemsCount = ServiceCounterDataType.from_binary(data)
11669
        obj.SetMonitoringModeCount = ServiceCounterDataType.from_binary(data)
11670
        obj.SetTriggeringCount = ServiceCounterDataType.from_binary(data)
11671
        obj.DeleteMonitoredItemsCount = ServiceCounterDataType.from_binary(data)
11672
        obj.CreateSubscriptionCount = ServiceCounterDataType.from_binary(data)
11673
        obj.ModifySubscriptionCount = ServiceCounterDataType.from_binary(data)
11674
        obj.SetPublishingModeCount = ServiceCounterDataType.from_binary(data)
11675
        obj.PublishCount = ServiceCounterDataType.from_binary(data)
11676
        obj.RepublishCount = ServiceCounterDataType.from_binary(data)
11677
        obj.TransferSubscriptionsCount = ServiceCounterDataType.from_binary(data)
11678
        obj.DeleteSubscriptionsCount = ServiceCounterDataType.from_binary(data)
11679
        obj.AddNodesCount = ServiceCounterDataType.from_binary(data)
11680
        obj.AddReferencesCount = ServiceCounterDataType.from_binary(data)
11681
        obj.DeleteNodesCount = ServiceCounterDataType.from_binary(data)
11682
        obj.DeleteReferencesCount = ServiceCounterDataType.from_binary(data)
11683
        obj.BrowseCount = ServiceCounterDataType.from_binary(data)
11684
        obj.BrowseNextCount = ServiceCounterDataType.from_binary(data)
11685
        obj.TranslateBrowsePathsToNodeIdsCount = ServiceCounterDataType.from_binary(data)
11686
        obj.QueryFirstCount = ServiceCounterDataType.from_binary(data)
11687
        obj.QueryNextCount = ServiceCounterDataType.from_binary(data)
11688
        obj.RegisterNodesCount = ServiceCounterDataType.from_binary(data)
11689
        obj.UnregisterNodesCount = ServiceCounterDataType.from_binary(data)
11690
        return obj
11691
    
11692 1
    def __str__(self):
11693
        return 'SessionDiagnosticsDataType(' + 'SessionId:' + str(self.SessionId) + ', '  + \
11694
             'SessionName:' + str(self.SessionName) + ', '  + \
11695
             'ClientDescription:' + str(self.ClientDescription) + ', '  + \
11696
             'ServerUri:' + str(self.ServerUri) + ', '  + \
11697
             'EndpointUrl:' + str(self.EndpointUrl) + ', '  + \
11698
             'LocaleIds:' + str(self.LocaleIds) + ', '  + \
11699
             'ActualSessionTimeout:' + str(self.ActualSessionTimeout) + ', '  + \
11700
             'MaxResponseMessageSize:' + str(self.MaxResponseMessageSize) + ', '  + \
11701
             'ClientConnectionTime:' + str(self.ClientConnectionTime) + ', '  + \
11702
             'ClientLastContactTime:' + str(self.ClientLastContactTime) + ', '  + \
11703
             'CurrentSubscriptionsCount:' + str(self.CurrentSubscriptionsCount) + ', '  + \
11704
             'CurrentMonitoredItemsCount:' + str(self.CurrentMonitoredItemsCount) + ', '  + \
11705
             'CurrentPublishRequestsInQueue:' + str(self.CurrentPublishRequestsInQueue) + ', '  + \
11706
             'TotalRequestCount:' + str(self.TotalRequestCount) + ', '  + \
11707
             'UnauthorizedRequestCount:' + str(self.UnauthorizedRequestCount) + ', '  + \
11708
             'ReadCount:' + str(self.ReadCount) + ', '  + \
11709
             'HistoryReadCount:' + str(self.HistoryReadCount) + ', '  + \
11710
             'WriteCount:' + str(self.WriteCount) + ', '  + \
11711
             'HistoryUpdateCount:' + str(self.HistoryUpdateCount) + ', '  + \
11712
             'CallCount:' + str(self.CallCount) + ', '  + \
11713
             'CreateMonitoredItemsCount:' + str(self.CreateMonitoredItemsCount) + ', '  + \
11714
             'ModifyMonitoredItemsCount:' + str(self.ModifyMonitoredItemsCount) + ', '  + \
11715
             'SetMonitoringModeCount:' + str(self.SetMonitoringModeCount) + ', '  + \
11716
             'SetTriggeringCount:' + str(self.SetTriggeringCount) + ', '  + \
11717
             'DeleteMonitoredItemsCount:' + str(self.DeleteMonitoredItemsCount) + ', '  + \
11718
             'CreateSubscriptionCount:' + str(self.CreateSubscriptionCount) + ', '  + \
11719
             'ModifySubscriptionCount:' + str(self.ModifySubscriptionCount) + ', '  + \
11720
             'SetPublishingModeCount:' + str(self.SetPublishingModeCount) + ', '  + \
11721
             'PublishCount:' + str(self.PublishCount) + ', '  + \
11722
             'RepublishCount:' + str(self.RepublishCount) + ', '  + \
11723
             'TransferSubscriptionsCount:' + str(self.TransferSubscriptionsCount) + ', '  + \
11724
             'DeleteSubscriptionsCount:' + str(self.DeleteSubscriptionsCount) + ', '  + \
11725
             'AddNodesCount:' + str(self.AddNodesCount) + ', '  + \
11726
             'AddReferencesCount:' + str(self.AddReferencesCount) + ', '  + \
11727
             'DeleteNodesCount:' + str(self.DeleteNodesCount) + ', '  + \
11728
             'DeleteReferencesCount:' + str(self.DeleteReferencesCount) + ', '  + \
11729
             'BrowseCount:' + str(self.BrowseCount) + ', '  + \
11730
             'BrowseNextCount:' + str(self.BrowseNextCount) + ', '  + \
11731
             'TranslateBrowsePathsToNodeIdsCount:' + str(self.TranslateBrowsePathsToNodeIdsCount) + ', '  + \
11732
             'QueryFirstCount:' + str(self.QueryFirstCount) + ', '  + \
11733
             'QueryNextCount:' + str(self.QueryNextCount) + ', '  + \
11734
             'RegisterNodesCount:' + str(self.RegisterNodesCount) + ', '  + \
11735
             'UnregisterNodesCount:' + str(self.UnregisterNodesCount) + ')'
11736
    
11737 1
    __repr__ = __str__
11738
    
11739 1
class SessionSecurityDiagnosticsDataType(FrozenClass):
11740
    '''
11741
    :ivar SessionId: 
11742
    :vartype SessionId: NodeId 
11743
    :ivar ClientUserIdOfSession: 
11744
    :vartype ClientUserIdOfSession: String 
11745
    :ivar ClientUserIdHistory: 
11746
    :vartype ClientUserIdHistory: String 
11747
    :ivar AuthenticationMechanism: 
11748
    :vartype AuthenticationMechanism: String 
11749
    :ivar Encoding: 
11750
    :vartype Encoding: String 
11751
    :ivar TransportProtocol: 
11752
    :vartype TransportProtocol: String 
11753
    :ivar SecurityMode: 
11754
    :vartype SecurityMode: MessageSecurityMode 
11755
    :ivar SecurityPolicyUri: 
11756
    :vartype SecurityPolicyUri: String 
11757
    :ivar ClientCertificate: 
11758
    :vartype ClientCertificate: ByteString 
11759
    '''
11760 1
    def __init__(self):
11761
        self.SessionId = NodeId()
11762
        self.ClientUserIdOfSession = ''
11763
        self.ClientUserIdHistory = []
11764
        self.AuthenticationMechanism = ''
11765
        self.Encoding = ''
11766
        self.TransportProtocol = ''
11767
        self.SecurityMode = 0
11768
        self.SecurityPolicyUri = ''
11769
        self.ClientCertificate = b''
11770
        self._freeze()
11771
    
11772 1
    def to_binary(self):
11773
        packet = []
11774
        packet.append(self.SessionId.to_binary())
11775
        packet.append(pack_uatype('String', self.ClientUserIdOfSession))
11776
        packet.append(struct.pack('<i', len(self.ClientUserIdHistory)))
11777
        for fieldname in self.ClientUserIdHistory:
11778
            packet.append(pack_uatype('String', fieldname))
11779
        packet.append(pack_uatype('String', self.AuthenticationMechanism))
11780
        packet.append(pack_uatype('String', self.Encoding))
11781
        packet.append(pack_uatype('String', self.TransportProtocol))
11782
        packet.append(pack_uatype('UInt32', self.SecurityMode))
11783
        packet.append(pack_uatype('String', self.SecurityPolicyUri))
11784
        packet.append(pack_uatype('ByteString', self.ClientCertificate))
11785
        return b''.join(packet)
11786
        
11787 1
    @staticmethod
11788
    def from_binary(data):
11789
        obj = SessionSecurityDiagnosticsDataType()
11790
        obj.SessionId = NodeId.from_binary(data)
11791
        obj.ClientUserIdOfSession = unpack_uatype('String', data)
11792
        obj.ClientUserIdHistory = unpack_uatype_array('String', data)
11793
        obj.AuthenticationMechanism = unpack_uatype('String', data)
11794
        obj.Encoding = unpack_uatype('String', data)
11795
        obj.TransportProtocol = unpack_uatype('String', data)
11796
        obj.SecurityMode = unpack_uatype('UInt32', data)
11797
        obj.SecurityPolicyUri = unpack_uatype('String', data)
11798
        obj.ClientCertificate = unpack_uatype('ByteString', data)
11799
        return obj
11800
    
11801 1
    def __str__(self):
11802
        return 'SessionSecurityDiagnosticsDataType(' + 'SessionId:' + str(self.SessionId) + ', '  + \
11803
             'ClientUserIdOfSession:' + str(self.ClientUserIdOfSession) + ', '  + \
11804
             'ClientUserIdHistory:' + str(self.ClientUserIdHistory) + ', '  + \
11805
             'AuthenticationMechanism:' + str(self.AuthenticationMechanism) + ', '  + \
11806
             'Encoding:' + str(self.Encoding) + ', '  + \
11807
             'TransportProtocol:' + str(self.TransportProtocol) + ', '  + \
11808
             'SecurityMode:' + str(self.SecurityMode) + ', '  + \
11809
             'SecurityPolicyUri:' + str(self.SecurityPolicyUri) + ', '  + \
11810
             'ClientCertificate:' + str(self.ClientCertificate) + ')'
11811
    
11812 1
    __repr__ = __str__
11813
    
11814 1
class ServiceCounterDataType(FrozenClass):
11815
    '''
11816
    :ivar TotalCount: 
11817
    :vartype TotalCount: UInt32 
11818
    :ivar ErrorCount: 
11819
    :vartype ErrorCount: UInt32 
11820
    '''
11821 1
    def __init__(self):
11822
        self.TotalCount = 0
11823
        self.ErrorCount = 0
11824
        self._freeze()
11825
    
11826 1
    def to_binary(self):
11827
        packet = []
11828
        packet.append(pack_uatype('UInt32', self.TotalCount))
11829
        packet.append(pack_uatype('UInt32', self.ErrorCount))
11830
        return b''.join(packet)
11831
        
11832 1
    @staticmethod
11833
    def from_binary(data):
11834
        obj = ServiceCounterDataType()
11835
        obj.TotalCount = unpack_uatype('UInt32', data)
11836
        obj.ErrorCount = unpack_uatype('UInt32', data)
11837
        return obj
11838
    
11839 1
    def __str__(self):
11840
        return 'ServiceCounterDataType(' + 'TotalCount:' + str(self.TotalCount) + ', '  + \
11841
             'ErrorCount:' + str(self.ErrorCount) + ')'
11842
    
11843 1
    __repr__ = __str__
11844
    
11845 1
class StatusResult(FrozenClass):
11846
    '''
11847
    :ivar StatusCode: 
11848
    :vartype StatusCode: StatusCode 
11849
    :ivar DiagnosticInfo: 
11850
    :vartype DiagnosticInfo: DiagnosticInfo 
11851
    '''
11852 1
    def __init__(self):
11853
        self.StatusCode = StatusCode()
11854
        self.DiagnosticInfo = DiagnosticInfo()
11855
        self._freeze()
11856
    
11857 1
    def to_binary(self):
11858
        packet = []
11859
        packet.append(self.StatusCode.to_binary())
11860
        packet.append(self.DiagnosticInfo.to_binary())
11861
        return b''.join(packet)
11862
        
11863 1
    @staticmethod
11864
    def from_binary(data):
11865
        obj = StatusResult()
11866
        obj.StatusCode = StatusCode.from_binary(data)
11867
        obj.DiagnosticInfo = DiagnosticInfo.from_binary(data)
11868
        return obj
11869
    
11870 1
    def __str__(self):
11871
        return 'StatusResult(' + 'StatusCode:' + str(self.StatusCode) + ', '  + \
11872
             'DiagnosticInfo:' + str(self.DiagnosticInfo) + ')'
11873
    
11874 1
    __repr__ = __str__
11875
    
11876 1
class SubscriptionDiagnosticsDataType(FrozenClass):
11877
    '''
11878
    :ivar SessionId: 
11879
    :vartype SessionId: NodeId 
11880
    :ivar SubscriptionId: 
11881
    :vartype SubscriptionId: UInt32 
11882
    :ivar Priority: 
11883
    :vartype Priority: Byte 
11884
    :ivar PublishingInterval: 
11885
    :vartype PublishingInterval: Double 
11886
    :ivar MaxKeepAliveCount: 
11887
    :vartype MaxKeepAliveCount: UInt32 
11888
    :ivar MaxLifetimeCount: 
11889
    :vartype MaxLifetimeCount: UInt32 
11890
    :ivar MaxNotificationsPerPublish: 
11891
    :vartype MaxNotificationsPerPublish: UInt32 
11892
    :ivar PublishingEnabled: 
11893
    :vartype PublishingEnabled: Boolean 
11894
    :ivar ModifyCount: 
11895
    :vartype ModifyCount: UInt32 
11896
    :ivar EnableCount: 
11897
    :vartype EnableCount: UInt32 
11898
    :ivar DisableCount: 
11899
    :vartype DisableCount: UInt32 
11900
    :ivar RepublishRequestCount: 
11901
    :vartype RepublishRequestCount: UInt32 
11902
    :ivar RepublishMessageRequestCount: 
11903
    :vartype RepublishMessageRequestCount: UInt32 
11904
    :ivar RepublishMessageCount: 
11905
    :vartype RepublishMessageCount: UInt32 
11906
    :ivar TransferRequestCount: 
11907
    :vartype TransferRequestCount: UInt32 
11908
    :ivar TransferredToAltClientCount: 
11909
    :vartype TransferredToAltClientCount: UInt32 
11910
    :ivar TransferredToSameClientCount: 
11911
    :vartype TransferredToSameClientCount: UInt32 
11912
    :ivar PublishRequestCount: 
11913
    :vartype PublishRequestCount: UInt32 
11914
    :ivar DataChangeNotificationsCount: 
11915
    :vartype DataChangeNotificationsCount: UInt32 
11916
    :ivar EventNotificationsCount: 
11917
    :vartype EventNotificationsCount: UInt32 
11918
    :ivar NotificationsCount: 
11919
    :vartype NotificationsCount: UInt32 
11920
    :ivar LatePublishRequestCount: 
11921
    :vartype LatePublishRequestCount: UInt32 
11922
    :ivar CurrentKeepAliveCount: 
11923
    :vartype CurrentKeepAliveCount: UInt32 
11924
    :ivar CurrentLifetimeCount: 
11925
    :vartype CurrentLifetimeCount: UInt32 
11926
    :ivar UnacknowledgedMessageCount: 
11927
    :vartype UnacknowledgedMessageCount: UInt32 
11928
    :ivar DiscardedMessageCount: 
11929
    :vartype DiscardedMessageCount: UInt32 
11930
    :ivar MonitoredItemCount: 
11931
    :vartype MonitoredItemCount: UInt32 
11932
    :ivar DisabledMonitoredItemCount: 
11933
    :vartype DisabledMonitoredItemCount: UInt32 
11934
    :ivar MonitoringQueueOverflowCount: 
11935
    :vartype MonitoringQueueOverflowCount: UInt32 
11936
    :ivar NextSequenceNumber: 
11937
    :vartype NextSequenceNumber: UInt32 
11938
    :ivar EventQueueOverFlowCount: 
11939
    :vartype EventQueueOverFlowCount: UInt32 
11940
    '''
11941 1
    def __init__(self):
11942
        self.SessionId = NodeId()
11943
        self.SubscriptionId = 0
11944
        self.Priority = 0
11945
        self.PublishingInterval = 0
11946
        self.MaxKeepAliveCount = 0
11947
        self.MaxLifetimeCount = 0
11948
        self.MaxNotificationsPerPublish = 0
11949
        self.PublishingEnabled = True
11950
        self.ModifyCount = 0
11951
        self.EnableCount = 0
11952
        self.DisableCount = 0
11953
        self.RepublishRequestCount = 0
11954
        self.RepublishMessageRequestCount = 0
11955
        self.RepublishMessageCount = 0
11956
        self.TransferRequestCount = 0
11957
        self.TransferredToAltClientCount = 0
11958
        self.TransferredToSameClientCount = 0
11959
        self.PublishRequestCount = 0
11960
        self.DataChangeNotificationsCount = 0
11961
        self.EventNotificationsCount = 0
11962
        self.NotificationsCount = 0
11963
        self.LatePublishRequestCount = 0
11964
        self.CurrentKeepAliveCount = 0
11965
        self.CurrentLifetimeCount = 0
11966
        self.UnacknowledgedMessageCount = 0
11967
        self.DiscardedMessageCount = 0
11968
        self.MonitoredItemCount = 0
11969
        self.DisabledMonitoredItemCount = 0
11970
        self.MonitoringQueueOverflowCount = 0
11971
        self.NextSequenceNumber = 0
11972
        self.EventQueueOverFlowCount = 0
11973
        self._freeze()
11974
    
11975 1
    def to_binary(self):
11976
        packet = []
11977
        packet.append(self.SessionId.to_binary())
11978
        packet.append(pack_uatype('UInt32', self.SubscriptionId))
11979
        packet.append(pack_uatype('Byte', self.Priority))
11980
        packet.append(pack_uatype('Double', self.PublishingInterval))
11981
        packet.append(pack_uatype('UInt32', self.MaxKeepAliveCount))
11982
        packet.append(pack_uatype('UInt32', self.MaxLifetimeCount))
11983
        packet.append(pack_uatype('UInt32', self.MaxNotificationsPerPublish))
11984
        packet.append(pack_uatype('Boolean', self.PublishingEnabled))
11985
        packet.append(pack_uatype('UInt32', self.ModifyCount))
11986
        packet.append(pack_uatype('UInt32', self.EnableCount))
11987
        packet.append(pack_uatype('UInt32', self.DisableCount))
11988
        packet.append(pack_uatype('UInt32', self.RepublishRequestCount))
11989
        packet.append(pack_uatype('UInt32', self.RepublishMessageRequestCount))
11990
        packet.append(pack_uatype('UInt32', self.RepublishMessageCount))
11991
        packet.append(pack_uatype('UInt32', self.TransferRequestCount))
11992
        packet.append(pack_uatype('UInt32', self.TransferredToAltClientCount))
11993
        packet.append(pack_uatype('UInt32', self.TransferredToSameClientCount))
11994
        packet.append(pack_uatype('UInt32', self.PublishRequestCount))
11995
        packet.append(pack_uatype('UInt32', self.DataChangeNotificationsCount))
11996
        packet.append(pack_uatype('UInt32', self.EventNotificationsCount))
11997
        packet.append(pack_uatype('UInt32', self.NotificationsCount))
11998
        packet.append(pack_uatype('UInt32', self.LatePublishRequestCount))
11999
        packet.append(pack_uatype('UInt32', self.CurrentKeepAliveCount))
12000
        packet.append(pack_uatype('UInt32', self.CurrentLifetimeCount))
12001
        packet.append(pack_uatype('UInt32', self.UnacknowledgedMessageCount))
12002
        packet.append(pack_uatype('UInt32', self.DiscardedMessageCount))
12003
        packet.append(pack_uatype('UInt32', self.MonitoredItemCount))
12004
        packet.append(pack_uatype('UInt32', self.DisabledMonitoredItemCount))
12005
        packet.append(pack_uatype('UInt32', self.MonitoringQueueOverflowCount))
12006
        packet.append(pack_uatype('UInt32', self.NextSequenceNumber))
12007
        packet.append(pack_uatype('UInt32', self.EventQueueOverFlowCount))
12008
        return b''.join(packet)
12009
        
12010 1
    @staticmethod
12011
    def from_binary(data):
12012
        obj = SubscriptionDiagnosticsDataType()
12013
        obj.SessionId = NodeId.from_binary(data)
12014
        obj.SubscriptionId = unpack_uatype('UInt32', data)
12015
        obj.Priority = unpack_uatype('Byte', data)
12016
        obj.PublishingInterval = unpack_uatype('Double', data)
12017
        obj.MaxKeepAliveCount = unpack_uatype('UInt32', data)
12018
        obj.MaxLifetimeCount = unpack_uatype('UInt32', data)
12019
        obj.MaxNotificationsPerPublish = unpack_uatype('UInt32', data)
12020
        obj.PublishingEnabled = unpack_uatype('Boolean', data)
12021
        obj.ModifyCount = unpack_uatype('UInt32', data)
12022
        obj.EnableCount = unpack_uatype('UInt32', data)
12023
        obj.DisableCount = unpack_uatype('UInt32', data)
12024
        obj.RepublishRequestCount = unpack_uatype('UInt32', data)
12025
        obj.RepublishMessageRequestCount = unpack_uatype('UInt32', data)
12026
        obj.RepublishMessageCount = unpack_uatype('UInt32', data)
12027
        obj.TransferRequestCount = unpack_uatype('UInt32', data)
12028
        obj.TransferredToAltClientCount = unpack_uatype('UInt32', data)
12029
        obj.TransferredToSameClientCount = unpack_uatype('UInt32', data)
12030
        obj.PublishRequestCount = unpack_uatype('UInt32', data)
12031
        obj.DataChangeNotificationsCount = unpack_uatype('UInt32', data)
12032
        obj.EventNotificationsCount = unpack_uatype('UInt32', data)
12033
        obj.NotificationsCount = unpack_uatype('UInt32', data)
12034
        obj.LatePublishRequestCount = unpack_uatype('UInt32', data)
12035
        obj.CurrentKeepAliveCount = unpack_uatype('UInt32', data)
12036
        obj.CurrentLifetimeCount = unpack_uatype('UInt32', data)
12037
        obj.UnacknowledgedMessageCount = unpack_uatype('UInt32', data)
12038
        obj.DiscardedMessageCount = unpack_uatype('UInt32', data)
12039
        obj.MonitoredItemCount = unpack_uatype('UInt32', data)
12040
        obj.DisabledMonitoredItemCount = unpack_uatype('UInt32', data)
12041
        obj.MonitoringQueueOverflowCount = unpack_uatype('UInt32', data)
12042
        obj.NextSequenceNumber = unpack_uatype('UInt32', data)
12043
        obj.EventQueueOverFlowCount = unpack_uatype('UInt32', data)
12044
        return obj
12045
    
12046 1
    def __str__(self):
12047
        return 'SubscriptionDiagnosticsDataType(' + 'SessionId:' + str(self.SessionId) + ', '  + \
12048
             'SubscriptionId:' + str(self.SubscriptionId) + ', '  + \
12049
             'Priority:' + str(self.Priority) + ', '  + \
12050
             'PublishingInterval:' + str(self.PublishingInterval) + ', '  + \
12051
             'MaxKeepAliveCount:' + str(self.MaxKeepAliveCount) + ', '  + \
12052
             'MaxLifetimeCount:' + str(self.MaxLifetimeCount) + ', '  + \
12053
             'MaxNotificationsPerPublish:' + str(self.MaxNotificationsPerPublish) + ', '  + \
12054
             'PublishingEnabled:' + str(self.PublishingEnabled) + ', '  + \
12055
             'ModifyCount:' + str(self.ModifyCount) + ', '  + \
12056
             'EnableCount:' + str(self.EnableCount) + ', '  + \
12057
             'DisableCount:' + str(self.DisableCount) + ', '  + \
12058
             'RepublishRequestCount:' + str(self.RepublishRequestCount) + ', '  + \
12059
             'RepublishMessageRequestCount:' + str(self.RepublishMessageRequestCount) + ', '  + \
12060
             'RepublishMessageCount:' + str(self.RepublishMessageCount) + ', '  + \
12061
             'TransferRequestCount:' + str(self.TransferRequestCount) + ', '  + \
12062
             'TransferredToAltClientCount:' + str(self.TransferredToAltClientCount) + ', '  + \
12063
             'TransferredToSameClientCount:' + str(self.TransferredToSameClientCount) + ', '  + \
12064
             'PublishRequestCount:' + str(self.PublishRequestCount) + ', '  + \
12065
             'DataChangeNotificationsCount:' + str(self.DataChangeNotificationsCount) + ', '  + \
12066
             'EventNotificationsCount:' + str(self.EventNotificationsCount) + ', '  + \
12067
             'NotificationsCount:' + str(self.NotificationsCount) + ', '  + \
12068
             'LatePublishRequestCount:' + str(self.LatePublishRequestCount) + ', '  + \
12069
             'CurrentKeepAliveCount:' + str(self.CurrentKeepAliveCount) + ', '  + \
12070
             'CurrentLifetimeCount:' + str(self.CurrentLifetimeCount) + ', '  + \
12071
             'UnacknowledgedMessageCount:' + str(self.UnacknowledgedMessageCount) + ', '  + \
12072
             'DiscardedMessageCount:' + str(self.DiscardedMessageCount) + ', '  + \
12073
             'MonitoredItemCount:' + str(self.MonitoredItemCount) + ', '  + \
12074
             'DisabledMonitoredItemCount:' + str(self.DisabledMonitoredItemCount) + ', '  + \
12075
             'MonitoringQueueOverflowCount:' + str(self.MonitoringQueueOverflowCount) + ', '  + \
12076
             'NextSequenceNumber:' + str(self.NextSequenceNumber) + ', '  + \
12077
             'EventQueueOverFlowCount:' + str(self.EventQueueOverFlowCount) + ')'
12078
    
12079 1
    __repr__ = __str__
12080
    
12081 1
class ModelChangeStructureDataType(FrozenClass):
12082
    '''
12083
    :ivar Affected: 
12084
    :vartype Affected: NodeId 
12085
    :ivar AffectedType: 
12086
    :vartype AffectedType: NodeId 
12087
    :ivar Verb: 
12088
    :vartype Verb: Byte 
12089
    '''
12090 1
    def __init__(self):
12091
        self.Affected = NodeId()
12092
        self.AffectedType = NodeId()
12093
        self.Verb = 0
12094
        self._freeze()
12095
    
12096 1
    def to_binary(self):
12097
        packet = []
12098
        packet.append(self.Affected.to_binary())
12099
        packet.append(self.AffectedType.to_binary())
12100
        packet.append(pack_uatype('Byte', self.Verb))
12101
        return b''.join(packet)
12102
        
12103 1
    @staticmethod
12104
    def from_binary(data):
12105
        obj = ModelChangeStructureDataType()
12106
        obj.Affected = NodeId.from_binary(data)
12107
        obj.AffectedType = NodeId.from_binary(data)
12108
        obj.Verb = unpack_uatype('Byte', data)
12109
        return obj
12110
    
12111 1
    def __str__(self):
12112
        return 'ModelChangeStructureDataType(' + 'Affected:' + str(self.Affected) + ', '  + \
12113
             'AffectedType:' + str(self.AffectedType) + ', '  + \
12114
             'Verb:' + str(self.Verb) + ')'
12115
    
12116 1
    __repr__ = __str__
12117
    
12118 1
class SemanticChangeStructureDataType(FrozenClass):
12119
    '''
12120
    :ivar Affected: 
12121
    :vartype Affected: NodeId 
12122
    :ivar AffectedType: 
12123
    :vartype AffectedType: NodeId 
12124
    '''
12125 1
    def __init__(self):
12126
        self.Affected = NodeId()
12127
        self.AffectedType = NodeId()
12128
        self._freeze()
12129
    
12130 1
    def to_binary(self):
12131
        packet = []
12132
        packet.append(self.Affected.to_binary())
12133
        packet.append(self.AffectedType.to_binary())
12134
        return b''.join(packet)
12135
        
12136 1
    @staticmethod
12137
    def from_binary(data):
12138
        obj = SemanticChangeStructureDataType()
12139
        obj.Affected = NodeId.from_binary(data)
12140
        obj.AffectedType = NodeId.from_binary(data)
12141
        return obj
12142
    
12143 1
    def __str__(self):
12144
        return 'SemanticChangeStructureDataType(' + 'Affected:' + str(self.Affected) + ', '  + \
12145
             'AffectedType:' + str(self.AffectedType) + ')'
12146
    
12147 1
    __repr__ = __str__
12148
    
12149 1
class Range(FrozenClass):
12150
    '''
12151
    :ivar Low: 
12152
    :vartype Low: Double 
12153
    :ivar High: 
12154
    :vartype High: Double 
12155
    '''
12156 1
    def __init__(self):
12157
        self.Low = 0
12158
        self.High = 0
12159
        self._freeze()
12160
    
12161 1
    def to_binary(self):
12162
        packet = []
12163
        packet.append(pack_uatype('Double', self.Low))
12164
        packet.append(pack_uatype('Double', self.High))
12165
        return b''.join(packet)
12166
        
12167 1
    @staticmethod
12168
    def from_binary(data):
12169
        obj = Range()
12170
        obj.Low = unpack_uatype('Double', data)
12171
        obj.High = unpack_uatype('Double', data)
12172
        return obj
12173
    
12174 1
    def __str__(self):
12175
        return 'Range(' + 'Low:' + str(self.Low) + ', '  + \
12176
             'High:' + str(self.High) + ')'
12177
    
12178 1
    __repr__ = __str__
12179
    
12180 1
class EUInformation(FrozenClass):
12181
    '''
12182
    :ivar NamespaceUri: 
12183
    :vartype NamespaceUri: String 
12184
    :ivar UnitId: 
12185
    :vartype UnitId: Int32 
12186
    :ivar DisplayName: 
12187
    :vartype DisplayName: LocalizedText 
12188
    :ivar Description: 
12189
    :vartype Description: LocalizedText 
12190
    '''
12191 1
    def __init__(self):
12192
        self.NamespaceUri = ''
12193
        self.UnitId = 0
12194
        self.DisplayName = LocalizedText()
12195
        self.Description = LocalizedText()
12196
        self._freeze()
12197
    
12198 1
    def to_binary(self):
12199
        packet = []
12200
        packet.append(pack_uatype('String', self.NamespaceUri))
12201
        packet.append(pack_uatype('Int32', self.UnitId))
12202
        packet.append(self.DisplayName.to_binary())
12203
        packet.append(self.Description.to_binary())
12204
        return b''.join(packet)
12205
        
12206 1
    @staticmethod
12207
    def from_binary(data):
12208
        obj = EUInformation()
12209
        obj.NamespaceUri = unpack_uatype('String', data)
12210
        obj.UnitId = unpack_uatype('Int32', data)
12211
        obj.DisplayName = LocalizedText.from_binary(data)
12212
        obj.Description = LocalizedText.from_binary(data)
12213
        return obj
12214
    
12215 1
    def __str__(self):
12216
        return 'EUInformation(' + 'NamespaceUri:' + str(self.NamespaceUri) + ', '  + \
12217
             'UnitId:' + str(self.UnitId) + ', '  + \
12218
             'DisplayName:' + str(self.DisplayName) + ', '  + \
12219
             'Description:' + str(self.Description) + ')'
12220
    
12221 1
    __repr__ = __str__
12222
    
12223 1
class ComplexNumberType(FrozenClass):
12224
    '''
12225
    :ivar Real: 
12226
    :vartype Real: Float 
12227
    :ivar Imaginary: 
12228
    :vartype Imaginary: Float 
12229
    '''
12230 1
    def __init__(self):
12231
        self.Real = 0
12232
        self.Imaginary = 0
12233
        self._freeze()
12234
    
12235 1
    def to_binary(self):
12236
        packet = []
12237
        packet.append(pack_uatype('Float', self.Real))
12238
        packet.append(pack_uatype('Float', self.Imaginary))
12239
        return b''.join(packet)
12240
        
12241 1
    @staticmethod
12242
    def from_binary(data):
12243
        obj = ComplexNumberType()
12244
        obj.Real = unpack_uatype('Float', data)
12245
        obj.Imaginary = unpack_uatype('Float', data)
12246
        return obj
12247
    
12248 1
    def __str__(self):
12249
        return 'ComplexNumberType(' + 'Real:' + str(self.Real) + ', '  + \
12250
             'Imaginary:' + str(self.Imaginary) + ')'
12251
    
12252 1
    __repr__ = __str__
12253
    
12254 1
class DoubleComplexNumberType(FrozenClass):
12255
    '''
12256
    :ivar Real: 
12257
    :vartype Real: Double 
12258
    :ivar Imaginary: 
12259
    :vartype Imaginary: Double 
12260
    '''
12261 1
    def __init__(self):
12262
        self.Real = 0
12263
        self.Imaginary = 0
12264
        self._freeze()
12265
    
12266 1
    def to_binary(self):
12267
        packet = []
12268
        packet.append(pack_uatype('Double', self.Real))
12269
        packet.append(pack_uatype('Double', self.Imaginary))
12270
        return b''.join(packet)
12271
        
12272 1
    @staticmethod
12273
    def from_binary(data):
12274
        obj = DoubleComplexNumberType()
12275
        obj.Real = unpack_uatype('Double', data)
12276
        obj.Imaginary = unpack_uatype('Double', data)
12277
        return obj
12278
    
12279 1
    def __str__(self):
12280
        return 'DoubleComplexNumberType(' + 'Real:' + str(self.Real) + ', '  + \
12281
             'Imaginary:' + str(self.Imaginary) + ')'
12282
    
12283 1
    __repr__ = __str__
12284
    
12285 1
class AxisInformation(FrozenClass):
12286
    '''
12287
    :ivar EngineeringUnits: 
12288
    :vartype EngineeringUnits: EUInformation 
12289
    :ivar EURange: 
12290
    :vartype EURange: Range 
12291
    :ivar Title: 
12292
    :vartype Title: LocalizedText 
12293
    :ivar AxisScaleType: 
12294
    :vartype AxisScaleType: AxisScaleEnumeration 
12295
    :ivar AxisSteps: 
12296
    :vartype AxisSteps: Double 
12297
    '''
12298 1
    def __init__(self):
12299
        self.EngineeringUnits = EUInformation()
12300
        self.EURange = Range()
12301
        self.Title = LocalizedText()
12302
        self.AxisScaleType = 0
12303
        self.AxisSteps = []
12304
        self._freeze()
12305
    
12306 1
    def to_binary(self):
12307
        packet = []
12308
        packet.append(self.EngineeringUnits.to_binary())
12309
        packet.append(self.EURange.to_binary())
12310
        packet.append(self.Title.to_binary())
12311
        packet.append(pack_uatype('UInt32', self.AxisScaleType))
12312
        packet.append(struct.pack('<i', len(self.AxisSteps)))
12313
        for fieldname in self.AxisSteps:
12314
            packet.append(pack_uatype('Double', fieldname))
12315
        return b''.join(packet)
12316
        
12317 1
    @staticmethod
12318
    def from_binary(data):
12319
        obj = AxisInformation()
12320
        obj.EngineeringUnits = EUInformation.from_binary(data)
12321
        obj.EURange = Range.from_binary(data)
12322
        obj.Title = LocalizedText.from_binary(data)
12323
        obj.AxisScaleType = unpack_uatype('UInt32', data)
12324
        obj.AxisSteps = unpack_uatype_array('Double', data)
12325
        return obj
12326
    
12327 1
    def __str__(self):
12328
        return 'AxisInformation(' + 'EngineeringUnits:' + str(self.EngineeringUnits) + ', '  + \
12329
             'EURange:' + str(self.EURange) + ', '  + \
12330
             'Title:' + str(self.Title) + ', '  + \
12331
             'AxisScaleType:' + str(self.AxisScaleType) + ', '  + \
12332
             'AxisSteps:' + str(self.AxisSteps) + ')'
12333
    
12334 1
    __repr__ = __str__
12335
    
12336 1
class XVType(FrozenClass):
12337
    '''
12338
    :ivar X: 
12339
    :vartype X: Double 
12340
    :ivar Value: 
12341
    :vartype Value: Float 
12342
    '''
12343 1
    def __init__(self):
12344
        self.X = 0
12345
        self.Value = 0
12346
        self._freeze()
12347
    
12348 1
    def to_binary(self):
12349
        packet = []
12350
        packet.append(pack_uatype('Double', self.X))
12351
        packet.append(pack_uatype('Float', self.Value))
12352
        return b''.join(packet)
12353
        
12354 1
    @staticmethod
12355
    def from_binary(data):
12356
        obj = XVType()
12357
        obj.X = unpack_uatype('Double', data)
12358
        obj.Value = unpack_uatype('Float', data)
12359
        return obj
12360
    
12361 1
    def __str__(self):
12362
        return 'XVType(' + 'X:' + str(self.X) + ', '  + \
12363
             'Value:' + str(self.Value) + ')'
12364
    
12365 1
    __repr__ = __str__
12366
    
12367 1
class ProgramDiagnosticDataType(FrozenClass):
12368
    '''
12369
    :ivar CreateSessionId: 
12370
    :vartype CreateSessionId: NodeId 
12371
    :ivar CreateClientName: 
12372
    :vartype CreateClientName: String 
12373
    :ivar InvocationCreationTime: 
12374
    :vartype InvocationCreationTime: DateTime 
12375
    :ivar LastTransitionTime: 
12376
    :vartype LastTransitionTime: DateTime 
12377
    :ivar LastMethodCall: 
12378
    :vartype LastMethodCall: String 
12379
    :ivar LastMethodSessionId: 
12380
    :vartype LastMethodSessionId: NodeId 
12381
    :ivar LastMethodInputArguments: 
12382
    :vartype LastMethodInputArguments: Argument 
12383
    :ivar LastMethodOutputArguments: 
12384
    :vartype LastMethodOutputArguments: Argument 
12385
    :ivar LastMethodCallTime: 
12386
    :vartype LastMethodCallTime: DateTime 
12387
    :ivar LastMethodReturnStatus: 
12388
    :vartype LastMethodReturnStatus: StatusResult 
12389
    '''
12390 1
    def __init__(self):
12391
        self.CreateSessionId = NodeId()
12392
        self.CreateClientName = ''
12393
        self.InvocationCreationTime = datetime.now()
12394
        self.LastTransitionTime = datetime.now()
12395
        self.LastMethodCall = ''
12396
        self.LastMethodSessionId = NodeId()
12397
        self.LastMethodInputArguments = []
12398
        self.LastMethodOutputArguments = []
12399
        self.LastMethodCallTime = datetime.now()
12400
        self.LastMethodReturnStatus = StatusResult()
12401
        self._freeze()
12402
    
12403 1
    def to_binary(self):
12404
        packet = []
12405
        packet.append(self.CreateSessionId.to_binary())
12406
        packet.append(pack_uatype('String', self.CreateClientName))
12407
        packet.append(pack_uatype('DateTime', self.InvocationCreationTime))
12408
        packet.append(pack_uatype('DateTime', self.LastTransitionTime))
12409
        packet.append(pack_uatype('String', self.LastMethodCall))
12410
        packet.append(self.LastMethodSessionId.to_binary())
12411
        packet.append(struct.pack('<i', len(self.LastMethodInputArguments)))
12412
        for fieldname in self.LastMethodInputArguments:
12413
            packet.append(fieldname.to_binary())
12414
        packet.append(struct.pack('<i', len(self.LastMethodOutputArguments)))
12415
        for fieldname in self.LastMethodOutputArguments:
12416
            packet.append(fieldname.to_binary())
12417
        packet.append(pack_uatype('DateTime', self.LastMethodCallTime))
12418
        packet.append(self.LastMethodReturnStatus.to_binary())
12419
        return b''.join(packet)
12420
        
12421 1
    @staticmethod
12422
    def from_binary(data):
12423
        obj = ProgramDiagnosticDataType()
12424
        obj.CreateSessionId = NodeId.from_binary(data)
12425
        obj.CreateClientName = unpack_uatype('String', data)
12426
        obj.InvocationCreationTime = unpack_uatype('DateTime', data)
12427
        obj.LastTransitionTime = unpack_uatype('DateTime', data)
12428
        obj.LastMethodCall = unpack_uatype('String', data)
12429
        obj.LastMethodSessionId = NodeId.from_binary(data)
12430
        length = struct.unpack('<i', data.read(4))[0]
12431
        if length != -1:
12432
            for _ in range(0, length):
12433
                obj.LastMethodInputArguments.append(Argument.from_binary(data))
12434
        length = struct.unpack('<i', data.read(4))[0]
12435
        if length != -1:
12436
            for _ in range(0, length):
12437
                obj.LastMethodOutputArguments.append(Argument.from_binary(data))
12438
        obj.LastMethodCallTime = unpack_uatype('DateTime', data)
12439
        obj.LastMethodReturnStatus = StatusResult.from_binary(data)
12440
        return obj
12441
    
12442 1
    def __str__(self):
12443
        return 'ProgramDiagnosticDataType(' + 'CreateSessionId:' + str(self.CreateSessionId) + ', '  + \
12444
             'CreateClientName:' + str(self.CreateClientName) + ', '  + \
12445
             'InvocationCreationTime:' + str(self.InvocationCreationTime) + ', '  + \
12446
             'LastTransitionTime:' + str(self.LastTransitionTime) + ', '  + \
12447
             'LastMethodCall:' + str(self.LastMethodCall) + ', '  + \
12448
             'LastMethodSessionId:' + str(self.LastMethodSessionId) + ', '  + \
12449
             'LastMethodInputArguments:' + str(self.LastMethodInputArguments) + ', '  + \
12450
             'LastMethodOutputArguments:' + str(self.LastMethodOutputArguments) + ', '  + \
12451
             'LastMethodCallTime:' + str(self.LastMethodCallTime) + ', '  + \
12452
             'LastMethodReturnStatus:' + str(self.LastMethodReturnStatus) + ')'
12453
    
12454 1
    __repr__ = __str__
12455
    
12456 1
class Annotation(FrozenClass):
12457
    '''
12458
    :ivar Message: 
12459
    :vartype Message: String 
12460
    :ivar UserName: 
12461
    :vartype UserName: String 
12462
    :ivar AnnotationTime: 
12463
    :vartype AnnotationTime: DateTime 
12464
    '''
12465 1
    def __init__(self):
12466
        self.Message = ''
12467
        self.UserName = ''
12468
        self.AnnotationTime = datetime.now()
12469
        self._freeze()
12470
    
12471 1
    def to_binary(self):
12472
        packet = []
12473
        packet.append(pack_uatype('String', self.Message))
12474
        packet.append(pack_uatype('String', self.UserName))
12475
        packet.append(pack_uatype('DateTime', self.AnnotationTime))
12476
        return b''.join(packet)
12477
        
12478 1
    @staticmethod
12479
    def from_binary(data):
12480
        obj = Annotation()
12481
        obj.Message = unpack_uatype('String', data)
12482
        obj.UserName = unpack_uatype('String', data)
12483
        obj.AnnotationTime = unpack_uatype('DateTime', data)
12484
        return obj
12485
    
12486 1
    def __str__(self):
12487
        return 'Annotation(' + 'Message:' + str(self.Message) + ', '  + \
12488
             'UserName:' + str(self.UserName) + ', '  + \
12489
             'AnnotationTime:' + str(self.AnnotationTime) + ')'
12490
    
12491 1
    __repr__ = __str__
12492
12493 1
ExtensionClasses = {
12494
    ObjectIds.Argument_Encoding_DefaultBinary : Argument,
12495
    ObjectIds.EnumValueType_Encoding_DefaultBinary : EnumValueType,
12496
    ObjectIds.TimeZoneDataType_Encoding_DefaultBinary : TimeZoneDataType,
12497
    ObjectIds.ApplicationDescription_Encoding_DefaultBinary : ApplicationDescription,
12498
    ObjectIds.RequestHeader_Encoding_DefaultBinary : RequestHeader,
12499
    ObjectIds.ResponseHeader_Encoding_DefaultBinary : ResponseHeader,
12500
    ObjectIds.ServiceFault_Encoding_DefaultBinary : ServiceFault,
12501
    ObjectIds.FindServersRequest_Encoding_DefaultBinary : FindServersRequest,
12502
    ObjectIds.FindServersResponse_Encoding_DefaultBinary : FindServersResponse,
12503
    ObjectIds.UserTokenPolicy_Encoding_DefaultBinary : UserTokenPolicy,
12504
    ObjectIds.EndpointDescription_Encoding_DefaultBinary : EndpointDescription,
12505
    ObjectIds.GetEndpointsRequest_Encoding_DefaultBinary : GetEndpointsRequest,
12506
    ObjectIds.GetEndpointsResponse_Encoding_DefaultBinary : GetEndpointsResponse,
12507
    ObjectIds.RegisteredServer_Encoding_DefaultBinary : RegisteredServer,
12508
    ObjectIds.RegisterServerRequest_Encoding_DefaultBinary : RegisterServerRequest,
12509
    ObjectIds.RegisterServerResponse_Encoding_DefaultBinary : RegisterServerResponse,
12510
    ObjectIds.ChannelSecurityToken_Encoding_DefaultBinary : ChannelSecurityToken,
12511
    ObjectIds.OpenSecureChannelRequest_Encoding_DefaultBinary : OpenSecureChannelRequest,
12512
    ObjectIds.OpenSecureChannelResponse_Encoding_DefaultBinary : OpenSecureChannelResponse,
12513
    ObjectIds.CloseSecureChannelRequest_Encoding_DefaultBinary : CloseSecureChannelRequest,
12514
    ObjectIds.CloseSecureChannelResponse_Encoding_DefaultBinary : CloseSecureChannelResponse,
12515
    ObjectIds.SignedSoftwareCertificate_Encoding_DefaultBinary : SignedSoftwareCertificate,
12516
    ObjectIds.SignatureData_Encoding_DefaultBinary : SignatureData,
12517
    ObjectIds.CreateSessionRequest_Encoding_DefaultBinary : CreateSessionRequest,
12518
    ObjectIds.CreateSessionResponse_Encoding_DefaultBinary : CreateSessionResponse,
12519
    ObjectIds.UserIdentityToken_Encoding_DefaultBinary : UserIdentityToken,
12520
    ObjectIds.AnonymousIdentityToken_Encoding_DefaultBinary : AnonymousIdentityToken,
12521
    ObjectIds.UserNameIdentityToken_Encoding_DefaultBinary : UserNameIdentityToken,
12522
    ObjectIds.X509IdentityToken_Encoding_DefaultBinary : X509IdentityToken,
12523
    ObjectIds.IssuedIdentityToken_Encoding_DefaultBinary : IssuedIdentityToken,
12524
    ObjectIds.ActivateSessionRequest_Encoding_DefaultBinary : ActivateSessionRequest,
12525
    ObjectIds.ActivateSessionResponse_Encoding_DefaultBinary : ActivateSessionResponse,
12526
    ObjectIds.CloseSessionRequest_Encoding_DefaultBinary : CloseSessionRequest,
12527
    ObjectIds.CloseSessionResponse_Encoding_DefaultBinary : CloseSessionResponse,
12528
    ObjectIds.CancelRequest_Encoding_DefaultBinary : CancelRequest,
12529
    ObjectIds.CancelResponse_Encoding_DefaultBinary : CancelResponse,
12530
    ObjectIds.NodeAttributes_Encoding_DefaultBinary : NodeAttributes,
12531
    ObjectIds.ObjectAttributes_Encoding_DefaultBinary : ObjectAttributes,
12532
    ObjectIds.VariableAttributes_Encoding_DefaultBinary : VariableAttributes,
12533
    ObjectIds.MethodAttributes_Encoding_DefaultBinary : MethodAttributes,
12534
    ObjectIds.ObjectTypeAttributes_Encoding_DefaultBinary : ObjectTypeAttributes,
12535
    ObjectIds.VariableTypeAttributes_Encoding_DefaultBinary : VariableTypeAttributes,
12536
    ObjectIds.ReferenceTypeAttributes_Encoding_DefaultBinary : ReferenceTypeAttributes,
12537
    ObjectIds.DataTypeAttributes_Encoding_DefaultBinary : DataTypeAttributes,
12538
    ObjectIds.ViewAttributes_Encoding_DefaultBinary : ViewAttributes,
12539
    ObjectIds.AddNodesItem_Encoding_DefaultBinary : AddNodesItem,
12540
    ObjectIds.AddNodesResult_Encoding_DefaultBinary : AddNodesResult,
12541
    ObjectIds.AddNodesRequest_Encoding_DefaultBinary : AddNodesRequest,
12542
    ObjectIds.AddNodesResponse_Encoding_DefaultBinary : AddNodesResponse,
12543
    ObjectIds.AddReferencesItem_Encoding_DefaultBinary : AddReferencesItem,
12544
    ObjectIds.AddReferencesRequest_Encoding_DefaultBinary : AddReferencesRequest,
12545
    ObjectIds.AddReferencesResponse_Encoding_DefaultBinary : AddReferencesResponse,
12546
    ObjectIds.DeleteNodesItem_Encoding_DefaultBinary : DeleteNodesItem,
12547
    ObjectIds.DeleteNodesRequest_Encoding_DefaultBinary : DeleteNodesRequest,
12548
    ObjectIds.DeleteNodesResponse_Encoding_DefaultBinary : DeleteNodesResponse,
12549
    ObjectIds.DeleteReferencesItem_Encoding_DefaultBinary : DeleteReferencesItem,
12550
    ObjectIds.DeleteReferencesRequest_Encoding_DefaultBinary : DeleteReferencesRequest,
12551
    ObjectIds.DeleteReferencesResponse_Encoding_DefaultBinary : DeleteReferencesResponse,
12552
    ObjectIds.ViewDescription_Encoding_DefaultBinary : ViewDescription,
12553
    ObjectIds.BrowseDescription_Encoding_DefaultBinary : BrowseDescription,
12554
    ObjectIds.ReferenceDescription_Encoding_DefaultBinary : ReferenceDescription,
12555
    ObjectIds.BrowseResult_Encoding_DefaultBinary : BrowseResult,
12556
    ObjectIds.BrowseRequest_Encoding_DefaultBinary : BrowseRequest,
12557
    ObjectIds.BrowseResponse_Encoding_DefaultBinary : BrowseResponse,
12558
    ObjectIds.BrowseNextRequest_Encoding_DefaultBinary : BrowseNextRequest,
12559
    ObjectIds.BrowseNextResponse_Encoding_DefaultBinary : BrowseNextResponse,
12560
    ObjectIds.RelativePathElement_Encoding_DefaultBinary : RelativePathElement,
12561
    ObjectIds.RelativePath_Encoding_DefaultBinary : RelativePath,
12562
    ObjectIds.BrowsePath_Encoding_DefaultBinary : BrowsePath,
12563
    ObjectIds.BrowsePathTarget_Encoding_DefaultBinary : BrowsePathTarget,
12564
    ObjectIds.BrowsePathResult_Encoding_DefaultBinary : BrowsePathResult,
12565
    ObjectIds.TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultBinary : TranslateBrowsePathsToNodeIdsRequest,
12566
    ObjectIds.TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultBinary : TranslateBrowsePathsToNodeIdsResponse,
12567
    ObjectIds.RegisterNodesRequest_Encoding_DefaultBinary : RegisterNodesRequest,
12568
    ObjectIds.RegisterNodesResponse_Encoding_DefaultBinary : RegisterNodesResponse,
12569
    ObjectIds.UnregisterNodesRequest_Encoding_DefaultBinary : UnregisterNodesRequest,
12570
    ObjectIds.UnregisterNodesResponse_Encoding_DefaultBinary : UnregisterNodesResponse,
12571
    ObjectIds.EndpointConfiguration_Encoding_DefaultBinary : EndpointConfiguration,
12572
    ObjectIds.SupportedProfile_Encoding_DefaultBinary : SupportedProfile,
12573
    ObjectIds.SoftwareCertificate_Encoding_DefaultBinary : SoftwareCertificate,
12574
    ObjectIds.QueryDataDescription_Encoding_DefaultBinary : QueryDataDescription,
12575
    ObjectIds.NodeTypeDescription_Encoding_DefaultBinary : NodeTypeDescription,
12576
    ObjectIds.QueryDataSet_Encoding_DefaultBinary : QueryDataSet,
12577
    ObjectIds.NodeReference_Encoding_DefaultBinary : NodeReference,
12578
    ObjectIds.ContentFilterElement_Encoding_DefaultBinary : ContentFilterElement,
12579
    ObjectIds.ContentFilter_Encoding_DefaultBinary : ContentFilter,
12580
    ObjectIds.ElementOperand_Encoding_DefaultBinary : ElementOperand,
12581
    ObjectIds.LiteralOperand_Encoding_DefaultBinary : LiteralOperand,
12582
    ObjectIds.AttributeOperand_Encoding_DefaultBinary : AttributeOperand,
12583
    ObjectIds.SimpleAttributeOperand_Encoding_DefaultBinary : SimpleAttributeOperand,
12584
    ObjectIds.ContentFilterElementResult_Encoding_DefaultBinary : ContentFilterElementResult,
12585
    ObjectIds.ContentFilterResult_Encoding_DefaultBinary : ContentFilterResult,
12586
    ObjectIds.ParsingResult_Encoding_DefaultBinary : ParsingResult,
12587
    ObjectIds.QueryFirstRequest_Encoding_DefaultBinary : QueryFirstRequest,
12588
    ObjectIds.QueryFirstResponse_Encoding_DefaultBinary : QueryFirstResponse,
12589
    ObjectIds.QueryNextRequest_Encoding_DefaultBinary : QueryNextRequest,
12590
    ObjectIds.QueryNextResponse_Encoding_DefaultBinary : QueryNextResponse,
12591
    ObjectIds.ReadValueId_Encoding_DefaultBinary : ReadValueId,
12592
    ObjectIds.ReadRequest_Encoding_DefaultBinary : ReadRequest,
12593
    ObjectIds.ReadResponse_Encoding_DefaultBinary : ReadResponse,
12594
    ObjectIds.HistoryReadValueId_Encoding_DefaultBinary : HistoryReadValueId,
12595
    ObjectIds.HistoryReadResult_Encoding_DefaultBinary : HistoryReadResult,
12596
    ObjectIds.HistoryReadDetails_Encoding_DefaultBinary : HistoryReadDetails,
12597
    ObjectIds.ReadEventDetails_Encoding_DefaultBinary : ReadEventDetails,
12598
    ObjectIds.ReadRawModifiedDetails_Encoding_DefaultBinary : ReadRawModifiedDetails,
12599
    ObjectIds.ReadProcessedDetails_Encoding_DefaultBinary : ReadProcessedDetails,
12600
    ObjectIds.ReadAtTimeDetails_Encoding_DefaultBinary : ReadAtTimeDetails,
12601
    ObjectIds.HistoryData_Encoding_DefaultBinary : HistoryData,
12602
    ObjectIds.ModificationInfo_Encoding_DefaultBinary : ModificationInfo,
12603
    ObjectIds.HistoryModifiedData_Encoding_DefaultBinary : HistoryModifiedData,
12604
    ObjectIds.HistoryEvent_Encoding_DefaultBinary : HistoryEvent,
12605
    ObjectIds.HistoryReadRequest_Encoding_DefaultBinary : HistoryReadRequest,
12606
    ObjectIds.HistoryReadResponse_Encoding_DefaultBinary : HistoryReadResponse,
12607
    ObjectIds.WriteValue_Encoding_DefaultBinary : WriteValue,
12608
    ObjectIds.WriteRequest_Encoding_DefaultBinary : WriteRequest,
12609
    ObjectIds.WriteResponse_Encoding_DefaultBinary : WriteResponse,
12610
    ObjectIds.HistoryUpdateDetails_Encoding_DefaultBinary : HistoryUpdateDetails,
12611
    ObjectIds.UpdateDataDetails_Encoding_DefaultBinary : UpdateDataDetails,
12612
    ObjectIds.UpdateStructureDataDetails_Encoding_DefaultBinary : UpdateStructureDataDetails,
12613
    ObjectIds.UpdateEventDetails_Encoding_DefaultBinary : UpdateEventDetails,
12614
    ObjectIds.DeleteRawModifiedDetails_Encoding_DefaultBinary : DeleteRawModifiedDetails,
12615
    ObjectIds.DeleteAtTimeDetails_Encoding_DefaultBinary : DeleteAtTimeDetails,
12616
    ObjectIds.DeleteEventDetails_Encoding_DefaultBinary : DeleteEventDetails,
12617
    ObjectIds.HistoryUpdateResult_Encoding_DefaultBinary : HistoryUpdateResult,
12618
    ObjectIds.HistoryUpdateEventResult_Encoding_DefaultBinary : HistoryUpdateEventResult,
12619
    ObjectIds.HistoryUpdateRequest_Encoding_DefaultBinary : HistoryUpdateRequest,
12620
    ObjectIds.HistoryUpdateResponse_Encoding_DefaultBinary : HistoryUpdateResponse,
12621
    ObjectIds.CallMethodRequest_Encoding_DefaultBinary : CallMethodRequest,
12622
    ObjectIds.CallMethodResult_Encoding_DefaultBinary : CallMethodResult,
12623
    ObjectIds.CallRequest_Encoding_DefaultBinary : CallRequest,
12624
    ObjectIds.CallResponse_Encoding_DefaultBinary : CallResponse,
12625
    ObjectIds.MonitoringFilter_Encoding_DefaultBinary : MonitoringFilter,
12626
    ObjectIds.DataChangeFilter_Encoding_DefaultBinary : DataChangeFilter,
12627
    ObjectIds.EventFilter_Encoding_DefaultBinary : EventFilter,
12628
    ObjectIds.AggregateConfiguration_Encoding_DefaultBinary : AggregateConfiguration,
12629
    ObjectIds.AggregateFilter_Encoding_DefaultBinary : AggregateFilter,
12630
    ObjectIds.MonitoringFilterResult_Encoding_DefaultBinary : MonitoringFilterResult,
12631
    ObjectIds.EventFilterResult_Encoding_DefaultBinary : EventFilterResult,
12632
    ObjectIds.AggregateFilterResult_Encoding_DefaultBinary : AggregateFilterResult,
12633
    ObjectIds.MonitoringParameters_Encoding_DefaultBinary : MonitoringParameters,
12634
    ObjectIds.MonitoredItemCreateRequest_Encoding_DefaultBinary : MonitoredItemCreateRequest,
12635
    ObjectIds.MonitoredItemCreateResult_Encoding_DefaultBinary : MonitoredItemCreateResult,
12636
    ObjectIds.CreateMonitoredItemsRequest_Encoding_DefaultBinary : CreateMonitoredItemsRequest,
12637
    ObjectIds.CreateMonitoredItemsResponse_Encoding_DefaultBinary : CreateMonitoredItemsResponse,
12638
    ObjectIds.MonitoredItemModifyRequest_Encoding_DefaultBinary : MonitoredItemModifyRequest,
12639
    ObjectIds.MonitoredItemModifyResult_Encoding_DefaultBinary : MonitoredItemModifyResult,
12640
    ObjectIds.ModifyMonitoredItemsRequest_Encoding_DefaultBinary : ModifyMonitoredItemsRequest,
12641
    ObjectIds.ModifyMonitoredItemsResponse_Encoding_DefaultBinary : ModifyMonitoredItemsResponse,
12642
    ObjectIds.SetMonitoringModeRequest_Encoding_DefaultBinary : SetMonitoringModeRequest,
12643
    ObjectIds.SetMonitoringModeResponse_Encoding_DefaultBinary : SetMonitoringModeResponse,
12644
    ObjectIds.SetTriggeringRequest_Encoding_DefaultBinary : SetTriggeringRequest,
12645
    ObjectIds.SetTriggeringResponse_Encoding_DefaultBinary : SetTriggeringResponse,
12646
    ObjectIds.DeleteMonitoredItemsRequest_Encoding_DefaultBinary : DeleteMonitoredItemsRequest,
12647
    ObjectIds.DeleteMonitoredItemsResponse_Encoding_DefaultBinary : DeleteMonitoredItemsResponse,
12648
    ObjectIds.CreateSubscriptionRequest_Encoding_DefaultBinary : CreateSubscriptionRequest,
12649
    ObjectIds.CreateSubscriptionResponse_Encoding_DefaultBinary : CreateSubscriptionResponse,
12650
    ObjectIds.ModifySubscriptionRequest_Encoding_DefaultBinary : ModifySubscriptionRequest,
12651
    ObjectIds.ModifySubscriptionResponse_Encoding_DefaultBinary : ModifySubscriptionResponse,
12652
    ObjectIds.SetPublishingModeRequest_Encoding_DefaultBinary : SetPublishingModeRequest,
12653
    ObjectIds.SetPublishingModeResponse_Encoding_DefaultBinary : SetPublishingModeResponse,
12654
    ObjectIds.NotificationMessage_Encoding_DefaultBinary : NotificationMessage,
12655
    ObjectIds.NotificationData_Encoding_DefaultBinary : NotificationData,
12656
    ObjectIds.DataChangeNotification_Encoding_DefaultBinary : DataChangeNotification,
12657
    ObjectIds.MonitoredItemNotification_Encoding_DefaultBinary : MonitoredItemNotification,
12658
    ObjectIds.EventNotificationList_Encoding_DefaultBinary : EventNotificationList,
12659
    ObjectIds.EventFieldList_Encoding_DefaultBinary : EventFieldList,
12660
    ObjectIds.HistoryEventFieldList_Encoding_DefaultBinary : HistoryEventFieldList,
12661
    ObjectIds.StatusChangeNotification_Encoding_DefaultBinary : StatusChangeNotification,
12662
    ObjectIds.SubscriptionAcknowledgement_Encoding_DefaultBinary : SubscriptionAcknowledgement,
12663
    ObjectIds.PublishRequest_Encoding_DefaultBinary : PublishRequest,
12664
    ObjectIds.PublishResponse_Encoding_DefaultBinary : PublishResponse,
12665
    ObjectIds.RepublishRequest_Encoding_DefaultBinary : RepublishRequest,
12666
    ObjectIds.RepublishResponse_Encoding_DefaultBinary : RepublishResponse,
12667
    ObjectIds.TransferResult_Encoding_DefaultBinary : TransferResult,
12668
    ObjectIds.TransferSubscriptionsRequest_Encoding_DefaultBinary : TransferSubscriptionsRequest,
12669
    ObjectIds.TransferSubscriptionsResponse_Encoding_DefaultBinary : TransferSubscriptionsResponse,
12670
    ObjectIds.DeleteSubscriptionsRequest_Encoding_DefaultBinary : DeleteSubscriptionsRequest,
12671
    ObjectIds.DeleteSubscriptionsResponse_Encoding_DefaultBinary : DeleteSubscriptionsResponse,
12672
    ObjectIds.ScalarTestType_Encoding_DefaultBinary : ScalarTestType,
12673
    ObjectIds.ArrayTestType_Encoding_DefaultBinary : ArrayTestType,
12674
    ObjectIds.CompositeTestType_Encoding_DefaultBinary : CompositeTestType,
12675
    ObjectIds.TestStackRequest_Encoding_DefaultBinary : TestStackRequest,
12676
    ObjectIds.TestStackResponse_Encoding_DefaultBinary : TestStackResponse,
12677
    ObjectIds.TestStackExRequest_Encoding_DefaultBinary : TestStackExRequest,
12678
    ObjectIds.TestStackExResponse_Encoding_DefaultBinary : TestStackExResponse,
12679
    ObjectIds.BuildInfo_Encoding_DefaultBinary : BuildInfo,
12680
    ObjectIds.RedundantServerDataType_Encoding_DefaultBinary : RedundantServerDataType,
12681
    ObjectIds.EndpointUrlListDataType_Encoding_DefaultBinary : EndpointUrlListDataType,
12682
    ObjectIds.NetworkGroupDataType_Encoding_DefaultBinary : NetworkGroupDataType,
12683
    ObjectIds.SamplingIntervalDiagnosticsDataType_Encoding_DefaultBinary : SamplingIntervalDiagnosticsDataType,
12684
    ObjectIds.ServerDiagnosticsSummaryDataType_Encoding_DefaultBinary : ServerDiagnosticsSummaryDataType,
12685
    ObjectIds.ServerStatusDataType_Encoding_DefaultBinary : ServerStatusDataType,
12686
    ObjectIds.SessionDiagnosticsDataType_Encoding_DefaultBinary : SessionDiagnosticsDataType,
12687
    ObjectIds.SessionSecurityDiagnosticsDataType_Encoding_DefaultBinary : SessionSecurityDiagnosticsDataType,
12688
    ObjectIds.ServiceCounterDataType_Encoding_DefaultBinary : ServiceCounterDataType,
12689
    ObjectIds.StatusResult_Encoding_DefaultBinary : StatusResult,
12690
    ObjectIds.SubscriptionDiagnosticsDataType_Encoding_DefaultBinary : SubscriptionDiagnosticsDataType,
12691
    ObjectIds.ModelChangeStructureDataType_Encoding_DefaultBinary : ModelChangeStructureDataType,
12692
    ObjectIds.SemanticChangeStructureDataType_Encoding_DefaultBinary : SemanticChangeStructureDataType,
12693
    ObjectIds.Range_Encoding_DefaultBinary : Range,
12694
    ObjectIds.EUInformation_Encoding_DefaultBinary : EUInformation,
12695
    ObjectIds.ComplexNumberType_Encoding_DefaultBinary : ComplexNumberType,
12696
    ObjectIds.DoubleComplexNumberType_Encoding_DefaultBinary : DoubleComplexNumberType,
12697
    ObjectIds.AxisInformation_Encoding_DefaultBinary : AxisInformation,
12698
    ObjectIds.XVType_Encoding_DefaultBinary : XVType,
12699
    ObjectIds.ProgramDiagnosticDataType_Encoding_DefaultBinary : ProgramDiagnosticDataType,
12700
    ObjectIds.Annotation_Encoding_DefaultBinary : Annotation,
12701
}
12702
12703 1
def extensionobject_from_binary(data):
12704
    """
12705
    Convert binary-coded ExtensionObject to a Python object.
12706
    Returns an object, or None if TypeId is zero
12707
    """
12708 1
    TypeId = NodeId.from_binary(data)
12709 1
    Encoding = unpack_uatype('UInt8', data)
12710 1
    if Encoding & (1 << 0):
12711 1
        Body = unpack_uatype('ByteString', data)
12712 1
    if TypeId.Identifier == 0:
12713 1
        return None
12714 1
    klass = ExtensionClasses[TypeId.Identifier]
12715 1
    return klass.from_binary(Buffer(Body))
12716
12717 1
def extensionobject_to_binary(obj):
12718
    """
12719
    Convert Python object to binary-coded ExtensionObject.
12720
    If obj is None, convert to empty ExtensionObject (TypeId = 0, no Body).
12721
    Returns a binary string
12722
    """
12723 1
    TypeId = NodeId()
12724 1
    Encoding = 0
12725 1
    Body = None
12726 1
    if obj is not None:
12727 1
        TypeId = FourByteNodeId(getattr(ObjectIds, "{}_Encoding_DefaultBinary".format(obj.__class__.__name__)))
12728 1
        Encoding |= (1 << 0)
12729 1
        Body = obj.to_binary()
12730 1
    packet = []
12731 1
    packet.append(TypeId.to_binary())
12732 1
    packet.append(pack_uatype('UInt8', Encoding))
12733 1
    if Body:
12734 1
        packet.append(pack_uatype('ByteString', Body))
12735
    return b''.join(packet)
12736