Changeset c46064617974065f88c133dfe117efa3f7d23539

Show
Ignore:
Timestamp:
01/10/10 18:26:34 (3 years ago)
Author:
Nedko Arnaudov <nedko@…>
Children:
554b045bd1cee5350698d9b3b66537c55dca4673
Parents:
0a60fa61a6a2105cdf8d00d626c943027568ef84
git-committer:
Nedko Arnaudov <nedko@arnaudov.name> / 2010-01-10T18:26:34Z+0200
Message:

basic room management D-Bus interface

Files:
2 modified

Legend:

Unmodified
Added
Removed
  • daemon/control.c

    rbf9b927 rc460646  
    33 * LADI Session Handler (ladish) 
    44 * 
    5  * Copyright (C) 2008, 2009 Nedko Arnaudov <nedko@arnaudov.name> 
     5 * Copyright (C) 2008, 2009, 2010 Nedko Arnaudov <nedko@arnaudov.name> 
    66 * Copyright (C) 2008 Juuso Alasuutari <juuso.alasuutari@gmail.com> 
    77 * 
     
    281281} 
    282282 
     283static void ladish_get_room_list(struct dbus_method_call * call_ptr) 
     284{ 
     285  DBusMessageIter iter, array_iter; 
     286 
     287  call_ptr->reply = dbus_message_new_method_return(call_ptr->message); 
     288  if (call_ptr->reply == NULL) 
     289  { 
     290    goto fail; 
     291  } 
     292 
     293  dbus_message_iter_init_append(call_ptr->reply, &iter); 
     294 
     295  if (!dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "(sa{sv})", &array_iter)) 
     296  { 
     297    goto fail_unref; 
     298  } 
     299 
     300  if (!dbus_message_iter_close_container(&iter, &array_iter)) 
     301  { 
     302    goto fail_unref; 
     303  } 
     304 
     305  return; 
     306 
     307fail_unref: 
     308  dbus_message_unref(call_ptr->reply); 
     309  call_ptr->reply = NULL; 
     310 
     311fail: 
     312  log_error("Ran out of memory trying to construct method return"); 
     313} 
     314 
     315static void ladish_delete_room(struct dbus_method_call * call_ptr) 
     316{ 
     317  const char * name; 
     318 
     319  dbus_error_init(&g_dbus_error); 
     320 
     321  if (!dbus_message_get_args(call_ptr->message, &g_dbus_error, DBUS_TYPE_STRING, &name, DBUS_TYPE_INVALID)) 
     322  { 
     323    lash_dbus_error(call_ptr, LASH_DBUS_ERROR_INVALID_ARGS, "Invalid arguments to method \"%s\": %s",  call_ptr->method_name, g_dbus_error.message); 
     324    dbus_error_free(&g_dbus_error); 
     325    return; 
     326  } 
     327 
     328  log_info("Delete room request (%s)", name); 
     329 
     330  { 
     331    method_return_new_void(call_ptr); 
     332  } 
     333} 
     334 
     335static void ladish_new_room(struct dbus_method_call * call_ptr) 
     336{ 
     337  const char * name; 
     338 
     339  dbus_error_init(&g_dbus_error); 
     340 
     341  if (!dbus_message_get_args(call_ptr->message, &g_dbus_error, DBUS_TYPE_STRING, &name, DBUS_TYPE_INVALID)) 
     342  { 
     343    lash_dbus_error(call_ptr, LASH_DBUS_ERROR_INVALID_ARGS, "Invalid arguments to method \"%s\": %s",  call_ptr->method_name, g_dbus_error.message); 
     344    dbus_error_free(&g_dbus_error); 
     345    return; 
     346  } 
     347 
     348  log_info("New room request (%s)", name); 
     349 
     350  { 
     351    method_return_new_void(call_ptr); 
     352  } 
     353} 
     354 
    283355static void ladish_exit(struct dbus_method_call * call_ptr) 
    284356{ 
     
    333405METHOD_ARGS_BEGIN(GetApplicationList, "Get list of applications that can be launched") 
    334406  METHOD_ARG_DESCRIBE_OUT("applications", "a(sa{sv})", "List of applications, name and properties") 
     407METHOD_ARGS_END 
     408 
     409METHOD_ARGS_BEGIN(GetRoomList, "Get list of rooms") 
     410  METHOD_ARG_DESCRIBE_OUT("room_list", "a(sa{sv})", "List of rooms, name and properties") 
     411METHOD_ARGS_END 
     412 
     413METHOD_ARGS_BEGIN(NewRoom, "New room") 
     414  METHOD_ARG_DESCRIBE_IN("room_name", "s", "Name of the room") 
     415METHOD_ARGS_END 
     416 
     417METHOD_ARGS_BEGIN(DeleteRoom, "Delete room") 
     418  METHOD_ARG_DESCRIBE_IN("room_name", "s", "Name of room to delete") 
    335419METHOD_ARGS_END 
    336420 
     
    345429  METHOD_DESCRIBE(DeleteStudio, ladish_delete_studio) 
    346430  METHOD_DESCRIBE(GetApplicationList, ladish_get_application_list) 
     431  METHOD_DESCRIBE(GetRoomList, ladish_get_room_list) 
     432  METHOD_DESCRIBE(NewRoom, ladish_new_room) 
     433  METHOD_DESCRIBE(DeleteRoom, ladish_delete_room) 
    347434  METHOD_DESCRIBE(Exit, ladish_exit) 
    348435METHODS_END 
  • ladish_control

    rc5a9c36 rc460646  
    33# LADI Session Handler (ladish) 
    44# 
    5 # Copyright (C) 2008, 2009 Nedko Arnaudov <nedko@arnaudov.name> 
     5# Copyright (C) 2008, 2009, 2010 Nedko Arnaudov <nedko@arnaudov.name> 
    66# 
    77#************************************************************************* 
     
    111111        print("    sstart               - start studio") 
    112112        print("    sstop                - stop studio") 
     113        print("    rlist                - list rooms") 
     114        print("    rdel <roomname>      - delete room") 
     115        print("    rnew <roomname>      - new room") 
    113116        sys.exit(0) 
    114117     
     
    182185                else: 
    183186                    print("no") 
     187            elif arg == 'rlist': 
     188                print("--- room list") 
     189                for studio in control_iface.GetRoomList(): 
     190                    name = studio[0] 
     191                    mtime = studio[1]['Modification Time'] 
     192                    print('"%s" last modified on %s' % (name, time.ctime(mtime))) 
     193            elif arg == 'rnew': 
     194                print("--- room new") 
     195                if index >= len(sys.argv): 
     196                    print("new room command requires room name argument") 
     197                    sys.exit() 
     198 
     199                arg = sys.argv[index] 
     200                index += 1 
     201 
     202                control_iface.NewRoom(arg) 
     203            elif arg == 'rdel': 
     204                print("--- room delete") 
     205                if index >= len(sys.argv): 
     206                    print("delete room command requires studio name argument") 
     207                    sys.exit() 
     208 
     209                arg = sys.argv[index] 
     210                index += 1 
     211 
     212                control_iface.DeleteRoom(arg) 
    184213            else: 
    185214                if not studio_obj: