47 #ifndef __Teko_RequestHandler_impl_hpp__
48 #define __Teko_RequestHandler_impl_hpp__
50 template <
typename DataT>
51 DataT RequestHandler::request(
const RequestMesg& rd)
const {
53 using Teuchos::rcp_dynamic_cast;
56 typedef RequestCallback<DataT> CallbackT;
59 std::vector<RCP<RequestCallbackBase> >::iterator itr;
60 for (itr = callbacks_.begin(); itr != callbacks_.end(); ++itr) {
61 RCP<CallbackT> cb = rcp_dynamic_cast<CallbackT>(*itr);
64 if (cb == Teuchos::null)
continue;
67 if (cb->handlesRequest(rd))
return cb->request(rd);
70 TEUCHOS_TEST_FOR_EXCEPTION(
true, std::runtime_error,
71 "RequestHandler::request could not find appropriate callback: " << rd);
74 template <
typename DataT>
75 void RequestHandler::preRequest(
const RequestMesg& rd)
const {
77 using Teuchos::rcp_dynamic_cast;
80 typedef RequestCallback<DataT> CallbackT;
83 std::vector<RCP<RequestCallbackBase> >::iterator itr;
84 for (itr = callbacks_.begin(); itr != callbacks_.end(); ++itr) {
85 RCP<CallbackT> cb = rcp_dynamic_cast<CallbackT>(*itr);
88 if (cb == Teuchos::null)
continue;
91 if (cb->handlesRequest(rd))
return cb->preRequest(rd);
94 TEUCHOS_TEST_FOR_EXCEPTION(
95 true, std::runtime_error,
96 "RequestHandler::preRequest could not find appropriate callback: " << rd);