/home/dko/projects/mobilec/tags/MobileC-v1.10.2/MobileC-v1.10.2/src/message_queue.c

Go to the documentation of this file.
00001 /* SVN FILE INFO
00002  * $Revision: 207 $ : Last Committed Revision
00003  * $Date: 2008-07-11 17:55:19 -0700 (Fri, 11 Jul 2008) $ : Last Committed Date */
00004 /*[
00005  * Copyright (c) 2007 Integration Engineering Laboratory
00006                       University of California, Davis
00007  *
00008  * Permission to use, copy, and distribute this software and its
00009  * documentation for any purpose with or without fee is hereby granted,
00010  * provided that the above copyright notice appear in all copies and
00011  * that both that copyright notice and this permission notice appear
00012  * in supporting documentation.
00013  *
00014  * Permission to modify the software is granted, but not the right to
00015  * distribute the complete modified source code.  Modifications are to
00016  * be distributed as patches to the released version.  Permission to
00017  * distribute binaries produced by compiling modified sources is granted,
00018  * provided you
00019  *   1. distribute the corresponding source modifications from the
00020  *    released version in the form of a patch file along with the binaries,
00021  *   2. add special version identification to distinguish your version
00022  *    in addition to the base release version number,
00023  *   3. provide your name and address as the primary contact for the
00024  *    support of your modified version, and
00025  *   4. retain our contact information in regard to use of the base
00026  *    software.
00027  * Permission to distribute the released version of the source code along
00028  * with corresponding source modifications in the form of a patch file is
00029  * granted with same provisions 2 through 4 for binary distributions.
00030  *
00031  * This software is provided "as is" without express or implied warranty
00032  * to the extent permitted by applicable law.
00033 ]*/
00034 
00035 #include <stdio.h>
00036 #include <stdlib.h>
00037 #ifdef _WIN32
00038 #include <windows.h>
00039 #elif defined (HPUX)
00040 #else
00041 #include <pthread.h>
00042 #endif
00043 #include "include/data_structures.h"
00044 #include "include/mc_platform.h"
00045 
00046 /**********************************************************************
00047  * Function Name : MessgQueueSendOutgoingMessg
00048  * purpose : parses throught the outoig messg list and sends the messages
00049  * returns : void
00050  *
00051  **********************************************************************/
00052 void message_queue_SendOutgoing(
00053     struct mc_platform_s* mc_platform,
00054     message_queue_p mqueue
00055     )
00056 {
00057     /* variables */
00058     int index = 0;
00059     message_p message;
00060     char* local_address;
00061     local_address = (char*)malloc
00062       (
00063        sizeof(char) * 
00064        (strlen(mc_platform->hostname)+10)
00065       );
00066     CHECK_NULL(local_address, exit(0));
00067     sprintf
00068       (
00069        local_address,
00070        "%s:%d",
00071        mc_platform->hostname,
00072        mc_platform->port
00073       );
00074 
00075     MUTEX_LOCK(mqueue->lock);
00076     while ((message = (message_p)ListSearch(mqueue->list, index))) {
00077         MUTEX_UNLOCK(mqueue->lock);
00078         if (strcmp(message->to_address, local_address)) {
00079             message_Send(message);
00080             message_queue_RemoveIndex(mqueue, index);
00081             message_Destroy(message);
00082         } else {
00083             index++;
00084         }
00085         MUTEX_LOCK(mqueue->lock); /* Lock again for eval of while statement */
00086     }
00087 
00088     MUTEX_UNLOCK(mqueue->lock);
00089     free(local_address);
00090     return ;
00091 }
00092 

Generated on Fri Jul 11 17:59:45 2008 for Mobile-C by  doxygen 1.5.4