From 87be66d677b1947ef1b5f866c44b0beb1263ac17 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 30 Dec 2009 15:46:35 +0000 Subject: Better error reporting for bad PUT. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2323 a436a847-0d15-0410-975c-d299462d15a1 --- src/engine/events/SetMetadata.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/engine/events/SetMetadata.cpp') diff --git a/src/engine/events/SetMetadata.cpp b/src/engine/events/SetMetadata.cpp index 7d9b5fa5..e058b1f4 100644 --- a/src/engine/events/SetMetadata.cpp +++ b/src/engine/events/SetMetadata.cpp @@ -115,7 +115,7 @@ SetMetadata::pre_process() if (_create_event) _create_event->pre_process(); else - _error = BAD_TYPE; + _error = BAD_OBJECT_TYPE; QueuedEvent::pre_process(); return; } @@ -151,20 +151,20 @@ SetMetadata::pre_process() if (value.get_bool() && !_patch->compiled_patch()) _compiled_patch = _patch->compile(); } else { - _error = BAD_TYPE; + _error = BAD_VALUE_TYPE; } } else if (key.str() == "ingen:polyphonic") { if (value.type() == Atom::BOOL) { op = POLYPHONIC; } else { - _error = BAD_TYPE; + _error = BAD_VALUE_TYPE; } } else if (key.str() == "ingen:polyphony") { if (value.type() == Atom::INT) { op = POLYPHONY; _patch->prepare_internal_poly(*_engine.buffer_factory(), value.get_int32()); } else { - _error = BAD_TYPE; + _error = BAD_VALUE_TYPE; } } } else if (key.str() == "ingen:value") { @@ -179,8 +179,10 @@ SetMetadata::pre_process() } } - if (_error != NO_ERROR) + if (_error != NO_ERROR) { + _error_predicate += key.str(); break; + } _types.push_back(op); } @@ -264,8 +266,14 @@ SetMetadata::post_process() case INTERNAL: _responder->respond_error("Internal error"); break; - case BAD_TYPE: - _responder->respond_error("Bad type"); + case BAD_OBJECT_TYPE: + _responder->respond_error((boost::format( + "Bad type for object '%1%'") % _subject).str()); + break; + case BAD_VALUE_TYPE: + _responder->respond_error((boost::format( + "Bad metadata value type for subject '%1%' predicate '%2%") + % _subject % _error_predicate).str()); break; } } -- cgit v1.2.1