File: filesync_helpers.py

package info (click to toggle)
python-adb-shell 0.4.4-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 760 kB
  • sloc: python: 3,860; makefile: 191; sh: 124
file content (141 lines) | stat: -rw-r--r-- 3,392 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import struct

from adb_shell import constants


class FileSyncMessage(object):  # pylint: disable=too-few-public-methods
    """A helper class for packing FileSync messages.

    Parameters
    ----------
    command : bytes
        TODO
    arg0 : int
        TODO
    data : bytes
        The data that will be sent

    Attributes
    ----------
    arg0 : int
        TODO
    command : int
        The input parameter ``command`` converted to an integer via :const:`adb_shell.constants.FILESYNC_ID_TO_WIRE`
    data : bytes
        The data that will be sent

    """
    def __init__(self, command, arg0=None, data=b''):
        self.command = constants.FILESYNC_ID_TO_WIRE[command]
        self.arg0 = arg0 or len(data)
        self.data = data

    def pack(self):
        """Returns this message in an over-the-wire format.

        Returns
        -------
        bytes
            The message packed into the format required by ADB

        """
        return struct.pack(b'<2I', self.command, self.arg0)


class FileSyncListMessage(object):  # pylint: disable=too-few-public-methods
    """A helper class for packing FileSync messages for the "list" service".

    Parameters
    ----------
    command : bytes
        TODO
    arg0 : int
        TODO
    arg1 : TODO
        TODO
    arg2 : TODO
        TODO
    data : bytes
        The data that will be sent

    Attributes
    ----------
    arg0 : int
        TODO
    arg1 : TODO
        TODO
    arg2 : TODO
        TODO
    arg3 : int
        The size of the data
    command : int
        The input parameter ``command`` converted to an integer via :const:`adb_shell.constants.FILESYNC_ID_TO_WIRE`
    data : bytes
        TODO

    """
    def __init__(self, command, arg0, arg1, arg2, data=b''):
        self.command = constants.FILESYNC_ID_TO_WIRE[command]
        self.arg0 = arg0
        self.arg1 = arg1
        self.arg2 = arg2
        self.arg3 = len(data)
        self.data = data

    def pack(self):
        """Returns this message in an over-the-wire format.

        Returns
        -------
        bytes
            The message packed into the format required by ADB

        """
        return struct.pack(b'<5I', self.command, self.arg0, self.arg1, self.arg2, self.arg3)


class FileSyncStatMessage(object):  # pylint: disable=too-few-public-methods
    """A helper class for packing FileSync messages for the "stat" service".

    Parameters
    ----------
    command : bytes
        TODO
    arg0 : int
        TODO
    arg1 : TODO
        TODO
    arg2 : TODO
        TODO

    Attributes
    ----------
    arg0 : int
        TODO
    arg1 : TODO
        TODO
    arg2 : TODO
        TODO
    command : int
        The input parameter ``command`` converted to an integer via :const:`adb_shell.constants.FILESYNC_ID_TO_WIRE`
    data : bytes
        The data that will be sent (always empty)

    """
    def __init__(self, command, arg0, arg1, arg2):
        self.command = constants.FILESYNC_ID_TO_WIRE[command]
        self.arg0 = arg0
        self.arg1 = arg1
        self.arg2 = arg2
        self.data = b''

    def pack(self):
        """Returns this message in an over-the-wire format.

        Returns
        -------
        bytes
            The message packed into the format required by ADB

        """
        return struct.pack(b'<4I', self.command, self.arg0, self.arg1, self.arg2)