Auto reset on failure

This commit is contained in:
Andika Wasisto 2020-05-24 07:33:43 +07:00
parent 21ccf06033
commit 5cf90c372f
4 changed files with 24 additions and 28 deletions

View file

@ -30,9 +30,6 @@ Usage Example
http://localhost:62456/api/randbytes?length=8 http://localhost:62456/api/randbytes?length=8
< <20><><EFBFBD>E<EFBFBD><45>s_<73>b<EFBFBD><62><EFBFBD><EFBFBD>G<EFBFBD> < <20><><EFBFBD>E<EFBFBD><45>s_<73>b<EFBFBD><62><EFBFBD><EFBFBD>G<EFBFBD>
http://localhost:62456/api/reset
< OK
### WebSocket API ### WebSocket API
@ -45,8 +42,6 @@ Usage Example
< -1.6120135370 < -1.6120135370
> RANDBYTES 16 > RANDBYTES 16
< <20><><EFBFBD><EFBFBD><EFBFBD>9L).<2E>!:<3A><><EFBFBD>@Nh<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_q<EFBFBD> < <20><><EFBFBD><EFBFBD><EFBFBD>9L).<2E>!:<3A><><EFBFBD>@Nh<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_q<EFBFBD>
> RESET
< OK
License License
------- -------

View file

@ -57,12 +57,6 @@ def api_randbytes():
return Response(str(e), status=400, content_type='text/plain') return Response(str(e), status=400, content_type='text/plain')
@app.route('/api/reset')
def api_reset():
qng_wrapper.reset()
return Response('OK', content_type='text/plain')
@sockets.route('/ws') @sockets.route('/ws')
def ws(websocket): def ws(websocket):
while not websocket.closed: while not websocket.closed:
@ -77,9 +71,6 @@ def ws(websocket):
websocket.send(str(qng_wrapper.randnormal())) websocket.send(str(qng_wrapper.randnormal()))
elif split_message[0] == 'randbytes': elif split_message[0] == 'randbytes':
websocket.send(qng_wrapper.randbytes(int(split_message[1]))) websocket.send(qng_wrapper.randbytes(int(split_message[1])))
elif split_message[0] == 'reset':
qng_wrapper.reset()
websocket.send('OK')
except ValueError as e: except ValueError as e:
websocket.close(code=1003, message=str(e)) websocket.close(code=1003, message=str(e))
except Exception as e: except Exception as e:

View file

@ -27,20 +27,33 @@ class QngWrapper:
self.qng = win32com.client.Dispatch("QWQNG.QNG") self.qng = win32com.client.Dispatch("QWQNG.QNG")
def randint32(self): def randint32(self):
try:
self.qng.Clear() self.qng.Clear()
return self.qng.RandInt32 return self.qng.RandInt32
except:
self.qng.Reset()
return self.qng.RandInt32
def randuniform(self): def randuniform(self):
try:
self.qng.Clear() self.qng.Clear()
return self.qng.RandUniform return self.qng.RandUniform
except:
self.qng.Reset()
return self.qng.RandUniform
def randnormal(self): def randnormal(self):
try:
self.qng.Clear() self.qng.Clear()
return self.qng.RandNormal return self.qng.RandNormal
except:
self.qng.Reset()
return self.qng.RandNormal
def randbytes(self, length): def randbytes(self, length):
try:
self.qng.Clear() self.qng.Clear()
return self.qng.RandBytes(length) return self.qng.RandBytes(length)
except:
def reset(self):
self.qng.Reset() self.qng.Reset()
return self.qng.RandBytes(length)

View file

@ -35,6 +35,3 @@ class QngWrapperMock:
def randbytes(self, length): def randbytes(self, length):
return secrets.token_bytes(nbytes=length) return secrets.token_bytes(nbytes=length)
def reset(self):
pass