Skip to content

Commit 8eaa063

Browse files
authored
Merge pull request #26 from ShareChat/update-fork-courier
Update fork courier
2 parents cec1526 + bff7e47 commit 8eaa063

File tree

84 files changed

+898
-263
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+898
-263
lines changed

.github/workflows/android.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ jobs:
6060

6161
steps:
6262
- uses: actions/checkout@v2
63-
- uses: actions/setup-node@v3
63+
- uses: actions/setup-node@v4
6464
with:
65-
node-version: '16.x'
65+
node-version: '18.x'
6666
- name: Check Build Website
6767
run: |
6868
cd docs

.github/workflows/publish-docs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- uses: actions/checkout@v2
13-
- uses: actions/setup-node@v3
13+
- uses: actions/setup-node@v4
1414
with:
15-
node-version: '16.x'
15+
node-version: '18.x'
1616

1717
- name: Build website
1818
run: |

CONTRIBUTION.md renamed to CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,4 @@ GO-JEK Tech
6161
[6]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
6262
[7]: https://help.github.com/articles/using-pull-requests
6363
[8]: https://github.com/diffplug/spotless
64-
[9]: https://github.com/Kotlin/binary-compatibility-validator
64+
[9]: https://github.com/Kotlin/binary-compatibility-validator

app/build.gradle

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ apply plugin: 'kotlin-android'
33
apply plugin: 'kotlin-android-extensions'
44

