English

SINETStream ユーザガイド:Android版SINETStreamライブラリ

目次

1. 概要
2. Android版SINETStreamライブラリの位置づけ
3. 総称型(Generics)の利用
4. Android版SINETStreamライブラリのAPI詳細
4.1 SinetStreamReader
4.2 SinetStreamReaderStream
4.3 SinetStreamReaderBytes
4.4 SinetStreamWriter
4.5 SinetStreamWriterStream
4.6 SinetStreamWriterBytes

1. 概要

Android版SINETStreamライブラリが提供する公開API関数群およびインタフェース群に関して述べる。

2. Android版SINETStreamライブラリの位置づけ

ユーザアプリケーションがAndroid版SINETStreamライブラリを用いてMQTTメッセージの送受信を行う場合、概略以下のような3階層構成となる。 図中、二重線(=)で区切られた中央部分がAndroid版SINETStreamライブラリである。

===========================================================================
< User Application >

      #---------------------------+     #---------------------------+
      | UserAPP (Publisher)       |     | UserApp (Subscriber)      |
      +---------------------------+     +---------------------------+
              |              A                  |              A
==============|==============|==================|==============|===========
< SINETStream for Android >  |                  |              |
              |              |                  |              |
              V              |                  V              |
      +-------------+ +-----------+     +-------------+ +-----------+
      | SinetStream | | WriterXXX |     | SinetStream | | WriterXXX |
      | WriterXXX   | | Listener  |     | ReaderXXX   | | Listener  |
      +-------------+ +-----------+     +-------------+ +-----------+
                ...                                  ...
      +---------------------------+     +---------------------------+
      | MqttAsyncMessageWriter    |     | MqttAsyncMessageReader    |
      +---------------------------+     +---------------------------+
                 |                                    A
=================|====================================|====================
< Paho MQTT library for Android >                     |
                 |                                    |
                 V                                    |
      +---------------------------+     +---------------------------+
      | MqttAndroidClient         |     | MqttAndroidClient         |
      +---------------------------+     +---------------------------+
      +-------------------------------------------------------------+
      | MqttService                                                 |
      +-------------------------------------------------------------+
                 |                                    A
                 V                                    |
           MQTT messages                        MQTT messages

3. 総称型(Generics)の利用

ReaderWriterを表現する基本クラスは総称型(Generics)の抽象クラスとする。 これらを文字列型やバイト列型など特定のデータ型用に拡張した具象クラスを併せて用意し、ユーザアプリケーションは用途に応じて後者を使うことを想定する。

例えば、SinetStreamWriter<T>クラスで定義するメッセージ発行メソッドpublish(T data)は「総称型」の引数dataを取る。

      public abstract class
      SinetStreamWriter<T>
      +---------------------+
      | initialize()        |
      | terminate()         |
      | publish(T data)     |
      | ...                 |
      +---------------------+

このSinetStreamWriter<T>クラスを「文字列型」として拡張したSinetStreamWriterStringクラスでは、上記publishの引数は「文字列型」を取るものとして再定義される。 同様に、「バイト列型」として拡張したSinetStreamWriterBytesの場合はpublishの引数は「バイト列型」を取るものとして再定義される。

       public class
       SinetStreamWriterString
         extends SinetStreamWriter<String>
      +-------------------------+
      |                         |
      |  public abstract class  |
      |  SinetStreamWriter<T>   |
      | +---------------------+ |
      | | initialize()        | |
      | | terminate()         | |
      | | publish(T data)   <------ publish(String data)
      | | ...                 | |
      | +---------------------+ |
      +-------------------------+

       public class
       SinetStreamWriterBytes
         extends SinetStreamWriter<byte[]>
      +-------------------------+
      |                         |
      |  public abstract class  |
      |  SinetStreamWriter<T>   |
      | +---------------------+ |
      | | initialize()        | |
      | | terminate()         | |
      | | publish(T data)   <------ publish(byte[] data)
      | | ...                 | |
      | +---------------------+ |
      +-------------------------+

インタフェース定義に関しても考え方は同様である。 例えば、インタフェースSinetStreamReaderListener<T>は、受信メッセージ通知用のコールバック関数onReceiveDataの第3引数で「総称型」のdataを持つ。 これを文字列に拡張したSinetStreamReaderStringListenerでは、同じonReceiveDataの第3引数は「文字列型」のdataと再定義される。

       public interface
       SinetStreamReaderStringListener
         extends SinetStreamReaderListener<String>
      +------------------------------------------+
      |                                          |
      |  public interface                        |
      |  SinetStreamReaderListener<T>            |
      | +--------------------------------------+ |
      | | ...                                  | |
      | | void                                 | |
      | | onReceiveData(@NonNull String topic, | |
      | |               long timestamp,        | |
      | |               @NonNull T data);   <-------- "@NonNull String data"
      | | ...                                  | |
      | +--------------------------------------+ |
      +------------------------------------------+

4. Android版SINETStreamライブラリのAPI詳細

4.1 SinetStreamReader

受信側の抽象クラスおよびインタフェース: SinetStreamReader

4.2 SinetStreamReaderStream

文字列型データ受信用の派生クラスおよびインタフェース: SinetStreamReaderStream

4.3 SinetStreamReaderBytes

バイト型データ受信用の派生クラスおよびインタフェース: SinetStreamReaderBytes

4.4 SinetStreamWriter

送信側の抽象クラスおよびインタフェース: SinetStreamWriter

4.5 SinetStreamWriterStream

文字列型データ送信用の派生クラスおよびインタフェース: SinetStreamWriterStream

4.6 SinetStreamWriterBytes

バイト列型データ送信用の派生クラスおよびインタフェース: SinetStreamWriterBytes