in lambda/rapidcore/standalone/directInvokeHandler.go [15:49]
func DirectInvokeHandler(w http.ResponseWriter, r *http.Request, s InteropServer) {
tok := s.CurrentToken()
if tok == nil {
log.Errorf("Attempt to call directInvoke without Reserve")
w.WriteHeader(http.StatusBadRequest)
return
}
invoke, err := directinvoke.ReceiveDirectInvoke(w, r, *tok)
if err != nil {
log.Errorf("direct invoke error: %s", err)
return
}
if err := s.AwaitInitialized(); err != nil {
w.WriteHeader(DoneFailedHTTPCode)
if state, err := s.InternalState(); err == nil {
w.Write(state.AsJSON())
}
return
}
if err := s.FastInvoke(w, invoke, true); err != nil {
switch err {
case rapidcore.ErrNotReserved:
case rapidcore.ErrAlreadyReplied:
case rapidcore.ErrAlreadyInvocating:
log.Errorf("Failed to set reply stream: %s", err)
w.WriteHeader(http.StatusBadRequest)
return
case rapidcore.ErrInvokeReservationDone:
w.WriteHeader(http.StatusBadGateway)
}
}
}