11package neptulon .client ;
22
33import com .google .gson .Gson ;
4+ import com .google .gson .GsonBuilder ;
45
56import java .io .IOException ;
67import java .util .ArrayList ;
1112import java .util .concurrent .TimeUnit ;
1213import java .util .logging .Logger ;
1314
15+ import neptulon .client .callbacks .ConnCallback ;
16+ import neptulon .client .callbacks .ResCallback ;
1417import okhttp3 .OkHttpClient ;
1518import okhttp3 .Request ;
1619import okhttp3 .RequestBody ;
2629 */
2730public class ConnImpl implements Conn , WebSocketListener {
2831 private static final Logger logger = Logger .getLogger (ConnImpl .class .getSimpleName ());
29- private final Gson gson = new Gson ();
32+ private final Gson gson = new GsonBuilder (). setDateFormat ( "yyyy-MM-dd'T'HH:mm:ssXXX" ). create ();
3033 private final OkHttpClient client ;
3134 private final Request request ;
3235 private final WebSocketCall wsCall ;
3336 private final List <Middleware > middleware = new ArrayList <>();
34- private final Map <String , ResHandler > resHandlers = new HashMap <>();
37+ private final Map <String , ResCallback > resCallbacks = new HashMap <>();
3538 private WebSocket ws ;
3639 private boolean connected ;
40+ private ConnCallback connCallback ;
3741
3842 /**
3943 * Initializes a new connection with given server URL.
@@ -96,31 +100,27 @@ public void middleware(Middleware mw) {
96100 // handleRequest(method, .....) { if isClientConn... else exception } // same goes for go-client
97101
98102 @ Override
99- public void connect () {
103+ public void connect (ConnCallback handler ) {
100104 // enqueue this listener implementation to initiate the WebSocket connection
105+ connCallback = handler ;
101106 wsCall .enqueue (this );
102107 }
103108
104- @ Override
105- public boolean isConnected () {
106- return ws != null && connected ;
107- }
108-
109109 @ Override
110110 public void remoteAddr () {
111111
112112 }
113113
114114 @ Override
115- public <T > void sendRequest (String method , T params , ResHandler handler ) {
115+ public <T > void sendRequest (String method , T params , ResCallback cb ) {
116116 String id = UUID .randomUUID ().toString ();
117117 neptulon .client .Request r = new neptulon .client .Request <>(id , method , params );
118118 send (r );
119- resHandlers .put (id , handler );
119+ resCallbacks .put (id , cb );
120120 }
121121
122122 @ Override
123- public void sendRequestArr (String method , ResHandler handler , Object ... params ) {
123+ public void sendRequestArr (String method , ResCallback cb , Object ... params ) {
124124
125125 }
126126
@@ -143,12 +143,15 @@ public void onOpen(WebSocket webSocket, Response response) {
143143 ws = webSocket ;
144144 connected = true ;
145145 logger .info ("WebSocket connected." );
146+ connCallback .connected ();
146147 }
147148
148149 @ Override
149150 public void onFailure (IOException e , Response response ) {
150151 connected = false ;
151- logger .warning ("WebSocket connection closed with error: " + e .getMessage ());
152+ String reason = e .getMessage ();
153+ logger .warning ("WebSocket connection closed with error: " + reason );
154+ connCallback .disconnected (reason );
152155 }
153156
154157 @ Override
@@ -158,7 +161,7 @@ public void onMessage(ResponseBody message) throws IOException {
158161 Message msg = gson .fromJson (msgStr , Message .class );
159162 if (msg .method == null || msg .method .isEmpty ()) {
160163 // handle response message
161- resHandlers .get (msg .id ).execute ( gson , msg );
164+ resCallbacks .get (msg .id ).handleResponse ( new ResCtx ( msg . id , msg . result , msg . error , gson ) );
162165 return ;
163166 }
164167
0 commit comments