-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathacrcloud_local_server.py
More file actions
69 lines (55 loc) · 1.57 KB
/
acrcloud_local_server.py
File metadata and controls
69 lines (55 loc) · 1.57 KB
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
import sys
import traceback
from twisted.internet import reactor
from acrcloud_monitor_main import acrcloudMana
from acrcloud_config import config
from twisted.internet.protocol import Protocol, ServerFactory
import platform
_platform = platform.system().lower()
if _platform == 'windows':
from twisted.internet import iocpreactor
try:
#http://sourceforge.net/projects/pywin32/
iocpreactor.install()
except:
pass
elif _platform == 'darwin':
from twisted.internet import selectreactor
try:
selectreactor.install()
except:
pass
else:
from twisted.internet import epollreactor
try:
epollreactor.install()
except:
pass
class Server(Protocol):
def __init__(self):
self.mana = acrcloudMana
def connectionMade(self):
self.mana.addClient(self)
def connectionLost(self, reason):
self.mana.delClient(self)
def dataReceived(self, data):
ret = self.mana.recData(data)
self.sendData(ret.encode())
if ret[:5] == 'VALUE':
self.sendData(b'END')
def sendData(self, data):
self.transport.write(data + b'\r\n')
class ServerFactory(ServerFactory):
def __init__(self):
pass
def buildProtocol(self, addr):
return Server()
def acrcloud_monitor_service():
try:
port = config['server']['port']
reactor.listenTCP(port, ServerFactory())
reactor.run()
except Exception as e:
traceback.print_exc()
if __name__ == '__main__':
acrcloud_monitor_service()