summaryrefslogtreecommitdiff
path: root/socket_server.py
diff options
context:
space:
mode:
authorSimeon Simeonov2014-05-07 22:28:48 +0200
committerSimeon Simeonov2014-05-07 22:28:48 +0200
commit60f47b04174d016cc86c6e06fdaf0794c3d14216 (patch)
treeb8137a37b8e4b81202db5943b509652c7f9564b5 /socket_server.py
parent833ddeb822493f6ab2abd6f193b4c0bc8ea76854 (diff)
Git server / generic client and weechat client completed
Diffstat (limited to 'socket_server.py')
-rwxr-xr-xsocket_server.py77
1 files changed, 0 insertions, 77 deletions
diff --git a/socket_server.py b/socket_server.py
deleted file mode 100755
index c68e500..0000000
--- a/socket_server.py
+++ /dev/null
@@ -1,77 +0,0 @@
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4import SocketServer
5import os
6import sys
7
8from sqlalchemy import create_engine
9from sqlalchemy.orm import sessionmaker
10
11from bpynotify_orm import NotificationEntry, notification_entry_table
12
13
14class CustomSocketServer(SocketServer.TCPServer):
15
16 def __init__(self, server_address, RequestHandlerClass, session):
17 #super(CustomSocketServer, self).__init__(server_address,
18 # RequestHandlerClass)
19 SocketServer.TCPServer.__init__(self,
20 server_address,
21 RequestHandlerClass)
22 self.session = session
23
24
25class MyTCPHandler(SocketServer.StreamRequestHandler):
26 """
27 The RequestHandler class for our server.
28
29 It is instantiated once per connection to the server, and must
30 override the handle() method to implement communication to the
31 client.
32 """
33
34 def handle(self):
35
36 self.data = self.rfile.readline().decode('utf8').strip()
37 #print(self.data)
38 entry = NotificationEntry(self.data)
39 self.server.session.add(entry)
40 self.server.session.commit()
41
42
43def main():
44
45 HOST, PORT = "localhost", 9997
46
47 if len(sys.argv) == 2 and sys.argv[1] == '-d':
48 try:
49 pid = os.fork()
50 if pid > 0:
51 sys.exit(0)
52 except Exception as e:
53 sys.stderr.write("Unable to daemonize. Fork error: {0}".format(e))
54 sys.exit(1)
55
56 try:
57
58 engine = create_engine('sqlite:///notifications.db')
59 Session = sessionmaker(bind=engine) # bound session
60 session = Session()
61
62 server = CustomSocketServer((HOST, PORT), MyTCPHandler, session)
63
64 # clean all previous entries #
65 notification_entry_table.delete(bind=engine).execute()
66
67 server.serve_forever()
68
69 except Exception as e:
70 sys.stderr.write("Server error: {0}".format(e))
71 sys.exit(1)
72
73 sys.exit(0)
74
75
76if __name__ == "__main__":
77 main()