00001 #ifndef PROTON_DELIVERY_H 00002 #define PROTON_DELIVERY_H 1 00003 00004 /* 00005 * 00006 * Licensed to the Apache Software Foundation (ASF) under one 00007 * or more contributor license agreements. See the NOTICE file 00008 * distributed with this work for additional information 00009 * regarding copyright ownership. The ASF licenses this file 00010 * to you under the Apache License, Version 2.0 (the 00011 * "License"); you may not use this file except in compliance 00012 * with the License. You may obtain a copy of the License at 00013 * 00014 * http://www.apache.org/licenses/LICENSE-2.0 00015 * 00016 * Unless required by applicable law or agreed to in writing, 00017 * software distributed under the License is distributed on an 00018 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 00019 * KIND, either express or implied. See the License for the 00020 * specific language governing permissions and limitations 00021 * under the License. 00022 * 00023 */ 00024 00025 #include <proton/import_export.h> 00026 #include <proton/disposition.h> 00027 #include <proton/type_compat.h> 00028 #include <stddef.h> 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00046 typedef pn_bytes_t pn_delivery_tag_t; 00047 00055 PN_EXTERN pn_delivery_tag_t pn_dtag(const char *bytes, size_t size); 00056 00068 PN_EXTERN pn_delivery_t *pn_delivery(pn_link_t *link, pn_delivery_tag_t tag); 00069 00079 PN_EXTERN void *pn_delivery_get_context(pn_delivery_t *delivery); 00080 00090 PN_EXTERN void pn_delivery_set_context(pn_delivery_t *delivery, void *context); 00091 00098 PN_EXTERN pn_record_t *pn_delivery_attachments(pn_delivery_t *delivery); 00099 00106 PN_EXTERN pn_delivery_tag_t pn_delivery_tag(pn_delivery_t *delivery); 00107 00114 PN_EXTERN pn_link_t *pn_delivery_link(pn_delivery_t *delivery); 00115 00125 PN_EXTERN pn_disposition_t *pn_delivery_local(pn_delivery_t *delivery); 00126 00133 PN_EXTERN uint64_t pn_delivery_local_state(pn_delivery_t *delivery); 00134 00144 PN_EXTERN pn_disposition_t *pn_delivery_remote(pn_delivery_t *delivery); 00145 00152 PN_EXTERN uint64_t pn_delivery_remote_state(pn_delivery_t *delivery); 00153 00160 PN_EXTERN bool pn_delivery_settled(pn_delivery_t *delivery); 00161 00168 PN_EXTERN size_t pn_delivery_pending(pn_delivery_t *delivery); 00169 00179 PN_EXTERN bool pn_delivery_partial(pn_delivery_t *delivery); 00180 00199 PN_EXTERN bool pn_delivery_aborted(pn_delivery_t *delivery); 00200 00210 PN_EXTERN bool pn_delivery_writable(pn_delivery_t *delivery); 00211 00221 PN_EXTERN bool pn_delivery_readable(pn_delivery_t *delivery); 00222 00233 PN_EXTERN bool pn_delivery_updated(pn_delivery_t *delivery); 00234 00244 PN_EXTERN void pn_delivery_update(pn_delivery_t *delivery, uint64_t state); 00245 00253 PN_EXTERN void pn_delivery_clear(pn_delivery_t *delivery); 00254 00261 PN_EXTERN bool pn_delivery_current(pn_delivery_t *delivery); 00262 00280 PN_EXTERN void pn_delivery_abort(pn_delivery_t *delivery); 00281 00292 PN_EXTERN void pn_delivery_settle(pn_delivery_t *delivery); 00293 00299 PN_EXTERN void pn_delivery_dump(pn_delivery_t *delivery); 00300 00313 PN_EXTERN bool pn_delivery_buffered(pn_delivery_t *delivery); 00314 00331 PN_EXTERN pn_delivery_t *pn_work_head(pn_connection_t *connection); 00332 00342 PN_EXTERN pn_delivery_t *pn_work_next(pn_delivery_t *delivery); 00343 00348 #ifdef __cplusplus 00349 } 00350 #endif 00351 00352 #endif /* delivery.h */