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 }