Skip to content

Commit 060e4c3

Browse files
Simplified callbacks
1 parent 8158442 commit 060e4c3

12 files changed

+81
-265
lines changed

examples/tv-casting-app/android/App/app/src/main/java/com/matter/casting/ConnectionExampleFragment.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@
2828
import com.R;
2929
import com.matter.casting.core.CastingPlayer;
3030
import com.matter.casting.support.EndpointFilter;
31-
import com.matter.casting.support.FailureCallback;
31+
import com.matter.casting.support.MatterCallback;
3232
import com.matter.casting.support.MatterError;
33-
import com.matter.casting.support.SuccessCallback;
3433
import java.util.ArrayList;
3534
import java.util.concurrent.Executors;
3635

@@ -100,7 +99,7 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
10099
Executors.newSingleThreadExecutor()
101100
.submit(
102101
() -> {
103-
Log.d(TAG, "onViewCreated() calling verifyOrEstablishConnection()");
102+
Log.d(TAG, "onViewCreated() calling CastingPlayer.verifyOrEstablishConnection()");
104103

105104
EndpointFilter desiredEndpointFilter =
106105
new EndpointFilter(null, DESIRED_ENDPOINT_VENDOR_ID, new ArrayList<>());
@@ -109,7 +108,7 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
109108
targetCastingPlayer.verifyOrEstablishConnection(
110109
MIN_CONNECTION_TIMEOUT_SEC,
111110
desiredEndpointFilter,
112-
new SuccessCallback<Void>() {
111+
new MatterCallback<Void>() {
113112
@Override
114113
public void handle(Void v) {
115114
Log.i(
@@ -121,20 +120,21 @@ public void handle(Void v) {
121120
() -> {
122121
connectionFragmentStatusTextView.setText(
123122
"Connected to Casting Player with device name: "
124-
+ targetCastingPlayer.getDeviceName());
123+
+ targetCastingPlayer.getDeviceName()
124+
+ "\n\n");
125125
connectionFragmentNextButton.setEnabled(true);
126126
});
127127
}
128128
},
129-
new FailureCallback() {
129+
new MatterCallback<MatterError>() {
130130
@Override
131131
public void handle(MatterError err) {
132132
Log.e(TAG, "CastingPLayer connection failed: " + err);
133133
getActivity()
134134
.runOnUiThread(
135135
() -> {
136136
connectionFragmentStatusTextView.setText(
137-
"Casting Player connection failed due to: " + err);
137+
"Casting Player connection failed due to: " + err + "\n\n");
138138
});
139139
}
140140
});
@@ -144,7 +144,7 @@ public void handle(MatterError err) {
144144
.runOnUiThread(
145145
() -> {
146146
connectionFragmentStatusTextView.setText(
147-
"Casting Player connection failed due to: " + err);
147+
"Casting Player connection failed due to: " + err + "\n\n");
148148
});
149149
}
150150
});

examples/tv-casting-app/android/App/app/src/main/jni/com/matter/casting/core/CastingPlayer.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@
1717
package com.matter.casting.core;
1818

1919
import com.matter.casting.support.EndpointFilter;
20-
import com.matter.casting.support.FailureCallback;
20+
import com.matter.casting.support.MatterCallback;
2121
import com.matter.casting.support.MatterError;
22-
import com.matter.casting.support.SuccessCallback;
2322
import java.net.InetAddress;
2423
import java.util.List;
2524

@@ -82,8 +81,8 @@ public interface CastingPlayer {
8281
MatterError verifyOrEstablishConnection(
8382
long commissioningWindowTimeoutSec,
8483
EndpointFilter desiredEndpointFilter,
85-
SuccessCallback<Void> successCallback,
86-
FailureCallback failureCallback);
84+
MatterCallback<Void> successCallback,
85+
MatterCallback<MatterError> failureCallback);
8786

8887
/**
8988
* Verifies that a connection exists with this CastingPlayer, or triggers a new session request.
@@ -98,7 +97,7 @@ MatterError verifyOrEstablishConnection(
9897
* CastingException will contain the error code and message from the CastingApp.
9998
*/
10099
MatterError verifyOrEstablishConnection(
101-
SuccessCallback<Void> successCallback, FailureCallback failureCallback);
100+
MatterCallback<Void> successCallback, MatterCallback<MatterError> failureCallback);
102101

103102
/** @brief Sets the internal connection state of this CastingPlayer to "disconnected" */
104103
void disconnect();

examples/tv-casting-app/android/App/app/src/main/jni/com/matter/casting/core/MatterCastingPlayer.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@
1717
package com.matter.casting.core;
1818

1919
import com.matter.casting.support.EndpointFilter;
20-
import com.matter.casting.support.FailureCallback;
20+
import com.matter.casting.support.MatterCallback;
2121
import com.matter.casting.support.MatterError;
22-
import com.matter.casting.support.SuccessCallback;
2322
import java.net.InetAddress;
2423
import java.util.List;
2524
import java.util.Objects;
@@ -175,8 +174,8 @@ public boolean equals(Object o) {
175174
public native MatterError verifyOrEstablishConnection(
176175
long commissioningWindowTimeoutSec,
177176
EndpointFilter desiredEndpointFilter,
178-
SuccessCallback<Void> successCallback,
179-
FailureCallback failureCallback);
177+
MatterCallback<Void> successCallback,
178+
MatterCallback<MatterError> failureCallback);
180179

