Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

outputThread.cpp File Reference

#include "misc.h"
#include "visualThread.h"
#include "commandThread.h"
#include "../common/databaseAccess.h"

Go to the source code of this file.

Functions

void* outputThread ( void* targz )
 The Output Thread. More...


Variables

BufferoutputBufferIn
 The buffer the outputThread reads from. More...

BuffercoreBufferIn = 0
 The coreThread's buffer. More...


Function Documentation

void * outputThread ( void * targs)

The Output Thread.

Parameters:
targs   passes the arguments which came from main()

Definition at line 35 of file outputThread.cpp.

00036 {
00037     ThreadArgs* targs = (ThreadArgs*) targz;
00038     fprintf(stderr,"[opT] OutputThread alive...\n");
00039 
00040 
00041     //TODO: loading all plugins and start them as thread
00042 
00043     // <TEMPORARILY>
00044     ThreadArgs* vargs;
00045     vargs = new ThreadArgs;
00046     vargs->argc = 1;
00047     vargs->argv = targs->argv;
00048 
00049     ThreadArgs* cargs = new ThreadArgs;
00050     cargs->argc = 1;
00051     cargs->argv = targs->argv;
00052     Buffer* commandBufferIn = cargs->in = new Buffer();
00053 
00054     while ( !outputBufferIn ) usleep(10000);
00055     cargs->out = outputBufferIn;
00056 
00057     Buffer* visBufferIn  = vargs->in  = new Buffer();
00058 
00059     pthread_t vThread;    //THOSE THINGS SHALL BECOME PLUGINS VERY SOON!!
00060     pthread_t commandThread;
00061 
00062     pthread_create (&vThread, NULL, VisualizationThread, vargs);
00063     pthread_create (&commandThread, NULL, CommandThread, cargs);
00064 
00065     DatabaseAccess dbAccess ( CLIENT_OUTPUT );
00066 
00067     while (1)
00068         {
00069         if ( !outputBufferIn->isEmpty() )
00070             {
00071             #ifdef DEBUG
00072             fprintf(stderr,"[opT] getting a packet.. :)\n");
00073             #endif
00074 
00075             packet* pak = outputBufferIn->read ( );
00076 
00077             switch ( pak->h.header[0] )
00078                 {
00079                 case PROT_OUTPUT_VISUAL:
00080                     {
00081                     switch ( pak->h.header[1] )
00082                         {
00083                         case VISUAL_CAMERA_MOVE:
00084                             {
00085                             #ifdef DEBUG
00086                             fprintf(stderr,"[oT] VISUAL_CAMERA_MOVE\n");
00087                             #endif
00088 
00089                             pak->h.header[0] = pak->h.header[1];
00090                             pak->h.header[1] = pak->h.header[2];
00091                             visBufferIn->write ( pak );
00092                             break;
00093                             }
00094 
00095                         case VISUAL_CAMERA_LOOKTO:
00096                             {
00097                             #ifdef DEBUG
00098                             fprintf(stderr,"[oT] VISUAL_CAMERA_LOOKTO\n");
00099                             #endif
00100 
00101                             pak->h.header[0] = pak->h.header[1];
00102                             pak->h.header[1] = pak->h.header[2];
00103                             visBufferIn->write ( pak );
00104                             break;
00105                             }
00106 
00107                         case VISUAL_NEW_OBJECT:
00108                             {
00109                             fprintf(stderr,"[oT] Received a new object\n");
00110                             pak->h.header[0] = pak->h.header[1];
00111                             visBufferIn->write ( pak );
00112                             break;
00113                             }
00114 
00115                         case VISUAL_MY_OBJECT:
00116                             {
00117                             pak->h.header[0] = pak->h.header[1];
00118                             visBufferIn->write ( pak );
00119                             break;
00120                             }
00121 
00122                         default:
00123                             {
00124                             #ifdef DEBUG
00125                             fprintf(stderr,"[oT] OUTPUT_VISUAL: i don't know this action..\n");
00126                             #endif
00127 
00128                             delete pak;
00129                             break;
00130                             }
00131                         }
00132 
00133                     break;
00134                     }
00135 
00136                 case PROT_OUTPUT_DUMMY: //just for testing purpose..
00137                     {
00138                     fprintf(stderr,"[opT] *-*-*-*-*-*-*-* Output Dummy: %s *-*-*-*-*-*-*-*\n",pak->data.c_str ());
00139                     delete pak;
00140                     break;
00141                     }
00142                 case PROT_GET_ALL_CHANGED:
00143                     {
00144                     #ifdef DEBUG
00145                     fprintf(stderr,"pgac.");
00146                     #endif
00147                     dbAccess.getAllObjects();
00148 
00149                     delete pak;
00150                     break;
00151                     }
00152 
00153                 case PROT_GET_ALL_OBJECTS_REPLY:
00154                     {
00155                     /****************************************+
00156                     header[1]   Object ID
00157                     header[2]   classtype
00158                     *****************************************/
00159 
00160                     #ifdef DEBUG
00161                     fprintf(stderr,"[oT] PROT_GET_ALL_OBJECTS_REPLY..\n");
00162                     #endif
00163 
00164                     dbAccess.getObject ( pak->h.header[1] );
00165 
00166                     delete pak;
00167                     break;
00168                     }
00169 
00170                 case PROT_GET_OBJECT_REPLY:
00171                     {
00172                     /******************************************
00173                     header[1] ObjectID
00174                     data      name of object
00175                     ******************************************/
00176 
00177                     #ifdef DEBUG
00178                     fprintf(stderr,"[oT] PROT_GET_OBJECT_REPLY\n");
00179                     #endif
00180 
00181                     pak->h.header[0] = VISUAL_NEW_OBJECT;
00182 
00183                     visBufferIn->write ( pak );
00184 
00185                     break;
00186                     }
00187 
00188                 case PROT_GET_ALL_ATOMS_REPLY:
00189                     {
00190                     /*****************************************
00191                     header[1]   AtomID
00192                     header[2]   ObjectID
00193                     header[3]   atomType of Atom
00194                     *****************************************/
00195 
00196                     #ifdef DEBUG3
00197                     fprintf(stderr,"[oT] PROT_GET_ALL_ATOMS_REPLY\n");
00198                     #endif
00199 
00200                     switch ( pak->h.header[3] )
00201                         {
00202                         case AT_POSITION:
00203                             {
00204                             #ifdef DEBUG3
00205                             fprintf(stderr,"[oT] pos-change\n");
00206                             #endif
00207                             dbAccess.getAtom ( pak->h.header[1], pak->h.header[2], pak->h.header[3] );
00208 
00209                             break;
00210                             }
00211 
00212                         case AT_3DSIAGRAPH:
00213                             {
00214                             #ifdef DEBUG3
00215                             fprintf(stderr,"[oT] graphics\n");
00216                             #endif
00217                             dbAccess.getAtom ( pak->h.header[1], pak->h.header[2], pak->h.header[3] );
00218                             break;
00219                             }
00220 
00221                         case AT_CHATMSG:
00222                             {
00223                             #ifdef DEBUG3
00224                             fprintf(stderr,"chatmsg\n");
00225                             #endif
00226                             dbAccess.getAtom ( pak->h.header[1], pak->h.header[2], pak->h.header[3] );
00227 
00228                             break;
00229                             }
00230 
00231                         default:
00232                             {
00233                             #ifdef DEBUG3
00234                             fprintf(stderr,"[oT] i don't want that (%d)!\n",pak->h.header[2]);
00235                             #endif
00236                             break;
00237                             }
00238                         }
00239 
00240 
00241                     delete pak;
00242                     break;
00243                     }
00244 
00245                 case PROT_GET_ATOM_REPLY:
00246                     {
00247                     #ifdef DEBUG3
00248                     fprintf(stderr,"[oT] PROT_GET_ATOM_REPLY\n");
00249                     #endif
00250 
00251                     pak->h.header[0] = VISUAL_NEW_ATOM;
00252 
00253                     #ifdef DEBUG
00254                     fprintf(stderr,"[oT] [%d] - [%d]\n",pak->h.header[2],pak->h.header[3]);
00255                     #endif
00256 
00257                     visBufferIn->write ( pak );
00258 
00259                     #ifdef DEBUG
00260                     fprintf(stderr,"[oT] successful..\n");
00261                     #endif
00262                     break;
00263                     }
00264 
00265                 case PROT_TEXT_MSG:
00266                     {
00267                     commandBufferIn->write ( pak );
00268                     break;
00269                     }
00270 
00271 
00272                 case PROT_CHAT_MSG:
00273                     {
00274                     coreBufferIn->write ( pak);
00275                     break;
00276                     }
00277 
00278                 case PROT_TURN_AVATAR_OFF:
00279                     {
00280                     pak->h.header[0] = VISUAL_TURN_AVATAR_OFF;
00281                     visBufferIn->write ( pak );
00282                     break;
00283                     }
00284 
00285                 default:
00286                     {
00287                     fprintf(stderr,"[oT] default...\n");
00288                     delete pak;
00289                     break;
00290                     }
00291                 }
00292             }
00293         }
00294     }

Variable Documentation

Buffer * coreBufferIn = 0

The coreThread's buffer.

Definition at line 21 of file outputThread.cpp.

Buffer * outputBufferIn

The buffer the outputThread reads from.

Definition at line 19 of file outputThread.cpp.


Generated at Sat May 13 13:50:21 2000 for 3Dsia by doxygen 1.1.2 written by Dimitri van Heesch, © 1997-2000