~george-edison55/audataserver-proxy/trunk

« back to all changes in this revision

Viewing changes to audataserver-proxy

  • Committer: Nathan Osman
  • Date: 2011-10-30 02:30:24 UTC
  • Revision ID: admin@quickmediasolutions.com-20111030023024-dt44iry3yzma3aty
Initial implementation of the data server.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
'''
4
4
Proxy server for providing local searches to the Unity lens
5
 
 
6
5
'''
7
6
 
8
7
# Copyright (c) 2011, Nathan Osman <nathan.osman@gmail.com>
9
8
# Copyright (c) 2011, Stefano Palazzo <stefano.palazzo@gmail.com>
10
9
 
11
 
# License here...
12
 
 
13
 
 
14
 
from audataserver import threaded_aulibrary
 
10
# This program is free software: you can redistribute it and/or modify
 
11
# it under the terms of the GNU General Public License as published by
 
12
# the Free Software Foundation, either version 3 of the License, or
 
13
# (at your option) any later version.
 
14
 
 
15
# This program is distributed in the hope that it will be useful,
 
16
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
17
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
18
# GNU General Public License for more details.
 
19
 
 
20
# You should have received a copy of the GNU General Public License
 
21
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
22
 
 
23
# On Debian systems, the complete text of the GNU General
 
24
# Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
 
25
 
 
26
 
 
27
from audataserver import aulibrary
15
28
import cherrypy
16
29
import json
17
30
 
18
31
 
19
 
def connect(thread_index):
20
 
    cherrypy.thread_data.non_thread_safe_thing = "something..."
21
 
 
22
 
 
23
 
class App (object):
 
32
class DataServerApp (object):
 
33
    
 
34
    data_dump = '/opt/se-data-dumps/askubuntu.ddi'
 
35
    library   = None
24
36
    
25
37
    @cherrypy.expose
26
38
    def index(self):
29
41
    @cherrypy.expose
30
42
    def similar(self, *args, **kwargs):
31
43
        cherrypy.response.headers["Content-Type"] = "application/json"
32
 
        return json.dumps({ 'sample': 'sample value' }).encode()
33
 
 
34
 
 
35
 
cherrypy.engine.subscribe('start_thread', connect)
36
 
cherrypy.quickstart(App(), config={'global': {
37
 
    'tools.encode.encoding': 'utf-8',
38
 
    'server.socket_host': '0.0.0.0',
39
 
    'server.socket_port': 8080,
40
 
}})
 
44
        return cherrypy.thread_data.data_manager.search_json('test').encode()
 
45
 
 
46
 
 
47
def thread_started(thread_index):
 
48
    print "Creating another instance of the data manager..."
 
49
    manager = DataServerApp.library.create_data_manager()
 
50
    manager.init()
 
51
    manager.load_ddi_file(DataServerApp.data_dump)
 
52
    cherrypy.thread_data.data_manager = manager
 
53
 
 
54
 
 
55
def thread_stopped(thread_index):
 
56
    cherrypy.thread_data.data_manager.free()
 
57
 
 
58
 
 
59
with aulibrary() as lib:
 
60
    DataServerApp.library = lib
 
61
    cherrypy.engine.subscribe('start_thread', thread_started)
 
62
    cherrypy.engine.subscribe('stop_thread', thread_stopped)
 
63
    cherrypy.quickstart(DataServerApp(), config={'global': {
 
64
        'tools.encode.encoding': 'utf-8',
 
65
        'server.socket_host': '0.0.0.0',
 
66
        'server.socket_port': 8080,
 
67
    }})