@Override
	public void run() {
		while (true) {
			if (mInputPort == null || mOutputPort == null) {
				throw new IllegalStateException("No input port was set for " +
						"this filter. An input port must be set before the " +
						"filter is invoked.");
			}
			
			try {
				WorkUnit work = mInputPort.read();
				this.process(work);
			} catch (InterruptedException e) {
				// We got interrupted, kill the thread.
				return;
			}
		}
	}