Changeset 4391
- Timestamp:
- 09/29/06 15:40:44 (2 years ago)
- Files:
-
- libwired/trunk/libwired/collections/wi-array.c (modified) (1 diff)
- libwired/trunk/libwired/collections/wi-array.h (modified) (1 diff)
- libwired/trunk/libwired/data/wi-settings.c (modified) (7 diffs)
- libwired/trunk/libwired/data/wi-settings.h (modified) (1 diff)
- libwired/trunk/libwired/net/wi-host.c (modified) (14 diffs)
- libwired/trunk/libwired/net/wi-host.h (modified) (1 diff)
- libwired/trunk/libwired/net/wi-socket.c (modified) (8 diffs)
- libwired/trunk/libwired/net/wi-socket.h (modified) (3 diffs)
- libwired/trunk/libwired/thread/wi-timer.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
libwired/trunk/libwired/collections/wi-array.c
r4389 r4391 901 901 #pragma mark - 902 902 903 void wi_array_remove_data(wi_array_t *array, void *data) { 904 uint32_t index; 905 906 index = wi_array_index_of_data(array, data); 907 908 if(index != WI_NOT_FOUND) 909 wi_array_remove_data_at_index(array, index); 910 } 911 912 913 903 914 void wi_array_remove_data_at_index(wi_array_t *array, uint32_t index) { 904 915 _WI_ARRAY_INDEX_ASSERT(array, index); libwired/trunk/libwired/collections/wi-array.h
r4116 r4391 88 88 WI_EXPORT void wi_array_set_array(wi_array_t *, wi_array_t *); 89 89 90 WI_EXPORT void wi_array_remove_data(wi_array_t *, void *); 90 91 WI_EXPORT void wi_array_remove_data_at_index(wi_array_t *, uint32_t); 91 92 WI_EXPORT void wi_array_remove_data_in_range(wi_array_t *, wi_range_t); libwired/trunk/libwired/data/wi-settings.c
r3828 r4391 43 43 #include <wired/wi-date.h> 44 44 #include <wired/wi-file.h> 45 #include <wired/wi-list.h>46 45 #include <wired/wi-log.h> 47 46 #include <wired/wi-settings.h> … … 73 72 static wi_boolean_t _wi_settings_set_number(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 74 73 static wi_boolean_t _wi_settings_set_string(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 75 static wi_boolean_t _wi_settings_set_string_ list(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *);74 static wi_boolean_t _wi_settings_set_string_array(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 76 75 static wi_boolean_t _wi_settings_set_path(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 77 76 static wi_boolean_t _wi_settings_set_user(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); … … 85 84 static void _wi_settings_clear_number(wi_settings_t *, uint32_t); 86 85 static void _wi_settings_clear_string(wi_settings_t *, uint32_t); 87 static void _wi_settings_clear_string_ list(wi_settings_t *, uint32_t);86 static void _wi_settings_clear_string_array(wi_settings_t *, uint32_t); 88 87 static void _wi_settings_clear_user(wi_settings_t *, uint32_t); 89 88 static void _wi_settings_clear_group(wi_settings_t *, uint32_t); … … 237 236 break; 238 237 239 case WI_SETTINGS_STRING_ LIST:240 result = _wi_settings_set_string_ list(settings, index, name, value);238 case WI_SETTINGS_STRING_ARRAY: 239 result = _wi_settings_set_string_array(settings, index, name, value); 241 240 break; 242 241 … … 333 332 334 333 335 wi_boolean_t _wi_settings_set_string_ list(wi_settings_t *settings, uint32_t index, wi_string_t *name, wi_string_t *value) {336 wi_ list_t **list = (wi_list_t **) settings->spec[index].setting;337 338 wi_ list_append_data(*list, value);334 wi_boolean_t _wi_settings_set_string_array(wi_settings_t *settings, uint32_t index, wi_string_t *name, wi_string_t *value) { 335 wi_array_t **array = (wi_array_t **) settings->spec[index].setting; 336 337 wi_array_add_data(*array, value); 339 338 340 339 return true; … … 475 474 break; 476 475 477 case WI_SETTINGS_STRING_ LIST:478 _wi_settings_clear_string_ list(settings, i);476 case WI_SETTINGS_STRING_ARRAY: 477 _wi_settings_clear_string_array(settings, i); 479 478 break; 480 479 … … 521 520 522 521 523 static void _wi_settings_clear_string_ list(wi_settings_t *settings, uint32_t index) {524 wi_ list_t **list = (wi_list_t **) settings->spec[index].setting;525 526 wi_release(* list);527 * list = wi_list_init(wi_list_alloc());522 static void _wi_settings_clear_string_array(wi_settings_t *settings, uint32_t index) { 523 wi_array_t **array = (wi_array_t **) settings->spec[index].setting; 524 525 wi_release(*array); 526 *array = wi_array_init(wi_array_alloc()); 528 527 } 529 528 libwired/trunk/libwired/data/wi-settings.h
r3828 r4391 37 37 WI_SETTINGS_BOOL, 38 38 WI_SETTINGS_STRING, 39 WI_SETTINGS_STRING_ LIST,39 WI_SETTINGS_STRING_ARRAY, 40 40 WI_SETTINGS_PATH, 41 41 WI_SETTINGS_USER, libwired/trunk/libwired/net/wi-host.c
r4389 r4391 47 47 48 48 #include <wired/wi-address.h> 49 #include <wired/wi-array.h> 49 50 #include <wired/wi-host.h> 50 #include <wired/wi-list.h>51 51 #include <wired/wi-pool.h> 52 52 #include <wired/wi-string.h> … … 66 66 static wi_string_t * _wi_host_description(wi_runtime_instance_t *); 67 67 68 static wi_ list_t * _wi_host_all_interface_addresses(void);69 static wi_ list_t * _wi_host_addresses_for_string(wi_string_t *string);68 static wi_array_t * _wi_host_all_interface_addresses(void); 69 static wi_array_t * _wi_host_addresses_for_string(wi_string_t *string); 70 70 71 71 … … 159 159 wi_host_t *host2 = instance2; 160 160 wi_enumerator_t *enumerator; 161 wi_ list_t *addresses1;162 wi_ list_t *addresses2;161 wi_array_t *addresses1; 162 wi_array_t *addresses2; 163 163 wi_address_t *address; 164 164 wi_boolean_t equal = true; … … 170 170 return false; 171 171 172 if(wi_ list_count(addresses1) != wi_list_count(addresses2))172 if(wi_array_count(addresses1) != wi_array_count(addresses2)) 173 173 return false; 174 174 175 enumerator = wi_ list_data_enumerator(addresses1);175 enumerator = wi_array_data_enumerator(addresses1); 176 176 177 177 while((address = wi_enumerator_next_data(enumerator))) { 178 if(!wi_ list_contains_data(addresses2, address)) {178 if(!wi_array_contains_data(addresses2, address)) { 179 179 equal = false; 180 180 … … 201 201 #pragma mark - 202 202 203 static wi_ list_t * _wi_host_all_interface_addresses(void) {203 static wi_array_t * _wi_host_all_interface_addresses(void) { 204 204 #if defined(HAVE_GETIFADDRS) && !defined(HAVE_GLIBC) 205 wi_ list_t *list;205 wi_array_t *array; 206 206 wi_address_t *address; 207 207 struct ifaddrs *ifap, *ifp; … … 213 213 } 214 214 215 list = wi_list_init(wi_list_alloc());215 array = wi_array_init(wi_array_alloc()); 216 216 217 217 for(ifp = ifap; ifp; ifp = ifp->ifa_next) { … … 223 223 224 224 address = wi_address_init_with_sa(wi_address_alloc(), ifp->ifa_addr); 225 wi_ list_append_data(list, address);225 wi_array_add_data(array, address); 226 226 wi_release(address); 227 227 } … … 229 229 freeifaddrs(ifap); 230 230 231 if(wi_ list_count(list) == 0) {231 if(wi_array_count(array) == 0) { 232 232 wi_error_set_lib_error(WI_ERROR_HOST_NOAVAILABLEADDRESSES); 233 233 234 wi_release( list);235 list= NULL;236 } 237 238 return wi_autorelease( list);234 wi_release(array); 235 array = NULL; 236 } 237 238 return wi_autorelease(array); 239 239 #else 240 wi_ list_t *list;241 242 list = wi_list_init(wi_list_alloc());243 wi_ list_append_data(list, wi_address_wildcard_for_family(WI_ADDRESS_IPV4));244 wi_ list_append_data(list, wi_address_wildcard_for_family(WI_ADDRESS_IPV6));245 246 return wi_autorelease( list);240 wi_array_t *array; 241 242 array = wi_array_init(wi_array_alloc()); 243 wi_array_add_data(array, wi_address_wildcard_for_family(WI_ADDRESS_IPV4)); 244 wi_array_add_data(array, wi_address_wildcard_for_family(WI_ADDRESS_IPV6)); 245 246 return wi_autorelease(array); 247 247 #endif 248 248 } … … 250 250 251 251 252 static wi_ list_t * _wi_host_addresses_for_string(wi_string_t *string) {253 wi_ list_t *list;252 static wi_array_t * _wi_host_addresses_for_string(wi_string_t *string) { 253 wi_array_t *array; 254 254 wi_address_t *address; 255 255 struct addrinfo *aiap, *aip; … … 264 264 } 265 265 266 list = wi_list_init(wi_list_alloc());266 array = wi_array_init(wi_array_alloc()); 267 267 268 268 for(aip = aiap; aip; aip = aip->ai_next) { … … 275 275 address = wi_address_init_with_sa(wi_address_alloc(), aip->ai_addr); 276 276 277 if(!wi_ list_contains_data(list, address))278 wi_ list_append_data(list, address);277 if(!wi_array_contains_data(array, address)) 278 wi_array_add_data(array, address); 279 279 280 280 wi_release(address); … … 283 283 freeaddrinfo(aiap); 284 284 285 if(wi_ list_count(list) == 0) {285 if(wi_array_count(array) == 0) { 286 286 wi_error_set_lib_error(WI_ERROR_HOST_NOAVAILABLEADDRESSES); 287 287 288 wi_release( list);289 list= NULL;290 } 291 292 return wi_autorelease( list);288 wi_release(array); 289 array = NULL; 290 } 291 292 return wi_autorelease(array); 293 293 } 294 294 … … 298 298 299 299 wi_address_t * wi_host_address(wi_host_t *host) { 300 wi_ list_t *addresses;300 wi_array_t *addresses; 301 301 302 302 addresses = wi_host_addresses(host); … … 305 305 return NULL; 306 306 307 return wi_ list_first_data(addresses);308 } 309 310 311 312 wi_ list_t * wi_host_addresses(wi_host_t *host) {307 return wi_array_first_data(addresses); 308 } 309 310 311 312 wi_array_t * wi_host_addresses(wi_host_t *host) { 313 313 return host->string 314 314 ? _wi_host_addresses_for_string(host->string) libwired/trunk/libwired/net/wi-host.h
r3749 r4391 46 46 47 47 WI_EXPORT wi_address_t * wi_host_address(wi_host_t *); 48 WI_EXPORT wi_ list_t * wi_host_addresses(wi_host_t *);48 WI_EXPORT wi_array_t * wi_host_addresses(wi_host_t *); 49 49 50 50 #endif /* WI_HOST_H */ libwired/trunk/libwired/net/wi-socket.c
r4389 r4391 59 59 #include <wired/wi-date.h> 60 60 #include <wired/wi-macros.h> 61 #include <wired/wi-list.h>62 61 #include <wired/wi-lock.h> 63 62 #include <wired/wi-socket.h> … … 837 836 #pragma mark - 838 837 839 wi_socket_t * wi_socket_wait_multiple(wi_ list_t *list, wi_time_interval_t timeout) {838 wi_socket_t * wi_socket_wait_multiple(wi_array_t *array, wi_time_interval_t timeout) { 840 839 wi_enumerator_t *enumerator; 841 840 wi_socket_t *socket, *accept_socket; … … 850 849 FD_ZERO(&wfds); 851 850 852 wi_ list_rdlock(list);853 854 enumerator = wi_ list_data_enumerator(list);851 wi_array_rdlock(array); 852 853 enumerator = wi_array_data_enumerator(array); 855 854 856 855 while((socket = wi_enumerator_next_data(enumerator))) { … … 865 864 } 866 865 867 wi_ list_unlock(list);866 wi_array_unlock(array); 868 867 869 868 state = select(max_sd + 1, &rfds, &wfds, NULL, (timeout > 0.0) ? &tv : NULL); … … 877 876 accept_socket = NULL; 878 877 879 wi_ list_rdlock(list);880 881 enumerator = wi_ list_data_enumerator(list);878 wi_array_rdlock(array); 879 880 enumerator = wi_array_data_enumerator(array); 882 881 883 882 while((socket = wi_enumerator_next_data(enumerator))) { … … 889 888 } 890 889 891 wi_ list_unlock(list);890 wi_array_unlock(array); 892 891 893 892 return accept_socket; … … 1077 1076 1078 1077 1079 wi_socket_t * wi_socket_accept_multiple(wi_ list_t *list, wi_socket_context_t *context, wi_time_interval_t timeout, wi_address_t **address) {1078 wi_socket_t * wi_socket_accept_multiple(wi_array_t *array, wi_socket_context_t *context, wi_time_interval_t timeout, wi_address_t **address) { 1080 1079 wi_socket_t *socket; 1081 1080 1082 1081 *address = NULL; 1083 socket = wi_socket_wait_multiple( list, 0.0);1082 socket = wi_socket_wait_multiple(array, 0.0); 1084 1083 1085 1084 if(!socket) … … 1263 1262 1264 1263 1265 int32_t wi_socket_recvfrom_multiple(wi_ list_t *list, wi_socket_context_t *context, char *buffer, size_t length, wi_address_t **address) {1264 int32_t wi_socket_recvfrom_multiple(wi_array_t *array, wi_socket_context_t *context, char *buffer, size_t length, wi_address_t **address) { 1266 1265 wi_socket_t *socket; 1267 1266 1268 1267 *address = NULL; 1269 socket = wi_socket_wait_multiple( list, 0.0);1268 socket = wi_socket_wait_multiple(array, 0.0); 1270 1269 1271 1270 if(!socket) libwired/trunk/libwired/net/wi-socket.h
r3828 r4391 107 107 WI_EXPORT int wi_socket_error(wi_socket_t *); 108 108 109 WI_EXPORT wi_socket_t * wi_socket_wait_multiple(wi_ list_t *, wi_time_interval_t);109 WI_EXPORT wi_socket_t * wi_socket_wait_multiple(wi_array_t *, wi_time_interval_t); 110 110 WI_EXPORT wi_boolean_t wi_socket_wait(wi_socket_t *, wi_time_interval_t); 111 111 WI_EXPORT wi_boolean_t wi_socket_wait_descriptor(int, wi_time_interval_t, wi_boolean_t, wi_boolean_t); … … 113 113 WI_EXPORT wi_boolean_t wi_socket_listen(wi_socket_t *, uint32_t); 114 114 WI_EXPORT wi_boolean_t wi_socket_connect(wi_socket_t *, wi_socket_context_t *, wi_time_interval_t); 115 WI_EXPORT wi_socket_t * wi_socket_accept_multiple(wi_ list_t *, wi_socket_context_t *, wi_time_interval_t, wi_address_t **);115 WI_EXPORT wi_socket_t * wi_socket_accept_multiple(wi_array_t *, wi_socket_context_t *, wi_time_interval_t, wi_address_t **); 116 116 WI_EXPORT wi_socket_t * wi_socket_accept(wi_socket_t *, wi_socket_context_t *, wi_time_interval_t, wi_address_t **); 117 117 WI_EXPORT void wi_socket_close(wi_socket_t *); … … 119 119 WI_EXPORT int32_t wi_socket_sendto(wi_socket_t *, wi_socket_context_t *, wi_string_t *, ...); 120 120 WI_EXPORT int32_t wi_socket_sendto_buffer(wi_socket_t *, wi_socket_context_t *, const char *, size_t); 121 WI_EXPORT int32_t wi_socket_recvfrom_multiple(wi_ list_t *, wi_socket_context_t *, char *, size_t, wi_address_t **);121 WI_EXPORT int32_t wi_socket_recvfrom_multiple(wi_array_t *, wi_socket_context_t *, char *, size_t, wi_address_t **); 122 122 WI_EXPORT int32_t wi_socket_recvfrom(wi_socket_t *, wi_socket_context_t *, char *, size_t, wi_address_t **); 123 123 libwired/trunk/libwired/thread/wi-timer.c
r3843 r4391 70 70 71 71 72 static wi_ list_t *_wi_timers;72 static wi_array_t *_wi_timers; 73 73 74 74 static wi_condition_lock_t *_wi_timer_lock; … … 94 94 95 95 void wi_timer_initialize(void) { 96 _wi_timers = wi_ list_init(wi_list_alloc());96 _wi_timers = wi_array_init(wi_array_alloc()); 97 97 _wi_timer_lock = wi_condition_lock_init_with_condition(wi_condition_lock_alloc(), 0); 98 98 } … … 132 132 fire_timer = NULL; 133 133 locked = true; 134 timer = wi_ list_first_data(_wi_timers);134 timer = wi_array_first_data(_wi_timers); 135 135 interval = wi_time_interval(); 136 136 … … 138 138 wi_condition_lock_lock_when_condition(_wi_timer_lock, 1, 0.0); 139 139 140 timer = wi_ list_first_data(_wi_timers);140 timer = wi_array_first_data(_wi_timers); 141 141 interval = wi_time_interval(); 142 142 … … 152 152 } else { 153 153 if(!wi_condition_lock_lock_when_condition(_wi_timer_lock, 1, timer->fire)) 154 fire_timer = wi_ list_first_data(_wi_timers);154 fire_timer = wi_array_first_data(_wi_timers); 155 155 } 156 156 } 157 157 158 158 if(fire_timer) { 159 159 _wi_timer_invalidate(fire_timer); … … 235 235 timer->fire = wi_time_interval() + timer->interval; 236 236 237 wi_ list_wrlock(_wi_timers);238 wi_ list_insert_data_sorted(_wi_timers, timer, _wi_timer_compare);239 wi_ list_unlock(_wi_timers);237 wi_array_wrlock(_wi_timers); 238 wi_array_add_data_sorted(_wi_timers, timer, _wi_timer_compare); 239 wi_array_unlock(_wi_timers); 240 240 241 241 timer->scheduled = true; … … 245 245 246 246 static void _wi_timer_invalidate(wi_timer_t *timer) { 247 wi_ list_wrlock(_wi_timers);248 wi_ list_remove_data(_wi_timers, timer);249 wi_ list_unlock(_wi_timers);247 wi_array_wrlock(_wi_timers); 248 wi_array_remove_data(_wi_timers, timer); 249 wi_array_unlock(_wi_timers); 250 250 251 251 timer->scheduled = false;
