Skip to content

Commit 8c859b0

Browse files
authored
Merge pull request #225 from muzarski/cassdatatype-mut
treewide: change *const to *mut based on cassandra.h
2 parents 54264db + bd177d4 commit 8c859b0

File tree

5 files changed

+56
-62
lines changed

5 files changed

+56
-62
lines changed

scylla-rust-wrapper/src/cass_types.rs

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -446,12 +446,8 @@ pub fn get_column_type(column_type: &ColumnType) -> CassDataType {
446446
CassDataType::new(inner)
447447
}
448448

449-
// Changed return type to const ptr - ArcFFI::into_ptr is const.
450-
// It's probably not a good idea - but cppdriver doesn't guarantee
451-
// thread safety apart from CassSession and CassFuture.
452-
// This comment also applies to other functions that create CassDataType.
453449
#[no_mangle]
454-
pub unsafe extern "C" fn cass_data_type_new(value_type: CassValueType) -> *const CassDataType {
450+
pub unsafe extern "C" fn cass_data_type_new(value_type: CassValueType) -> *mut CassDataType {
455451
let inner = match value_type {
456452
CassValueType::CASS_VALUE_TYPE_LIST => CassDataTypeInner::List {
457453
typ: None,
@@ -472,29 +468,29 @@ pub unsafe extern "C" fn cass_data_type_new(value_type: CassValueType) -> *const
472468
t if t < CassValueType::CASS_VALUE_TYPE_LAST_ENTRY => CassDataTypeInner::Value(t),
473469
_ => return ptr::null_mut(),
474470
};
475-
ArcFFI::into_ptr(CassDataType::new_arced(inner))
471+
ArcFFI::into_ptr(CassDataType::new_arced(inner)) as *mut _
476472
}
477473

478474
#[no_mangle]
479475
pub unsafe extern "C" fn cass_data_type_new_from_existing(
480476
data_type: *const CassDataType,
481-
) -> *const CassDataType {
477+
) -> *mut CassDataType {
482478
let data_type = ArcFFI::as_ref(data_type);
483-
ArcFFI::into_ptr(CassDataType::new_arced(data_type.get_unchecked().clone()))
479+
ArcFFI::into_ptr(CassDataType::new_arced(data_type.get_unchecked().clone())) as *mut _
484480
}
485481

486482
#[no_mangle]
487-
pub unsafe extern "C" fn cass_data_type_new_tuple(item_count: size_t) -> *const CassDataType {
483+
pub unsafe extern "C" fn cass_data_type_new_tuple(item_count: size_t) -> *mut CassDataType {
488484
ArcFFI::into_ptr(CassDataType::new_arced(CassDataTypeInner::Tuple(
489485
Vec::with_capacity(item_count as usize),
490-
)))
486+
))) as *mut _
491487
}
492488

493489
#[no_mangle]
494-
pub unsafe extern "C" fn cass_data_type_new_udt(field_count: size_t) -> *const CassDataType {
490+
pub unsafe extern "C" fn cass_data_type_new_udt(field_count: size_t) -> *mut CassDataType {
495491
ArcFFI::into_ptr(CassDataType::new_arced(CassDataTypeInner::UDT(
496492
UDTDataType::with_capacity(field_count as usize),
497-
)))
493+
))) as *mut _
498494
}
499495