55
android {
6-
compileSdkVersion 31
7-
buildToolsVersion "30.0.3"
6+
compileSdk 34
7+
8+
namespace = "com.gojek.courier.app"
89

910
defaultConfig {
1011
applicationId "com.gojek.courier.app"
1112
minSdkVersion 21
12-
targetSdkVersion 31
13+
targetSdkVersion 34
1314
versionCode 1
1415
versionName "1.0"
1516
multiDexEnabled true
@@ -62,6 +63,7 @@ dependencies {
6263

6364
implementation project(':courier-stream-adapter-rxjava2')
6465
implementation project(':courier-message-adapter-gson')
66+
implementation project(':courier-message-adapter-text')
6567
implementation project(':courier-message-adapter-moshi')
6668
implementation project(':courier-message-adapter-protobuf')
6769
implementation project(':adaptive-keep-alive')
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
11
package com.gojek.courier.app.data.network
22

33
import com.gojek.courier.QoS
4+
import com.gojek.courier.annotation.Callback
45
import com.gojek.courier.annotation.Data
56
import com.gojek.courier.annotation.Path
67
import com.gojek.courier.annotation.Send
78
import com.gojek.courier.annotation.Subscribe
9+
import com.gojek.courier.annotation.SubscribeMultiple
10+
import com.gojek.courier.annotation.TopicMap
811
import com.gojek.courier.annotation.Unsubscribe
912
import com.gojek.courier.app.data.network.model.Message
13+
import com.gojek.courier.callback.SendMessageCallback
1014
import io.reactivex.Observable
1115

1216
interface CourierService {
1317
@Send(topic = "{topic}", qos = QoS.ONE)
14-
fun publish(@Path("topic") topic: String, @Data message: Message)
18+
fun publish(@Path("topic") topic: String, @Data message: Message, @Callback callback: SendMessageCallback)
1519

1620
@Subscribe(topic = "{topic}")
17-
fun subscribe(@Path("topic") topic: String): Observable<Message>
21+
fun subscribe(@Path("topic") topic: String): Observable<String>
1822

1923
@Unsubscribe(topics = ["{topic}"])
2024
fun unsubscribe(@Path("topic") topic: String)
25+
26+
@SubscribeMultiple
27+
fun subscribeAll(@TopicMap topicMap: Map<String, QoS>): Observable<String>
2128
}

app/src/main/java/com/gojek/courier/app/ui/MainActivity.kt

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
package com.gojek.courier.app.ui
22

33
import android.os.Bundle
4+
import android.util.Log
45
import androidx.appcompat.app.AppCompatActivity
56
import com.gojek.chuckmqtt.external.MqttChuckConfig
67
import com.gojek.chuckmqtt.external.MqttChuckInterceptor
78
import com.gojek.chuckmqtt.external.Period
89
import com.gojek.courier.Courier
10+
import com.gojek.courier.QoS
11+
import com.gojek.courier.QoS.ZERO
912
import com.gojek.courier.app.R
1013
import com.gojek.courier.app.data.network.CourierService
1114
import com.gojek.courier.app.data.network.model.Message
15+
import com.gojek.courier.callback.SendMessageCallback
1216
import com.gojek.courier.logging.ILogger
1317
import com.gojek.courier.messageadapter.gson.GsonMessageAdapterFactory
18+
import com.gojek.courier.messageadapter.text.TextMessageAdapterFactory
1419
import com.gojek.courier.streamadapter.rxjava2.RxJava2StreamAdapterFactory
1520
import com.gojek.mqtt.auth.Authenticator
1621
import com.gojek.mqtt.client.MqttClient
@@ -24,6 +29,7 @@ import com.gojek.mqtt.model.AdaptiveKeepAliveConfig
2429
import com.gojek.mqtt.model.KeepAlive
2530
import com.gojek.mqtt.model.MqttConnectOptions
2631
import com.gojek.mqtt.model.ServerUri
32+
import com.gojek.mqtt.model.Will
2733
import com.gojek.workmanager.pingsender.WorkManagerPingSenderConfig
2834
import com.gojek.workmanager.pingsender.WorkPingSenderFactory
2935
import kotlinx.android.synthetic.main.activity_main.brokerIP
@@ -78,12 +84,37 @@ class MainActivity : AppCompatActivity() {
7884
send.setOnClickListener {
7985
courierService.publish(
8086
topic = topic.text.toString(),
81-
message = Message(123, message.text.toString())
87+
message = Message(123, message.text.toString()),
88+
callback = object : SendMessageCallback {
89+
override fun onMessageSendTrigger() {
90+
Log.d("Courier", "onMessageSendTrigger")
91+
}
92+
93+
override fun onMessageWrittenOnSocket() {
94+
Log.d("Courier", "onMessageWrittenOnSocket")
95+
}
96+
97+
override fun onMessageSendSuccess() {
98+
Log.d("Courier", "onMessageSendSuccess")
99+
}
100+
101+
override fun onMessageSendFailure(error: Throwable) {
102+
Log.d("Courier", "onMessageSendFailure")
103+
}
104+
}
82105
)
83106
}
84107

85108
subscribe.setOnClickListener {
86-
courierService.subscribe(topic = topic.text.toString())
109+
val topics = topic.text.toString().split(",")
110+
val stream = if (topics.size == 1) {
111+
courierService.subscribe(topic = topics[0])
112+
} else {
113+
val topicMap = mutableMapOf<String, QoS>()
114+
for (topic in topics) { topicMap[topic] = ZERO }
115+
courierService.subscribeAll(topicMap = topicMap)
116+
}
117+
stream.subscribe { Log.d("Courier", "Message received: $it") }
87118
}
88119

89120
unsubscribe.setOnClickListener {
@@ -92,12 +123,21 @@ class MainActivity : AppCompatActivity() {
92123
}
93124

94125
private fun connectMqtt(clientId: String, username: String, password: String, ip: String, port: Int) {
126+
127+
val will = Will(
128+
topic = "last/will/topic",
129+
message = "Client disconnected unexpectedly",
130+
qos = QoS.ZERO,
131+
retained = false
132+
)
133+
95134
val connectOptions = MqttConnectOptions.Builder()
96135
.serverUris(listOf(ServerUri(ip, port, if (port == 443) "ssl" else "tcp")))
97136
.clientId(clientId)
98137
.userName(username)
99138
.password(password)
100139
.cleanSession(false)
140+
.will(will)
101141
.keepAlive(KeepAlive(timeSeconds = 30))
102142
.build()
103143

@@ -129,19 +169,20 @@ class MainActivity : AppCompatActivity() {
129169
),
130170
inactivityTimeoutSeconds = 45,
131171
activityCheckIntervalSeconds = 30,
172+
connectPacketTimeoutSeconds = 5,
132173
incomingMessagesTTLSecs = 60,
133174
incomingMessagesCleanupIntervalSecs = 10,
134175
maxInflightMessagesLimit = 1000,
135176
),
136-
pingSender = WorkPingSenderFactory.createMqttPingSender(applicationContext, WorkManagerPingSenderConfig())
177+
pingSender = WorkPingSenderFactory.createMqttPingSender(applicationContext, WorkManagerPingSenderConfig(sendForcePing = true))
137178
)
138179
mqttClient = MqttClientFactory.create(this, mqttConfig)
139180
mqttClient.addEventHandler(eventHandler)
140181

141182
val configuration = Courier.Configuration(
142183
client = mqttClient,
143184
streamAdapterFactories = listOf(RxJava2StreamAdapterFactory()),
144-
messageAdapterFactories = listOf(GsonMessageAdapterFactory()),
185+
messageAdapterFactories = listOf(TextMessageAdapterFactory(), GsonMessageAdapterFactory()),
145186
logger = getLogger()
146187
)
147188
val courier = Courier(configuration)

buildSrc/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ plugins {
3434
}
3535

3636
dependencies {
37-
implementation("com.android.tools.build:gradle:7.0.3")
38-
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31")
37+
implementation("com.android.tools.build:gradle:7.4.2")
38+
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21")
3939
implementation("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.18.0")
4040
implementation("com.diffplug.spotless:spotless-plugin-gradle:6.5.0")
4141
}

buildSrc/src/main/kotlin/deps.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ object versions {
44
const val jacoco = "0.8.6"
55
const val detekt = "1.18.0"
66

7-
const val kotlin = "1.4.30"
8-
const val agp = "7.0.3"
7+
const val kotlin = "1.6.21"
8+
const val agp = "7.4.2"
99
const val jetifierProcessor = "1.0.0-beta10"
10-
const val jfrogBuildInfoExtractor = "4.11.0"
10+
const val jfrogBuildInfoExtractor = "4.23.4"
1111
const val navigation = "2.1.0-rc01"
1212
const val coroutines = "1.3.2"
1313
const val broadcast = "1.0.0"
@@ -30,7 +30,7 @@ object versions {
3030
const val materialVersion = "1.3.0"
3131
const val annotationVersion = "1.2.0"
3232
const val coreKtxVersion = "1.3.0"
33-
const val apiValidator = "0.6.0"
33+
const val apiValidator = "0.14.0"
3434
const val workManager = "2.7.0"
3535
}
3636

@@ -45,11 +45,11 @@ object deps {
4545
const val protobuf = "com.google.protobuf:protobuf-lite:3.0.0"
4646

4747
object build {
48-
const val buildToolsVersion = "31.0.0"
49-
const val compileSdkVersion = 31
48+
const val buildToolsVersion = "33.0.1"
49+
const val compileSdkVersion = 34
5050
const val minSdkVersion = 21
5151
const val sampleMinSdkVersion = 21
52-
const val targetSdkVersion = 31
52+
const val targetSdkVersion = 34
5353
}
5454

5555
object test {
@@ -134,4 +134,4 @@ object deps {
134134
const val runtime = "androidx.work:work-runtime:${versions.workManager}"
135135
const val runtime_2_6_0 = "androidx.work:work-runtime:2.6.0"
136136
}
137-
}
137+
}
Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +0,0 @@
1-
public final class com/gojek/courier/utils/extensions/PendingIntentExtensionsKt {
2-
}
3-

courier-core/api/courier-core.api

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,26 @@ public abstract interface class com/gojek/courier/StreamAdapter$Factory {
5252
public abstract fun create (Ljava/lang/reflect/Type;)Lcom/gojek/courier/StreamAdapter;
5353
}
5454

55+
public final class com/gojek/courier/callback/NoOpSendMessageCallback : com/gojek/courier/callback/SendMessageCallback {
56+
public static final field INSTANCE Lcom/gojek/courier/callback/NoOpSendMessageCallback;
57+
public fun onMessageSendFailure (Ljava/lang/Throwable;)V
58+
public fun onMessageSendSuccess ()V
59+
public fun onMessageSendTrigger ()V
60+
public fun onMessageWrittenOnSocket ()V
61+
}
62+
63+
public abstract interface class com/gojek/courier/callback/SendMessageCallback {
64+
public abstract fun onMessageSendFailure (Ljava/lang/Throwable;)V
65+
public abstract fun onMessageSendSuccess ()V
66+
public abstract fun onMessageSendTrigger ()V
67+
public abstract fun onMessageWrittenOnSocket ()V
68+
}
69+
5570
public final class com/gojek/courier/extensions/CollectionExtensionsKt {
5671
public static final fun toImmutableMap (Ljava/util/Map;)Ljava/util/Map;
5772
public static final fun toImmutableSet (Ljava/util/Set;)Ljava/util/Set;
5873
}
5974

60-
public final class com/gojek/courier/extensions/TimeUnitExtensionsKt {
61-
}
62-
6375
public abstract interface class com/gojek/courier/logging/ILogger {
6476
public abstract fun d (Ljava/lang/String;Ljava/lang/String;)V
6577
public abstract fun d (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -74,6 +86,3 @@ public abstract interface class com/gojek/courier/logging/ILogger {
7486
public abstract fun w (Ljava/lang/String;Ljava/lang/Throwable;)V
7587
}
7688

77-
public final class com/gojek/courier/utils/TypeUtils {
78-
}
79-

0 commit comments

Comments
 (0)