@@ -57,107 +57,118 @@ public void onChannelDisconnect(ConnectionEvent connectionEvent) {
5757 logger .info (String .format ("provider receives channel disconnect event from %s " , connectionEvent .getUuid ()));
5858 }
5959 });
60- desktopConnection .getChannel (CHANNEL_NAME ).create (new AsyncCallback <ChannelProvider >() {
61- @ Override
62- public void onSuccess (ChannelProvider provider ) {
63- //provider created, register actions.
64- AtomicInteger x = new AtomicInteger (0 );
65-
66- provider .register ("getValue" , new ChannelAction () {
67- @ Override
68- public JSONObject invoke (String action , Object payload , JSONObject senderIdentity ) {
69- logger .info (String .format ("provider processing action %s, payload=%s" , action , payload .toString ()));
70- JSONObject obj = new JSONObject ();
71- obj .put ("value" , x .get ());
72- return obj ;
73- }
74- });
75- provider .register ("increment" , new ChannelAction () {
76- @ Override
77- public JSONObject invoke (String action , Object payload , JSONObject senderIdentity ) {
78- logger .info (String .format ("provider processing action %s, payload=%s" , action , payload .toString ()));
79- JSONObject obj = new JSONObject ();
80- obj .put ("value" , x .incrementAndGet ());
81- provider .publish ("event" , obj , null );
82- return obj ;
60+ desktopConnection .getChannel (CHANNEL_NAME ).createAsync ().thenAccept (provider -> {
61+ provider .addProviderListener (new ChannelProviderListener () {
62+ @ Override
63+ public void onClientConnect (ChannelClientConnectEvent connectionEvent ) throws Exception {
64+ logger .info (String .format ("provider receives client connect event from %s " , connectionEvent .getUuid ()));
65+ JSONObject payload = (JSONObject ) connectionEvent .getPayload ();
66+ if (payload != null ) {
67+ String name = payload .optString ("name" );
68+ if ("badguy" .equals (name )) {
69+ // throw exception here to reject the connection
70+ throw new Exception ("stay out" );
71+ }
8372 }
84- });
85- provider .register ("incrementBy" , new ChannelAction () {
86- @ Override
87- public JSONObject invoke (String action , Object payload , JSONObject senderIdentity ) {
88- logger .info (String .format ("provider processing action %s, payload=%s" , action , payload .toString ()));
89- int delta = ((JSONObject )payload ).getInt ("delta" );
90- JSONObject obj = new JSONObject ();
91- obj .put ("value" , x .addAndGet (delta ));
92- return obj ;
93- }
94- });
95- }
73+ }
74+ @ Override
75+ public void onClientDisconnect (ChannelClientConnectEvent connectionEvent ) {
76+ logger .info (String .format ("provider receives channel disconnect event from %s " , connectionEvent .getUuid ()));
77+ }
78+ });
79+
80+ //provider created, register actions.
81+ AtomicInteger x = new AtomicInteger (0 );
82+
83+ provider .register ("getValue" , new ChannelAction () {
84+ @ Override
85+ public JSONObject invoke (String action , Object payload , JSONObject senderIdentity ) {
86+ logger .info (String .format ("provider processing action %s, payload=%s" , action , payload .toString ()));
87+ JSONObject obj = new JSONObject ();
88+ obj .put ("value" , x .get ());
89+ return obj ;
90+ }
91+ });
92+ provider .register ("increment" , new ChannelAction () {
93+ @ Override
94+ public JSONObject invoke (String action , Object payload , JSONObject senderIdentity ) {
95+ logger .info (String .format ("provider processing action %s, payload=%s" , action , payload .toString ()));
96+ JSONObject obj = new JSONObject ();
97+ obj .put ("value" , x .incrementAndGet ());
98+ provider .publish ("event" , obj , null );
99+ return obj ;
100+ }
101+ });
102+ provider .register ("incrementBy" , new ChannelAction () {
103+ @ Override
104+ public JSONObject invoke (String action , Object payload , JSONObject senderIdentity ) {
105+ logger .info (String .format ("provider processing action %s, payload=%s" , action , payload .toString ()));
106+ int delta = ((JSONObject )payload ).getInt ("delta" );
107+ JSONObject obj = new JSONObject ();
108+ obj .put ("value" , x .addAndGet (delta ));
109+ return obj ;
110+ }
111+ });
96112 });
97113 }
98114
99115 /**
100116 * Create a channel client that invokes "getValue", "increment" and "incrementBy n" actions
101117 */
102118 public void createChannelClient () {
103- desktopConnection .getChannel (CHANNEL_NAME ).connect (new AsyncCallback <ChannelClient >() {
104- @ Override
105- public void onSuccess (ChannelClient client ) {
106- // register a channel event
107- client .register ("event" , new ChannelAction () {
108- @ Override
109- public JSONObject invoke (String action , Object payload , JSONObject senderIdentity ) {
110- logger .info ("channel event {}" , action );
111- return null ;
112- }
113- });
114-
115- //connected to provider, invoke actions provided by the provider.
116- //get current value
117- client .dispatch ("getValue" , null , new AckListener () {
118- @ Override
119- public void onSuccess (Ack ack ) {
120- logger .info ("current value={}" , ack .getJsonObject ().getJSONObject ("data" ).getJSONObject ("result" ).getInt ("value" ));
121-
122- //got current value, do increment
123- client .dispatch ("increment" , null , new AckListener () {
124- @ Override
125- public void onSuccess (Ack ack ) {
126- logger .info ("after invoking increment, value={}" , ack .getJsonObject ().getJSONObject ("data" ).getJSONObject ("result" ).getInt ("value" ));
127-
128- //let's do increatmentBy 10
129- JSONObject payload = new JSONObject ();
130- payload .put ("delta" , 10 );
131- client .dispatch ("incrementBy" , payload , new AckListener () {
132- @ Override
133- public void onSuccess (Ack ack ) {
134- logger .info ("after invoking incrementBy, value={}" , ack .getJsonObject ().getJSONObject ("data" ).getJSONObject ("result" ).getInt ("value" ));
135-
136- try {
137- desktopConnection .disconnect ();
138- }
139- catch (DesktopException e ) {
140- e .printStackTrace ();
141- }
119+ JSONObject payload = new JSONObject ();
120+ payload .put ("name" , "java example" );
121+ desktopConnection .getChannel (CHANNEL_NAME ).connectAsync (false , payload ).thenAccept (client -> {
122+ client .register ("event" , new ChannelAction () {
123+ @ Override
124+ public JSONObject invoke (String action , Object payload , JSONObject senderIdentity ) {
125+ logger .info ("channel event {}" , action );
126+ return null ;
127+ }
128+ });
129+
130+ client .dispatch ("getValue" , null , new AckListener () {
131+ @ Override
132+ public void onSuccess (Ack ack ) {
133+ logger .info ("current value={}" , ack .getJsonObject ().getJSONObject ("data" ).getJSONObject ("result" ).getInt ("value" ));
134+
135+ //got current value, do increment
136+ client .dispatch ("increment" , null , new AckListener () {
137+ @ Override
138+ public void onSuccess (Ack ack ) {
139+ logger .info ("after invoking increment, value={}" , ack .getJsonObject ().getJSONObject ("data" ).getJSONObject ("result" ).getInt ("value" ));
140+
141+ //let's do increatmentBy 10
142+ JSONObject payload = new JSONObject ();
143+ payload .put ("delta" , 10 );
144+ client .dispatch ("incrementBy" , payload , new AckListener () {
145+ @ Override
146+ public void onSuccess (Ack ack ) {
147+ logger .info ("after invoking incrementBy, value={}" , ack .getJsonObject ().getJSONObject ("data" ).getJSONObject ("result" ).getInt ("value" ));
148+
149+ try {
150+ desktopConnection .disconnect ();
151+ } catch (DesktopException e ) {
152+ e .printStackTrace ();
142153 }
143-
144- @ Override
145- public void onError ( Ack ack ) {
146- }
147- });
148- }
149-
150- @ Override
151- public void onError ( Ack ack ) {
152- }
153- });
154- }
155-
156- @ Override
157- public void onError ( Ack ack ) {
158- }
159- });
160- }
154+ }
155+
156+ @ Override
157+ public void onError ( Ack ack ) {
158+ }
159+ });
160+ }
161+
162+ @ Override
163+ public void onError ( Ack ack ) {
164+ }
165+ });
166+ }
167+
168+ @ Override
169+ public void onError ( Ack ack ) {
170+ }
171+ });
161172 });
162173 }
163174
0 commit comments