181180
/**
182181
* Verifies that a connection exists with this CastingPlayer, or triggers a new session request.
@@ -192,7 +191,7 @@ public native MatterError verifyOrEstablishConnection(
192191
*/
193192
@Override
194193
public MatterError verifyOrEstablishConnection(
195-
SuccessCallback<Void> successCallback, FailureCallback failureCallback) {
194+
MatterCallback<Void> successCallback, MatterCallback<MatterError> failureCallback) {
196195
return verifyOrEstablishConnection(
197196
MIN_CONNECTION_TIMEOUT_SEC, null, successCallback, failureCallback);
198197
}

examples/tv-casting-app/android/App/app/src/main/jni/com/matter/casting/support/FailureCallback.java

-34
This file was deleted.

examples/tv-casting-app/android/App/app/src/main/jni/com/matter/casting/support/SuccessCallback.java examples/tv-casting-app/android/App/app/src/main/jni/com/matter/casting/support/MatterCallback.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919

2020
import android.util.Log;
2121

22-
public abstract class SuccessCallback<R> {
23-
private static final String TAG = SuccessCallback.class.getSimpleName();
22+
public abstract class MatterCallback<R> {
23+
private static final String TAG = MatterCallback.class.getSimpleName();
2424

2525
public abstract void handle(R response);
2626

2727
protected final void handleInternal(R response) {
2828
try {
2929
handle(response);
3030
} catch (Throwable t) {
31-
Log.e(TAG, "SuccessCallback::Caught an unhandled Throwable from the client: " + t);
31+
Log.e(TAG, "MatterCallback::Caught an unhandled Throwable from the client: " + t);
3232
}
3333
}
3434
}

examples/tv-casting-app/android/App/app/src/main/jni/cpp/core/MatterCastingPlayer-JNI.cpp

+9-12
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ namespace casting {
4242
namespace core {
4343

4444
JNI_METHOD(jobject, verifyOrEstablishConnection)
45-
(JNIEnv * env, jobject thiz, jlong commissioningWindowTimeoutSec, jobject desiredEndpointFilterJavaObject, jobject jSuccessHandler,
46-
jobject jFailureHandler)
45+
(JNIEnv * env, jobject thiz, jlong commissioningWindowTimeoutSec, jobject desiredEndpointFilterJavaObject, jobject jSuccessCallback,
46+
jobject jFailureCallback)
4747
{
4848
chip::DeviceLayer::StackLock lock;
4949
ChipLogProgress(AppServer, "MatterCastingPlayer-JNI::verifyOrEstablishConnection() called with a timeout of: %ld seconds",
@@ -77,28 +77,25 @@ JNI_METHOD(jobject, verifyOrEstablishConnection)
7777
// passing an empty list of DeviceTypeStruct.
7878
}
7979

80-
jobject jSuccessHandlerGlobalRef = env->NewGlobalRef(jSuccessHandler);
81-
jobject jFailureHandlerGlobalRef = env->NewGlobalRef(jFailureHandler);
80+
jobject jSuccessCallbackGlobalRef = env->NewGlobalRef(jSuccessCallback);
81+
jobject jFailureCallbackGlobalRef = env->NewGlobalRef(jFailureCallback);
8282
castingPlayer->VerifyOrEstablishConnection(
83-
[jSuccessHandlerGlobalRef, jFailureHandlerGlobalRef](CHIP_ERROR err, CastingPlayer * playerPtr) {
83+
[jSuccessCallbackGlobalRef, jFailureCallbackGlobalRef](CHIP_ERROR err, CastingPlayer * playerPtr) {
8484
ChipLogProgress(AppServer, "MatterCastingPlayer-JNI::verifyOrEstablishConnection() ConnectCallback called");
85-
86-
JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
87-
VerifyOrReturn(env != nullptr, ChipLogError(AppServer, "ConnectCallback, env == nullptr"));
8885
if (err == CHIP_NO_ERROR)
8986
{
9087
ChipLogProgress(AppServer, "MatterCastingPlayer-JNI:: Connected to Casting Player with device ID: %s",
9188
playerPtr->GetId());
92-
MatterSuccessHandlerJNI<void *> successHandler;
93-
successHandler.SetUp(env, jSuccessHandlerGlobalRef);
89+
MatterCallbackJNI<void *> successHandler([](void *) { return nullptr; });
90+
successHandler.SetUp(jSuccessCallbackGlobalRef);
9491
successHandler.Handle(nullptr);
9592
}
9693
else
9794
{
9895
ChipLogError(AppServer, "MatterCastingPlayer-JNI:: ConnectCallback, connection error: %" CHIP_ERROR_FORMAT,
9996
err.Format());
100-
MatterFailureHandlerJNI failureHandler;
101-
failureHandler.SetUp(env, jFailureHandlerGlobalRef);
97+
MatterFailureCallbackJNI failureHandler;
98+
failureHandler.SetUp(jFailureCallbackGlobalRef);
10299
failureHandler.Handle(err);
103100
}
104101
},

examples/tv-casting-app/android/App/app/src/main/jni/cpp/support/Converters-JNI.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,7 @@ jobject convertLongFromCppToJava(uint64_t responseData)
277277
jmethodID constructor = env->GetMethodID(responseTypeClass, "<init>", "(J)V");
278278
return env->NewObject(responseTypeClass, constructor, responseData);
279279
}
280+
280281
}; // namespace support
281282
}; // namespace casting
282283
}; // namespace matter

examples/tv-casting-app/android/App/app/src/main/jni/cpp/support/ErrorConverter-JNI.cpp

-43
This file was deleted.

examples/tv-casting-app/android/App/app/src/main/jni/cpp/support/ErrorConverter-JNI.h

-31
This file was deleted.

examples/tv-casting-app/android/App/app/src/main/jni/cpp/support/MatterCallback-JNI.cpp

-84
This file was deleted.

0 commit comments

Comments
 (0)