void test_set_access_point(kaa_transport_channel_interface_t *channel) { ASSERT_NOT_NULL(channel); //Fill with fake pointers, just for non null kaa_transport_context_t transport_context; transport_context.kaa_context = (kaa_context_t*)calloc(1, sizeof(kaa_context_t)); transport_context.kaa_context->platform_protocol = (kaa_platform_protocol_t *)CONNECTION_DATA; transport_context.kaa_context->bootstrap_manager = (kaa_bootstrap_manager_t *)CONNECTION_DATA; kaa_error_t error_code = channel->init(channel->context, &transport_context); ASSERT_EQUAL(error_code, KAA_ERR_NONE); //Keepalive will be tested latter during CONNECT message creation error_code = kaa_tcp_channel_set_keepalive_timeout(channel, KEEPALIVE); ASSERT_EQUAL(error_code, KAA_ERR_NONE); error_code = kaa_tcp_channel_set_socket_events_callback(channel, kaa_tcp_channel_event_callback_fn, channel); //Use connection data to destination 192.168.77.2:9888 kaa_access_point_t access_point; access_point.id = 10; access_point.connection_data = CONNECTION_DATA; access_point.connection_data_len = sizeof(CONNECTION_DATA); reset_access_point_test_info(); error_code = channel->set_access_point(channel->context, &access_point); ASSERT_EQUAL(error_code, KAA_ERR_NONE); error_code= kaa_tcp_channel_check_keepalive(channel); ASSERT_EQUAL(error_code, KAA_ERR_NONE); //Check correct call of gethostbyaddr ASSERT_EQUAL(access_point_test_info.gethostbyaddr_requested, true); //Check if new socket created ASSERT_EQUAL(access_point_test_info.new_socket_created, true); kaa_fd_t fd = -1; error_code = kaa_tcp_channel_get_descriptor(channel,&fd); ASSERT_EQUAL(error_code, KAA_ERR_NONE); //Check assigned fd ASSERT_EQUAL(fd, ACCESS_POINT_SOCKET_FD); access_point_test_info.fd = fd; //Check correct RD,WR operation, in this point we waiting for correct Connect to destination //So RD should be false, WR true CHECK_SOCKET_RW(channel,false,true); }
kaa_error_t kaa_client_init_channel(kaa_client_t *kaa_client, kaa_client_channel_type_t channel_type) { KAA_RETURN_IF_NIL(kaa_client, KAA_ERR_BADPARAM); kaa_error_t error_code = KAA_ERR_NONE; KAA_LOG_TRACE(kaa_client->context->logger, KAA_ERR_NONE, "Initializing channel...."); switch (channel_type) { case KAA_CLIENT_CHANNEL_TYPE_BOOTSTRAP: error_code = kaa_tcp_channel_create(&kaa_client->channel , kaa_client->context->logger , BOOTSTRAP_SERVICE , BOOTSTRAP_SERVICE_COUNT); break; case KAA_CLIENT_CHANNEL_TYPE_OPERATIONS: error_code = kaa_tcp_channel_create(&kaa_client->channel , kaa_client->context->logger , OPERATIONS_SERVICES , OPERATIONS_SERVICES_COUNT); break; } if (error_code) { KAA_LOG_ERROR(kaa_client->context->logger, error_code, "Failed to create transport channel, type %d", channel_type); return error_code; } error_code = kaa_tcp_channel_set_socket_events_callback(&kaa_client->channel, &on_kaa_tcp_channel_event, kaa_client); if (error_code) { KAA_LOG_ERROR(kaa_client->context->logger, error_code, "Failed to set socket events callback, channel type %d", channel_type); return error_code; } error_code = kaa_channel_manager_add_transport_channel(kaa_client->context->channel_manager , &kaa_client->channel , &kaa_client->channel_id); if (error_code) { KAA_LOG_ERROR(kaa_client->context->logger, error_code, "Failed to add transport channel, type %d", channel_type); return error_code; } KAA_LOG_INFO(kaa_client->context->logger, KAA_ERR_NONE, "Channel [0x%08X] initialized successfully (type %d)" , kaa_client->channel_id, channel_type); return error_code; }
kaa_error_t kaa_client_start(kaa_client_t *kaa_client , external_process_fn external_process , void *external_process_context , kaa_time_t max_delay) { KAA_RETURN_IF_NIL(kaa_client, KAA_ERR_BADPARAM); KAA_LOG_TRACE(kaa_client->kaa_context->logger, KAA_ERR_NONE, "Kaa client starting ..."); print_mem_stat(kaa_client); kaa_error_t error_code = KAA_ERR_NONE; error_code = kaa_tcp_channel_create(&kaa_client->bootstrap_channel , kaa_client->kaa_context->logger , BOOTSTRAP_SERVICE , BOOTSTRAP_SERVICE_COUNT); if (error_code) { KAA_LOG_ERROR(kaa_client->kaa_context->logger, error_code, "Error during Kaa bootstrap channel creation"); return error_code; } error_code = kaa_tcp_channel_set_socket_events_callback(&kaa_client->bootstrap_channel, on_kaa_tcp_channel_event, (void*)kaa_client); if (error_code) { KAA_LOG_ERROR(kaa_client->kaa_context->logger, error_code, "Error setting callback bootstrap channel"); return error_code; } KAA_LOG_TRACE(kaa_client->kaa_context->logger, KAA_ERR_NONE, "Kaa client - bootstrap channel initialized"); print_mem_stat(kaa_client); error_code = kaa_channel_manager_add_transport_channel(kaa_client->kaa_context->channel_manager , &kaa_client->bootstrap_channel , &kaa_client->bootstrap_channel_id); if (error_code) { KAA_LOG_ERROR(kaa_client->kaa_context->logger, error_code, "Error setting bootstrap channel setting as transport"); return error_code; } //Push running thread sndc_sem_post(&kaa_client->start_semophore); KAA_LOG_INFO(kaa_client->kaa_context->logger, KAA_ERR_NONE, "Kaa client started"); return KAA_ERR_NONE; }