亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? services.c

?? linux下的dvb收看解析軟件代碼; 帶參考程序
?? C
字號:
/*
Copyright (C) 2006  Adam Charrett
 
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 
services.c
 
Manage services and PIDs.
 
*/
#include <stdlib.h>
#include <string.h>
#include "dbase.h"
#include "multiplexes.h"
#include "services.h"
#include "logging.h"

int ServiceCount()
{
    int result = -1;
    STATEMENT_INIT;

    STATEMENT_PREPARE("SELECT count() FROM " SERVICES_TABLE ";");
    RETURN_ON_ERROR(-1);

    STATEMENT_STEP();
    if (rc == SQLITE_ROW)
    {
        result = STATEMENT_COLUMN_INT( 0);
        rc = 0;
    }
    STATEMENT_FINALIZE();
    return result;
}

int ServiceDelete(Service_t  *service)
{
    STATEMENT_INIT;

    STATEMENT_PREPAREVA("DELETE FROM " SERVICES_TABLE " "
                        "WHERE " SERVICE_MPLEXFREQ "=%d AND " SERVICE_ID "=%d;",
                        service->multiplexfreq, service->id);
    RETURN_RC_ON_ERROR;

    STATEMENT_STEP();

    STATEMENT_FINALIZE();
    return 0;
}

int ServiceAdd(int multiplexfreq, char *name, int id, int pmtversion, int pmtpid)
{
    STATEMENT_INIT;

    STATEMENT_PREPAREVA("INSERT INTO "SERVICES_TABLE "("
                        SERVICE_MPLEXFREQ ","
                        SERVICE_ID ","
                        SERVICE_PMTVERSION ","
                        SERVICE_PMTPID ","
                        SERVICE_NAME ")"
                        "VALUES (%d,%d,%d,%d,'%q');",
                        multiplexfreq, id, pmtversion, pmtpid, name);
    RETURN_RC_ON_ERROR;

    STATEMENT_STEP();
    RETURN_RC_ON_ERROR;

    STATEMENT_FINALIZE();
    return 0;
}

int ServicePMTVersionSet(Service_t  *service, int pmtversion)
{
    STATEMENT_INIT;

    STATEMENT_PREPAREVA("UPDATE " SERVICES_TABLE " "
                        "SET " SERVICE_PMTVERSION "=%d "
                        "WHERE " SERVICE_MPLEXFREQ "=%d AND " SERVICE_ID "=%d;",
                        pmtversion, service->multiplexfreq,  service->id);
    RETURN_RC_ON_ERROR;

    STATEMENT_STEP();
    if (rc == SQLITE_DONE)
    {
        service->pmtversion = pmtversion;
        rc = SQLITE_OK;
    }
    else
    {
        PRINTLOG_SQLITE3ERROR();
    }
    STATEMENT_FINALIZE();
    return rc;
}


int ServicePMTPIDSet(Service_t  *service, int pmtpid)
{
    STATEMENT_INIT;

    STATEMENT_PREPAREVA("UPDATE " SERVICES_TABLE " "
                        "SET " SERVICE_PMTPID "=%d "
                        "WHERE " SERVICE_MPLEXFREQ "=%d AND " SERVICE_ID "=%d;",
                        pmtpid, service->multiplexfreq,  service->id);
    RETURN_RC_ON_ERROR;

    STATEMENT_STEP();
    if (rc == SQLITE_DONE)
    {
        printlog(LOG_DEBUGV,"Updated 0x%04x %d\n", service->id, service->multiplexfreq);
        service->pmtpid = pmtpid;
        rc = SQLITE_OK;
    }
    else
    {
        PRINTLOG_SQLITE3ERROR();
    }
    STATEMENT_FINALIZE();
    return rc;
}

int ServiceNameSet(Service_t  *service, char *name)
{
    STATEMENT_INIT;

    STATEMENT_PREPAREVA("UPDATE " SERVICES_TABLE " "
                        "SET " SERVICE_NAME "='%q' "
                        "WHERE " SERVICE_MPLEXFREQ "=%d AND " SERVICE_ID "=%d;",
                        name, service->multiplexfreq,  service->id);
    RETURN_RC_ON_ERROR;

    STATEMENT_STEP();
    if (rc == SQLITE_DONE)
    {
        printlog(LOG_DEBUGV,"Updated 0x%04x %d\n", service->id, service->multiplexfreq);
		free(service->name);
		service->name = strdup(name);
        rc = SQLITE_OK;
    }
    else
    {
        PRINTLOG_SQLITE3ERROR();
    }
    STATEMENT_FINALIZE();
    return rc;
}

