mirror of
https://github.com/corda/corda.git
synced 2025-06-14 05:08:18 +00:00
Add node-api, split minimal node functionality, OutOfProcessTransactionVerifierService
This commit is contained in:
@ -2,7 +2,6 @@ package net.corda.nodeapi
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting
|
||||
import com.google.common.net.HostAndPort
|
||||
import net.corda.nodeapi.config.SSLConfiguration
|
||||
import net.corda.core.crypto.CompositeKey
|
||||
import net.corda.core.messaging.MessageRecipientGroup
|
||||
import net.corda.core.messaging.MessageRecipients
|
||||
@ -10,6 +9,7 @@ import net.corda.core.messaging.SingleMessageRecipient
|
||||
import net.corda.core.read
|
||||
import net.corda.core.serialization.CordaSerializable
|
||||
import net.corda.core.serialization.SingletonSerializeAsToken
|
||||
import net.corda.nodeapi.config.SSLConfiguration
|
||||
import java.security.KeyStore
|
||||
|
||||
/**
|
||||
|
59
node-api/src/main/kotlin/net/corda/nodeapi/VerifierApi.kt
Normal file
59
node-api/src/main/kotlin/net/corda/nodeapi/VerifierApi.kt
Normal file
@ -0,0 +1,59 @@
|
||||
package net.corda.nodeapi
|
||||
|
||||
import net.corda.core.serialization.deserialize
|
||||
import net.corda.core.serialization.serialize
|
||||
import net.corda.core.transactions.LedgerTransaction
|
||||
import org.apache.activemq.artemis.api.core.SimpleString
|
||||
import org.apache.activemq.artemis.api.core.client.ClientMessage
|
||||
import org.apache.activemq.artemis.reader.MessageUtil
|
||||
|
||||
object VerifierApi {
|
||||
val VERIFIER_USERNAME = "SystemUsers/Verifier"
|
||||
val VERIFICATION_REQUESTS_QUEUE_NAME = "verifier.requests"
|
||||
val VERIFICATION_RESPONSES_QUEUE_NAME_PREFIX = "verifier.responses"
|
||||
private val VERIFICATION_ID_FIELD_NAME = "id"
|
||||
private val RESULT_EXCEPTION_FIELD_NAME = "result-exception"
|
||||
|
||||
data class VerificationRequest(
|
||||
val verificationId: Long,
|
||||
val transaction: LedgerTransaction,
|
||||
val responseAddress: SimpleString
|
||||
) {
|
||||
companion object {
|
||||
fun fromClientMessage(message: ClientMessage): VerificationRequest {
|
||||
return VerificationRequest(
|
||||
message.getLongProperty(VERIFICATION_ID_FIELD_NAME),
|
||||
ByteArray(message.bodySize).apply { message.bodyBuffer.readBytes(this) }.deserialize(),
|
||||
MessageUtil.getJMSReplyTo(message)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun writeToClientMessage(message: ClientMessage) {
|
||||
message.putLongProperty(VERIFICATION_ID_FIELD_NAME, verificationId)
|
||||
message.writeBodyBufferBytes(transaction.serialize().bytes)
|
||||
MessageUtil.setJMSReplyTo(message, responseAddress)
|
||||
}
|
||||
}
|
||||
|
||||
data class VerificationResponse(
|
||||
val verificationId: Long,
|
||||
val exception: Throwable?
|
||||
) {
|
||||
companion object {
|
||||
fun fromClientMessage(message: ClientMessage): VerificationResponse {
|
||||
return VerificationResponse(
|
||||
message.getLongProperty(VERIFICATION_ID_FIELD_NAME),
|
||||
message.getBytesProperty(RESULT_EXCEPTION_FIELD_NAME)?.deserialize()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun writeToClientMessage(message: ClientMessage) {
|
||||
message.putLongProperty(VERIFICATION_ID_FIELD_NAME, verificationId)
|
||||
if (exception != null) {
|
||||
message.putBytesProperty(RESULT_EXCEPTION_FIELD_NAME, exception.serialize().bytes)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user