dynamicserialize.DynamicSerializationManager   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 46
Duplicated Lines 63.04 %

Importance

Changes 0
Metric Value
wmc 6
eloc 26
dl 29
loc 46
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A DynamicSerializationManager.serializeObject() 6 6 1
A DynamicSerializationManager.__init__() 2 2 1
A DynamicSerializationManager._deserialize() 2 2 1
A DynamicSerializationManager._serialize() 2 2 1
A DynamicSerializationManager._buildSerializationContext() 4 4 1
A DynamicSerializationManager.deserializeBytes() 6 6 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
#
2
# A port of the Java DynamicSerializeManager.  Should be used to read/write
3
# DynamicSerialize binary data.
4
#
5
#
6
#     SOFTWARE HISTORY
7
#
8
#    Date            Ticket#       Engineer       Description
9
#    ------------    ----------    -----------    --------------------------
10
#    06/09/10                      njensen       Initial Creation.
11
#
12
13
from thrift.transport import TTransport
14
from . import SelfDescribingBinaryProtocol, ThriftSerializationContext
15
16
17 View Code Duplication
class DynamicSerializationManager:
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
18
19
    def __init__(self):
20
        self.transport = None
21
22
    def _deserialize(self, ctx):
23
        return ctx.deserializeMessage()
24
25
    def deserializeBytes(self, sbytes):
26
        ctx = self._buildSerializationContext(sbytes)
27
        ctx.readMessageStart()
28
        obj = self._deserialize(ctx)
29
        ctx.readMessageEnd()
30
        return obj
31
32
    def _buildSerializationContext(self, sbytes=None):
33
        self.transport = TTransport.TMemoryBuffer(sbytes)
34
        protocol = SelfDescribingBinaryProtocol.SelfDescribingBinaryProtocol(self.transport)
35
        return ThriftSerializationContext.ThriftSerializationContext(self, protocol)
36
37
    def serializeObject(self, obj):
38
        ctx = self._buildSerializationContext()
39
        ctx.writeMessageStart("dynamicSerialize")
40
        self._serialize(ctx, obj)
41
        ctx.writeMessageEnd()
42
        return self.transport.getvalue()
43
44
    def _serialize(self, ctx, obj):
45
        ctx.serializeMessage(obj)
46