Service_t *ServiceFindName(char *name)
{
    STATEMENT_INIT;
    Service_t *result;

    STATEMENT_PREPAREVA("SELECT "	SERVICE_MPLEXFREQ ","
                        SERVICE_ID ","
                        SERVICE_NAME ","
                        SERVICE_PMTVERSION ","
                        SERVICE_PMTPID " "
                        "FROM " SERVICES_TABLE " WHERE " SERVICE_NAME "='%q';",
                        name);
    RETURN_ON_ERROR(NULL);

    result = ServiceGetNext((ServiceEnumerator_t) stmt);
    STATEMENT_FINALIZE();

    return result;
}

Service_t *ServiceFindId(Multiplex_t *multiplex, int id)
{
    STATEMENT_INIT;
    Service_t *result;

    STATEMENT_PREPAREVA("SELECT "	SERVICE_MPLEXFREQ ","
                        SERVICE_ID ","
                        SERVICE_NAME ","
                        SERVICE_PMTVERSION ","
                        SERVICE_PMTPID " "
                        "FROM " SERVICES_TABLE " WHERE " SERVICE_MPLEXFREQ "=%d AND " SERVICE_ID "=%d;",
                        multiplex->freq, id);
    RETURN_ON_ERROR(NULL);

    result = ServiceGetNext((ServiceEnumerator_t) stmt);
    STATEMENT_FINALIZE();
    return result;
}

ServiceEnumerator_t ServiceEnumeratorGet()
{
    STATEMENT_INIT;
    STATEMENT_PREPARE("SELECT "	SERVICE_MPLEXFREQ ","
                      SERVICE_ID ","
                      SERVICE_NAME ","
                      SERVICE_PMTVERSION ","
                      SERVICE_PMTPID " "
                      "FROM " SERVICES_TABLE ";");
    RETURN_ON_ERROR(NULL);
    return stmt;
}

int ServiceForMultiplexCount(int freq)
{
    STATEMENT_INIT;
    int result = -1;

    STATEMENT_PREPAREVA("SELECT count() "
                        "FROM " SERVICES_TABLE " WHERE " SERVICE_MPLEXFREQ "=%d;",
                        freq);
    RETURN_ON_ERROR(-1);

    STATEMENT_STEP();
    if (rc == SQLITE_ROW)
    {
        result = STATEMENT_COLUMN_INT( 0);
        rc = 0;
    }

    STATEMENT_FINALIZE();
    return result;
}

ServiceEnumerator_t ServiceEnumeratorForMultiplex(int freq)
{
    STATEMENT_INIT;

    STATEMENT_PREPAREVA("SELECT "	SERVICE_MPLEXFREQ ","
                        SERVICE_ID ","
                        SERVICE_NAME ","
                        SERVICE_PMTVERSION ","
                        SERVICE_PMTPID " "
                        "FROM " SERVICES_TABLE " WHERE " SERVICE_MPLEXFREQ"=%d;",
                        freq);
    RETURN_ON_ERROR(NULL);

    return stmt;
}

void ServiceEnumeratorDestroy(ServiceEnumerator_t enumerator)
{
    int rc;
    sqlite3_stmt *stmt = (sqlite3_stmt *)enumerator;
    STATEMENT_FINALIZE();
}

Service_t *ServiceGetNext(ServiceEnumerator_t enumerator)
{
    sqlite3_stmt *stmt = (sqlite3_stmt *)enumerator;
    int rc;

    STATEMENT_STEP();
    if (rc == SQLITE_ROW)
    {
        Service_t *service = NULL;
        char *name;

        service = calloc(1, sizeof(Service_t));
        service->multiplexfreq = STATEMENT_COLUMN_INT( 0);
        service->id = STATEMENT_COLUMN_INT( 1);
        name = STATEMENT_COLUMN_TEXT( 2);
        if (name)
        {
            service->name = calloc(strlen(name) + 1, 1);
            strcpy(service->name, name);
        }
        service->pmtversion = STATEMENT_COLUMN_INT( 3);
        service->pmtpid = STATEMENT_COLUMN_INT( 4);

        return service;
    }
    
    if (rc != SQLITE_DONE)
    {
        PRINTLOG_SQLITE3ERROR();
    }
    return NULL;
}

void ServiceFree(Service_t *service)
{
    if (service->name)
    {
        free(service->name);
    }
    free(service);
}

int ServicePIDAdd(Service_t *service, int pid, int type, int subtype, int pmtversion)
{
    STATEMENT_INIT;

    STATEMENT_PREPAREVA("INSERT INTO " PIDS_TABLE " "
                        "VALUES (%d,%d,%d,%d,%d,%d);",
                        service->multiplexfreq, service->id,
                        pid, type, subtype, pmtversion);
    RETURN_RC_ON_ERROR;

    STATEMENT_STEP();
    STATEMENT_FINALIZE();
    return rc;
}

