final ChaincodeInput input = ChaincodeInput.parseFrom(message.getPayload()); 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] Init failed. Sending %s", message.getTxid(), ERROR)); queueOutboundChaincodeMessage(newErrorEventMessage(message.getChannelId(), message.getTxid(), result.getMessage(), stub.getEvent())); } else { logger.fine(format(format("[%-8.8s] Init succeeded. Sending %s", message.getTxid(), COMPLETED))); queueOutboundChaincodeMessage(newCompletedEventMessage(message.getChannelId(), message.getTxid(), result, stub.getEvent())); logger.severe(format("[%-8.8s] Init failed. Sending %s: %s", message.getTxid(), ERROR, e)); queueOutboundChaincodeMessage(newErrorEventMessage(message.getChannelId(), message.getTxid(), e)); } finally { deleteIsTransaction(message.getChannelId(), message.getTxid());
@Override public List<ChaincodeShim.ChaincodeMessage> next() { List<ChaincodeShim.ChaincodeMessage> list = new ArrayList<>(); list.add(ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.REGISTERED) .build()); list.add(ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.READY) .build()); return list; } }
private void handleReady(ChaincodeMessage message) { switch (message.getType()) { 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()));
assertThat(server.getLastMessageSend().getType(), is(RESPONSE)); assertThat(server.getLastMessageRcvd().getType(), is(COMPLETED)); assertThat(ProposalResponsePackage.Response.parseFrom(server.getLastMessageRcvd().getPayload()).getMessage(), is("OK response2")); assertThat(server.getLastMessageSend().getType(), is(RESPONSE)); assertThat(server.getLastMessageRcvd().getType(), is(COMPLETED)); assertThat(ProposalResponsePackage.Response.parseFrom(server.getLastMessageRcvd().getPayload()).getMessage(), is("OK response2"));
assertThat(server.getLastMessageSend().getType(), is(RESPONSE)); assertThat(server.getLastMessageRcvd().getType(), is(COMPLETED)); assertThat(ProposalResponsePackage.Response.parseFrom(server.getLastMessageRcvd().getPayload()).getMessage(), is("OK response2")); assertThat(server.getLastMessageSend().getType(), is(RESPONSE)); assertThat(server.getLastMessageRcvd().getType(), is(COMPLETED)); assertThat(ProposalResponsePackage.Response.parseFrom(server.getLastMessageRcvd().getPayload()).getMessage(), is("OK response2"));
Handler handler = new Handler(chaincodeId, cb); ChaincodeShim.ChaincodeMessage msgReg = ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.REGISTERED) .build(); Assert.assertEquals("Not correct handler state", Handler.CCState.ESTABLISHED, handler.getState()); ChaincodeShim.ChaincodeMessage msgReady = ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.READY) .build(); ChaincodeShim.ChaincodeMessage unkonwnMessage = ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.PUT_STATE) .setChannelId("mychannel") ChaincodeShim.ChaincodeMessage keepAliveMessage = ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.KEEPALIVE) .setChannelId("mychannel") Assert.assertEquals("Not correct handler state", Handler.CCState.READY, handler.getState()); ChaincodeShim.ChaincodeMessage errorMsg = ChaincodeShim.ChaincodeMessage.newBuilder() .setType(ChaincodeShim.ChaincodeMessage.Type.ERROR) .setChannelId("mychannel")
checkScenarioStepEnded(server, 3, 5000, TimeUnit.MILLISECONDS); assertThat(server.getLastMessageSend().getType(), is(RESPONSE)); assertThat(server.getLastMessageRcvd().getType(), is(COMPLETED)); assertThat(ProposalResponsePackage.Response.parseFrom(server.getLastMessageRcvd().getPayload()).getMessage(), is("OK response1")); assertThat(server.getLastMessageSend().getType(), is(RESPONSE)); assertThat(server.getLastMessageRcvd().getType(), is(COMPLETED)); assertThat(ProposalResponsePackage.Response.parseFrom(server.getLastMessageRcvd().getPayload()).getMessage(), is("OK response2"));
assertThat(server.getLastMessageSend().getType(), is(RESPONSE)); assertThat(server.getLastMessageRcvd().getType(), is(COMPLETED)); assertThat(ProposalResponsePackage.Response.parseFrom(server.getLastMessageRcvd().getPayload()).getMessage(), is("OK response2"));
checkScenarioStepEnded(server, 2, 5000, TimeUnit.MILLISECONDS); assertThat(server.getLastMessageSend().getType(), is(INIT)); assertThat(server.getLastMessageRcvd().getType(), is(ERROR)); assertThat(server.getLastMessageRcvd().getPayload().toStringUtf8(), is("Wrong response1")); assertThat(server.getLastMessageSend().getType(), is(TRANSACTION)); assertThat(server.getLastMessageRcvd().getType(), is(ERROR)); assertThat(server.getLastMessageRcvd().getPayload().toStringUtf8(), is("Wrong response2"));
.computeMessageSize(2, getTimestamp()); .computeBytesSize(3, payload_); if (!getTxidBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, txid_); .computeMessageSize(5, getProposal()); .computeMessageSize(6, getChaincodeEvent()); if (!getChannelIdBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, channelId_);
final ChaincodeMessage responseMessage = ChaincodeMessage.parseFrom(payload); logger.fine(format("[%-8.8s] %s response received from other chaincode.", txId, responseMessage.getType())); if (responseMessage.getType() == COMPLETED) { return toChaincodeResponse(Response.parseFrom(responseMessage.getPayload())); } else { return newErrorChaincodeResponse(responseMessage.getPayload().toStringUtf8());
result = result && (hasTimestamp() == other.hasTimestamp()); if (hasTimestamp()) { result = result && getTimestamp() .equals(other.getTimestamp()); result = result && getPayload() .equals(other.getPayload()); result = result && getTxid() .equals(other.getTxid()); result = result && (hasProposal() == other.hasProposal()); if (hasProposal()) { result = result && getProposal() .equals(other.getProposal()); result = result && (hasChaincodeEvent() == other.hasChaincodeEvent()); if (hasChaincodeEvent()) { result = result && getChaincodeEvent() .equals(other.getChaincodeEvent()); result = result && getChannelId() .equals(other.getChannelId()); return result;
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; } }
final ChaincodeInput input = ChaincodeInput.parseFrom(message.getPayload()); 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());
hash = (19 * hash) + getDescriptorForType().hashCode(); hash = (37 * hash) + TYPE_FIELD_NUMBER; hash = (53 * hash) + type_; if (hasTimestamp()) { hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; hash = (53 * hash) + getTimestamp().hashCode(); hash = (53 * hash) + getPayload().hashCode(); hash = (37 * hash) + TXID_FIELD_NUMBER; hash = (53 * hash) + getTxid().hashCode(); if (hasProposal()) { hash = (37 * hash) + PROPOSAL_FIELD_NUMBER; hash = (53 * hash) + getProposal().hashCode(); if (hasChaincodeEvent()) { hash = (37 * hash) + CHAINCODE_EVENT_FIELD_NUMBER; hash = (53 * hash) + getChaincodeEvent().hashCode(); hash = (53 * hash) + getChannelId().hashCode(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash;
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; }
/** * * @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; } }
private ByteString invokeChaincodeSupport(final ChaincodeMessage message) { final String channelId = message.getChannelId(); final String txId = message.getTxid(); logger.fine(format("[%-8.8s] %s response received.", txId, response.getType())); switch (response.getType()) { case RESPONSE: if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Successful response received.", txId)); return response.getPayload(); case ERROR: logger.severe(format("[%-8.8s] Unsuccessful response received.", txId)); throw new RuntimeException(format("[%-8.8s]Unsuccessful response received.", txId)); default: logger.severe(format("[%-8.8s] Unexpected %s response received. Expected %s or %s.", txId, response.getType(), RESPONSE, ERROR)); throw new RuntimeException(format("[%-8.8s]Unexpected %s response received. Expected %s or %s.", txId, response.getType(), RESPONSE, ERROR));
public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (type_ != org.hyperledger.fabric.protos.peer.ChaincodeShim.ChaincodeMessage.Type.UNDEFINED.getNumber()) { output.writeEnum(1, type_); } if (timestamp_ != null) { output.writeMessage(2, getTimestamp()); } if (!payload_.isEmpty()) { output.writeBytes(3, payload_); } if (!getTxidBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 4, txid_); } if (proposal_ != null) { output.writeMessage(5, getProposal()); } if (chaincodeEvent_ != null) { output.writeMessage(6, getChaincodeEvent()); } if (!getChannelIdBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 7, channelId_); } }