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 }