Changeset 18e317ff4b60adafc6bf135aa876f78589a4a6f7

Show
Ignore:
Timestamp:
11/18/10 04:34:47 (3 years ago)
Author:
Nedko Arnaudov <nedko@…>
Children:
dba04d196e2e2a298a7d867d70862d3d4496bace
Parents:
86ec7c7fbd6bbaef02a2bc380d46a2610b7c1d9e
git-committer:
Nedko Arnaudov <nedko@arnaudov.name> / 2010-11-18T04:34:47Z+0200
Message:

ladishd: expose project description and notes over D-Bus

Location:
daemon
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • daemon/room.c

    r86ec7c7 r18e317f  
    287287  room_ptr->project_name = NULL; 
    288288  room_ptr->project_dir = NULL; 
     289  room_ptr->project_description = NULL; 
     290  room_ptr->project_notes = NULL; 
    289291  room_ptr->project_state = ROOM_PROJECT_STATE_UNLOADED; 
    290292 
     
    378380  /* project has either both name and dir no none of them */ 
    379381  ASSERT((room_ptr->project_dir == NULL && room_ptr->project_name == NULL) || (room_ptr->project_dir != NULL && room_ptr->project_name != NULL)); 
    380   if (room_ptr->project_dir != NULL) 
    381   { 
    382     free(room_ptr->project_dir); 
    383   } 
    384   if (room_ptr->project_name != NULL) 
    385   { 
    386     free(room_ptr->project_name); 
    387   } 
     382  free(room_ptr->project_dir); 
     383  free(room_ptr->project_name); 
     384  free(room_ptr->project_description); 
     385  free(room_ptr->project_notes); 
    388386 
    389387  if (!room_ptr->template) 
     
    840838  } 
    841839 
     840  if (!dbus_maybe_add_dict_entry_string(&dict_iter, "description", room_ptr->project_description)) 
     841  { 
     842    log_error("dbus_maybe_add_dict_entry_string() failed."); 
     843    return false; 
     844  } 
     845 
     846  if (!dbus_maybe_add_dict_entry_string(&dict_iter, "notes", room_ptr->project_notes)) 
     847  { 
     848    log_error("dbus_maybe_add_dict_entry_string() failed."); 
     849    return false; 
     850  } 
     851 
    842852  if (!dbus_message_iter_close_container(iter_ptr, &dict_iter)) 
    843853  { 
     
    884894  ladish_graph_remove_hidden_objects(room_ptr->graph); 
    885895 
    886   if (room_ptr->project_name != NULL) 
    887   { 
    888     free(room_ptr->project_name); 
    889     room_ptr->project_name = NULL; 
    890   } 
    891   if (room_ptr->project_dir != NULL) 
    892   { 
    893     free(room_ptr->project_dir); 
    894     room_ptr->project_dir = NULL; 
    895   } 
     896  free(room_ptr->project_name); 
     897  room_ptr->project_name = NULL; 
     898 
     899  free(room_ptr->project_dir); 
     900  room_ptr->project_dir = NULL; 
     901 
     902  free(room_ptr->project_description); 
     903  room_ptr->project_description = NULL; 
     904 
     905  free(room_ptr->project_notes); 
     906  room_ptr->project_notes = NULL; 
    896907 
    897908  room_ptr->project_state = ROOM_PROJECT_STATE_UNLOADED; 
     
    984995fail: 
    985996  log_error("Ran out of memory trying to construct method return"); 
     997} 
     998 
     999static void ladish_room_dbus_set_project_description(struct dbus_method_call * call_ptr) 
     1000{ 
     1001  const char * str; 
     1002  char * dup; 
     1003 
     1004  if (!dbus_message_get_args(call_ptr->message, &g_dbus_error, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID)) 
     1005  { 
     1006    lash_dbus_error(call_ptr, LASH_DBUS_ERROR_INVALID_ARGS, "Invalid arguments to method \"%s\": %s",  call_ptr->method_name, g_dbus_error.message); 
     1007    dbus_error_free(&g_dbus_error); 
     1008    return; 
     1009  } 
     1010 
     1011  if ((strlen(str) == 0 && (room_ptr->project_description == NULL || strlen(room_ptr->project_description) == 0)) || 
     1012      (room_ptr->project_description != NULL && strcmp(str, room_ptr->project_description) == 0)) 
     1013  { 
     1014    method_return_new_single(call_ptr, DBUS_TYPE_UINT64, &room_ptr->name); 
     1015    return; 
     1016  } 
     1017 
     1018  dup = strdup(str); 
     1019  if (dup == NULL) 
     1020  { 
     1021    lash_dbus_error(call_ptr, LASH_DBUS_ERROR_GENERIC, "strdup() failed"); 
     1022    return; 
     1023  } 
     1024 
     1025  free(room_ptr->project_description); 
     1026  room_ptr->project_description = dup; 
     1027 
     1028  ladish_room_emit_project_properties_changed(room_ptr); /* increments the version number */ 
     1029  method_return_new_single(call_ptr, DBUS_TYPE_UINT64, &room_ptr->version); 
     1030} 
     1031 
     1032static void ladish_room_dbus_set_project_notes(struct dbus_method_call * call_ptr) 
     1033{ 
     1034  const char * str; 
     1035  char * dup; 
     1036 
     1037  if (!dbus_message_get_args(call_ptr->message, &g_dbus_error, DBUS_TYPE_STRING, &str, DBUS_TYPE_INVALID)) 
     1038  { 
     1039    lash_dbus_error(call_ptr, LASH_DBUS_ERROR_INVALID_ARGS, "Invalid arguments to method \"%s\": %s",  call_ptr->method_name, g_dbus_error.message); 
     1040    dbus_error_free(&g_dbus_error); 
     1041    return; 
     1042  } 
     1043 
     1044  if ((strlen(str) == 0 && (room_ptr->project_notes == NULL || strlen(room_ptr->project_notes) == 0)) || 
     1045      (room_ptr->project_notes != NULL && strcmp(str, room_ptr->project_notes) == 0)) 
     1046  { 
     1047    method_return_new_single(call_ptr, DBUS_TYPE_UINT64, &room_ptr->name); 
     1048    return; 
     1049  } 
     1050 
     1051  dup = strdup(str); 
     1052  if (dup == NULL) 
     1053  { 
     1054    lash_dbus_error(call_ptr, LASH_DBUS_ERROR_GENERIC, "strdup() failed"); 
     1055    return; 
     1056  } 
     1057 
     1058  free(room_ptr->project_notes); 
     1059  room_ptr->project_notes = dup; 
     1060 
     1061  ladish_room_emit_project_properties_changed(room_ptr); /* increments the version number */ 
     1062  method_return_new_single(call_ptr, DBUS_TYPE_UINT64, &room_ptr->version); 
    9861063} 
    9871064 
     
    10071084  METHOD_ARG_DESCRIBE_OUT("new_version", DBUS_TYPE_UINT64_AS_STRING, "New version of the project properties") 
    10081085  METHOD_ARG_DESCRIBE_OUT("properties", "a{sv}", "project properties") 
     1086METHOD_ARGS_END 
     1087 
     1088METHOD_ARGS_BEGIN(SetProjectDescription, "Set project description") 
     1089  METHOD_ARG_DESCRIBE_IN("description", "s", "Project description") 
     1090  METHOD_ARG_DESCRIBE_OUT("new_version", DBUS_TYPE_UINT64_AS_STRING, "New version of the project properties") 
     1091METHOD_ARGS_END 
     1092 
     1093METHOD_ARGS_BEGIN(SetProjectNotes, "Set project notes") 
     1094  METHOD_ARG_DESCRIBE_IN("notes", "s", "Project notes") 
     1095  METHOD_ARG_DESCRIBE_OUT("new_version", DBUS_TYPE_UINT64_AS_STRING, "New version of the project properties") 
    10091096METHOD_ARGS_END 
    10101097 
     
    10151102  METHOD_DESCRIBE(LoadProject, ladish_room_dbus_load_project) /* async */ 
    10161103  METHOD_DESCRIBE(GetProjectProperties, ladish_room_dbus_get_project_properties) /* sync */ 
     1104  METHOD_DESCRIBE(SetProjectDescription, ladish_room_dbus_set_project_description) /* sync */ 
     1105  METHOD_DESCRIBE(SetProjectNotes, ladish_room_dbus_set_project_notes) /* sync */ 
    10171106METHODS_END 
    10181107 
  • daemon/room_internal.h

    r4b9da6f r18e317f  
    6060  char * project_dir; 
    6161  char * project_name; 
     62  char * project_description; 
     63  char * project_notes; 
    6264}; 
    6365