All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bdware.doip.event.ConsistencyCheckSubscriber Maven / Gradle / Ivy

The newest version!
package org.bdware.doip.event;

import com.google.gson.JsonObject;
import org.bdware.doip.codec.doipMessage.DoipMessage;
import org.bdware.doip.codec.doipMessage.DoipMessageFactory;
import org.bdware.doip.codec.doipMessage.DoipResponseCode;
import org.bdware.doip.endpoint.event.Subscriber;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;

public abstract class ConsistencyCheckSubscriber implements Subscriber {
    PersistencePublisher publisher;
    KVStore uncommitedMessage;
    KVStore topicList;

    public ConsistencyCheckSubscriber(KVStore topicList, KVStore messageStorage, PersistencePublisher publisher) {
        this.topicList = topicList;
        this.uncommitedMessage = messageStorage;
        this.publisher = publisher;
    }

    @Override
    public DoipMessage receiveData(String topicId, String publishId, DoipMessage request) {
        try {
            //TODO 存入storageManager,后续需要加入校验
            //如果校验通过了
            onReceiveData(topicId, publishId, request);
            //如果校验没通过,把它缓存起来,向客户端去请求丢失的数据?验证?
            //待前面的消息拿到了之后,调用onReceiveData
            DoipMessageFactory.DoipMessageBuilder builder = new DoipMessageFactory.DoipMessageBuilder();
            builder.createResponse(DoipResponseCode.Success, request).setBody(request.body.getEncodedData());
            return builder.create();
        } catch (Exception e) {
            ByteArrayOutputStream bo = new ByteArrayOutputStream();
            e.printStackTrace(new PrintStream(bo));
            DoipMessageFactory.DoipMessageBuilder builder = new DoipMessageFactory.DoipMessageBuilder();
            builder.createResponse(DoipResponseCode.UnKnownError, request);
            builder.setBody(bo.toByteArray());
            return builder.create();
        }
    }


    @Override
    public DoipMessage receiveHash(String topicId, String subscriberId, DoipMessage data) {
        //TODO
        throw new IllegalStateException("unsupported message type");
    }

    @Override
    public DoipMessage receiveDataAndHash(String topicId, String subscriberId, DoipMessage data) {
        //TODO
        throw new IllegalStateException("unsupported message type");
    }

    @Override
    public void receiveMerkelConfiguration(String topicId, JsonObject configuration, DoipMessage request) {
        //unsupported message type
        return;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy