@@ -3,6 +3,7 @@ package ai.ancf.lmos.wot.binding.websocket
33import com.fasterxml.jackson.annotation.*
44import com.fasterxml.jackson.databind.JsonNode
55import java.time.Instant
6+ import java.util.*
67
78object MessageTypes {
89 const val READ_PROPERTY = " readProperty"
@@ -54,26 +55,31 @@ object MessageTypes {
5455)
5556sealed interface WoTMessage {
5657 var thingId: String
58+ var messageId : String
5759 @get:JsonIgnore // Ignore the type property in the interface itself
5860 val messageType: String
5961}
6062
6163class Acknowledgement (
6264 override var thingId : String ,
65+ override var messageId : String = UUID .randomUUID().toString(),
66+ var correlationId : String? = null ,
6367 var message : String
6468) : WoTMessage {
6569 override val messageType: String = MessageTypes .ACKNOWLEDGEMENT
6670}
6771
6872data class ReadPropertyMessage (
6973 override var thingId : String ,
74+ override var messageId : String = UUID .randomUUID().toString(),
7075 var property : String
7176) : WoTMessage {
7277 override val messageType: String = MessageTypes .READ_PROPERTY
7378}
7479
7580data class WritePropertyMessage (
7681 override var thingId : String ,
82+ override var messageId : String = UUID .randomUUID().toString(),
7783 var property : String ,
7884 var data : JsonNode
7985) : WoTMessage {
@@ -82,6 +88,7 @@ data class WritePropertyMessage(
8288
8389data class ObservePropertyMessage (
8490 override var thingId : String ,
91+ override var messageId : String = UUID .randomUUID().toString(),
8592 var property : String ,
8693 var lastPropertyReading : Instant = Instant .now()
8794) : WoTMessage {
@@ -90,40 +97,47 @@ data class ObservePropertyMessage(
9097
9198data class UnobservePropertyMessage (
9299 override var thingId : String ,
100+ override var messageId : String = UUID .randomUUID().toString(),
93101 var property : String
94102) : WoTMessage {
95103 override val messageType: String = MessageTypes .UNOBSERVE_PROPERTY
96104}
97105
98106data class ReadAllPropertiesMessage (
99- override var thingId : String
107+ override var thingId : String ,
108+ override var messageId : String = UUID .randomUUID().toString(),
100109) : WoTMessage {
101110 override val messageType: String = MessageTypes .READ_ALL_PROPERTIES
102111}
103112
104113data class WriteAllPropertiesMessage (
105114 override var thingId : String ,
115+ override var messageId : String = UUID .randomUUID().toString(),
106116 var data : Map <String , JsonNode >
107117) : WoTMessage {
108118 override val messageType: String = MessageTypes .WRITE_ALL_PROPERTIES
109119}
110120
111121data class ReadMultiplePropertiesMessage (
112122 override var thingId : String ,
123+ override var messageId : String = UUID .randomUUID().toString(),
113124 var properties : List <String >
114125) : WoTMessage {
115126 override val messageType: String = MessageTypes .READ_MULTIPLE_PROPERTIES
116127}
117128
118129data class WriteMultiplePropertiesMessage (
119130 override var thingId : String ,
131+ override var messageId : String = UUID .randomUUID().toString(),
120132 var data : Map <String , JsonNode >
121133) : WoTMessage {
122134 override val messageType: String = MessageTypes .WRITE_MULTIPLE_PROPERTIES
123135}
124136
125137data class PropertyReadingMessage (
126138 override var thingId : String ,
139+ override var messageId : String = UUID .randomUUID().toString(),
140+ var correlationId : String? = null ,
127141 var property : String ,
128142 var data : JsonNode ,
129143 var timestamp : Instant = Instant .now()
@@ -133,6 +147,8 @@ data class PropertyReadingMessage(
133147
134148data class PropertyReadingsMessage (
135149 override var thingId : String ,
150+ override var messageId : String = UUID .randomUUID().toString(),
151+ var correlationId : String? = null ,
136152 var data : Map <String , JsonNode >,
137153 var timestamp : Instant = Instant .now()
138154) : WoTMessage {
@@ -141,6 +157,7 @@ data class PropertyReadingsMessage(
141157
142158data class InvokeActionMessage (
143159 override var thingId : String ,
160+ override var messageId : String = UUID .randomUUID().toString(),
144161 var action : String ,
145162 var input : JsonNode ? = null
146163) : WoTMessage {
@@ -158,6 +175,8 @@ enum class ActionStatus(val status: String) {
158175
159176data class ActionStatusMessage (
160177 override var thingId : String ,
178+ override var messageId : String = UUID .randomUUID().toString(),
179+ var correlationId : String? = null ,
161180 var action : String ,
162181 var status : ActionStatus = ActionStatus .COMPLETED , // Example: "pending", "completed", "failed"
163182 var output : JsonNode ?
@@ -167,13 +186,16 @@ data class ActionStatusMessage(
167186
168187data class ActionStatusesMessage (
169188 override var thingId : String ,
189+ override var messageId : String = UUID .randomUUID().toString(),
190+ var correlationId : String? = null ,
170191 var statuses : Map <String , String > // Map of action names to their statuses
171192) : WoTMessage {
172193 override val messageType: String = MessageTypes .ACTION_STATUSES
173194}
174195
175196data class Subscription (
176197 override var thingId : String ,
198+ override var messageId : String = UUID .randomUUID().toString(),
177199 var event : String ,
178200 var lastEvent : Instant = Instant .now()
179201) : WoTMessage {
@@ -182,6 +204,7 @@ data class Subscription(
182204
183205data class SubscribeEventMessage (
184206 override var thingId : String ,
207+ override var messageId : String = UUID .randomUUID().toString(),
185208 var event : String ,
186209 var lastEvent : Instant = Instant .now()
187210) : WoTMessage {
@@ -190,13 +213,16 @@ data class SubscribeEventMessage(
190213
191214data class UnsubscribeEventMessage (
192215 override var thingId : String ,
216+ override var messageId : String = UUID .randomUUID().toString(),
193217 var event : String
194218) : WoTMessage {
195219 override val messageType: String = MessageTypes .UNSUBSCRIBE_EVENT
196220}
197221
198222data class EventMessage (
199223 override var thingId : String ,
224+ override var messageId : String = UUID .randomUUID().toString(),
225+ var correlationId : String? = null ,
200226 var event : String ,
201227 var href : String? = null ,
202228 var data : JsonNode ,
@@ -207,6 +233,8 @@ data class EventMessage(
207233
208234data class ErrorMessage (
209235 override var thingId : String ,
236+ override var messageId : String = UUID .randomUUID().toString(),
237+ var correlationId : String? = null ,
210238 var type : String , // URI reference to the type of error
211239 var title : String , // Short, human-readable summary of the problem
212240 var status : String , // HTTP status code as a string
0 commit comments