// $Id$ // // Copyright 2007-2008 Cisco Systems Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations // under the License. using System; namespace Etch.Util { /// /// This class defines delegate for the methods /// defined in Todo Interface. /// public class TodoDelegateImpl : Todo { private DoitDelegate doIt = null; private ExceptionToDoDelegate exc = null; public TodoDelegateImpl(DoitDelegate d, ExceptionToDoDelegate e) { this.doIt = d; this.exc = e; } public virtual void Doit(TodoManager mgr) { if (doIt == null) throw new Exception("Doit method not defined"); doIt(mgr); } public virtual void Exception(TodoManager mgr, Exception e) { if (exc == null) throw new Exception("Exception method not defined"); exc(mgr, e); } /// /// Performs the action /// /// the todo manager where this todo was queued public delegate void DoitDelegate(TodoManager mgr); /// /// Reports an exception that occurred while running the todo. /// /// the todo manager where this todo was queued. /// the exception that the todo threw. /// public delegate void ExceptionToDoDelegate(TodoManager mgr, Exception e); } }