ServiceManager.java :  » Game » invasion-engine » com » engine » invasion » engine » engine » Android Open Source

Android Open Source » Game » invasion engine 
invasion engine » com » engine » invasion » engine » engine » ServiceManager.java
package com.engine.invasion.engine.engine;

import java.util.HashMap;

public class ServiceManager {
    private HashMap<Object, Service> mDeadServices;
    private HashMap<Object, Service> mLiveServices;

    public ServiceManager() {
        mDeadServices = new HashMap<Object, Service>();
        mLiveServices = new HashMap<Object, Service>();
    }

    public void addService(Object serviceID, Service service) {
        mLiveServices.put(serviceID, service);
    }

    @SuppressWarnings("unchecked")
    public <T extends Service> T getService(Class<T> type) {
        T service = null;

        try {
            service = (T) mLiveServices.get(type);
        } catch (Exception ex) {
        }

        return service;
    }

    public void update() {
        if (!mDeadServices.isEmpty()) {
            for (HashMap.Entry<Object, Service> deadService : mDeadServices.entrySet()) {
                mLiveServices.remove(deadService.getKey());
            }

            mDeadServices.clear();
        }

        for (HashMap.Entry<Object, Service> entry : mLiveServices.entrySet()) {
            Object serviceID = entry.getKey();
            Service service = entry.getValue();
            
            switch (service.getState()) {
                case Initializing:
                    switch (service.initialize()) {
                        case Completed:
                            service.setState(Service.State.Updating);
                            break;
                        case Failed:
                            service.setState(Service.State.Uninitializing);
                            break;
                    }
                    break;
                case Updating:
                    switch (service.update()) {
                        case Completed:
                        case Failed:
                            service.setState(Service.State.Uninitializing);
                            break;
                    }
                    break;
                case Uninitializing:
                    switch (service.uninitialize()) {
                        case Completed:
                        case Failed:
                            mDeadServices.put(serviceID, service);
                            break;
                    }
                    break;
            }
        }

    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.