git » sdk » main » tree

[main] / borogove / queries / GenericQuery.hx

package borogove.queries;

import haxe.Exception;

import borogove.Stanza;

abstract class GenericQuery {
	private var queryStanza:Stanza;
	private var handleFinished:()->Void;
	private var isFinished:Bool = false;

	public function getQueryStanza():Stanza {
		if(queryStanza == null) {
			throw new Exception("Query has not been initialized");
		}
		return queryStanza;
	}

	private function finish() {
		isFinished = true;
		if(handleFinished != null) {
			handleFinished();
		}
	}

	abstract public function handleResponse(response:Stanza):Void;

	public function onFinished(handler:()->Void):Void {
		handleFinished = handler;
		if(isFinished) {
			handleFinished();
		}
	}
}