001 
002 /**
003  * Title:        Advanced Network Client Sample<p>
004  * Description:  <p>
005  * Copyright:    Copyright (C) 2009 Alexey Veremenko<p>
006  * Company:      <p>
007  @author Alexey Veremenko
008  @version 1.0
009  */
010 package networking.client;
011 
012 import networking.protocol.*;
013 
014 /**
015  * ClientTalkThread - this class represents a thread interacting with TalkServer
016  */
017 class ClientTalkThread extends ClientThread
018 {
019     /**
020      * Master client
021      */
022     protected ITalkClient m_master = null;
023 
024     /**
025      * Construct new ClientTalkThread object
026      @param master ITalkClient object
027      */
028     public ClientTalkThread(ITalkClient master)
029     {
030         super(master);
031         m_master = master;
032     }
033 
034     /*
035      * Override ClientThread
036      */
037     protected void processMessage(Message msgthrows Exception
038     {
039         switch (msg.getType())
040         {
041             /* Server messages */
042             case Message.ACCEPT:
043             case Message.REJECT:
044             {
045                 m_master.onConnect(msg);
046                 break;
047             }
048             case Message.TIMEOUT:
049             {
050                 throw new Exception("Server has disonnected because of time-out");
051                 //break;
052             }
053             case Message.CLIENT_LIST_CHANGED:
054             {
055                 m_master.onListChanged(msg);
056                 break;
057             }
058             case Message.NEW_MESSAGE:
059             {
060                 m_master.onNewMessage(msg);
061                 break;
062             }
063             case Message.DEBAR:
064             {
065                 m_master.onDebar(msg);
066                 break;
067             }
068             case Message.NEW_FILE:
069             {
070                 m_master.onNewFile(msg);
071                 break;
072             }
073 
074             /* Master messages */
075             case Message.HI_TALK:
076             case Message.MESSAGE_SENT:
077             case Message.DEBAR_SENT:
078             case Message.BROADCAST_SENT:
079             case Message.ACCEPT_FILE_SENT:
080             case Message.REJECT_FILE_SENT:
081             {
082                 // Route message to server
083                 send(msg);
084                 break;
085             }
086 
087             /* Route other messages to parent */
088             default:
089             {
090                 super.processMessage(msg);
091                 break;
092             }
093         }
094     }
095 
096     /*
097      * Override ClientThread
098      */
099     public void run()
100     {
101         super.run();
102         m_master.onDisconnect();
103     }
104 
105     /*
106      * Override ClientThread
107      */
108     protected void error(Exception e)
109     {
110         m_master.error(e);
111     }
112 }
Java2html