Package com.sun.sgs.app

Examples of com.sun.sgs.app.DataManager


    public void setSubTask(TrivialTimedTask subTask) {
        if (subTask == null) {
            subTaskRef = null;
            return;
        }
        DataManager dataManager = AppContext.getDataManager();
        subTaskRef = dataManager.createReference(subTask);
    }
View Full Code Here


     * @param identity
     */
    UserMO(WonderlandIdentity identity) {
        this.identity = identity;

        DataManager dm = AppContext.getDataManager();
        logoutTasksRef = dm.createReference((Map<WonderlandClientID, Queue<Task>>)
                new ScalableHashMap<WonderlandClientID, Queue<Task>>());
    }
View Full Code Here

     *
     * @param avatarName
     * @param avatar
     */
    public void putAvatar(WonderlandClientID clientID, String avatarName, AvatarCellMO avatar) {
        DataManager dm = AppContext.getDataManager();
        Map<String, ManagedReference<AvatarCellMO>> clientAvatars = avatars.get(clientID);
        if (clientAvatars==null) {
            clientAvatars = new HashMap();

            dm.markForUpdate(this);
            avatars.put(clientID, clientAvatars);
        }
        clientAvatars.put(avatarName, dm.createReference(avatar));
    }
View Full Code Here

     * User has logged in from specified session with specificed protocol listener
     * @param session
     * @param protocol
     */
    void login(WonderlandClientID clientID) {
        DataManager dm = AppContext.getDataManager();
        dm.markForUpdate(this);

        if (activeClients==null) {
            activeClients = new HashSet<WonderlandClientID>();
        }
       
View Full Code Here

     * Add a listener to be notified when clients of this user log in or out.
     * @param listener the listener to notify on log in or log out.  Listener
     * must implement ManagedObject.
     */
    public void addUserListener(UserListener listener) {
        DataManager dm = AppContext.getDataManager();
        dm.markForUpdate(this);
        userListeners.add(dm.createReference(listener));
    }
View Full Code Here

    /**
     * Remove a user listener from this user
     * @param listener the listener to remove
     */
    public void removeUserListener(UserListener listener) {
        DataManager dm = AppContext.getDataManager();
        dm.markForUpdate(this);
        userListeners.remove(dm.createReference(listener));
    }
View Full Code Here

     */
    public static UserMO getUserMO(String username) {
        String userObjName = "user_"+username;
        UserMO user=null;
       
        DataManager dataMgr = AppContext.getDataManager();
        try {
            user = (UserMO) dataMgr.getBinding(userObjName);
        } catch(NameNotBoundException ex) {
            user = null;
        }
       
        return user;
View Full Code Here

    /**
     * Log the user in from the specificed session.
     * @param session
     */
    public void login(WonderlandClientID clientID) {
        DataManager dm = AppContext.getDataManager();
        dm.markForUpdate(this);

        // issue 963: session could be null if client is in the process of
        // logging out
        if (clientID.getSession() == null) {
            return;
        }
        String name = clientID.getSession().getName();

        // find the user object from the database, create it if necessary
        UserMO user = getUserMO(name);
        if (user==null) {
            user = createUserMO(name);
        }
       
        // user is now logged in
        user.login(clientID);
       
        // add this session to our map
        clientToUser.put(clientID, user.getReference());

        // notify listeners for just this user
        for (ManagedReference<UserListener> listenerRef : user.getUserListeners()) {
            AppContext.getTaskManager().scheduleTask(
                    new UserListenerNotifier(listenerRef,
                                             dm.createReference(user),
                                             null,
                                             clientID,
                                             NotificationType.LOGIN));
        }

        // notify listeners for all users
        for (ManagedReference<UserListener> listenerRef : userListeners) {
            AppContext.getTaskManager().scheduleTask(
                    new UserListenerNotifier(listenerRef,
                                             dm.createReference(user),
                                             null,
                                             clientID,
                                             NotificationType.LOGIN));
        }
    }
View Full Code Here

     * @param clientID the id of the client to end the logout process for
     * @throws IllegalArgumentException if no user is associated with the given
     * client id.
     */
    public void finishLogout(WonderlandClientID clientID) {
        DataManager dm = AppContext.getDataManager();

        // make sure there is a user
        UserMO user = getUser(clientID);
        if (user == null) {
            throw new IllegalArgumentException("Client " + clientID +
                                               " not logged in.");
        }

        // get the task queue to use
        Queue<Task> tasks = user.getLogoutTasks(clientID);
       
        // add listener notification tasks to the queue, starting with
        // per-user listeners
        for (ManagedReference<UserListener> listener : user.getUserListeners()) {
            tasks.add(new UserListenerNotifier(listener,
                                               dm.createReference(user),
                                               dm.createReference(tasks),
                                               clientID,
                                               NotificationType.LOGOUT));
        }
       
        // next add global listeners
        for (ManagedReference<UserListener> listener : userListeners) {
            tasks.add(new UserListenerNotifier(listener,
                                               dm.createReference(user),
                                               dm.createReference(tasks),
                                               clientID,
                                               NotificationType.LOGOUT));
        }

        // now that we have collected all logout tasks, start running them
        AppContext.getTaskManager().scheduleTask(
                new LogoutTask(clientID, dm.createReference(tasks)));
    }
View Full Code Here

         *
         * @code prev the {@code Element} after this {@code Element}
         *       in the deque
         */
        void setNext(Element<E> next) {
            DataManager dm = AppContext.getDataManager();
            ManagedReference<Element<E>> ref =
                    (next == null) ? null : dm.createReference(next);

            dm.markForUpdate(this);
            nextElement = ref;
        }
View Full Code Here

TOP

Related Classes of com.sun.sgs.app.DataManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.