private void handleEstablished(ChaincodeMessage message) { if (message.getType() == READY) { this.state = CCState.READY; if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received READY: ready for invocations", message.getTxid())); } } else { if (logger.isLoggable(Level.WARNING)) { logger.warning(format("[%-8.8s] Received %s: cannot handle", message.getTxid(), message.getType())); } } }
private void handleCreated(ChaincodeMessage message) { if (message.getType() == REGISTERED) { this.state = CCState.ESTABLISHED; if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received REGISTERED: moving to established state", message.getTxid())); } } else { if (logger.isLoggable(Level.WARNING)) { logger.warning(format("[%-8.8s] Received %s: cannot handle", message.getTxid(), message.getType())); } } }
public void onChaincodeMessage(ChaincodeMessage chaincodeMessage) { if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] %s", chaincodeMessage.getTxid(), toJsonString(chaincodeMessage))); } handleChaincodeMessage(chaincodeMessage); }
case RESPONSE: if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received RESPONSE: publishing to channel", message.getTxid())); case ERROR: if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received ERROR: publishing to channel", message.getTxid())); case INIT: if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received INIT: invoking chaincode init", message.getTxid())); case TRANSACTION: if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received TRANSACTION: invoking chaincode", message.getTxid())); default: if (logger.isLoggable(Level.WARNING)) { logger.warning(format("[%-8.8s] Received %s: cannot handle", message.getTxid(), message.getType()));
hash = (53 * hash) + getPayload().hashCode(); hash = (37 * hash) + TXID_FIELD_NUMBER; hash = (53 * hash) + getTxid().hashCode(); if (hasProposal()) { hash = (37 * hash) + PROPOSAL_FIELD_NUMBER;
markIsTransaction(message.getChannelId(), message.getTxid(), true); final ChaincodeStub stub = new ChaincodeStubImpl(message.getChannelId(), message.getTxid(), this, input.getArgsList(), message.getProposal()); logger.severe(format("[%-8.8s] Invoke failed. Sending %s", message.getTxid(), ERROR)); queueOutboundChaincodeMessage(newErrorEventMessage(message.getChannelId(), message.getTxid(), result.getMessage(), stub.getEvent())); } else { logger.fine(format(format("[%-8.8s] Invoke succeeded. Sending %s", message.getTxid(), COMPLETED))); queueOutboundChaincodeMessage(newCompletedEventMessage(message.getChannelId(), message.getTxid(), result, stub.getEvent())); logger.severe(format("[%-8.8s] Invoke failed. Sending %s: %s", message.getTxid(), ERROR, e)); queueOutboundChaincodeMessage(newErrorEventMessage(message.getChannelId(), message.getTxid(), e)); } finally { deleteIsTransaction(message.getChannelId(), message.getTxid());
public Builder mergeFrom(org.hyperledger.fabric.protos.peer.ChaincodeShim.ChaincodeMessage other) { if (other == org.hyperledger.fabric.protos.peer.ChaincodeShim.ChaincodeMessage.getDefaultInstance()) return this; if (other.type_ != 0) { setTypeValue(other.getTypeValue()); } if (other.hasTimestamp()) { mergeTimestamp(other.getTimestamp()); } if (other.getPayload() != com.google.protobuf.ByteString.EMPTY) { setPayload(other.getPayload()); } if (!other.getTxid().isEmpty()) { txid_ = other.txid_; onChanged(); } if (other.hasProposal()) { mergeProposal(other.getProposal()); } if (other.hasChaincodeEvent()) { mergeChaincodeEvent(other.getChaincodeEvent()); } if (!other.getChannelId().isEmpty()) { channelId_ = other.channelId_; onChanged(); } onChanged(); return this; }
private synchronized void handleChaincodeMessage(ChaincodeMessage message) { if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Handling ChaincodeMessage of type: %s, handler state %s", message.getTxid(), message.getType(), this.state)); } if (message.getType() == KEEPALIVE) { if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received KEEPALIVE: nothing to do", message.getTxid())); } return; } switch (this.state) { case CREATED: handleCreated(message); break; case ESTABLISHED: handleEstablished(message); break; case READY: handleReady(message); break; default: if (logger.isLoggable(Level.WARNING)) { logger.warning(format("[%-8.8s] Received %s: cannot handle", message.getTxid(), message.getType())); } break; } }
private ByteString invokeChaincodeSupport(final ChaincodeMessage message) { final String channelId = message.getChannelId(); final String txId = message.getTxid();
/** * * @return Chaincode response packed as payload inside COMPLETE message packed as payload inside RESPONSE message */ @Override public List<ChaincodeShim.ChaincodeMessage> next() { ByteString chaincodeResponse = ProposalResponsePackage.Response.newBuilder() .setStatus(Chaincode.Response.Status.SUCCESS.getCode()) .setMessage("OK") .build().toByteString(); ByteString completePayload = ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.COMPLETED) .setChannelId(orgMsg.getChannelId()) .setTxid(orgMsg.getTxid()) .setPayload(chaincodeResponse) .build().toByteString(); List<ChaincodeShim.ChaincodeMessage> list = new ArrayList<>(); list.add(ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.RESPONSE) .setChannelId(orgMsg.getChannelId()) .setTxid(orgMsg.getTxid()) .setPayload(completePayload) .build()); return list; } }
/** * Generate response message that list of (key => value) pairs * @return */ @Override public List<ChaincodeShim.ChaincodeMessage> next() { List<KvQueryResult.KV> keyValues = Arrays.asList(values).stream(). map(x -> KvQueryResult.KV.newBuilder() .setKey(x) .setValue(ByteString.copyFromUtf8(x + " Value")) .build() ).collect(toList()); ChaincodeShim.QueryResponse.Builder builder = ChaincodeShim.QueryResponse.newBuilder(); builder.setHasMore(hasNext); keyValues.stream().forEach(kv -> builder.addResults(ChaincodeShim.QueryResultBytes.newBuilder().setResultBytes(kv.toByteString()))); ByteString rangePayload = builder.build().toByteString(); List<ChaincodeShim.ChaincodeMessage> list = new ArrayList<>(); list.add(ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.RESPONSE) .setChannelId(orgMsg.getChannelId()) .setTxid(orgMsg.getTxid()) .setPayload(rangePayload) .build()); return list; } }
@Override public List<ChaincodeShim.ChaincodeMessage> next() { List<KvQueryResult.KeyModification> keyModifications = Arrays.asList(values).stream(). map(x -> KvQueryResult.KeyModification.newBuilder() .setTxId(x) .setValue(ByteString.copyFromUtf8(x + " Value")) .build() ).collect(toList()); ChaincodeShim.QueryResponse.Builder builder = ChaincodeShim.QueryResponse.newBuilder(); builder.setHasMore(hasNext); keyModifications.stream().forEach(kv -> builder.addResults(ChaincodeShim.QueryResultBytes.newBuilder().setResultBytes(kv.toByteString()))); ByteString historyPayload = builder.build().toByteString(); List<ChaincodeShim.ChaincodeMessage> list = new ArrayList<>(); list.add(ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.RESPONSE) .setChannelId(orgMsg.getChannelId()) .setTxid(orgMsg.getTxid()) .setPayload(historyPayload) .build()); return list; } }
/** * * @return RESPONSE message with empty payload */ @Override public List<ChaincodeShim.ChaincodeMessage> next() { List<ChaincodeShim.ChaincodeMessage> list = new ArrayList<>(); list.add(ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.RESPONSE) .setChannelId(orgMsg.getChannelId()) .setTxid(orgMsg.getTxid()) .build()); return list; } }
@Override public List<ChaincodeShim.ChaincodeMessage> next() { ByteString getPayload = ByteString.copyFromUtf8(val); List<ChaincodeShim.ChaincodeMessage> list = new ArrayList<>(); list.add(ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.RESPONSE) .setChannelId(orgMsg.getChannelId()) .setTxid(orgMsg.getTxid()) .setPayload(getPayload) .build()); return list; } }
private synchronized void sendChannel(ChaincodeMessage message) { String key = getTxKey(message.getChannelId(), message.getTxid()); if (!responseChannel.containsKey(key)) { throw new IllegalStateException(format("[%-8.8s] sendChannel does not exist", message.getTxid())); } responseChannel.get(key).add(message); }
@Override public List<ChaincodeShim.ChaincodeMessage> next() { List<ChaincodeShim.ChaincodeMessage> list = new ArrayList<>(); list.add(ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.RESPONSE) .setChannelId(orgMsg.getChannelId()) .setTxid(orgMsg.getTxid()) .build()); return list; } }
/** * <code>optional string txid = 4;</code> */ public Builder clearTxid() { txid_ = getDefaultInstance().getTxid(); onChanged(); return this; } /**
private static String toJsonString(ChaincodeMessage message) { try { return JsonFormat.printer().print(message); } catch (InvalidProtocolBufferException e) { return String.format("{ Type: %s, TxId: %s }", message.getType(), message.getTxid()); } }
@Override public List<ChaincodeShim.ChaincodeMessage> next() { List<ChaincodeShim.ChaincodeMessage> list = new ArrayList<>(); list.add(ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.RESPONSE) .setChannelId(orgMsg.getChannelId()) .setTxid(orgMsg.getTxid()) .build()); return list; } }