MCPcopy
hub / github.com/nats-io/nats.go / getMsg

Method getMsg

jsm.go:1252–1329  ·  view source on GitHub ↗

Low level getMsg

(name string, mreq *apiMsgGetRequest, opts ...JSOpt)

Source from the content-addressed store, hash-verified

1250
1251// Low level getMsg
1252func (js *js) getMsg(name string, mreq *apiMsgGetRequest, opts ...JSOpt) (*RawStreamMsg, error) {
1253 o, cancel, err := getJSContextOpts(js.opts, opts...)
1254 if err != nil {
1255 return nil, err
1256 }
1257 if cancel != nil {
1258 defer cancel()
1259 }
1260
1261 if err := checkStreamName(name); err != nil {
1262 return nil, err
1263 }
1264
1265 var apiSubj string
1266 if o.directGet && mreq.LastFor != _EMPTY_ {
1267 apiSubj = apiDirectMsgGetLastBySubjectT
1268 dsSubj := js.apiSubj(fmt.Sprintf(apiSubj, name, mreq.LastFor))
1269 r, err := js.apiRequestWithContext(o.ctx, dsSubj, nil)
1270 if err != nil {
1271 return nil, err
1272 }
1273 return convertDirectGetMsgResponseToMsg(name, r)
1274 }
1275
1276 if o.directGet {
1277 apiSubj = apiDirectMsgGetT
1278 mreq.NextFor = o.directNextFor
1279 } else {
1280 apiSubj = apiMsgGetT
1281 }
1282
1283 req, err := json.Marshal(mreq)
1284 if err != nil {
1285 return nil, err
1286 }
1287
1288 dsSubj := js.apiSubj(fmt.Sprintf(apiSubj, name))
1289 r, err := js.apiRequestWithContext(o.ctx, dsSubj, req)
1290 if err != nil {
1291 return nil, err
1292 }
1293
1294 if o.directGet {
1295 return convertDirectGetMsgResponseToMsg(name, r)
1296 }
1297
1298 var resp apiMsgGetResponse
1299 if err := json.Unmarshal(r.Data, &resp); err != nil {
1300 return nil, err
1301 }
1302 if resp.Error != nil {
1303 if errors.Is(resp.Error, ErrMsgNotFound) {
1304 return nil, ErrMsgNotFound
1305 }
1306 if errors.Is(resp.Error, ErrStreamNotFound) {
1307 return nil, ErrStreamNotFound
1308 }
1309 return nil, resp.Error

Callers 2

GetLastMsgMethod · 0.95
GetMsgMethod · 0.95

Calls 7

apiSubjMethod · 0.95
apiRequestWithContextMethod · 0.95
getJSContextOptsFunction · 0.85
checkStreamNameFunction · 0.85
DecodeHeadersMsgFunction · 0.85
IsMethod · 0.45

Tested by

no test coverage detected