branches/gmyth-0.1b/src/gmyth_remote_util.c
author rosfran
Tue Feb 06 00:33:35 2007 +0000 (2007-02-06)
branchtrunk
changeset 326 81b1f3006eb2
permissions -rw-r--r--
[svn r328] Some fixes on program info, and some memory clean ups.
     1 /**
     2  * GMyth Library
     3  *
     4  * @file gmyth/gmyth_remote_util.c
     5  * 
     6  * @brief <p> This component provides utility functions for accessing remote data.
     7  *
     8  * Copyright (C) 2006 INdT - Instituto Nokia de Tecnologia.
     9  * @author Hallyson Luiz de Morais Melo <hallyson.melo@indt.org.br>
    10  *
    11  *//*
    12  * 
    13  * This program is free software; you can redistribute it and/or modify
    14  * it under the terms of the GNU Lesser General Public License as published by
    15  * the Free Software Foundation; either version 2 of the License, or
    16  * (at your option) any later version.
    17  *
    18  * This program is distributed in the hope that it will be useful,
    19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    21  * GNU General Public License for more details.
    22  *
    23  * You should have received a copy of the GNU Lesser General Public License
    24  * along with this program; if not, write to the Free Software
    25  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    26  */
    27  
    28 #ifdef HAVE_CONFIG_H
    29 #include "config.h"
    30 #endif
    31 
    32 #include "gmyth_remote_util.h"
    33  
    34 #include "gmyth_recorder.h"
    35 #include "gmyth_stringlist.h"
    36 #include "gmyth_debug.h"
    37 
    38 /** Requests the Mythtv backend for a free remote recorder.
    39  * 
    40  * @param curr The recorder index, or -1 to consider the first one.
    41  * @return the remote encoder instance available, or NULL if any error happens.
    42  */
    43 GMythRecorder*
    44 remote_request_next_free_recorder (GMythSocket *socket, int curr)
    45 {
    46     GMythRecorder *recorder = NULL;
    47     GString *hostname;
    48     int num, port;
    49 	
    50     GMythStringList *strlist = gmyth_string_list_new();
    51 	
    52     gmyth_debug ("[%s] Request next free recorder in the backend", __FUNCTION__);
    53 	
    54     gmyth_string_list_append_char_array (strlist, "GET_NEXT_FREE_RECORDER");
    55     gmyth_string_list_append_int (strlist, curr);
    56 
    57     if (!gmyth_socket_sendreceive_stringlist(socket, strlist)) {
    58     	g_warning ("GET_NEXT_FREE_RECORDER request error!\n");
    59         return NULL;
    60     }
    61 
    62     num = gmyth_string_list_get_int (strlist, 0);
    63     hostname = gmyth_string_list_get_string (strlist, 1);
    64     port = gmyth_string_list_get_int (strlist, 2);
    65     
    66     if ( num < 0 || port < 0 )
    67     	goto clean_up;
    68 
    69     gmyth_debug ("[%s] Free recorder info received: num: %d, hostname: %s, port: %d", 
    70 				__FUNCTION__, num, hostname->str, port);
    71 	
    72     recorder = gmyth_recorder_new (num, hostname, port);
    73 
    74 clean_up:
    75 	
    76     g_object_unref (strlist);
    77 	
    78     return recorder;
    79 }