diff options
| author | Simeon Simeonov | 2012-11-13 15:40:27 +0100 |
|---|---|---|
| committer | Simeon Simeonov | 2012-11-13 15:40:27 +0100 |
| commit | 5c2becae337ea7e2bcebec2912e4626d853b16aa (patch) | |
| tree | 8176d6f36f1c9d758670bdd0c0752167af775ba7 /socket_server.py | |
| parent | b1b484a0b93a5651da7d1ca20e77f70089b215bb (diff) | |
All working with sqlite
Diffstat (limited to 'socket_server.py')
| -rwxr-xr-x | socket_server.py | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/socket_server.py b/socket_server.py index 7297d24..f683712 100755 --- a/socket_server.py +++ b/socket_server.py | |||
| @@ -2,18 +2,18 @@ | |||
| 2 | # -*- coding: utf-8 -*- | 2 | # -*- coding: utf-8 -*- |
| 3 | 3 | ||
| 4 | import SocketServer | 4 | import SocketServer |
| 5 | import os | ||
| 5 | import sys | 6 | import sys |
| 6 | 7 | ||
| 7 | from sqlalchemy import create_engine | 8 | from sqlalchemy import create_engine |
| 8 | from sqlalchemy.orm import sessionmaker | 9 | from sqlalchemy.orm import sessionmaker |
| 9 | 10 | ||
| 10 | from bpynotify_orm import NotificationEntry | 11 | from bpynotify_orm import NotificationEntry, notification_entry_table |
| 11 | 12 | ||
| 12 | 13 | ||
| 13 | class CustomSocketServer(SocketServer.TCPServer): | 14 | class CustomSocketServer(SocketServer.TCPServer): |
| 14 | 15 | ||
| 15 | def __init__(self, server_address, RequestHandlerClass, session): | 16 | def __init__(self, server_address, RequestHandlerClass, session): |
| 16 | print "Done" | ||
| 17 | SocketServer.TCPServer.__init__(self, | 17 | SocketServer.TCPServer.__init__(self, |
| 18 | server_address, | 18 | server_address, |
| 19 | RequestHandlerClass) | 19 | RequestHandlerClass) |
| @@ -30,14 +30,10 @@ class MyTCPHandler(SocketServer.StreamRequestHandler): | |||
| 30 | """ | 30 | """ |
| 31 | 31 | ||
| 32 | def handle(self): | 32 | def handle(self): |
| 33 | # self.request is the TCP socket connected to the client | ||
| 34 | ##self.data = self.request.recv(1024).strip() | ||
| 35 | ##print "{} wrote:".format(self.client_address[0]) | ||
| 36 | ##print self.data | ||
| 37 | 33 | ||
| 38 | self.data = self.rfile.readline().strip() | 34 | self.data = self.rfile.readline().decode('utf8').strip() |
| 39 | 35 | #print(self.data) | |
| 40 | entry = NotificationEntry(unicode(self.data)) | 36 | entry = NotificationEntry(self.data) |
| 41 | self.server.session.add(entry) | 37 | self.server.session.add(entry) |
| 42 | self.server.session.commit() | 38 | self.server.session.commit() |
| 43 | 39 | ||
| @@ -46,14 +42,26 @@ def main(): | |||
| 46 | 42 | ||
| 47 | HOST, PORT = "localhost", 9999 | 43 | HOST, PORT = "localhost", 9999 |
| 48 | 44 | ||
| 45 | if len(sys.argv) == 2 and sys.argv[1] == '-d': | ||
| 46 | try: | ||
| 47 | pid = os.fork() | ||
| 48 | if pid > 0: | ||
| 49 | sys.exit(0) | ||
| 50 | except Exception as e: | ||
| 51 | sys.stderr.write("Unable to daemonize. Fork error: {0}".format(e)) | ||
| 52 | sys.exit(1) | ||
| 53 | |||
| 49 | try: | 54 | try: |
| 55 | |||
| 50 | engine = create_engine('sqlite:///notifications.db') | 56 | engine = create_engine('sqlite:///notifications.db') |
| 51 | Session = sessionmaker(bind=engine) # bound session | 57 | Session = sessionmaker(bind=engine) # bound session |
| 52 | session = Session() | 58 | session = Session() |
| 53 | 59 | ||
| 54 | server = CustomSocketServer((HOST, PORT), MyTCPHandler, session) | 60 | server = CustomSocketServer((HOST, PORT), MyTCPHandler, session) |
| 55 | # Activate the server; this will keep running until you | 61 | |
| 56 | # interrupt the program with Ctrl-C | 62 | # clean all previous entries # |
| 63 | notification_entry_table.delete(bind=engine).execute() | ||
| 64 | |||
| 57 | server.serve_forever() | 65 | server.serve_forever() |
| 58 | 66 | ||
| 59 | except Exception as e: | 67 | except Exception as e: |
