2 * Copyright (C) 2005-2009, Jon Gettler
3 * http://www.mvpmc.org/
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 #include <cmyth_local.h>
28 long long cmyth_get_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog)
31 unsigned int len = CMYTH_TIMESTAMP_LEN + CMYTH_LONGLONG_LEN + 18;
37 char start_ts_dt[CMYTH_TIMESTAMP_LEN + 1];
38 cmyth_datetime_to_string(start_ts_dt, prog->proginfo_rec_start_ts);
43 sprintf(buf,"%s %ld %s","QUERY_BOOKMARK",prog->proginfo_chanId,
45 pthread_mutex_lock(&mutex);
46 if ((err = cmyth_send_message(conn,buf)) < 0) {
47 cmyth_dbg(CMYTH_DBG_ERROR,
48 "%s: cmyth_send_message() failed (%d)\n",
53 count = cmyth_rcv_length(conn);
55 cmyth_dbg(CMYTH_DBG_ERROR,
56 "%s: cmyth_rcv_length() failed (%d)\n",
61 if ((r=cmyth_rcv_int64(conn, &err, &ll, count)) < 0) {
62 cmyth_dbg(CMYTH_DBG_ERROR,
63 "%s: cmyth_rcv_int64() failed (%d)\n",
71 pthread_mutex_unlock(&mutex);
75 int cmyth_set_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog, long long bookmark)
78 unsigned int len = CMYTH_TIMESTAMP_LEN + CMYTH_LONGLONG_LEN * 2 + 18;
83 char start_ts_dt[CMYTH_TIMESTAMP_LEN + 1];
84 cmyth_datetime_to_string(start_ts_dt, prog->proginfo_rec_start_ts);
89 if (conn->conn_version >= 66) {
91 * Since protocol 66 mythbackend expects a single 64 bit integer rather than two 32 bit
94 sprintf(buf, "SET_BOOKMARK %ld %s %"PRIu64, prog->proginfo_chanId,
95 start_ts_dt, (int64_t)bookmark);
98 sprintf(buf, "SET_BOOKMARK %ld %s %d %d", prog->proginfo_chanId,
99 start_ts_dt, (int32_t)(bookmark >> 32), (int32_t)(bookmark & 0xffffffff));
101 pthread_mutex_lock(&mutex);
102 if ((err = cmyth_send_message(conn,buf)) < 0) {
103 cmyth_dbg(CMYTH_DBG_ERROR,
104 "%s: cmyth_send_message() failed (%d)\n",
109 count = cmyth_rcv_length(conn);
110 if ((r=cmyth_rcv_string(conn,&err,resultstr,sizeof(resultstr),count)) < 0) {
111 cmyth_dbg(CMYTH_DBG_ERROR,
112 "%s: cmyth_rcv_string() failed (%d)\n",
113 __FUNCTION__, count);
117 ret = (strncmp(resultstr,"OK",2) == 0);
119 pthread_mutex_unlock(&mutex);