7
7
class FIREBASE_GLOBAL_VAR :
8
8
GLOBAL_URL = None
9
9
GLOBAL_URL_ADINFO = None
10
- SOCKET = None
11
- SSOCKET = None
10
+ SLIST = {}
12
11
13
12
class INTERNAL :
14
- def connect ():
13
+ def connect (id ):
15
14
LOCAL_ADINFO = usocket .getaddrinfo (FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ], FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["port" ], 0 , usocket .SOCK_STREAM )[0 ]
16
- FIREBASE_GLOBAL_VAR .SOCKET = usocket .socket (LOCAL_ADINFO [0 ], LOCAL_ADINFO [1 ], LOCAL_ADINFO [2 ])
17
- FIREBASE_GLOBAL_VAR .SOCKET .connect (LOCAL_ADINFO [- 1 ])
15
+ FIREBASE_GLOBAL_VAR .SLIST [ "S" + id ] = usocket .socket (LOCAL_ADINFO [0 ], LOCAL_ADINFO [1 ], LOCAL_ADINFO [2 ])
16
+ FIREBASE_GLOBAL_VAR .SLIST [ "S" + id ] .connect (LOCAL_ADINFO [- 1 ])
18
17
if FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["proto" ] == "https:" :
19
- FIREBASE_GLOBAL_VAR .SSOCKET = ussl .wrap_socket (FIREBASE_GLOBAL_VAR .SOCKET , server_hostname = FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ])
18
+ try :
19
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ] = ussl .wrap_socket (FIREBASE_GLOBAL_VAR .SLIST ["S" + id ], server_hostname = FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ])
20
+ except :
21
+ print ("ENOMEM, try to restart. Do not make to many id's (sokets) simultaneously! (or use a board with more ram)" )
22
+ FIREBASE_GLOBAL_VAR .SLIST ["S" + id ].close ()
23
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= None
24
+ FIREBASE_GLOBAL_VAR .SLIST ["S" + id ]= None
25
+ raise MemoryError
26
+
20
27
else :
21
- FIREBASE_GLOBAL_VAR .SSOCKET = FIREBASE_GLOBAL_VAR .SOCKET
22
- def disconnect ():
23
- FIREBASE_GLOBAL_VAR .SSOCKET .close ()
24
- FIREBASE_GLOBAL_VAR .SSOCKET = None
25
- FIREBASE_GLOBAL_VAR .SOCKET = None
28
+ FIREBASE_GLOBAL_VAR .SLIST [ "SS" + id ] = FIREBASE_GLOBAL_VAR .SLIST [ "S" + id ]
29
+ def disconnect (id ):
30
+ FIREBASE_GLOBAL_VAR .SLIST [ "SS" + id ] .close ()
31
+ FIREBASE_GLOBAL_VAR .SLIST [ "SS" + id ] = None
32
+ FIREBASE_GLOBAL_VAR .SLIST [ "S" + id ] = None
26
33
27
- def put (PATH , DATA ):
28
- while FIREBASE_GLOBAL_VAR .SSOCKET :
29
- time .sleep (1 )
30
- FIREBASE_GLOBAL_VAR .SSOCKET = True
31
- INTERNAL .connect ()
32
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"PUT /" + PATH + b".json HTTP/1.0\r \n " )
33
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n " )
34
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"Content-Length: " + str (len (DATA ))+ "\r \n \r \n " )
35
- FIREBASE_GLOBAL_VAR .SSOCKET .write (DATA )
36
- LOCAL_DUMMY = FIREBASE_GLOBAL_VAR .SSOCKET .read ()
34
+ def put (PATH , DATA , id ):
35
+ try :
36
+ while FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]:
37
+ time .sleep (2 )
38
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
39
+ except :
40
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
41
+ INTERNAL .connect (id )
42
+ LOCAL_SS = FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]
43
+ LOCAL_SS .write (b"PUT /" + PATH + b".json HTTP/1.0\r \n " )
44
+ LOCAL_SS .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n " )
45
+ LOCAL_SS .write (b"Content-Length: " + str (len (DATA ))+ "\r \n \r \n " )
46
+ LOCAL_SS .write (DATA )
47
+ LOCAL_DUMMY = LOCAL_SS .read ()
37
48
del LOCAL_DUMMY
38
- INTERNAL .disconnect ()
49
+ INTERNAL .disconnect (id )
39
50
40
51
41
- def patch (PATH , DATA ):
42
- while FIREBASE_GLOBAL_VAR .SSOCKET :
43
- time .sleep (1 )
44
- FIREBASE_GLOBAL_VAR .SSOCKET = True
45
- INTERNAL .connect ()
46
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"PATCH /" + PATH + b".json HTTP/1.0\r \n " )
47
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n " )
48
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"Content-Length: " + str (len (DATA ))+ "\r \n \r \n " )
49
- FIREBASE_GLOBAL_VAR .SSOCKET .write (DATA )
50
- LOCAL_DUMMY = FIREBASE_GLOBAL_VAR .SSOCKET .read ()
52
+ def patch (PATH , DATA , id ):
53
+ try :
54
+ while FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]:
55
+ time .sleep (1 )
56
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
57
+ except :
58
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
59
+ INTERNAL .connect (id )
60
+ LOCAL_SS = FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]
61
+ LOCAL_SS .write (b"PATCH /" + PATH + b".json HTTP/1.0\r \n " )
62
+ LOCAL_SS .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n " )
63
+ LOCAL_SS .write (b"Content-Length: " + str (len (DATA ))+ "\r \n \r \n " )
64
+ LOCAL_SS .write (DATA )
65
+ LOCAL_DUMMY = LOCAL_SS .read ()
51
66
del LOCAL_DUMMY
52
- INTERNAL .disconnect ()
67
+ INTERNAL .disconnect (id )
53
68
54
69
55
- def get (PATH , DUMP ):
56
- while FIREBASE_GLOBAL_VAR .SSOCKET :
57
- time .sleep (1 )
58
- FIREBASE_GLOBAL_VAR .SSOCKET = True
59
- INTERNAL .connect ()
60
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"GET /" + PATH + b".json HTTP/1.0\r \n " )
61
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n \r \n " )
62
- LOCAL_OUTPUT = ujson .loads (FIREBASE_GLOBAL_VAR .SSOCKET .read ().splitlines ()[- 1 ])
63
- INTERNAL .disconnect ()
70
+ def get (PATH , DUMP , id ):
71
+ try :
72
+ while FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]:
73
+ time .sleep (1 )
74
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
75
+ except :
76
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
77
+ INTERNAL .connect (id )
78
+ LOCAL_SS = FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]
79
+ LOCAL_SS .write (b"GET /" + PATH + b".json HTTP/1.0\r \n " )
80
+ LOCAL_SS .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n \r \n " )
81
+ LOCAL_OUTPUT = ujson .loads (LOCAL_SS .read ().splitlines ()[- 1 ])
82
+ INTERNAL .disconnect (id )
64
83
globals ()[DUMP ]= LOCAL_OUTPUT
65
84
66
- def getfile (PATH , FILE , bg ):
67
- while FIREBASE_GLOBAL_VAR .SSOCKET :
68
- time .sleep (1 )
69
- FIREBASE_GLOBAL_VAR .SSOCKET = True
70
- INTERNAL .connect ()
71
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"GET /" + PATH + b".json HTTP/1.0\r \n " )
72
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n \r \n " )
73
- while not FIREBASE_GLOBAL_VAR .SSOCKET .readline ()== b"\r \n " :
85
+ def getfile (PATH , FILE , bg , id ):
86
+ try :
87
+ while FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]:
88
+ time .sleep (1 )
89
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
90
+ except :
91
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
92
+ INTERNAL .connect (id )
93
+ LOCAL_SS = FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]
94
+ LOCAL_SS .write (b"GET /" + PATH + b".json HTTP/1.0\r \n " )
95
+ LOCAL_SS .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n \r \n " )
96
+ while not LOCAL_SS .readline ()== b"\r \n " :
74
97
pass
75
98
LOCAL_FILE = open (FILE , "wb" )
76
99
if bg :
77
100
while True :
78
- LOCAL_LINE = FIREBASE_GLOBAL_VAR . SSOCKET .read (1024 )
101
+ LOCAL_LINE = LOCAL_SS .read (1024 )
79
102
if LOCAL_LINE == b"" :
80
103
break
81
104
LOCAL_FILE .write (LOCAL_LINE )
82
105
time .sleep_ms (1 )
83
106
else :
84
107
while True :
85
- LOCAL_LINE = FIREBASE_GLOBAL_VAR . SSOCKET .read (1024 )
108
+ LOCAL_LINE = LOCAL_SS .read (1024 )
86
109
if LOCAL_LINE == b"" :
87
110
break
88
111
LOCAL_FILE .write (LOCAL_LINE )
89
112
90
113
LOCAL_FILE .close ()
91
- INTERNAL .disconnect ()
114
+ INTERNAL .disconnect (id )
92
115
93
- def delete (PATH ):
94
- while FIREBASE_GLOBAL_VAR .SSOCKET :
95
- time .sleep (1 )
96
- FIREBASE_GLOBAL_VAR .SSOCKET = True
97
- INTERNAL .connect ()
98
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"DELETE /" + PATH + b".json HTTP/1.0\r \n " )
99
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n \r \n " )
100
- LOCAL_DUMMY = FIREBASE_GLOBAL_VAR .SSOCKET .read ()
116
+ def delete (PATH , id ):
117
+ try :
118
+ while FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]:
119
+ time .sleep (1 )
120
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
121
+ except :
122
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
123
+ INTERNAL .connect (id )
124
+ LOCAL_SS = FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]
125
+ LOCAL_SS .write (b"DELETE /" + PATH + b".json HTTP/1.0\r \n " )
126
+ LOCAL_SS .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n \r \n " )
127
+ LOCAL_DUMMY = LOCAL_SS .read ()
101
128
del LOCAL_DUMMY
102
- INTERNAL .disconnect ()
129
+ INTERNAL .disconnect (id )
103
130
104
- def addto (PATH , DATA ):
105
- while FIREBASE_GLOBAL_VAR .SSOCKET :
106
- time .sleep (1 )
107
- FIREBASE_GLOBAL_VAR .SSOCKET = True
108
- INTERNAL .connect ()
109
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"POST /" + PATH + b".json HTTP/1.0\r \n " )
110
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n " )
111
- FIREBASE_GLOBAL_VAR .SSOCKET .write (b"Content-Length: " + str (len (DATA ))+ "\r \n \r \n " )
112
- FIREBASE_GLOBAL_VAR .SSOCKET .write (DATA )
113
- LOCAL_DUMMY = FIREBASE_GLOBAL_VAR .SSOCKET .read ()
131
+ def addto (PATH , DATA , id ):
132
+ try :
133
+ while FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]:
134
+ time .sleep (1 )
135
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
136
+ except :
137
+ FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]= True
138
+ INTERNAL .connect (id )
139
+ LOCAL_SS = FIREBASE_GLOBAL_VAR .SLIST ["SS" + id ]
140
+ LOCAL_SS .write (b"POST /" + PATH + b".json HTTP/1.0\r \n " )
141
+ LOCAL_SS .write (b"Host: " + FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO ["host" ]+ b"\r \n " )
142
+ LOCAL_SS .write (b"Content-Length: " + str (len (DATA ))+ "\r \n \r \n " )
143
+
144
+ LOCAL_SS .write (DATA )
145
+ LOCAL_DUMMY = LOCAL_SS .read ()
114
146
del LOCAL_DUMMY
115
- INTERNAL .disconnect ()
147
+ INTERNAL .disconnect (id )
116
148
117
149
def setURL (url ):
118
150
FIREBASE_GLOBAL_VAR .GLOBAL_URL = url
@@ -135,27 +167,38 @@ def setURL(url):
135
167
136
168
FIREBASE_GLOBAL_VAR .GLOBAL_URL_ADINFO = {"proto" : proto , "host" : host , "port" : port }
137
169
138
- def put (PATH , DATA ):
139
- _thread .start_new_thread (INTERNAL .put , [PATH , ujson .dumps (DATA )])
140
-
170
+ def put (PATH , DATA , bg = True , id = 0 ):
171
+ if bg :
172
+ _thread .start_new_thread (INTERNAL .put , [PATH , ujson .dumps (DATA ), str (id )])
173
+ else :
174
+ INTERNAL .put (PATH , ujson .dumps (DATA ), str (id ))
141
175
142
- def patch (PATH , DATA ):
143
- _thread .start_new_thread (INTERNAL .addto , [PATH , ujson .dumps (DATA )])
176
+ def patch (PATH , DATA , bg = True , id = 0 ):
177
+ if bg :
178
+ _thread .start_new_thread (INTERNAL .put , [PATH , ujson .dumps (DATA ), str (id )])
179
+ else :
180
+ INTERNAL .put (PATH , ujson .dumps (DATA ), str (id ))
144
181
145
- def getfile (PATH , FILE , bg = False ):
182
+ def getfile (PATH , FILE , bg = False , id = 0 ):
146
183
if bg :
147
- _thread .start_new_thread (INTERNAL .getfile , [PATH , FILE , bg ])
184
+ _thread .start_new_thread (INTERNAL .getfile , [PATH , FILE , bg , str ( id ) ])
148
185
else :
149
- INTERNAL .getfile (PATH , FILE , bg )
186
+ INTERNAL .getfile (PATH , FILE , bg , str ( id ) )
150
187
151
- def get (PATH , DUMP , bg = False ):
188
+ def get (PATH , DUMP , bg = False , id = 0 ):
152
189
if bg :
153
- _thread .start_new_thread (INTERNAL .get , [PATH , DUMP ])
190
+ _thread .start_new_thread (INTERNAL .get , [PATH , DUMP , str ( id ) ])
154
191
else :
155
- INTERNAL .get (PATH , DUMP )
192
+ INTERNAL .get (PATH , DUMP , str ( id ) )
156
193
157
- def delete (PATH ):
158
- _thread .start_new_thread (INTERNAL .delete , [PATH ])
194
+ def delete (PATH , bg = True , id = 0 ):
195
+ if bg :
196
+ _thread .start_new_thread (INTERNAL .put , [PATH , str (id )])
197
+ else :
198
+ INTERNAL .put (PATH , str (id ))
159
199
160
- def addto (PATH , DATA ):
161
- _thread .start_new_thread (INTERNAL .addto , [PATH , ujson .dumps (DATA )])
200
+ def addto (PATH , DATA , bg = True , id = 0 ):
201
+ if bg :
202
+ _thread .start_new_thread (INTERNAL .put , [PATH , ujson .dumps (DATA ), str (id )])
203
+ else :
204
+ INTERNAL .put (PATH , ujson .dumps (DATA ), str (id ))
0 commit comments