Search in sources :

Example 1 with EventLogRequestParams

use of org.fisco.bcos.channel.event.filter.EventLogRequestParams in project web3sdk by FISCO-BCOS.

the class Service method asyncSendRegisterEventLogFilterMessage.

/**
 * @param filter
 */
public void asyncSendRegisterEventLogFilterMessage(EventLogFilter filter) {
    ChannelRequest request = new ChannelRequest();
    request.setMessageID(newSeq());
    request.setToTopic("");
    request.setType((short) ChannelMessageType.CLIENT_REGISTER_EVENT_LOG.getType());
    EventLogRequestParams params = new EventLogRequestParams(filter.generateNewParams(), String.valueOf(getGroupId()), newSeq());
    logger.info(" registerID: {}, filterID: {}, params: {}", filter.getRegisterID(), filter.getFilterID(), params);
    try {
        request.setContent(params.toJsonString());
    } catch (JsonProcessingException e1) {
        filter.getCallback().onPushEventLog(EventLogFilterPushStatus.INVALID_PARAMS.getStatus(), null);
        eventLogFilterManager.removeFilter(filter.getRegisterID());
        return;
    }
    final String filterID = params.getFilterID();
    final String registerID = filter.getRegisterID();
    filter.setFilterID(filterID);
    final EventLogPushCallback callback0 = filter.getCallback();
    // register callback
    eventLogFilterManager.addCallback(params.getFilterID(), filter.getCallback());
    asyncSendChannelMessage2(request, new ChannelResponseCallback2() {

        @Override
        public void onResponseMessage(ChannelResponse response) {
            logger.info(" event filter callback response, registerID: {}, filterID: {}, seq: {}, error code: {},  content: {}", registerID, filterID, response.getMessageID(), response.getErrorCode(), response.getContent());
            try {
                if (0 == response.getErrorCode()) {
                    // receive response successfully
                    EventLogFilterPushResponse resp = ObjectMapperFactory.getObjectMapper().readValue(response.getContent(), EventLogFilterPushResponse.class);
                    if (resp.getResult() == 0) {
                        // node response ok, event log will be pushed soon
                        eventLogFilterManager.updateEventLogFilter(callback0.getFilter(), EventLogFilterStatus.EVENT_LOG_PUSHING, response.getCtx());
                    } else {
                        // node response not ok, callback to client
                        callback0.onPushEventLog(resp.getResult(), null);
                        eventLogFilterManager.removeFilterAndCallback(registerID, filterID);
                    }
                } else {
                    // register request send failed, waiting to be re-sent
                    eventLogFilterManager.updateEventLogFilter(callback0.getFilter(), EventLogFilterStatus.WAITING_REQUEST, null);
                    // remove register callback
                    eventLogFilterManager.removeCallback(filterID);
                }
            } catch (Exception e) {
                callback0.onPushEventLog(EventLogFilterPushStatus.OTHER_ERROR.getStatus(), null);
                eventLogFilterManager.removeFilterAndCallback(filter.getRegisterID(), filterID);
                logger.error(" event filter response message exception, filterID: {}, registerID: {}, exception message: {}", filterID, registerID, e.getMessage());
            }
        }
    });
}
Also used : EventLogRequestParams(org.fisco.bcos.channel.event.filter.EventLogRequestParams) ChannelRequest(org.fisco.bcos.channel.dto.ChannelRequest) EventLogPushCallback(org.fisco.bcos.channel.event.filter.EventLogPushCallback) ChannelResponse(org.fisco.bcos.channel.dto.ChannelResponse) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) EventLogFilterPushResponse(org.fisco.bcos.channel.event.filter.EventLogFilterPushResponse) KeyStoreException(java.security.KeyStoreException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) InvalidKeySpecException(java.security.spec.InvalidKeySpecException) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) CertificateException(java.security.cert.CertificateException) TransactionException(org.fisco.bcos.web3j.protocol.exceptions.TransactionException) NoSuchProviderException(java.security.NoSuchProviderException)

Aggregations

JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 IOException (java.io.IOException)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 KeyStoreException (java.security.KeyStoreException)1 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)1 NoSuchProviderException (java.security.NoSuchProviderException)1 CertificateException (java.security.cert.CertificateException)1 InvalidKeySpecException (java.security.spec.InvalidKeySpecException)1 ChannelRequest (org.fisco.bcos.channel.dto.ChannelRequest)1 ChannelResponse (org.fisco.bcos.channel.dto.ChannelResponse)1 EventLogFilterPushResponse (org.fisco.bcos.channel.event.filter.EventLogFilterPushResponse)1 EventLogPushCallback (org.fisco.bcos.channel.event.filter.EventLogPushCallback)1 EventLogRequestParams (org.fisco.bcos.channel.event.filter.EventLogRequestParams)1 TransactionException (org.fisco.bcos.web3j.protocol.exceptions.TransactionException)1