500496
#[no_mangle]
@@ -540,15 +536,15 @@ pub unsafe extern "C" fn cass_data_type_type_name(
540536

541537
#[no_mangle]
542538
pub unsafe extern "C" fn cass_data_type_set_type_name(
543-
data_type: *const CassDataType,
539+
data_type: *mut CassDataType,
544540
type_name: *const c_char,
545541
) -> CassError {
546542
cass_data_type_set_type_name_n(data_type, type_name, strlen(type_name))
547543
}
548544

549545
#[no_mangle]
550546
pub unsafe extern "C" fn cass_data_type_set_type_name_n(
551-
data_type_raw: *const CassDataType,
547+
data_type_raw: *mut CassDataType,
552548
type_name: *const c_char,
553549
type_name_length: size_t,
554550
) -> CassError {
@@ -584,15 +580,15 @@ pub unsafe extern "C" fn cass_data_type_keyspace(
584580

585581
#[no_mangle]
586582
pub unsafe extern "C" fn cass_data_type_set_keyspace(
587-
data_type: *const CassDataType,
583+
data_type: *mut CassDataType,
588584
keyspace: *const c_char,
589585
) -> CassError {
590586
cass_data_type_set_keyspace_n(data_type, keyspace, strlen(keyspace))
591587
}
592588

593589
#[no_mangle]
594590
pub unsafe extern "C" fn cass_data_type_set_keyspace_n(
595-
data_type: *const CassDataType,
591+
data_type: *mut CassDataType,
596592
keyspace: *const c_char,
597593
keyspace_length: size_t,
598594
) -> CassError {
@@ -628,15 +624,15 @@ pub unsafe extern "C" fn cass_data_type_class_name(
628624

629625
#[no_mangle]
630626
pub unsafe extern "C" fn cass_data_type_set_class_name(
631-
data_type: *const CassDataType,
627+
data_type: *mut CassDataType,
632628
class_name: *const ::std::os::raw::c_char,
633629
) -> CassError {
634630
cass_data_type_set_class_name_n(data_type, class_name, strlen(class_name))
635631
}
636632

637633
#[no_mangle]
638634
pub unsafe extern "C" fn cass_data_type_set_class_name_n(
639-
data_type: *const CassDataType,
635+
data_type: *mut CassDataType,
640636
class_name: *const ::std::os::raw::c_char,
641637
class_name_length: size_t,
642638
) -> CassError {
@@ -740,7 +736,7 @@ pub unsafe extern "C" fn cass_data_type_sub_type_name(
740736

741737
#[no_mangle]
742738
pub unsafe extern "C" fn cass_data_type_add_sub_type(
743-
data_type: *const CassDataType,
739+
data_type: *mut CassDataType,
744740
sub_data_type: *const CassDataType,
745741
) -> CassError {
746742
let data_type = ArcFFI::as_ref(data_type);
@@ -755,7 +751,7 @@ pub unsafe extern "C" fn cass_data_type_add_sub_type(
755751

756752
#[no_mangle]
757753
pub unsafe extern "C" fn cass_data_type_add_sub_type_by_name(
758-
data_type: *const CassDataType,
754+
data_type: *mut CassDataType,
759755
name: *const c_char,
760756
sub_data_type: *const CassDataType,
761757
) -> CassError {
@@ -764,7 +760,7 @@ pub unsafe extern "C" fn cass_data_type_add_sub_type_by_name(
764760

765761
#[no_mangle]
766762
pub unsafe extern "C" fn cass_data_type_add_sub_type_by_name_n(
767-
data_type_raw: *const CassDataType,
763+
data_type_raw: *mut CassDataType,
768764
name: *const c_char,
769765
name_length: size_t,
770766
sub_data_type_raw: *const CassDataType,
@@ -786,7 +782,7 @@ pub unsafe extern "C" fn cass_data_type_add_sub_type_by_name_n(
786782

787783
#[no_mangle]
788784
pub unsafe extern "C" fn cass_data_type_add_sub_value_type(
789-
data_type: *const CassDataType,
785+
data_type: *mut CassDataType,
790786
sub_value_type: CassValueType,
791787
) -> CassError {
792788
let sub_data_type = CassDataType::new_arced(CassDataTypeInner::Value(sub_value_type));
@@ -795,7 +791,7 @@ pub unsafe extern "C" fn cass_data_type_add_sub_value_type(
795791

796792
#[no_mangle]
797793
pub unsafe extern "C" fn cass_data_type_add_sub_value_type_by_name(
798-
data_type: *const CassDataType,
794+
data_type: *mut CassDataType,
799795
name: *const c_char,
800796
sub_value_type: CassValueType,
801797
) -> CassError {
@@ -805,7 +801,7 @@ pub unsafe extern "C" fn cass_data_type_add_sub_value_type_by_name(
805801

806802
#[no_mangle]
807803
pub unsafe extern "C" fn cass_data_type_add_sub_value_type_by_name_n(
808-
data_type: *const CassDataType,
804+
data_type: *mut CassDataType,
809805
name: *const c_char,
810806
name_length: size_t,
811807
sub_value_type: CassValueType,

scylla-rust-wrapper/src/future.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ type CassFutureError = (CassError, String);
2828
pub type CassFutureResult = Result<CassResultValue, CassFutureError>;
2929

3030
pub type CassFutureCallback =
31-
Option<unsafe extern "C" fn(future: *const CassFuture, data: *mut c_void)>;
31+
Option<unsafe extern "C" fn(future: *mut CassFuture, data: *mut c_void)>;
3232

3333
struct BoundCallback {
3434
pub cb: CassFutureCallback,
@@ -42,7 +42,7 @@ unsafe impl Send for BoundCallback {}
4242
impl BoundCallback {
4343
fn invoke(self, fut: &CassFuture) {
4444
unsafe {
45-
self.cb.unwrap()(fut as *const CassFuture, self.data);
45+
self.cb.unwrap()((fut as *const _) as *mut _, self.data);
4646
}
4747
}
4848
}
@@ -289,21 +289,21 @@ impl CheckSendSync for CassFuture {}
289289

290290
#[no_mangle]
291291
pub unsafe extern "C" fn cass_future_set_callback(
292-
future_raw: *const CassFuture,
292+
future_raw: *mut CassFuture,
293293
callback: CassFutureCallback,
294294
data: *mut ::std::os::raw::c_void,
295295
) -> CassError {
296296
ArcFFI::as_ref(future_raw).set_callback(callback, data)
297297
}
298298

299299
#[no_mangle]
300-
pub unsafe extern "C" fn cass_future_wait(future_raw: *const CassFuture) {
300+
pub unsafe extern "C" fn cass_future_wait(future_raw: *mut CassFuture) {
301301
ArcFFI::as_ref(future_raw).with_waited_result(|_| ());
302302
}
303303

304304
#[no_mangle]
305305
pub unsafe extern "C" fn cass_future_wait_timed(
306-
future_raw: *const CassFuture,
306+
future_raw: *mut CassFuture,
307307
timeout_us: cass_duration_t,
308308
) -> cass_bool_t {
309309
ArcFFI::as_ref(future_raw)
@@ -312,7 +312,7 @@ pub unsafe extern "C" fn cass_future_wait_timed(
312312
}
313313

314314
#[no_mangle]
315-
pub unsafe extern "C" fn cass_future_ready(future_raw: *const CassFuture) -> cass_bool_t {
315+
pub unsafe extern "C" fn cass_future_ready(future_raw: *mut CassFuture) -> cass_bool_t {
316316
let state_guard = ArcFFI::as_ref(future_raw).state.lock().unwrap();
317317
match state_guard.value {
318318
None => cass_false,
@@ -321,7 +321,7 @@ pub unsafe extern "C" fn cass_future_ready(future_raw: *const CassFuture) -> cas
321321
}
322322

323323
#[no_mangle]
324-
pub unsafe extern "C" fn cass_future_error_code(future_raw: *const CassFuture) -> CassError {
324+
pub unsafe extern "C" fn cass_future_error_code(future_raw: *mut CassFuture) -> CassError {
325325
ArcFFI::as_ref(future_raw).with_waited_result(|r: &mut CassFutureResult| match r {
326326
Ok(CassResultValue::QueryError(err)) => err.to_cass_error(),
327327
Err((err, _)) => *err,
@@ -349,14 +349,12 @@ pub unsafe extern "C" fn cass_future_error_message(
349349
}
350350

351351
#[no_mangle]
352-
pub unsafe extern "C" fn cass_future_free(future_raw: *const CassFuture) {
352+
pub unsafe extern "C" fn cass_future_free(future_raw: *mut CassFuture) {
353353
ArcFFI::free(future_raw);
354354
}
355355

356356
#[no_mangle]
357-
pub unsafe extern "C" fn cass_future_get_result(
358-
future_raw: *const CassFuture,
359-
) -> *const CassResult {
357+
pub unsafe extern "C" fn cass_future_get_result(future_raw: *mut CassFuture) -> *const CassResult {
360358
ArcFFI::as_ref(future_raw)
361359
.with_waited_result(|r: &mut CassFutureResult| -> Option<Arc<CassResult>> {
362360
match r.as_ref().ok()? {
@@ -369,7 +367,7 @@ pub unsafe extern "C" fn cass_future_get_result(
369367

370368
#[no_mangle]
371369
pub unsafe extern "C" fn cass_future_get_error_result(
372-
future_raw: *const CassFuture,
370+
future_raw: *mut CassFuture,
373371
) -> *const CassErrorResult {
374372
ArcFFI::as_ref(future_raw)
375373
.with_waited_result(|r: &mut CassFutureResult| -> Option<Arc<CassErrorResult>> {
@@ -397,7 +395,7 @@ pub unsafe extern "C" fn cass_future_get_prepared(
397395

398396
#[no_mangle]
399397
pub unsafe extern "C" fn cass_future_tracing_id(
400-
future: *const CassFuture,
398+
future: *mut CassFuture,
401399
tracing_id: *mut CassUuid,
402400
) -> CassError {
403401
ArcFFI::as_ref(future).with_waited_result(|r: &mut CassFutureResult| match r {
@@ -496,7 +494,7 @@ mod tests {
496494
const HUNDRED_MILLIS_IN_MICROS: u64 = 100 * 1000;
497495

498496
let create_future_and_flag = || {
499-
unsafe extern "C" fn mark_flag_cb(_fut: *const CassFuture, data: *mut c_void) {
497+
unsafe extern "C" fn mark_flag_cb(_fut: *mut CassFuture, data: *mut c_void) {
500498
let flag = data as *mut bool;
501499
*flag = true;
502500
}

scylla-rust-wrapper/src/retry_policy.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,27 @@ pub type CassRetryPolicy = RetryPolicy;
1616
impl ArcFFI for CassRetryPolicy {}
1717

1818
#[no_mangle]
19-
pub extern "C" fn cass_retry_policy_default_new() -> *const CassRetryPolicy {
19+
pub extern "C" fn cass_retry_policy_default_new() -> *mut CassRetryPolicy {
2020
ArcFFI::into_ptr(Arc::new(RetryPolicy::DefaultRetryPolicy(Arc::new(
2121
DefaultRetryPolicy,
22-
))))
22+
)))) as *mut _
2323
}
2424

2525
#[no_mangle]
26-
pub extern "C" fn cass_retry_policy_downgrading_consistency_new() -> *const CassRetryPolicy {
26+
pub extern "C" fn cass_retry_policy_downgrading_consistency_new() -> *mut CassRetryPolicy {
2727
ArcFFI::into_ptr(Arc::new(RetryPolicy::DowngradingConsistencyRetryPolicy(
2828
Arc::new(DowngradingConsistencyRetryPolicy),
29-
)))
29+
))) as *mut _
3030
}
3131

3232
#[no_mangle]
33-
pub extern "C" fn cass_retry_policy_fallthrough_new() -> *const CassRetryPolicy {
33+
pub extern "C" fn cass_retry_policy_fallthrough_new() -> *mut CassRetryPolicy {
3434
ArcFFI::into_ptr(Arc::new(RetryPolicy::FallthroughRetryPolicy(Arc::new(
3535
FallthroughRetryPolicy,
36-
))))
36+
)))) as *mut _
3737
}
3838

3939
#[no_mangle]
40-
pub unsafe extern "C" fn cass_retry_policy_free(retry_policy: *const CassRetryPolicy) {
40+
pub unsafe extern "C" fn cass_retry_policy_free(retry_policy: *mut CassRetryPolicy) {
4141
ArcFFI::free(retry_policy);
4242
}

0 commit comments

Comments
 (0)