server.rs 31.6 KiB
Newer Older
						let conn_state = ConnState { conn_id, close_notify: cn, id_provider };
						let response = callback(id.clone(), params, sink.clone(), conn_state, Some(guard)).await;
						MethodResult::JustMiddleware(response)
					} else {
						let response =
							MethodResponse::error(id, reject_too_many_subscriptions(bounded_subscriptions.max()));
						MethodResult::SendAndMiddleware(response)
					}
				}
				Err(err) => {
					tracing::error!("[Methods::execute_with_resources] failed to lock resources: {:?}", err);
					let response = MethodResponse::error(id, ErrorObject::from(ErrorCode::ServerIsBusy));
					MethodResult::SendAndMiddleware(response)
				}
			},
			MethodKind::Unsubscription(callback) => {
				// Don't adhere to any resource or subscription limits; always let unsubscribing happen!
				let result = callback(id, params, conn_id, max_response_body_size as usize);
				MethodResult::SendAndMiddleware(result)
			}
		},
	};

	let r = response.as_inner();

	rx_log_from_str(&r.result, max_log_length);
	middleware.on_result(name, r.success, request_start);
	response
}