int ServicePIDRemove(Service_t *service)
{
    STATEMENT_INIT;

    STATEMENT_PREPAREVA("DELETE FROM " PIDS_TABLE " "
                        "WHERE " PID_MPLEXFREQ "=%d AND " PID_SERVICEID "=%d;",
                        service->multiplexfreq, service->id);
    RETURN_RC_ON_ERROR;

    STATEMENT_STEP();

    STATEMENT_FINALIZE();
    return 0;
}

int ServicePIDCount(Service_t *service)
{
    STATEMENT_INIT;
    int result = -1;

    STATEMENT_PREPAREVA("SELECT count () FROM " PIDS_TABLE " "
                        "WHERE " PID_MPLEXFREQ "=%d AND " PID_SERVICEID "=%d;",
                        service->multiplexfreq, service->id);
    RETURN_ON_ERROR(-1);

    STATEMENT_STEP();
    if (rc == SQLITE_ROW)
    {
        result = STATEMENT_COLUMN_INT( 0);
        rc = 0;
    }
    STATEMENT_FINALIZE();
    return result;
}

int ServicePIDGet(Service_t *service, PID_t *pids, int *count)
{
    int i;
    STATEMENT_INIT;

    STATEMENT_PREPAREVA("SELECT "
                        PID_PID ","
                        PID_TYPE ","
                        PID_SUBTYPE ","
                        PID_PMTVERSION " "
                        "FROM " PIDS_TABLE " WHERE " PID_MPLEXFREQ "=%d AND " PID_SERVICEID "=%d;",
                        service->multiplexfreq, service->id);
    RETURN_RC_ON_ERROR;

    for (i = 0; i < *count; i ++)
    {
        STATEMENT_STEP();
        if (rc == SQLITE_ROW)
        {
            pids[i].pid = STATEMENT_COLUMN_INT( 0);
            pids[i].type = STATEMENT_COLUMN_INT( 1);
            pids[i].subtype = STATEMENT_COLUMN_INT( 2);
            pids[i].pmtversion = STATEMENT_COLUMN_INT( 3);
        }
        else
        {
            *count = i;
            break;
        }
    }
    STATEMENT_FINALIZE();
    return rc;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91丝袜美腿高跟国产极品老师| 欧美激情一区二区三区四区| 亚洲一区二区三区四区五区黄| 97精品超碰一区二区三区| 中文字幕国产一区| av动漫一区二区| 亚洲精品成a人| 在线一区二区三区| 亚洲国产精品久久人人爱蜜臀| 欧美乱熟臀69xxxxxx| 日产欧产美韩系列久久99| 日韩欧美在线一区二区三区| 麻豆成人91精品二区三区| 久久久久久久久一| 国产成人综合亚洲网站| 国产精品传媒视频| 成人国产精品免费| 成人激情免费视频| 91精品国产综合久久精品app| 日韩专区中文字幕一区二区| 99久久精品久久久久久清纯| 亚洲制服丝袜在线| 日韩一区二区影院| 豆国产96在线|亚洲| 亚洲欧美日韩综合aⅴ视频| 欧美日韩不卡一区二区| 老司机一区二区| 中文字幕欧美三区| 日韩欧美资源站| 国产欧美精品区一区二区三区| 国产精品资源在线| 一区二区三区在线观看国产| 日韩一区二区精品在线观看| 国产91精品一区二区| 亚洲在线观看免费| 国产午夜精品理论片a级大结局| 色综合色狠狠天天综合色| 日日夜夜精品免费视频| 国产日韩精品一区| 欧美日本一道本| 成人激情文学综合网| 美美哒免费高清在线观看视频一区二区 | 91免费看片在线观看| 日本强好片久久久久久aaa| 欧美激情一区在线观看| 欧美日韩免费不卡视频一区二区三区| 国产精品一区二区三区乱码| 午夜精品一区二区三区电影天堂 | 国产传媒日韩欧美成人| 亚洲v中文字幕| 中文字幕亚洲电影| 久久蜜臀精品av| 欧美老肥妇做.爰bbww| aaa亚洲精品一二三区| 狠狠色综合色综合网络| 亚洲成人免费视| 一区二区三区欧美视频| 国产精品国产三级国产专播品爱网| 欧美一区二区三区不卡| 色狠狠综合天天综合综合| 成人av在线资源网站| 国产精品亚洲专一区二区三区| 日韩国产精品久久久久久亚洲| 亚洲人成7777| 综合色天天鬼久久鬼色| 国产精品色婷婷久久58| 26uuu国产电影一区二区| 91精品国产高清一区二区三区蜜臀 | 国产精品美女久久久久久久| 精品成人一区二区| 欧美极品美女视频| 精品久久99ma| 精品国产乱码久久久久久久| 欧美一区二区性放荡片| 欧美高清激情brazzers| 欧美视频一二三区| 欧美亚洲精品一区| 欧美人与禽zozo性伦| 欧美日韩在线直播| 欧美日韩电影一区| 国产亚洲欧美日韩日本| 精品国精品国产尤物美女| 亚洲一区二区五区| 高清久久久久久| 五月婷婷激情综合| 日韩毛片视频在线看| 欧美日韩1234| 中文字幕中文乱码欧美一区二区 | 国产成人小视频| 亚洲国产精品久久不卡毛片 | 中文在线资源观看网站视频免费不卡| 久久久www成人免费无遮挡大片| 久久午夜羞羞影院免费观看| 久久影院视频免费| 狠狠色综合色综合网络| 国产成人精品影视| 色婷婷精品大在线视频| 在线一区二区视频| 91精品在线观看入口| 欧美激情资源网| 五月婷婷激情综合| 久久综合中文字幕| 3d动漫精品啪啪一区二区竹菊 | 日韩欧美在线观看一区二区三区| 蜜桃视频第一区免费观看| 中文成人av在线| 欧美激情在线看| 国产欧美精品日韩区二区麻豆天美| 欧美久久久久中文字幕| 色婷婷综合久久久中文字幕| 国产亚洲精品超碰| 性欧美疯狂xxxxbbbb| 色婷婷综合久久| 日韩av成人高清| 欧美激情资源网| 国产69精品久久久久毛片| 欧美吞精做爰啪啪高潮| 久久一区二区三区国产精品| 亚洲综合久久久| 国产.欧美.日韩| 国产午夜精品久久久久久免费视| 性久久久久久久久久久久| 色综合久久88色综合天天6 | 色偷偷久久人人79超碰人人澡| 日韩精品中文字幕在线一区| 亚洲午夜久久久久久久久电影网 | 日韩三级精品电影久久久| 亚洲精品福利视频网站| 91香蕉国产在线观看软件| 精品国产乱码久久| www.欧美色图| 高清视频一区二区| 91啦中文在线观看| 国产99久久久国产精品潘金| 另类小说图片综合网| 香港成人在线视频| 视频一区视频二区中文| 日韩av一区二区三区| 午夜精品久久久久久久久久久 | 成人动漫视频在线| 国产精品夜夜爽| 国产激情视频一区二区三区欧美| 蜜臀av一区二区在线观看| 久久成人综合网| 色欧美片视频在线观看在线视频| 欧美亚洲禁片免费| 日韩欧美二区三区| 亚洲精品一区二区精华| 国产精品毛片a∨一区二区三区| 亚洲激情校园春色| 欧美在线|欧美| 国产一区二区看久久| 亚洲精品精品亚洲| 国产精品高潮呻吟| 欧美日韩免费不卡视频一区二区三区| www.日韩大片| 五月天精品一区二区三区| 国产精品日日摸夜夜摸av| 欧美一级高清大全免费观看| 欧美在线999| 麻豆精品蜜桃视频网站| 亚洲一区二区3| 国产精品国产三级国产三级人妇| 日韩无一区二区| 欧美高清性hdvideosex| 久久嫩草精品久久久久| 久久精品男人的天堂| 日韩欧美精品在线视频| 一本久久综合亚洲鲁鲁五月天 | 久久青草国产手机看片福利盒子 | 9人人澡人人爽人人精品| 午夜免费欧美电影| 亚洲成人免费影院| 日韩影院在线观看| 国产成人综合在线| 一本到三区不卡视频| 日韩欧美激情一区| 欧美一个色资源| 精品国产麻豆免费人成网站| 日韩精品一区二区三区swag| 日韩免费在线观看| 欧美激情一区二区三区不卡| 中文字幕精品在线不卡| 亚洲综合免费观看高清完整版 | 91精品国产一区二区| 国产人久久人人人人爽| 久久久久99精品国产片| 国产偷v国产偷v亚洲高清| 一区二区三区在线播| 成人黄色国产精品网站大全在线免费观看| 婷婷综合久久一区二区三区| 99re8在线精品视频免费播放| 欧美日韩你懂得| 久久美女艺术照精彩视频福利播放 | 日韩理论电影院| 国产在线精品一区二区不卡了| 国产成人免费视频网站高清观看视频| 色又黄又爽网站www久久| 精品日韩99亚洲| 99视频有精品|