diff options
Diffstat (limited to 'model/websocket_message.go')
-rw-r--r-- | model/websocket_message.go | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/model/websocket_message.go b/model/websocket_message.go index 9bce1e825..c7ab04857 100644 --- a/model/websocket_message.go +++ b/model/websocket_message.go @@ -31,6 +31,8 @@ const ( type WebSocketMessage interface { ToJson() string IsValid() bool + DoPreComputeJson() + GetPreComputeJson() []byte } type WebsocketBroadcast struct { @@ -41,9 +43,10 @@ type WebsocketBroadcast struct { } type WebSocketEvent struct { - Event string `json:"event"` - Data map[string]interface{} `json:"data"` - Broadcast *WebsocketBroadcast `json:"broadcast"` + Event string `json:"event"` + Data map[string]interface{} `json:"data"` + Broadcast *WebsocketBroadcast `json:"broadcast"` + PreComputeJson []byte `json:"-"` } func (m *WebSocketEvent) Add(key string, value interface{}) { @@ -59,6 +62,19 @@ func (o *WebSocketEvent) IsValid() bool { return o.Event != "" } +func (o *WebSocketEvent) DoPreComputeJson() { + b, err := json.Marshal(o) + if err != nil { + o.PreComputeJson = []byte("") + } else { + o.PreComputeJson = b + } +} + +func (o *WebSocketEvent) GetPreComputeJson() []byte { + return o.PreComputeJson +} + func (o *WebSocketEvent) ToJson() string { b, err := json.Marshal(o) if err != nil { @@ -80,10 +96,11 @@ func WebSocketEventFromJson(data io.Reader) *WebSocketEvent { } type WebSocketResponse struct { - Status string `json:"status"` - SeqReply int64 `json:"seq_reply,omitempty"` - Data map[string]interface{} `json:"data,omitempty"` - Error *AppError `json:"error,omitempty"` + Status string `json:"status"` + SeqReply int64 `json:"seq_reply,omitempty"` + Data map[string]interface{} `json:"data,omitempty"` + Error *AppError `json:"error,omitempty"` + PreComputeJson []byte `json:"-"` } func (m *WebSocketResponse) Add(key string, value interface{}) { @@ -111,6 +128,19 @@ func (o *WebSocketResponse) ToJson() string { } } +func (o *WebSocketResponse) DoPreComputeJson() { + b, err := json.Marshal(o) + if err != nil { + o.PreComputeJson = []byte("") + } else { + o.PreComputeJson = b + } +} + +func (o *WebSocketResponse) GetPreComputeJson() []byte { + return o.PreComputeJson +} + func WebSocketResponseFromJson(data io.Reader) *WebSocketResponse { decoder := json.NewDecoder(data) var o WebSocketResponse |