Go to the source code of this file.
Data Structures | |
struct | ume_sem_t_stct |
struct | ume_block_src_t_stct |
Structure used to designate an UME Block source. More... | |
Defines | |
#define | SLEEP_SEC(x) sleep(x) |
#define | SLEEP_MSEC(x) |
#define | UME_BLOCK_DEBUG 0 |
#define | UME_BLOCK_DEBUG_PRINT(t,) |
#define | UME_BLOCK_PRINT_ERROR(t,) |
#define | UME_BLOCKING_TYPE "Posix pthread_cond" |
#define | UME_SEM_INIT(sem, len, ret) |
#define | UME_SEM_POST(sem) |
#define | UME_SEM_WAIT(sem) |
#define | UME_SEM_GETVALUE(sem, value) value = sem.state |
#define | UME_SEM_DESTROY(sem) |
#define | UME_SEM_TIMEDWAIT(sem, mstime, ret) |
#define | UME_SEM_TIMEDOUT(v) 0 |
#define | UME_SEM_TIMEDOK(v) 0 |
#define | UME_TIMESPEC_MSSET(t, s, n) 0 |
#define | UME_MALLOC_RETURN(e, s, r) |
#define | UME_TIME_OUT 5000 |
#define | UME_RETRY_COUNT 10 |
Typedefs | |
typedef ume_sem_t_stct | ume_sem_t |
typedef ume_block_bitmap_t_stct | ume_block_bitmap_t |
typedef ume_block_src_t_stct | ume_block_src_t |
Structure used to designate an UME Block source. | |
Functions | |
int | ume_block_src_delete (ume_block_src_t *asrc) |
Delete an UMEBlock Source object. | |
int | ume_block_src_create (ume_block_src_t **srcp, lbm_context_t *ctx, lbm_topic_t *topic, lbm_src_topic_attr_t *tattr, lbm_src_cb_proc proc, void *clientd, lbm_event_queue_t *evq) |
Create an UMEBlock Source that will send messages to a given topic. | |
int | ume_block_src_send_ex (ume_block_src_t *asrc, const char *msg, size_t len, int flags, lbm_src_send_ex_info_t *info) |
Extended send of a message to the topic associated with an UMBlock source. |
Copyright (c) 2005-2014 Informatica Corporation Permission is granted to licensees to use or alter this software for any purpose, including commercial applications, according to the terms laid out in the Software License Agreement.
This source code example is provided by Informatica for educational and evaluation purposes only.
THE SOFTWARE IS PROVIDED "AS IS" AND INFORMATICA DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. INFORMATICA DOES NOT WARRANT THAT USE OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE. INFORMATICA SHALL NOT, UNDER ANY CIRCUMSTANCES, BE LIABLE TO LICENSEE FOR LOST PROFITS, CONSEQUENTIAL, INCIDENTAL, SPECIAL OR INDIRECT DAMAGES ARISING OUT OF OR RELATED TO THIS AGREEMENT OR THE TRANSACTIONS CONTEMPLATED HEREUNDER, EVEN IF INFORMATICA HAS BEEN APPRISED OF THE LIKELIHOOD OF SUCH DAMAGES.
#define SLEEP_MSEC | ( | x | ) |
Value:
do{ \ if ((x) >= 1000){ \ sleep((x) / 1000); \ usleep((x) % 1000 * 1000); \ } \ else{ \ usleep((x)*1000); \ } \ }while (0)
#define UME_BLOCK_DEBUG_PRINT | ( | t | ) |
Value:
do { \ if(UME_BLOCK_DEBUG) { \ fprintf(stderr, t, ##__VA_ARGS__); \ fprintf(stderr, "\n"); \ } \ } while(0)
#define UME_BLOCK_PRINT_ERROR | ( | t | ) |
Value:
do { \ fprintf(stderr, t, ##__VA_ARGS__); \ fprintf(stderr, "\n"); \ } while(0)
#define UME_MALLOC_RETURN | ( | e, | |||
s, | |||||
r | ) |
Value:
do { \ if((e = malloc(s)) == NULL) { \ return r; \ } \ } while(0)
#define UME_SEM_DESTROY | ( | sem | ) |
Value:
do { \ pthread_cond_destroy(&(sem.cond)); \ pthread_mutex_destroy(&(sem.mtx)); \ } while (0)
#define UME_SEM_INIT | ( | sem, | |||
len, | |||||
ret | ) |
Value:
do { \ pthread_mutex_init(&(sem.mtx), NULL); \ pthread_cond_init(&(sem.cond), NULL); \ sem.max = len; \ sem.state = len; \ } while(0)
#define UME_SEM_POST | ( | sem | ) |
Value:
do { \ pthread_mutex_lock(&(sem.mtx)); \ if(sem.state < sem.max) { sem.state++; } \ pthread_cond_broadcast(&(sem.cond)); \ pthread_mutex_unlock(&(sem.mtx)); \ } while(0)
#define UME_SEM_TIMEDWAIT | ( | sem, | |||
mstime, | |||||
ret | ) |
Value:
do { \ struct timespec ts; \ gettimeofday((struct timeval*) &ts, NULL); \ ts.tv_sec += (mstime/1000); \ ts.tv_nsec = (ts.tv_nsec*1000) + ((mstime%1000)*1000000); \ pthread_mutex_lock(&(sem.mtx)); \ ret = pthread_cond_timedwait(&(sem.cond), &(sem.mtx), &ts); \ if(ret == 0) { sem.state--; } \ pthread_mutex_unlock(&(sem.mtx)); \ } while (0)
#define UME_SEM_WAIT | ( | sem | ) |
Value:
do { \ pthread_mutex_lock(&(sem.mtx)); \ while(sem.state == 0) { \ pthread_cond_wait(&(sem.cond), &(sem.mtx)); } \ sem.state--; \ pthread_mutex_unlock(&(sem.mtx)); \ } while(0)
int ume_block_src_create | ( | ume_block_src_t ** | srcp, | |
lbm_context_t * | ctx, | |||
lbm_topic_t * | topic, | |||
lbm_src_topic_attr_t * | tattr, | |||
lbm_src_cb_proc | proc, | |||
void * | clientd, | |||
lbm_event_queue_t * | evq | |||
) |
srcp | A pointer to a pointer to a UMEBlock source object. Will be filled in by this function to point to a newly created ume_block_src_t object. | |
ctx | Pointer to the LBM context object associated with the sender. | |
topic | Pointer to the LBM topic object associated with the destination of messages sent by the source. | |
tattr | Pointer to an LBM topic attribute object. The passed object CANNOT be NULL. | |
proc | Pointer to a function to call when events occur related to the source. If NULL, then events are not delivered to the source. | |
clientd | Pointer to tclient data that is passed when proc is called. | |
evq | Optional Event Queue to place events on when they occur. If NULL causes proc to be called from context thread. |
int ume_block_src_delete | ( | ume_block_src_t * | asrc | ) |
asrc | Pointero to an UMEBlock Source object to delete. |
int ume_block_src_send_ex | ( | ume_block_src_t * | asrc, | |
const char * | msg, | |||
size_t | len, | |||
int | flags, | |||
lbm_src_send_ex_info_t * | info | |||
) |
asrc | Pointer to the UMBlock source to send from. | |
msg | Pointer to the data to send in this message. | |
len | Length (in bytes) of the data to send in this message. | |
info | Pointer to lbm_src_send_ex_info_t options. |