Skip to content

Commit

Permalink
feat(app-service): create event service with event flowable
Browse files Browse the repository at this point in the history
  • Loading branch information
andrea-acampora committed Feb 15, 2023
1 parent 0ae4043 commit 839d18e
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/main/kotlin/application/services/EventService.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright (c) 2023. Smart Operating Block
*
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
*/

package application.services

import application.presenter.EventConsumer
import application.presenter.EventPublisher
import entities.events.Event
import io.reactivex.rxjava3.core.BackpressureStrategy
import io.reactivex.rxjava3.core.Flowable

/**
* The Application service responsible to start the consumer and to propagate the events to the publisher.
*/
class EventService<in C>(
private val eventPublisher: EventPublisher<Event<Any>>,
private val eventConsumer: EventConsumer<C>
) {

/**
* Start the event service.
*/
fun start(){
Flowable.create({ emitter ->
eventConsumer.start(emitter)
}, BackpressureStrategy.BUFFER).subscribe { event ->
eventPublisher.publishEvent(event)
}
}

}

0 comments on commit 839d18e

Please # to comment.