Oracle Coherence for C++ API
Release 3.6.0.0

E15728-01

coherence/util/ServiceEvent.hpp

00001 /*
00002 * ServiceEvent.hpp
00003 *
00004 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
00005 *
00006 * Oracle is a registered trademarks of Oracle Corporation and/or its
00007 * affiliates.
00008 *
00009 * This software is the confidential and proprietary information of Oracle
00010 * Corporation. You shall not disclose such confidential and proprietary
00011 * information and shall use it only in accordance with the terms of the
00012 * license agreement you entered into with Oracle.
00013 *
00014 * This notice may not be removed or altered.
00015 */
00016 #ifndef COH_SERVICE_EVENT_HPP
00017 #define COH_SERVICE_EVENT_HPP
00018 
00019 #include "coherence/lang.ns"
00020 
00021 #include "coherence/util/Event.hpp"
00022 #include "coherence/util/Listeners.hpp"
00023 
00024 COH_OPEN_NAMESPACE2(coherence,util)
00025 
00026 class Service;
00027 
00028 
00029 /**
00030 * An event which indicates that a Service state has changed:
00031 * <ul>
00032 * <li>a service is starting</li>
00033 * <li>a service has started</li>
00034 * <li>a service is stopping</li>
00035 * <li>a service has stopped</li>
00036 * </ul>
00037 * A ServiceEvent object is sent as an argument to the ServiceListener
00038 * interface methods.
00039 *
00040 * @see Service
00041 * @see ServiceListener
00042 *
00043 * @author jh  2007.12.13
00044 */
00045 class COH_EXPORT ServiceEvent
00046     : public class_spec<ServiceEvent,
00047         extends<Event> >
00048     {
00049     friend class factory<ServiceEvent>;
00050 
00051     // ----- handle definitions ---------------------------------------------
00052 
00053     public:
00054         /**
00055         * Service Handle definition.
00056         */
00057         typedef TypedHandle<Service> ServiceHandle;
00058 
00059         /**
00060         * Service View definition.
00061         */
00062         typedef TypedHandle<const Service> ServiceView;
00063 
00064 
00065     // ----- Id definition --------------------------------------------------
00066 
00067     public:
00068         typedef enum
00069             {
00070             SERVICE_STARTING = 1, // the service is starting
00071             SERVICE_STARTED  = 2, // the service has started
00072             SERVICE_STOPPING = 3, // the service is stopping
00073             SERVICE_STOPPED  = 4  // the service has stopped
00074             } Id;
00075 
00076 
00077     // ----- constructors ---------------------------------------------------
00078 
00079     protected:
00080         /**
00081         * Create a new ServiceEvent instance.
00082         *
00083         * @param vService  the Service that fired the event
00084         * @param identity  the event's ID, one of the Id enum values
00085         */
00086         ServiceEvent(ServiceView vService, Id identity);
00087 
00088 
00089     // ----- ServiceEvent interface -----------------------------------------
00090 
00091     public:
00092         /**
00093         * Dispatch this event to the specified listeners collection.
00094         *
00095         * @param vListeners the listeners collection
00096         *
00097         * @throws ClassCastException if any of the targets is not an instance of
00098         *         the ServiceListener interface
00099         */
00100         virtual void dispatch(Listeners::View vListeners) const;
00101 
00102 
00103     // ----- Object interface -----------------------------------------------
00104 
00105     public:
00106         /**
00107         * {@inheritDoc}
00108         */
00109         virtual void toStream(std::ostream& out) const;
00110 
00111 
00112     // ----- accessors ------------------------------------------------------
00113 
00114     public:
00115         /**
00116         * Return this event's ID.
00117         *
00118         * @return the event ID, one of the Id enum values
00119         */
00120         virtual Id getId() const;
00121 
00122         /**
00123         * Return the Service that fired the event.
00124         *
00125         * @return the Service
00126         */
00127         virtual ServiceView getService() const;
00128 
00129 
00130     // ----- data members ---------------------------------------------------
00131 
00132     protected:
00133         /**
00134         * The event's ID.
00135         */
00136         Id m_id;
00137     };
00138 
00139 COH_CLOSE_NAMESPACE2
00140 
00141 #endif // COH_SERVICE_EVENT_HPP
Copyright © 2000, 2010, Oracle and/or its affiliates. All rights reserved.