2 * Copyright (c) 1995-2015, Index Data
4 * See the file LICENSE for details.
8 import org.yaz4j.exception.ZoomException;
9 import org.yaz4j.jni.yaz4jlib;
10 import static org.yaz4j.jni.yaz4jlib.*;
16 public class AsyncConnection extends Connection {
17 private ResultSet lastResultSet;
22 public interface SearchHandler {
23 public void handle(ResultSet rs);
26 public interface RecordHandler {
27 public void handle(Record r);
30 public interface ErrorHandler {
31 public void handle(ZoomException e);
34 public AsyncConnection(String host, int port) {
36 ZOOM_connection_option_set(zoomConnection, "async", "1");
37 //what about piggy back?
38 ZOOM_connection_option_set(zoomConnection, "count", "100");
39 ZOOM_connection_option_set(zoomConnection, "step", "20");
44 public ResultSet search(Query query) throws ZoomException {
45 lastResultSet = super.search(query);
49 public AsyncConnection onSearch(SearchHandler sh) {
54 public AsyncConnection onRecord(RecordHandler rh) {
59 public AsyncConnection onError(ErrorHandler eh) {
64 //actuall handler, pkg-private
69 if (sh != null) sh.handle(lastResultSet);
74 if (rh != null) rh.handle(lastResultSet.getRecord(lastResultSet.asyncRecordOffset));
75 } catch (ZoomException ex) {
76 if (eh != null) eh.handle(ex);
78 lastResultSet.asyncRecordOffset++;
84 ZoomException err = ExceptionUtil.getError(zoomConnection, host, port);
86 if (eh != null) eh.handle(err);