@@ -251,6 +251,13 @@ typedef struct CassPrepared_ CassPrepared;
251
251
*/
252
252
typedef struct CassResult_ CassResult ;
253
253
254
+ /**
255
+ * @struct CassErrorResult
256
+ *
257
+ * A error result of a request
258
+ */
259
+ typedef struct CassErrorResult_ CassErrorResult ;
260
+
254
261
/**
255
262
* @struct CassIterator
256
263
*
@@ -338,6 +345,11 @@ typedef struct CassSchemaMetaField_ CassSchemaMetaField;
338
345
*/
339
346
typedef struct CassUuidGen_ CassUuidGen ;
340
347
348
+ /**
349
+ * @struct CassRetryPolicy
350
+ */
351
+ typedef struct CassRetryPolicy_ CassRetryPolicy ;
352
+
341
353
/**
342
354
* @struct CassMetrics
343
355
*
@@ -391,6 +403,38 @@ typedef enum CassConsistency_ {
391
403
CASS_CONSISTENCY_LOCAL_ONE = 0x000A
392
404
} CassConsistency ;
393
405
406
+ #define CASS_CONSISTENCY_MAP (XX ) \
407
+ XX(CASS_CONSISTENCY_UNKNOWN, "UNKNOWN") \
408
+ XX(CASS_CONSISTENCY_ANY, "ANY") \
409
+ XX(CASS_CONSISTENCY_ONE, "ONE") \
410
+ XX(CASS_CONSISTENCY_TWO, "TWO") \
411
+ XX(CASS_CONSISTENCY_THREE, "THREE") \
412
+ XX(CASS_CONSISTENCY_QUORUM, "QUORUM") \
413
+ XX(CASS_CONSISTENCY_ALL, "ALL") \
414
+ XX(CASS_CONSISTENCY_LOCAL_QUORUM, "LOCAL_QUORUM") \
415
+ XX(CASS_CONSISTENCY_EACH_QUORUM, "EACH_QUORUM") \
416
+ XX(CASS_CONSISTENCY_SERIAL, "SERIAL") \
417
+ XX(CASS_CONSISTENCY_LOCAL_SERIAL, "LOCAL_SERIAL") \
418
+ XX(CASS_CONSISTENCY_LOCAL_ONE, "LOCAL_ONE")
419
+
420
+ typedef enum CassWriteType_ {
421
+ CASS_WRITE_TYPE_UKNOWN ,
422
+ CASS_WRITE_TYPE_SIMPLE ,
423
+ CASS_WRITE_TYPE_BATCH ,
424
+ CASS_WRITE_TYPE_UNLOGGED_BATCH ,
425
+ CASS_WRITE_TYPE_COUNTER ,
426
+ CASS_WRITE_TYPE_BATCH_LOG ,
427
+ CASS_WRITE_TYPE_CAS
428
+ } CassWriteType ;
429
+
430
+ #define CASS_WRITE_TYPE_MAP (XX ) \
431
+ XX(CASS_WRITE_TYPE_SIMPLE, "SIMPLE") \
432
+ XX(CASS_WRITE_TYPE_BATCH, "BATCH") \
433
+ XX(CASS_WRITE_TYPE_UNLOGGED_BATCH, "UNLOGGED_BATCH") \
434
+ XX(CASS_WRITE_TYPE_COUNTER, "COUNTER") \
435
+ XX(CASS_WRITE_TYPE_BATCH_LOG, "BATCH_LOG") \
436
+ XX(CASS_WRITE_TYPE_CAS, "CAS")
437
+
394
438
typedef enum CassValueType_ {
395
439
CASS_VALUE_TYPE_UNKNOWN = 0xFFFF ,
396
440
CASS_VALUE_TYPE_CUSTOM = 0x0000 ,
@@ -468,9 +512,9 @@ typedef enum CassLogLevel_ {
468
512
} CassLogLevel ;
469
513
470
514
typedef enum CassSslVerifyFlags {
471
- CASS_SSL_VERIFY_NONE = 0 ,
472
- CASS_SSL_VERIFY_PEER_CERT = 1 ,
473
- CASS_SSL_VERIFY_PEER_IDENTITY = 2
515
+ CASS_SSL_VERIFY_NONE ,
516
+ CASS_SSL_VERIFY_PEER_CERT ,
517
+ CASS_SSL_VERIFY_PEER_IDENTITY
474
518
} CassSslVerifyFlags ;
475
519
476
520
typedef enum CassErrorSource_ {
@@ -1156,6 +1200,23 @@ cass_cluster_set_tcp_keepalive(CassCluster* cluster,
1156
1200
cass_bool_t enabled ,
1157
1201
unsigned delay_secs );
1158
1202
1203
+ /**
1204
+ * Sets the retry policy used for all requests unless overridden by setting
1205
+ * a retry policy on a statement.
1206
+ *
1207
+ * <b>Default:</b> default retry policy.
1208
+ *
1209
+ * @public @memberof CassCluster
1210
+ *
1211
+ * @param[in] cluster
1212
+ * @param[in] retry_policy
1213
+ *
1214
+ * @see cass_statement_set_retry_policy()
1215
+ */
1216
+ CASS_EXPORT void
1217
+ cass_cluster_set_retry_policy (CassCluster * cluster ,
1218
+ CassRetryPolicy * retry_policy );
1219
+
1159
1220
/***********************************************************************************
1160
1221
*
1161
1222
* Session
@@ -1776,6 +1837,23 @@ cass_future_wait_timed(CassFuture* future,
1776
1837
CASS_EXPORT const CassResult *
1777
1838
cass_future_get_result (CassFuture * future );
1778
1839
1840
+ /**
1841
+ * Gets the error result from a future that failed as a result of a server error. If the
1842
+ * future is not ready this method will wait for the future to be set. The first
1843
+ * successful call consumes the future, all subsequent calls will return NULL.
1844
+ *
1845
+ * @public @memberof CassFuture
1846
+ *
1847
+ * @param[in] future
1848
+ * @return CassErrorResult instance if the request failed with a server error,
1849
+ * otherwise NULL if the request was sucessful or the failure was not caused by
1850
+ * a server error. The return instance must be freed using cass_error_result_free().
1851
+ *
1852
+ * @see cass_session_execute() and cass_session_execute_batch()
1853
+ */
1854
+ CASS_EXPORT const CassErrorResult *
1855
+ cass_future_get_error_result (CassFuture * future );
1856
+
1779
1857
/**
1780
1858
* Gets the result of a successful future. If the future is not ready this method will
1781
1859
* wait for the future to be set. The first successful call consumes the future, all
@@ -1987,6 +2065,19 @@ CASS_EXPORT CassError
1987
2065
cass_statement_set_paging_state (CassStatement * statement ,
1988
2066
const CassResult * result );
1989
2067
2068
+ /**
2069
+ * Sets the statement's retry policy.
2070
+ *
2071
+ * @public @memberof CassStatement
2072
+ *
2073
+ * @param[in] statement
2074
+ * @param[in] retry_policy
2075
+ * @return CASS_OK if successful, otherwise an error occurred.
2076
+ */
2077
+ CASS_EXPORT CassError
2078
+ cass_statement_set_retry_policy (CassStatement * statement ,
2079
+ CassRetryPolicy * retry_policy );
2080
+
1990
2081
/**
1991
2082
* Binds null to a query or bound statement at the specified index.
1992
2083
*
@@ -4719,6 +4810,122 @@ cass_result_first_row(const CassResult* result);
4719
4810
CASS_EXPORT cass_bool_t
4720
4811
cass_result_has_more_pages (const CassResult * result );
4721
4812
4813
+ /***********************************************************************************
4814
+ *
4815
+ * Error result
4816
+ *
4817
+ ***********************************************************************************/
4818
+
4819
+ /**
4820
+ * Frees an error result instance.
4821
+ *
4822
+ * @public @memberof CassErrorResult
4823
+ *
4824
+ * @param[in] result
4825
+ */
4826
+ CASS_EXPORT void
4827
+ cass_error_result_free (const CassErrorResult * error_result );
4828
+
4829
+ /**
4830
+ * Gets error code for the error result. This error code will always
4831
+ * have an server error source.
4832
+ *
4833
+ * @public @memberof CassErrorResult
4834
+ *
4835
+ * @param[in] error_result
4836
+ * @return The server error code
4837
+ */
4838
+ CASS_EXPORT CassError
4839
+ cass_error_result_code (const CassErrorResult * error_result );
4840
+
4841
+ /**
4842
+ * Gets consistency that triggered the error result of the
4843
+ * following types:
4844
+ *
4845
+ * <ul>
4846
+ * <li>CASS_ERROR_SERVER_READ_TIMEOUT</li>
4847
+ * <li>CASS_ERROR_SERVER_WRITE_TIMEOUT</li>
4848
+ * <li>CASS_ERROR_SERVER_UNAVAILABLE</li>
4849
+ * </ul>
4850
+ *
4851
+ * @public @memberof CassErrorResult
4852
+ *
4853
+ * @param[in] error_result
4854
+ * @return The consistency that triggered the error for a read timeout,
4855
+ * write timeout or an unavailable error result. Undefined for other
4856
+ * error result types.
4857
+ */
4858
+ CASS_EXPORT CassConsistency
4859
+ cass_error_result_consistency (const CassErrorResult * error_result );
4860
+
4861
+ /**
4862
+ * Gets the acutal number of recieved responses, recieved acknowlegements
4863
+ * or alive nodes for following error result types, respectively:
4864
+ *
4865
+ * <ul>
4866
+ * <li>CASS_ERROR_SERVER_READ_TIMEOUT</li>
4867
+ * <li>CASS_ERROR_SERVER_WRITE_TIMEOUT</li>
4868
+ * <li>CASS_ERROR_SERVER_UNAVAILABLE</li>
4869
+ * </ul>
4870
+ *
4871
+ * @public @memberof CassErrorResult
4872
+ *
4873
+ * @param[in] error_result
4874
+ * @return The actual received responses for a read timeout, actual recieved
4875
+ * acknowlegements for a write timeout or actual alive nodes for a unavailable
4876
+ * error. Undefined for other error result types.
4877
+ */
4878
+ CASS_EXPORT cass_int32_t
4879
+ cass_error_result_actual (const CassErrorResult * error_result );
4880
+
4881
+ /**
4882
+ * Gets required responses, required acknowlegements or required alive nodes
4883
+ * needed to successfully complete the request for following error result types,
4884
+ * respectively:
4885
+ *
4886
+ * <ul>
4887
+ * <li>CASS_ERROR_SERVER_READ_TIMEOUT</li>
4888
+ * <li>CASS_ERROR_SERVER_WRITE_TIMEOUT</li>
4889
+ * <li>CASS_ERROR_SERVER_UNAVAILABLE</li>
4890
+ * </ul>
4891
+ *
4892
+ * @public @memberof CassErrorResult
4893
+ *
4894
+ * @param[in] error_result
4895
+ * @return The required responses for a read time, required acknowlegements
4896
+ * for a write timeout or required alive nodes for an unavailable error result.
4897
+ * Undefined for other error result types.
4898
+ */
4899
+ CASS_EXPORT cass_int32_t
4900
+ cass_error_result_required (const CassErrorResult * error_result );
4901
+
4902
+
4903
+ /**
4904
+ * Gets if the data was actually present in the responses from the replicas when
4905
+ * the read timed out (CASS_ERROR_SERVER_READ_TIMEOUT).
4906
+ *
4907
+ * @public @memberof CassErrorResult
4908
+ *
4909
+ * @param[in] error_result
4910
+ * @return cass_true if the data was present in the recieved responses when the
4911
+ * read timeout occured. Undefined for other error result types.
4912
+ */
4913
+ CASS_EXPORT cass_bool_t
4914
+ cass_error_result_data_present (const CassErrorResult * error_result );
4915
+
4916
+ /**
4917
+ * Gets the write type of a request when the write timed out
4918
+ * (CASS_ERROR_SERVER_WRITE_TIMEOUT).
4919
+ *
4920
+ * @public @memberof CassErrorResult
4921
+ *
4922
+ * @param[in] error_result
4923
+ * @return The type of the write that timed out. Undefined for
4924
+ * other error result types.
4925
+ */
4926
+ CASS_EXPORT CassWriteType
4927
+ cass_error_result_write_type (const CassErrorResult * error_result );
4928
+
4722
4929
/***********************************************************************************
4723
4930
*
4724
4931
* Iterator
@@ -5489,6 +5696,104 @@ cass_uuid_from_string_n(const char* str,
5489
5696
size_t str_length ,
5490
5697
CassUuid * output );
5491
5698
5699
+
5700
+ /***********************************************************************************
5701
+ *
5702
+ * Retry policies
5703
+ *
5704
+ ***********************************************************************************/
5705
+
5706
+ /**
5707
+ * Creates a new default retry policy.
5708
+ *
5709
+ * @public @memberof CassRetryPolicy
5710
+ *
5711
+ * @return Returns a retry policy that must be freed.
5712
+ *
5713
+ * @see cass_retry_policy_free()
5714
+ */
5715
+ CASS_EXPORT CassRetryPolicy *
5716
+ cass_default_retry_policy_new ();
5717
+
5718
+ /**
5719
+ * Creates a new downgrading consistency retry policy.
5720
+ *
5721
+ * @public @memberof CassRetryPolicy
5722
+ *
5723
+ * @return Returns a retry policy that must be freed.
5724
+ *
5725
+ * @see cass_retry_policy_free()
5726
+ */
5727
+ CASS_EXPORT CassRetryPolicy *
5728
+ cass_downgrading_consistency_retry_policy_new ();
5729
+
5730
+ /**
5731
+ * Creates a new fallthrough retry policy.
5732
+ *
5733
+ * @public @memberof CassRetryPolicy
5734
+ *
5735
+ * @return Returns a retry policy that must be freed.
5736
+ *
5737
+ * @see cass_retry_policy_free()
5738
+ */
5739
+ CASS_EXPORT CassRetryPolicy *
5740
+ cass_fallthrough_retry_policy_new ();
5741
+
5742
+ /**
5743
+ * Creates a new logging retry policy.
5744
+ *
5745
+ * @public @memberof CassRetryPolicy
5746
+ *
5747
+ * @param[in] child_retry_policy
5748
+ * @return Returns a retry policy that must be freed. NULL is returned if
5749
+ * the child_policy is a logging retry policy.
5750
+ *
5751
+ * @see cass_retry_policy_free()
5752
+ */
5753
+ CASS_EXPORT CassRetryPolicy *
5754
+ cass_logging_retry_policy (CassRetryPolicy * child_retry_policy );
5755
+
5756
+ /**
5757
+ * Frees a retry policy instance.
5758
+ *
5759
+ * @public @memberof CassRetryPolicy
5760
+ *
5761
+ * @param[in] policy
5762
+ */
5763
+ CASS_EXPORT void
5764
+ cass_retry_policy_free (CassRetryPolicy * policy );
5765
+
5766
+ /***********************************************************************************
5767
+ *
5768
+ * Consistency
5769
+ *
5770
+ ***********************************************************************************/
5771
+
5772
+ /**
5773
+ * Gets the string for a consistency.
5774
+ *
5775
+ * @param[in] consistency
5776
+ * @return A null-terminated string for the consistency.
5777
+ * Example: "ALL", "ONE", "QUORUM", etc.
5778
+ */
5779
+ CASS_EXPORT const char *
5780
+ cass_consistency_string (CassConsistency consistency );
5781
+
5782
+ /***********************************************************************************
5783
+ *
5784
+ * Write type
5785
+ *
5786
+ ***********************************************************************************/
5787
+ /**
5788
+ * Gets the string for a write type.
5789
+ *
5790
+ * @param[in] write_type
5791
+ * @return A null-terminated string for the write type.
5792
+ * Example: "BATCH", "SIMPLE", "COUNTER", etc.
5793
+ */
5794
+ CASS_EXPORT const char *
5795
+ cass_write_type_string (CassWriteType write_type );
5796
+
5492
5797
/***********************************************************************************
5493
5798
*
5494
5799
* Error
0 commit comments