com.r3corda.node.services.api / AbstractNodeService

# AbstractNodeService

`abstract class AbstractNodeService : SingletonSerializeAsToken`

Abstract superclass for services that a node can host, which provides helper functions.

### Constructors

<init> | `AbstractNodeService(net: MessagingService, networkMapCache: NetworkMapCache)` Abstract superclass for services that a node can host, which provides helper functions.

### Properties

net | `val net: MessagingService`
networkMapCache | `val networkMapCache: NetworkMapCache`

### Functions

addMessageHandler | `fun <Q : ServiceRequestMessage, R : Any> addMessageHandler(topic: String, handler: (Q) -> R, exceptionConsumer: (Message, Exception) -> Unit): Unit` Register a handler for a message topic. In comparison to using net.addMessageHandler() this manages a lot of common boilerplate code. Exceptions are caught and passed to the provided consumer. If you just want a simple acknowledgement response with no content, use com.r3corda.core.messaging.Ack. `fun <Q : ServiceRequestMessage, R : Any> addMessageHandler(topic: String, handler: (Q) -> R): Unit` Register a handler for a message topic. In comparison to using net.addMessageHandler() this manages a lot of common boilerplate code. Exceptions are propagated to the messaging layer. If you just want a simple acknowledgement response with no content, use com.r3corda.core.messaging.Ack.

### Inherited Functions

toToken | `open fun toToken(context: SerializeAsTokenContext): SerializationToken`

### Inheritors

InMemoryNetworkMapService | `class InMemoryNetworkMapService : NetworkMapService, AbstractNodeService`
NotaryService | `abstract class NotaryService : AbstractNodeService` A Notary service acts as the final signer of a transaction ensuring two things:
Service | `class Service : AcceptsFileUpload, AbstractNodeService` The Service that wraps Oracle and handles messages/network interaction/request scrubbing.
Service | `class Service : AbstractNodeService` A service that monitors the network for requests for changing the notary of a state, and immediately runs the NotaryChangeProtocol if the auto-accept criteria are met.
Service | `class Service : AbstractNodeService` This class sets up network message handlers for requests from peers for data keyed by hash. It is a piece of simple glue that sits between the network layer and the database layer.
WalletMonitorService | `class WalletMonitorService : AbstractNodeService` Service which allows external clients to monitor the wallet service and state machine manager, as well as trigger actions within the node. The service also sends requests for user input back to clients, for example to enter additional information while a protocol runs, or confirm an action.