From b1b484a0b93a5651da7d1ca20e77f70089b215bb Mon Sep 17 00:00:00 2001 From: Simeon Simeonov Date: Mon, 12 Nov 2012 15:09:47 +0100 Subject: bpynotify - started --- socket_server.py | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 socket_server.py (limited to 'socket_server.py') diff --git a/socket_server.py b/socket_server.py new file mode 100755 index 0000000..7297d24 --- /dev/null +++ b/socket_server.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import SocketServer +import sys + +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +from bpynotify_orm import NotificationEntry + + +class CustomSocketServer(SocketServer.TCPServer): + + def __init__(self, server_address, RequestHandlerClass, session): + print "Done" + SocketServer.TCPServer.__init__(self, + server_address, + RequestHandlerClass) + self.session = session + + +class MyTCPHandler(SocketServer.StreamRequestHandler): + """ + The RequestHandler class for our server. + + It is instantiated once per connection to the server, and must + override the handle() method to implement communication to the + client. + """ + + def handle(self): + # self.request is the TCP socket connected to the client + ##self.data = self.request.recv(1024).strip() + ##print "{} wrote:".format(self.client_address[0]) + ##print self.data + + self.data = self.rfile.readline().strip() + + entry = NotificationEntry(unicode(self.data)) + self.server.session.add(entry) + self.server.session.commit() + + +def main(): + + HOST, PORT = "localhost", 9999 + + try: + engine = create_engine('sqlite:///notifications.db') + Session = sessionmaker(bind=engine) # bound session + session = Session() + + server = CustomSocketServer((HOST, PORT), MyTCPHandler, session) + # Activate the server; this will keep running until you + # interrupt the program with Ctrl-C + server.serve_forever() + + except Exception as e: + sys.stderr.write("Server error: {0}".format(e)) + sys.exit(1) + + sys.exit(0) + + +if __name__ == "__main__": + main() -- cgit v1.3