memcached.h | memcached.h | |||
---|---|---|---|---|
skipping to change at line 22 | skipping to change at line 22 | |||
#include <stdlib.h> | #include <stdlib.h> | |||
#include <inttypes.h> | #include <inttypes.h> | |||
#include <sys/types.h> | #include <sys/types.h> | |||
#include <netinet/in.h> | #include <netinet/in.h> | |||
#include <libmemcached/libmemcached_config.h> | #include <libmemcached/libmemcached_config.h> | |||
#include <libmemcached/memcached_constants.h> | #include <libmemcached/memcached_constants.h> | |||
#include <libmemcached/memcached_types.h> | #include <libmemcached/memcached_types.h> | |||
#include <libmemcached/memcached_watchpoint.h> | #include <libmemcached/memcached_watchpoint.h> | |||
#include <libmemcached/memcached_get.h> | ||||
#include <libmemcached/memcached_server.h> | #include <libmemcached/memcached_server.h> | |||
#include <libmemcached/memcached_string.h> | #include <libmemcached/memcached_string.h> | |||
#include <libmemcached/memcached_result.h> | #include <libmemcached/memcached_result.h> | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
extern "C" { | extern "C" { | |||
#endif | #endif | |||
/* These are Private and should not be used by applications */ | /* These are Private and should not be used by applications */ | |||
#define MEMCACHED_VERSION_STRING_LENGTH 12 | #define MEMCACHED_VERSION_STRING_LENGTH 12 | |||
/* string value */ | /* string value */ | |||
struct memcached_continuum_item_st { | struct memcached_continuum_item_st { | |||
uint32_t index; | uint32_t index; | |||
uint32_t value; | uint32_t value; | |||
}; | }; | |||
#define LIBMEMCACHED_VERSION_STRING "0.20" | #define LIBMEMCACHED_VERSION_STRING "0.21" | |||
struct memcached_stat_st { | struct memcached_stat_st { | |||
uint32_t pid; | uint32_t pid; | |||
uint32_t uptime; | uint32_t uptime; | |||
uint32_t threads; | uint32_t threads; | |||
uint32_t time; | uint32_t time; | |||
uint32_t pointer_size; | uint32_t pointer_size; | |||
uint32_t rusage_user_seconds; | uint32_t rusage_user_seconds; | |||
uint32_t rusage_user_microseconds; | uint32_t rusage_user_microseconds; | |||
uint32_t rusage_system_seconds; | uint32_t rusage_system_seconds; | |||
skipping to change at line 95 | skipping to change at line 96 | |||
uint32_t wheel_count; | uint32_t wheel_count; | |||
uint32_t continuum_count; | uint32_t continuum_count; | |||
memcached_continuum_item_st *continuum; | memcached_continuum_item_st *continuum; | |||
memcached_clone_func on_clone; | memcached_clone_func on_clone; | |||
memcached_cleanup_func on_cleanup; | memcached_cleanup_func on_cleanup; | |||
memcached_free_function call_free; | memcached_free_function call_free; | |||
memcached_malloc_function call_malloc; | memcached_malloc_function call_malloc; | |||
memcached_realloc_function call_realloc; | memcached_realloc_function call_realloc; | |||
memcached_trigger_key get_key_failure; | memcached_trigger_key get_key_failure; | |||
memcached_trigger_delete_key delete_trigger; | memcached_trigger_delete_key delete_trigger; | |||
char prefix_key[MEMCACHED_PREFIX_KEY_MAX_SIZE]; | ||||
size_t prefix_key_length; | ||||
#ifdef NOT_USED /* Future Use */ | #ifdef NOT_USED /* Future Use */ | |||
uint8_t replicas; | uint8_t replicas; | |||
memcached_return warning; | memcached_return warning; | |||
#endif | #endif | |||
}; | }; | |||
/* Public API */ | /* Public API */ | |||
const char * memcached_lib_version(void); | const char * memcached_lib_version(void); | |||
memcached_st *memcached_create(memcached_st *ptr); | memcached_st *memcached_create(memcached_st *ptr); | |||
void memcached_free(memcached_st *ptr); | void memcached_free(memcached_st *ptr); | |||
memcached_st *memcached_clone(memcached_st *clone, memcached_st *ptr); | memcached_st *memcached_clone(memcached_st *clone, memcached_st *ptr); | |||
memcached_return memcached_delete(memcached_st *ptr, char *key, size_t key_ length, | memcached_return memcached_delete(memcached_st *ptr, const char *key, size_ t key_length, | |||
time_t expiration); | time_t expiration); | |||
memcached_return memcached_increment(memcached_st *ptr, | memcached_return memcached_increment(memcached_st *ptr, | |||
char *key, size_t key_length, | const char *key, size_t key_length, | |||
uint32_t offset, | uint32_t offset, | |||
uint64_t *value); | uint64_t *value); | |||
memcached_return memcached_decrement(memcached_st *ptr, | memcached_return memcached_decrement(memcached_st *ptr, | |||
char *key, size_t key_length, | const char *key, size_t key_length, | |||
uint32_t offset, | uint32_t offset, | |||
uint64_t *value); | uint64_t *value); | |||
void memcached_stat_free(memcached_st *, memcached_stat_st *); | void memcached_stat_free(memcached_st *, memcached_stat_st *); | |||
memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_ return *error); | memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_ return *error); | |||
memcached_return memcached_stat_servername(memcached_stat_st *stat, char *a rgs, | memcached_return memcached_stat_servername(memcached_stat_st *stat, char *a rgs, | |||
char *hostname, unsigned int por t); | char *hostname, unsigned int por t); | |||
memcached_return memcached_flush(memcached_st *ptr, time_t expiration); | memcached_return memcached_flush(memcached_st *ptr, time_t expiration); | |||
memcached_return memcached_verbosity(memcached_st *ptr, unsigned int verbos ity); | memcached_return memcached_verbosity(memcached_st *ptr, unsigned int verbos ity); | |||
void memcached_quit(memcached_st *ptr); | void memcached_quit(memcached_st *ptr); | |||
char *memcached_strerror(memcached_st *ptr, memcached_return rc); | char *memcached_strerror(memcached_st *ptr, memcached_return rc); | |||
memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavi or flag, uint64_t data); | memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavi or flag, uint64_t data); | |||
uint64_t memcached_behavior_get(memcached_st *ptr, memcached_behavior flag) ; | uint64_t memcached_behavior_get(memcached_st *ptr, memcached_behavior flag) ; | |||
/* Get functions */ | ||||
char *memcached_get(memcached_st *ptr, char *key, size_t key_length, | ||||
size_t *value_length, | ||||
uint32_t *flags, | ||||
memcached_return *error); | ||||
memcached_return memcached_mget(memcached_st *ptr, | ||||
char **keys, size_t *key_length, | ||||
unsigned int number_of_keys); | ||||
char *memcached_fetch(memcached_st *ptr, char *key, size_t *key_length, | ||||
size_t *value_length, uint32_t *flags, | ||||
memcached_return *error); | ||||
memcached_result_st *memcached_fetch_result(memcached_st *ptr, | ||||
memcached_result_st *result, | ||||
memcached_return *error); | ||||
/* Server Public functions */ | /* Server Public functions */ | |||
memcached_return memcached_server_add_udp(memcached_st *ptr, | memcached_return memcached_server_add_udp(memcached_st *ptr, | |||
char *hostname, | char *hostname, | |||
unsigned int port); | unsigned int port); | |||
memcached_return memcached_server_add_unix_socket(memcached_st *ptr, | memcached_return memcached_server_add_unix_socket(memcached_st *ptr, | |||
char *filename); | char *filename); | |||
memcached_return memcached_server_add(memcached_st *ptr, char *hostname, | memcached_return memcached_server_add(memcached_st *ptr, char *hostname, | |||
unsigned int port); | unsigned int port); | |||
void memcached_server_list_free(memcached_server_st *ptr); | void memcached_server_list_free(memcached_server_st *ptr); | |||
skipping to change at line 167 | skipping to change at line 155 | |||
char *hostname, unsigned int p ort, | char *hostname, unsigned int p ort, | |||
memcached_return *error); | memcached_return *error); | |||
unsigned int memcached_server_list_count(memcached_server_st *ptr); | unsigned int memcached_server_list_count(memcached_server_st *ptr); | |||
memcached_server_st *memcached_servers_parse(char *server_strings); | memcached_server_st *memcached_servers_parse(char *server_strings); | |||
char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st *stat, | char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st *stat, | |||
char *key, memcached_return *error); | char *key, memcached_return *error); | |||
char ** memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *stat, | char ** memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *stat, | |||
memcached_return *error); | memcached_return *error); | |||
char *memcached_get_by_key(memcached_st *ptr, | ||||
char *master_key, size_t master_key_length, | ||||
char *key, size_t key_length, | ||||
size_t *value_length, | ||||
uint32_t *flags, | ||||
memcached_return *error); | ||||
memcached_return memcached_mget_by_key(memcached_st *ptr, | ||||
char *master_key, size_t master_key_ | ||||
length, | ||||
char **keys, size_t *key_length, | ||||
unsigned int number_of_keys); | ||||
memcached_return memcached_delete_by_key(memcached_st *ptr, | memcached_return memcached_delete_by_key(memcached_st *ptr, | |||
char *master_key, size_t master_ke | const char *master_key, size_t mas | |||
y_length, | ter_key_length, | |||
char *key, size_t key_length, | const char *key, size_t key_length | |||
, | ||||
time_t expiration); | time_t expiration); | |||
memcached_return memcached_fetch_execute(memcached_st *ptr, | memcached_return memcached_fetch_execute(memcached_st *ptr, | |||
memcached_execute_function *ca llback, | memcached_execute_function *ca llback, | |||
void *context, | void *context, | |||
unsigned int number_of_callbac ks); | unsigned int number_of_callbac ks); | |||
memcached_return memcached_callback_set(memcached_st *ptr, | memcached_return memcached_callback_set(memcached_st *ptr, | |||
memcached_callback flag, | memcached_callback flag, | |||
void *data); | void *data); | |||
End of changes. 9 change blocks. | ||||
35 lines changed or deleted | 11 lines changed or added | |||
memcached_constants.h | memcached_constants.h | |||
---|---|---|---|---|
skipping to change at line 27 | skipping to change at line 27 | |||
#define MEMCACHED_DEFAULT_PORT 11211 | #define MEMCACHED_DEFAULT_PORT 11211 | |||
#define MEMCACHED_MAX_KEY 251 /* We add one to have it null terminated */ | #define MEMCACHED_MAX_KEY 251 /* We add one to have it null terminated */ | |||
#define MEMCACHED_MAX_BUFFER 8196 | #define MEMCACHED_MAX_BUFFER 8196 | |||
#define MEMCACHED_MAX_HOST_LENGTH 64 | #define MEMCACHED_MAX_HOST_LENGTH 64 | |||
#define MEMCACHED_MAX_HOST_SORT_LENGTH 86 /* Used for Ketama */ | #define MEMCACHED_MAX_HOST_SORT_LENGTH 86 /* Used for Ketama */ | |||
#define MEMCACHED_POINTS_PER_SERVER 100 | #define MEMCACHED_POINTS_PER_SERVER 100 | |||
#define MEMCACHED_CONTINUUM_SIZE MEMCACHED_POINTS_PER_SERVER*100 /* This wo uld then set max hosts to 100 */ | #define MEMCACHED_CONTINUUM_SIZE MEMCACHED_POINTS_PER_SERVER*100 /* This wo uld then set max hosts to 100 */ | |||
#define MEMCACHED_STRIDE 4 | #define MEMCACHED_STRIDE 4 | |||
#define MEMCACHED_DEFAULT_TIMEOUT 1000 | #define MEMCACHED_DEFAULT_TIMEOUT 1000 | |||
#define MEMCACHED_CONTINUUM_ADDITION 10 /* How many extra slots we should b uild for in the continuum */ | #define MEMCACHED_CONTINUUM_ADDITION 10 /* How many extra slots we should b uild for in the continuum */ | |||
#define MEMCACHED_PREFIX_KEY_MAX_SIZE 12 | ||||
typedef enum { | typedef enum { | |||
MEMCACHED_SUCCESS, | MEMCACHED_SUCCESS, | |||
MEMCACHED_FAILURE, | MEMCACHED_FAILURE, | |||
MEMCACHED_HOST_LOOKUP_FAILURE, | MEMCACHED_HOST_LOOKUP_FAILURE, | |||
MEMCACHED_CONNECTION_FAILURE, | MEMCACHED_CONNECTION_FAILURE, | |||
MEMCACHED_CONNECTION_BIND_FAILURE, | MEMCACHED_CONNECTION_BIND_FAILURE, | |||
MEMCACHED_WRITE_FAILURE, | MEMCACHED_WRITE_FAILURE, | |||
MEMCACHED_READ_FAILURE, | MEMCACHED_READ_FAILURE, | |||
MEMCACHED_UNKNOWN_READ_FAILURE, | MEMCACHED_UNKNOWN_READ_FAILURE, | |||
skipping to change at line 92 | skipping to change at line 93 | |||
MEMCACHED_BEHAVIOR_DISTRIBUTION, | MEMCACHED_BEHAVIOR_DISTRIBUTION, | |||
MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, | MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, | |||
MEMCACHED_BEHAVIOR_USER_DATA, | MEMCACHED_BEHAVIOR_USER_DATA, | |||
MEMCACHED_BEHAVIOR_SORT_HOSTS, | MEMCACHED_BEHAVIOR_SORT_HOSTS, | |||
MEMCACHED_BEHAVIOR_VERIFY_KEY, | MEMCACHED_BEHAVIOR_VERIFY_KEY, | |||
MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT, | MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT, | |||
MEMCACHED_BEHAVIOR_RETRY_TIMEOUT, | MEMCACHED_BEHAVIOR_RETRY_TIMEOUT, | |||
} memcached_behavior; | } memcached_behavior; | |||
typedef enum { | typedef enum { | |||
MEMCACHED_CALLBACK_PREFIX_KEY, | ||||
MEMCACHED_CALLBACK_USER_DATA, | MEMCACHED_CALLBACK_USER_DATA, | |||
MEMCACHED_CALLBACK_CLEANUP_FUNCTION, | MEMCACHED_CALLBACK_CLEANUP_FUNCTION, | |||
MEMCACHED_CALLBACK_CLONE_FUNCTION, | MEMCACHED_CALLBACK_CLONE_FUNCTION, | |||
MEMCACHED_CALLBACK_MALLOC_FUNCTION, | MEMCACHED_CALLBACK_MALLOC_FUNCTION, | |||
MEMCACHED_CALLBACK_REALLOC_FUNCTION, | MEMCACHED_CALLBACK_REALLOC_FUNCTION, | |||
MEMCACHED_CALLBACK_FREE_FUNCTION, | MEMCACHED_CALLBACK_FREE_FUNCTION, | |||
MEMCACHED_CALLBACK_GET_FAILURE, | MEMCACHED_CALLBACK_GET_FAILURE, | |||
MEMCACHED_CALLBACK_DELETE_TRIGGER, | MEMCACHED_CALLBACK_DELETE_TRIGGER, | |||
} memcached_callback; | } memcached_callback; | |||
End of changes. 2 change blocks. | ||||
0 lines changed or deleted | 2 lines changed or added | |||
memcached_storage.h | memcached_storage.h | |||
---|---|---|---|---|
skipping to change at line 17 | skipping to change at line 17 | |||
*/ | */ | |||
#ifndef __MEMCACHED_STORAGE_H__ | #ifndef __MEMCACHED_STORAGE_H__ | |||
#define __MEMCACHED_STORAGE_H__ | #define __MEMCACHED_STORAGE_H__ | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
extern "C" { | extern "C" { | |||
#endif | #endif | |||
/* All of the functions for adding data to the server */ | /* All of the functions for adding data to the server */ | |||
memcached_return memcached_set(memcached_st *ptr, char *key, size_t key_len | memcached_return memcached_set(memcached_st *ptr, const char *key, size_t k | |||
gth, | ey_length, | |||
char *value, size_t value_length, | const char *value, size_t value_length, | |||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_add(memcached_st *ptr, char *key, size_t key_len | memcached_return memcached_add(memcached_st *ptr, const char *key, size_t k | |||
gth, | ey_length, | |||
char *value, size_t value_length, | const char *value, size_t value_length, | |||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_replace(memcached_st *ptr, char *key, size_t key | memcached_return memcached_replace(memcached_st *ptr, const char *key, size | |||
_length, | _t key_length, | |||
char *value, size_t value_length, | const char *value, size_t value_length, | |||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_append(memcached_st *ptr, | memcached_return memcached_append(memcached_st *ptr, | |||
char *key, size_t key_length, | const char *key, size_t key_length, | |||
char *value, size_t value_length, | const char *value, size_t value_length, | |||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_prepend(memcached_st *ptr, | memcached_return memcached_prepend(memcached_st *ptr, | |||
char *key, size_t key_length, | const char *key, size_t key_length, | |||
char *value, size_t value_length, | const char *value, size_t value_length, | |||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_cas(memcached_st *ptr, | memcached_return memcached_cas(memcached_st *ptr, | |||
char *key, size_t key_length, | const char *key, size_t key_length, | |||
char *value, size_t value_length, | const char *value, size_t value_length, | |||
time_t expiration, | time_t expiration, | |||
uint32_t flags, | uint32_t flags, | |||
uint64_t cas); | uint64_t cas); | |||
memcached_return memcached_set_by_key(memcached_st *ptr, | memcached_return memcached_set_by_key(memcached_st *ptr, | |||
char *master_key, size_t master_key_l | const char *master_key, size_t master | |||
ength, | _key_length, | |||
char *key, size_t key_length, | const char *key, size_t key_length, | |||
char *value, size_t value_length, | const char *value, size_t value_lengt | |||
h, | ||||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_add_by_key(memcached_st *ptr, | memcached_return memcached_add_by_key(memcached_st *ptr, | |||
char *master_key, size_t master_key_l | const char *master_key, size_t master | |||
ength, | _key_length, | |||
char *key, size_t key_length, | const char *key, size_t key_length, | |||
char *value, size_t value_length, | const char *value, size_t value_lengt | |||
h, | ||||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_replace_by_key(memcached_st *ptr, | memcached_return memcached_replace_by_key(memcached_st *ptr, | |||
char *master_key, size_t master_k | const char *master_key, size_t ma | |||
ey_length, | ster_key_length, | |||
char *key, size_t key_length, | const char *key, size_t key_lengt | |||
char *value, size_t value_length, | h, | |||
const char *value, size_t value_l | ||||
ength, | ||||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_prepend_by_key(memcached_st *ptr, | memcached_return memcached_prepend_by_key(memcached_st *ptr, | |||
char *master_key, size_t master_k | const char *master_key, size_t ma | |||
ey_length, | ster_key_length, | |||
char *key, size_t key_length, | const char *key, size_t key_lengt | |||
char *value, size_t value_length, | h, | |||
const char *value, size_t value_l | ||||
ength, | ||||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_append_by_key(memcached_st *ptr, | memcached_return memcached_append_by_key(memcached_st *ptr, | |||
char *master_key, size_t master_ke | const char *master_key, size_t mas | |||
y_length, | ter_key_length, | |||
char *key, size_t key_length, | const char *key, size_t key_length | |||
char *value, size_t value_length, | , | |||
const char *value, size_t value_le | ||||
ngth, | ||||
time_t expiration, | time_t expiration, | |||
uint32_t flags); | uint32_t flags); | |||
memcached_return memcached_cas_by_key(memcached_st *ptr, | memcached_return memcached_cas_by_key(memcached_st *ptr, | |||
char *master_key, size_t master_key_l | const char *master_key, size_t master | |||
ength, | _key_length, | |||
char *key, size_t key_length, | const char *key, size_t key_length, | |||
char *value, size_t value_length, | const char *value, size_t value_lengt | |||
h, | ||||
time_t expiration, | time_t expiration, | |||
uint32_t flags, | uint32_t flags, | |||
uint64_t cas); | uint64_t cas); | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
#endif /* __MEMCACHED_STORAGE_H__ */ | #endif /* __MEMCACHED_STORAGE_H__ */ | |||
End of changes. 12 change blocks. | ||||
39 lines changed or deleted | 48 lines changed or added | |||
memcached_types.h | memcached_types.h | |||
---|---|---|---|---|
skipping to change at line 30 | skipping to change at line 30 | |||
typedef struct memcached_server_st memcached_server_st; | typedef struct memcached_server_st memcached_server_st; | |||
typedef struct memcached_continuum_item_st memcached_continuum_item_st; | typedef struct memcached_continuum_item_st memcached_continuum_item_st; | |||
typedef memcached_return (*memcached_clone_func)(memcached_st *parent, memc ached_st *clone); | typedef memcached_return (*memcached_clone_func)(memcached_st *parent, memc ached_st *clone); | |||
typedef memcached_return (*memcached_cleanup_func)(memcached_st *ptr); | typedef memcached_return (*memcached_cleanup_func)(memcached_st *ptr); | |||
typedef void (*memcached_free_function)(memcached_st *ptr, void *mem); | typedef void (*memcached_free_function)(memcached_st *ptr, void *mem); | |||
typedef void *(*memcached_malloc_function)(memcached_st *ptr, const size_t size); | typedef void *(*memcached_malloc_function)(memcached_st *ptr, const size_t size); | |||
typedef void *(*memcached_realloc_function)(memcached_st *ptr, void *mem, c onst size_t size); | typedef void *(*memcached_realloc_function)(memcached_st *ptr, void *mem, c onst size_t size); | |||
typedef memcached_return (*memcached_execute_function)(memcached_st *ptr, m emcached_result_st *result, void *context); | typedef memcached_return (*memcached_execute_function)(memcached_st *ptr, m emcached_result_st *result, void *context); | |||
typedef memcached_return (*memcached_server_function)(memcached_st *ptr, me mcached_server_st *server, void *context); | typedef memcached_return (*memcached_server_function)(memcached_st *ptr, me mcached_server_st *server, void *context); | |||
typedef memcached_return (*memcached_trigger_key)(memcached_st *ptr, | typedef memcached_return (*memcached_trigger_key)(memcached_st *ptr, | |||
char *key, size_t key_len gth, | const char *key, size_t k ey_length, | |||
memcached_result_st *resu lt); | memcached_result_st *resu lt); | |||
typedef memcached_return (*memcached_trigger_delete_key)(memcached_st *ptr, | typedef memcached_return (*memcached_trigger_delete_key)(memcached_st *ptr, | |||
char *key, size_t key_length); | const char *key, s ize_t key_length); | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
#endif /* __MEMCACHED_TYPES_H__ */ | #endif /* __MEMCACHED_TYPES_H__ */ | |||
End of changes. 2 change blocks. | ||||
2 lines changed or deleted | 2 lines changed or added | |||