void rtp_signal_table_init(RtpSignalTable *table,RtpSession *session, const char *signal_name) { memset(table,0,sizeof(RtpSignalTable)); table->session=session; table->signal_name=signal_name; session->signal_tables=o_list_append(session->signal_tables,(void*)table); }
void ortp_logv(int level, const char *fmt, va_list args) { if ((ortp_logv_out != NULL) && ortp_log_level_enabled(level)) { if (__log_thread_id == 0) { ortp_logv_out(level, fmt, args); } else if (__log_thread_id == ortp_thread_self()) { ortp_logv_flush(); ortp_logv_out(level, fmt, args); } else { ortp_stored_log_t *l = ortp_new(ortp_stored_log_t, 1); l->level = level; l->msg = ortp_strdup_vprintf(fmt, args); ortp_mutex_lock(&__log_stored_messages_mutex); __log_stored_messages_list = o_list_append(__log_stored_messages_list, l); ortp_mutex_unlock(&__log_stored_messages_mutex); } } #if !defined(_WIN32_WCE) if (level == ORTP_FATAL) abort(); #endif }
void *ortp_shm_open(unsigned int keyid, int size, int create){ HANDLE h; char name[64]; void *buf; snprintf(name,sizeof(name),"%x",keyid); if (create){ h = CreateFileMapping( INVALID_HANDLE_VALUE, // use paging file NULL, // default security PAGE_READWRITE, // read/write access 0, // maximum object size (high-order DWORD) size, // maximum object size (low-order DWORD) name); // name of mapping object }else{ h = OpenFileMapping( FILE_MAP_ALL_ACCESS, // read/write access FALSE, // do not inherit the name name); // name of mapping object } if (h==(HANDLE)-1) { ortp_error("Fail to open file mapping (create=%i)",create); return NULL; } buf = (LPTSTR) MapViewOfFile(h, // handle to map object FILE_MAP_ALL_ACCESS, // read/write permission 0, 0, size); if (buf!=NULL){ MapInfo *i=(MapInfo*)ortp_new(MapInfo,1); i->h=h; i->mem=buf; maplist=o_list_append(maplist,i); }else{ CloseHandle(h); ortp_error("MapViewOfFile failed"); } return buf; }