From 361f8245079b625560449324faf111ed6fcf3b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Smodi=C5=A1?= Date: Sun, 4 Oct 2015 19:43:09 +0200 Subject: Unification of language session implementations. Added load_problem and end_problem actions so handlers get appropriately created and destroyed upon loading and unloading the problem solving screen. --- server/prolog_session.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'server/prolog_session.py') diff --git a/server/prolog_session.py b/server/prolog_session.py index ebd53fb..3de861c 100644 --- a/server/prolog_session.py +++ b/server/prolog_session.py @@ -3,6 +3,7 @@ import operator import threading import prolog.engine +import server import server.user_session from db.models import CodeqUser, Problem from . import problems @@ -31,7 +32,7 @@ def format_prolog_output(reply, output): return messages, 'ok', False # TODO: is it possible to reach this return statement? -class PrologSession(object): +class PrologSession(server.LanguageSession): """Abstracts a Prolog session. Only public methods are available to the outside world due to the use of multiprocessing managers. Therefore prefix any private methods with an underscore (_). @@ -75,7 +76,7 @@ class PrologSession(object): except Exception as e: return [str(e)], 'error', False - def end(self): + def destroy(self): # this method was previously named: end() """Stops the Prolog engine.""" with self._access_lock: if self._engine_id is not None: @@ -158,3 +159,6 @@ class PrologSession(object): def get_problem_id(self): return self._problem_id + +server.language_session_handlers['prolog'] = lambda user_session, problem_id, language_identifier, group_identifier, problem_identifier: PrologSession() + -- cgit v1.2.1