annotate bin/patchserver @ 1998:3d28b1a54a29

reformat Ignore-this: 28e00687983432a552e465291ef9b4b4
author drewp@bigasterisk.com
date Sun, 09 Jun 2019 21:56:03 +0000
parents 19eef99e059e
children 9aa046cc9b33
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
1 #!bin/python
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
2
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
3 from run_local import log
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
4
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
5 from rdflib import URIRef
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
6 from twisted.internet import reactor
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
7 from twisted.internet.defer import inlineCallbacks, Deferred
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
8
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
9 import logging
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
10 import optparse
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
11 import os
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
12 import time
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
13 import treq
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
14 import cyclone.web, cyclone.websocket, cyclone.httpclient
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
15 from greplin import scales
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
16
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
17 from cycloneerr import PrettyErrorHandler
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
18
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
19 from light9.namespaces import L9, RDF
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
20 from light9 import networking, showconfig
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
21 from rdfdb.syncedgraph import SyncedGraph
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
22
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
23 from greplin.scales.cyclonehandler import StatsHandler
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
24 from light9.effect.settings import DeviceSettings
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
25 from rdfdb.patch import Patch
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
26
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
27 stats = scales.collection('/webServer', scales.PmfStat('setAttr',
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
28 recalcPeriod=1))
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
29
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
30
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
31 def launch(graph):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
32 if 0:
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
33 reactor.listenTCP(
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
34 networking.captureDevice.port,
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
35 cyclone.web.Application(handlers=[
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
36 (r'/()', cyclone.web.StaticFileHandler, {
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
37 "path": "light9/web",
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
38 "default_filename": "patchServer.html"
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
39 }),
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
40 (r'/stats/(.*)', StatsHandler, {
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
41 'serverName': 'patchServer'
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
42 }),
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
43 ]),
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
44 interface='::',
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
45 )
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
46 log.info('serving http on %s', networking.captureDevice.port)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
47
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
48 def prn():
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
49 width = {}
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
50 for dc in graph.subjects(RDF.type, L9['DeviceClass']):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
51 for attr in graph.objects(dc, L9['attr']):
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
52 width[dc] = max(
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
53 width.get(dc, 0),
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
54 graph.value(attr, L9['dmxOffset']).toPython() + 1)
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
55
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
56 user = {} # chan: [dev]
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
57 for dev in set(graph.subjects(L9['dmxBase'], None)):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
58 dc = graph.value(dev, RDF.type)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
59 base = graph.value(dev, L9['dmxBase']).toPython()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
60 for offset in range(0, width[dc]):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
61 chan = base + offset
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
62 user.setdefault(chan, []).append(dev)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
63
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
64 for chan in range(1, max(user) + 1):
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
65 dev = user.get(chan, None)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
66 print(f'chan {chan} used by {dev}')
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
67
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
68 graph.addHandler(prn)
1998
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
69
3d28b1a54a29 reformat
drewp@bigasterisk.com
parents: 1979
diff changeset
70
1979
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
71 def main():
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
72 parser = optparse.OptionParser()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
73 parser.add_option("-v",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
74 "--verbose",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
75 action="store_true",
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
76 help="logging.DEBUG")
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
77 (options, args) = parser.parse_args()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
78 log.setLevel(logging.DEBUG if options.verbose else logging.INFO)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
79
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
80 graph = SyncedGraph(networking.rdfdb.url, "captureDevice")
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
81
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
82 graph.initiallySynced.addCallback(lambda _: launch(graph)).addErrback(
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
83 log.error)
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
84 reactor.run()
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
85
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
86
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
87 if __name__ == '__main__':
19eef99e059e start patchserver- shows final dmx usage
drewp@bigasterisk.com
parents:
diff changeset
88 main()