#!/usr/bin/python
import cv2
import SocketServer
import threading
import time

# Initialize variables
folder_path = '/Users/ashish/Documents/MotionDetector/'
HOST, PORT = "localhost", 5005
cam = cv2.VideoCapture(0)
img = cam.read()[1]
exit = False

class ThreadedUDPRequestHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        data = self.request[0].strip()

        if data == '1':
            # Save image
            filename = time.strftime("%Y%m%d-%H%M%S.png")
            print '-- Saving picture --'
            cv2.imwrite(folder_path + filename, img)
        elif data == '0':
            # Set exit flag
            global exit
            exit = True

class ThreadedUDPServer(SocketServer.ThreadingMixIn, SocketServer.UDPServer):
    pass

# Initialize server
server = ThreadedUDPServer((HOST, PORT), ThreadedUDPRequestHandler)

# Start server
server_thread = threading.Thread(target=server.serve_forever)
server_thread.daemon = True
server_thread.start()

while True:
    img = cam.read()[1]
    cv2.imshow('Camera', img)

    # If user presses ESC key, or if the exit flag is set, then close the program
    if cv2.waitKey(1) == 27 or exit == True:
        break

# Cleanup
cv2.destroyAllWindows()
server.shutdown()
