Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add methods consuming Collection for Subscribe/UnsubscribeBuilder #170

Closed
SgtSilvio opened this issue Jul 4, 2018 · 3 comments
Closed
Assignees
Milestone

Comments

@SgtSilvio
Copy link
Member

No description provided.

@SgtSilvio SgtSilvio added this to the 1.0 milestone Jul 4, 2018
@MicWalter
Copy link
Contributor

Motivation:
It should be easy to add a dynamic amount of topics to a Subscribe/Unsubscribe packet.

Problem:
At the moment for each Mqtt5Subscription/Mqtt5Unsubscribe you need to call addSubscription()/addTopicFilter(), that means you can't easily create a Subscribe/Unsubscribe packet that has a random amount of subscriptions/unsubscriptions.

Example:
Subscribe

final Mqtt5Subscribe subscribeMessage = Mqtt5Subscribe.builder()
               .addSubscription(Mqtt5Subscription.builder().topicFilter(topic).qos(MqttQoS.AT_LEAST_ONCE).build())
               .addSubscription(Mqtt5Subscription.builder().topicFilter(topic).qos(MqttQoS.AT_LEAST_ONCE).build())
               .addSubscription(Mqtt5Subscription.builder().topicFilter(topic).qos(MqttQoS.AT_LEAST_ONCE).build())
               .addSubscription(Mqtt5Subscription.builder().topicFilter(topic).qos(MqttQoS.AT_LEAST_ONCE).build())
               .addSubscription(Mqtt5Subscription.builder().topicFilter(topic).qos(MqttQoS.AT_LEAST_ONCE).build())
               .addSubscription(Mqtt5Subscription.builder().topicFilter(topic).qos(MqttQoS.AT_LEAST_ONCE).build())
               .addSubscription(Mqtt5Subscription.builder().topicFilter(topic).qos(MqttQoS.AT_LEAST_ONCE).build())
               .addSubscription(Mqtt5Subscription.builder().topicFilter(topic).qos(MqttQoS.AT_LEAST_ONCE).build())
               .build();

Unsubscribe:

        subscriber.unsubscribe(Mqtt5Unsubscribe.build()
                .addTopicFilter("unsub1")
                .addTopicFilter("unsub2")
                .addTopicFilter("unsub3")
                .addTopicFilter("unsub4")
                .addTopicFilter("unsub5")
                .addTopicFilter("unsub6")
                .build())
                .doOnSuccess(success -> {
                    System.out.println("unsuback success; reason code: " + success.getReasonCodes().toString());
                })
                .doOnError(error -> System.out.println("error"))
                .subscribe();

Proposed changes:
You can give the methods addSubscription()/addTopicFilter() a List as parameter.

Example:
Subscribe

        ImmutableList<Mqtt5Subscribe> topics = createTopicsForRole(clientID);

        final Mqtt5Subscribe subscribeMessage = Mqtt5Subscribe.builder()
                .addSubscription(topics)
                .build();

Unsubscribe

        ImmutableList<String> unsubTopics = getTopicsToUnsubscribeForNewGeoPosition();

        subscriber.unsubscribe(Mqtt5Unsubscribe.build()
                .addTopicFilter(unsubTopics)
                .build())
                .doOnSuccess(success -> {
                    System.out.println("Removed obsolete geo position topics; reason code: " + success.getReasonCodes().toString());
                })
                .doOnError(error -> System.out.println("error"))
                .subscribe();

@SgtSilvio SgtSilvio changed the title Add methods consuming ImmutableList for Subscribe/UnsubscribeBuilder Add methods consuming immutable List for Subscribe/UnsubscribeBuilder Sep 30, 2018
@SgtSilvio SgtSilvio changed the title Add methods consuming immutable List for Subscribe/UnsubscribeBuilder Add methods consuming List for Subscribe/UnsubscribeBuilder Sep 30, 2018
@SgtSilvio
Copy link
Member Author

Method names:

  • SubscribeBuilder: addSupscriptions
  • UnsubscribeBuilder: addTopicFilters

Also add an addAll method to Mqtt5UserPropertiesBuilder

@SgtSilvio SgtSilvio changed the title Add methods consuming List for Subscribe/UnsubscribeBuilder Add methods consuming Collection for Subscribe/UnsubscribeBuilder Nov 9, 2018
@SgtSilvio SgtSilvio modified the milestones: 1.0 Code, 1.1 Feb 6, 2019
@SgtSilvio SgtSilvio modified the milestones: 1.1, 1.2 May 29, 2019
@MicWalter MicWalter self-assigned this Jun 9, 2019
@SgtSilvio
Copy link
Member Author

Resolved by #290

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants