001         package com.croftsoft.apps.client;
002         
003         import java.util.*;
004         
005         import com.croftsoft.core.lang.*;
006         import com.croftsoft.core.lang.lifecycle.Updatable;
007         
008         /*********************************************************************
009         * Exemplar model.
010         * 
011         * Maintains program state.
012         * 
013         * @version
014         *   $Id: ClientModel.java,v 1.6 2006/12/16 05:05:27 croft Exp $
015         * @since
016         *   2006-10-30
017         * @author
018         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
019         *********************************************************************/
020    
021         public final class  ClientModel
022           implements Updatable
023         //////////////////////////////////////////////////////////////////////
024         //////////////////////////////////////////////////////////////////////
025         {
026           
027         // private final instance variables
028           
029         private final Queue<ClientMessage>
030           modelQueue,
031           netQueue,
032           viewQueue;
033         
034         //////////////////////////////////////////////////////////////////////
035         //////////////////////////////////////////////////////////////////////
036         
037         public  ClientModel (
038           final Queue<ClientMessage>  modelQueue,
039           final Queue<ClientMessage>  viewQueue,
040           final Queue<ClientMessage>  netQueue )
041         //////////////////////////////////////////////////////////////////////
042         {
043           NullArgumentException.checkArgs (
044             this.modelQueue = modelQueue,
045             this.viewQueue  = viewQueue,
046             this.netQueue   = netQueue );
047         }
048         
049         //////////////////////////////////////////////////////////////////////
050         // lifecycle methods
051         //////////////////////////////////////////////////////////////////////
052         
053         public void  update ( )
054         //////////////////////////////////////////////////////////////////////
055         {
056           ClientMessage  message = null;
057           
058           while ( ( message = modelQueue.poll ( ) ) != null )
059           {
060             final ClientMessage.Type  type = message.getType ( );
061             
062             switch ( type )
063             {
064               case SEND_TEXT_REQUEST:
065                 
066                 netQueue.offer ( message );
067                 
068                 break;
069                 
070               case SPEECH_EVENT:
071                 
072                 viewQueue.offer ( message );
073                 
074                 break;
075                 
076               case TEXT_EVENT:
077                 
078                 viewQueue.offer ( message );
079                 
080                 break;
081                 
082               default:
083                 
084                 System.out.println ( getClass ( ).getName ( ) + ":  "
085                   + "unknown message type:  " + type );
086             }
087           }
088         }
089         
090         //////////////////////////////////////////////////////////////////////
091         //////////////////////////////////////////////////////////////////////
092         }