⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os.hpp

📁 基于sip协议的网络电话源码
💻 HPP
📖 第 1 页 / 共 2 页
字号:
    {        create(pool, type, name);    }    //    // Destructor.    //    ~Pj_Mutex()    {        destroy();    }    //    // Create mutex.    //    pj_status_t create( Pj_Pool *pool, Type type, const char *name = NULL)    {        destroy();	return pj_mutex_create( pool->pool_(), name, type,                                &mutex_ );    }    //    // Create simple mutex.    //    pj_status_t create_simple( Pj_Pool *pool,const char *name = NULL)    {        return create(pool, SIMPLE, name);    }    //    // Create recursive mutex.    //    pj_status_t create_recursive( Pj_Pool *pool, const char *name = NULL )    {        return create(pool, RECURSE, name);    }    //    // Get pjlib compatible mutex object.    //    pj_mutex_t *pj_mutex_t_()    {	return mutex_;    }    //    // Destroy mutex.    //    void destroy()    {        if (mutex_) {	    pj_mutex_destroy(mutex_);            mutex_ = NULL;        }    }    //    // Lock mutex.    //    pj_status_t acquire()    {	return pj_mutex_lock(mutex_);    }    //    // Unlock mutex.    //    pj_status_t release()    {	return pj_mutex_unlock(mutex_);    }    //    // Try locking the mutex.    //    pj_status_t tryacquire()    {	return pj_mutex_trylock(mutex_);    }private:    pj_mutex_t *mutex_;};//// Semaphore//class Pj_Semaphore : public Pj_Object{public:    //    // Construct semaphore    //    Pj_Semaphore(Pj_Pool *pool, unsigned max,                 unsigned initial = 0, const char *name = NULL)    : sem_(NULL)    {	create(pool, max, initial, name);    }    //    // Destructor.    //    ~Pj_Semaphore()    {        destroy();    }    //    // Create semaphore    //    pj_status_t create( Pj_Pool *pool, unsigned max,                        unsigned initial = 0, const char *name = NULL )    {        destroy();	return pj_sem_create( pool->pool_(), name, initial, max, &sem_);    }    //    // Destroy semaphore.    //    void destroy()    {        if (sem_) {            pj_sem_destroy(sem_);            sem_ = NULL;        }    }    //    // Get pjlib compatible semaphore object.    //    pj_sem_t *pj_sem_t_()    {	return (pj_sem_t*)this;    }    //    // Wait semaphore.    //    pj_status_t wait()    {	return pj_sem_wait(this->pj_sem_t_());    }    //    // Wait semaphore.    //    pj_status_t acquire()    {	return wait();    }    //    // Try wait semaphore.    //    pj_status_t trywait()    {	return pj_sem_trywait(this->pj_sem_t_());    }    //    // Try wait semaphore.    //    pj_status_t tryacquire()    {	return trywait();    }    //    // Post semaphore.    //    pj_status_t post()    {	return pj_sem_post(this->pj_sem_t_());    }    //    // Post semaphore.    //    pj_status_t release()    {	return post();    }private:    pj_sem_t *sem_;};//// Event object.//class Pj_Event{public:    //    // Construct event object.    //    Pj_Event( Pj_Pool *pool, bool manual_reset = false,              bool initial = false, const char *name = NULL )    : event_(NULL)    {        create(pool, manual_reset, initial, name);    }    //    // Destructor.    //    ~Pj_Event()    {        destroy();    }    //    // Create event object.    //    pj_status_t create( Pj_Pool *pool, bool manual_reset = false,                         bool initial = false, const char *name = NULL)    {        destroy();	return pj_event_create(pool->pool_(), name, manual_reset, initial,                               &event_);    }    //    // Get pjlib compatible event object.    //    pj_event_t *pj_event_t_()    {	return event_;    }    //    // Destroy event object.    //    void destroy()    {        if (event_) {	    pj_event_destroy(event_);            event_ = NULL;        }    }    //    // Wait.    //    pj_status_t wait()    {	return pj_event_wait(event_);    }    //    // Try wait.    //    pj_status_t trywait()    {	return pj_event_trywait(event_);    }    //    // Set event state to signalled.    //    pj_status_t set()    {	return pj_event_set(this->pj_event_t_());    }    //    // Release one waiting thread.    //    pj_status_t pulse()    {	return pj_event_pulse(this->pj_event_t_());    }    //    // Set a non-signalled.    //    pj_status_t reset()    {	return pj_event_reset(this->pj_event_t_());    }private:    pj_event_t *event_;};//// Timestamp//class Pj_Timestamp{public:    pj_status_t get_timestamp()    {	return pj_get_timestamp(&ts_);    }    Pj_Timestamp& operator += (const Pj_Timestamp &rhs)    {	pj_add_timestamp(&ts_, &rhs.ts_);	return *this;    }    Pj_Timestamp& operator -= (const Pj_Timestamp &rhs)    {	pj_sub_timestamp(&ts_, &rhs.ts_);	return *this;    }    Pj_Time_Val to_time() const    {	Pj_Timestamp zero;	pj_memset(&zero, 0, sizeof(zero));	return Pj_Time_Val(pj_elapsed_time(&zero.ts_, &ts_));    }    pj_uint32_t to_msec() const    {	Pj_Timestamp zero;	pj_memset(&zero, 0, sizeof(zero));	return pj_elapsed_msec(&zero.ts_, &ts_);    }    pj_uint32_t to_usec() const    {	Pj_Timestamp zero;	pj_memset(&zero, 0, sizeof(zero));	return pj_elapsed_usec(&zero.ts_, &ts_);    }    pj_uint32_t to_nanosec() const    {	Pj_Timestamp zero;	pj_memset(&zero, 0, sizeof(zero));	return pj_elapsed_nanosec(&zero.ts_, &ts_);    }    pj_uint32_t to_cycle() const    {	Pj_Timestamp zero;	pj_memset(&zero, 0, sizeof(zero));	return pj_elapsed_cycle(&zero.ts_, &ts_);    }private:    pj_timestamp    ts_;};//// OS abstraction.//class Pj_OS_API{public:    //    // Get current time.    //    static pj_status_t gettimeofday( Pj_Time_Val *tv )    {	return pj_gettimeofday(tv);    }    //    // Parse to time of day.    //    static pj_status_t time_decode( const Pj_Time_Val *tv,                                     pj_parsed_time *pt )    {	return pj_time_decode(tv, pt);    }    //    // Parse from time of day.    //    static pj_status_t time_encode( const pj_parsed_time *pt,                                     Pj_Time_Val *tv)    {	return pj_time_encode(pt, tv);    }    //    // Convert to GMT.    //    static pj_status_t time_local_to_gmt( Pj_Time_Val *tv )    {	return pj_time_local_to_gmt( tv );    }    //    // Convert time to local.    //    static pj_status_t time_gmt_to_local( Pj_Time_Val *tv)     {	return pj_time_gmt_to_local( tv );    }};//// Timeval inlines.//inline pj_status_t Pj_Time_Val::gettimeofday(){    return Pj_OS_API::gettimeofday(this);}inline pj_parsed_time Pj_Time_Val::decode(){    pj_parsed_time pt;    Pj_OS_API::time_decode(this, &pt);    return pt;}inline pj_status_t Pj_Time_Val::encode(const pj_parsed_time *pt){    return Pj_OS_API::time_encode(pt, this);}inline pj_status_t Pj_Time_Val::to_gmt(){    return Pj_OS_API::time_local_to_gmt(this);}inline pj_status_t Pj_Time_Val::to_local(){    return Pj_OS_API::time_gmt_to_local(this);}#endif	/* __PJPP_OS_HPP__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -