Packages

  • package root
    Definition Classes
    root
  • package csw
    Definition Classes
    root
  • package messages

    This project is intended to hold reusable models and messages used throughout the csw source code.

    Messages

    This project is intended to hold reusable models and messages used throughout the csw source code.

    This also provides out of the box support to cater to the diverse communication requirements. Consumer of this library will be able to create Commands, Events, States to store ParameterSets.

    Imp Packages

    Commands and Events

    This packages contains classes, traits and models used to create *commands* and *events*. These are all based on type-safe keys and items (a set of values with optional units). Each key has a specific type and the key's values must be of that type.

    Two types of csw.messages.commands.Command are supported:

    Following are the concrete commands supported by csw:

    Two types of csw.messages.events.Event are supported:

    Another important feature provided by *commands* package is csw.messages.commands.matchers.Matcher One of the use case for using matcher is when Assembly sends csw.messages.CommandMessage.Oneway command to HCD and in response to this command HCD keeps publishing its current state. Then Assembly can use Matcher with the matching definition as provided by csw.messages.commands.matchers.StateMatcher to match against the current states published by HCD.

    Location and Framework

    These packages contain reusable classes, traits and models. We are keeping all the models which are getting transferred over the wire and requires serialization and deserialization in csw-messages project. All the models are marked with csw.messages.TMTSerializable. csw.messages.TMTSerializable is a marker trait which extends scala.Serializable. This is configured to use kryo serialization. Also these models are being shared between multiple projects. csw-location, csw-framework and csw-logging depends on csw-messages project which uses these models.

    Location Service uses csw.messages.location.Connection model to register component/container of type:

    When you resolve/find a csw.messages.location.Connection, you get csw.messages.location.Location in return which can be one of below type:

    Framework package contains following actor messages:

    Params

    This package supports serialization and deserialization of commands, events and state variables in following formats:

    Scala and Java APIs

    All the param and event classes are immutable. The set methods return a new instance of the object with a new item added and the get methods return an Option, in case the Key is not found. There are also value methods that return a value directly, throwing an exception if the key or value is not found.

    Key Types

    A set of standard key types and matching items are defined. Each key accepts one or more values of the given type.

    Following csw.messages.params.generics.KeyType are supported by csw:

    +--------------+-------------------------+---------------------------+
    |  Primitive   |      Scala KeyType      |       Java KeyType        |
    +--------------+-------------------------+---------------------------+
    | Boolean      | KeyType.BooleanKey      | JKeyTypes.BooleanKey      |
    | Character    | KeyType.CharKey         | JKeyTypes.JCharKey        |
    | Byte         | KeyType.ByteKey         | JKeyTypes.ByteKey         |
    | Short        | KeyType.ShortKey        | JKeyTypes.ShortKey        |
    | Long         | KeyType.LongKey         | JKeyTypes.LongKey         |
    | Int          | KeyType.IntKey          | JKeyTypes.IntKey          |
    | Float        | KeyType.FloatKey        | JKeyTypes.FloatKey        |
    | Double       | KeyType.DoubleKey       | JKeyTypes.DoubleKey       |
    | String       | KeyType.StringKey       | JKeyTypes.StringKey       |
    | Timestamp    | KeyType.TimestampKey    | JKeyTypes.TimestampKey    |
    | ----------   | ----------              | ----------                |
    | ByteArray    | KeyType.ByteArrayKey    | JKeyTypes.ByteArrayKey    |
    | ShortArray   | KeyType.ShortArrayKey   | JKeyTypes.ShortArrayKey   |
    | LongArray    | KeyType.LongArrayKey    | JKeyTypes.LongArrayKey    |
    | IntArray     | KeyType.IntArrayKey     | JKeyTypes.IntArrayKey     |
    | FloatArray   | KeyType.FloatArrayKey   | JKeyTypes.FloatArrayKey   |
    | DoubleArray  | KeyType.DoubleArrayKey  | JKeyTypes.DoubleArrayKey  |
    | ----------   | ----------              | ----------                |
    | ByteMatrix   | KeyType.ByteMatrixKey   | JKeyTypes.ByteMatrixKey   |
    | ShortMatrix  | KeyType.ShortMatrixKey  | JKeyTypes.ShortMatrixKey  |
    | LongMatrix   | KeyType.LongMatrixKey   | JKeyTypes.LongMatrixKey   |
    | IntMatrix    | KeyType.IntMatrixKey    | JKeyTypes.IntMatrixKey    |
    | FloatMatrix  | KeyType.FloatMatrixKey  | JKeyTypes.FloatMatrixKey  |
    | DoubleMatrix | KeyType.DoubleMatrixKey | JKeyTypes.DoubleMatrixKey |
    | ----------   | ----------              | ----------                |
    | Choice       | KeyType.ChoiceKey       | JKeyTypes.ChoiceKey       |
    | RaDec        | KeyType.RaDecKey        | JKeyTypes.RaDecKey        |
    | Struct       | KeyType.StructKey       | JKeyTypes.StructKey       |
    +--------------+-------------------------+---------------------------+

    Detailed information about creating Keys and Parameters can be found here: https://tmtsoftware.github.io/csw-prod/services/messages/keys-parameters.html

    Detailed information about creating commands can be found here: https://tmtsoftware.github.io/csw-prod/services/messages/commands.html

    Detailed information about creating events can be found here: https://tmtsoftware.github.io/csw-prod/services/messages/events.html

    Definition Classes
    csw
  • package commands
    Definition Classes
    messages
  • package matchers
    Definition Classes
    commands
  • DemandMatcher
  • DemandMatcherAll
  • MatchAborted
  • Matcher
  • MatcherResponse
  • MatcherResponses
  • PresenceMatcher
  • StateMatcher

class Matcher extends AnyRef

The matcher uses the matching definition as provided by csw.messages.commands.matchers.StateMatcher to match against the state generated by subscribing a source of that state

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Matcher
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new Matcher(currentStateSource: ActorRef[ComponentStateSubscription], stateMatcher: StateMatcher)(implicit ec: ExecutionContext, mat: Materializer)

    currentStateSource

    source of the state which needs to be matched against the current state specified in state matcher

    stateMatcher

    the matcher definition to execute

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. def jStart: CompletableFuture[MatcherResponse]

    Start the matching process from Java application

    Start the matching process from Java application

    returns

    the result of matching as a CompletableFuture of MatcherResponse

  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. def start: Future[MatcherResponse]

    Start the matching process

    Start the matching process

    returns

    the result of matching as a Future value of MatcherResponse

  17. def stop(): Unit

    Abort the stream of subscribed state in case matching is no longer required.

    Abort the stream of subscribed state in case matching is no longer required. Eg. when composing operations in command execution, the matching was started before knowing the actual result of validation and the validation failed.

    val matcherResponseF: Future[MatcherResponse] = matcher.start
    
    val eventualCommandResponse: Future[CommandResponse] = async {
      val initialResponse = await(assemblyComponent.oneway(setupWithMatcher))
      initialResponse match {
        case _: Accepted ⇒
          val matcherResponse = await(matcherResponseF)
          matcherResponse match {
            case MatchCompleted  ⇒ Completed(setupWithMatcher.runId)
            case MatchFailed(ex) ⇒ Error(setupWithMatcher.runId, ex.getMessage)
          }
        case invalid: Invalid ⇒
          matcher.stop()
          invalid
        case x ⇒ x
      }
  18. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  19. def toString(): String
    Definition Classes
    AnyRef → Any
  20. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped