proton/link.h

Go to the documentation of this file.
00001 #ifndef PROTON_LINK_H
00002 #define PROTON_LINK_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/type_compat.h>
00027 #include <proton/condition.h>
00028 #include <proton/terminus.h>
00029 #include <proton/types.h>
00030 #include <proton/object.h>
00031 #include <stddef.h>
00032 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00058 PN_EXTERN pn_link_t *pn_sender(pn_session_t *session, const char *name);
00059 
00072 PN_EXTERN pn_link_t *pn_receiver(pn_session_t *session, const char *name);
00073 
00083 PN_EXTERN void pn_link_free(pn_link_t *link);
00084 
00094 PN_EXTERN void *pn_link_get_context(pn_link_t *link);
00095 
00105 PN_EXTERN void pn_link_set_context(pn_link_t *link, void *context);
00106 
00113 PN_EXTERN pn_record_t *pn_link_attachments(pn_link_t *link);
00114 
00121 PN_EXTERN const char *pn_link_name(pn_link_t *link);
00122 
00129 PN_EXTERN bool pn_link_is_sender(pn_link_t *link);
00130 
00137 PN_EXTERN bool pn_link_is_receiver(pn_link_t *link);
00138 
00145 PN_EXTERN pn_state_t pn_link_state(pn_link_t *link);
00146 
00163 /* PN_DEPRECATED("Use pn_link_condition") */
00164 PN_EXTERN pn_error_t *pn_link_error(pn_link_t *link);
00165 
00182 PN_EXTERN pn_condition_t *pn_link_condition(pn_link_t *link);
00183 
00198 PN_EXTERN pn_condition_t *pn_link_remote_condition(pn_link_t *link);
00199 
00209 PN_EXTERN pn_session_t *pn_link_session(pn_link_t *link);
00210 
00226 PN_EXTERN pn_link_t *pn_link_head(pn_connection_t *connection, pn_state_t state);
00227 
00241 PN_EXTERN pn_link_t *pn_link_next(pn_link_t *link, pn_state_t state);
00242 
00251 PN_EXTERN void pn_link_open(pn_link_t *link);
00252 
00263 PN_EXTERN void pn_link_close(pn_link_t *link);
00264 
00270 PN_EXTERN void pn_link_detach(pn_link_t *link);
00271 
00281 PN_EXTERN pn_terminus_t *pn_link_source(pn_link_t *link);
00282 
00292 PN_EXTERN pn_terminus_t *pn_link_target(pn_link_t *link);
00293 
00305 PN_EXTERN pn_terminus_t *pn_link_remote_source(pn_link_t *link);
00306 
00318 PN_EXTERN pn_terminus_t *pn_link_remote_target(pn_link_t *link);
00319 
00335 PN_EXTERN pn_delivery_t *pn_link_current(pn_link_t *link);
00336 
00361 PN_EXTERN bool pn_link_advance(pn_link_t *link);
00362 
00386 PN_EXTERN int pn_link_credit(pn_link_t *link);
00387 
00400 PN_EXTERN int pn_link_queued(pn_link_t *link);
00401 
00413 PN_EXTERN int pn_link_remote_credit(pn_link_t *link);
00414 
00427 PN_EXTERN bool pn_link_get_drain(pn_link_t *link);
00428 
00448 PN_EXTERN int pn_link_drained(pn_link_t *link);
00449 
00461 PN_EXTERN int pn_link_available(pn_link_t *link);
00462 
00471 typedef enum {
00472   PN_SND_UNSETTLED = 0, 
00474   PN_SND_SETTLED = 1, 
00476   PN_SND_MIXED = 2 
00478 } pn_snd_settle_mode_t;
00479 
00488 typedef enum {
00489   PN_RCV_FIRST = 0,  
00491   PN_RCV_SECOND = 1  
00493 } pn_rcv_settle_mode_t;
00494 
00501 PN_EXTERN pn_snd_settle_mode_t pn_link_snd_settle_mode(pn_link_t *link);
00502 
00509 PN_EXTERN pn_rcv_settle_mode_t pn_link_rcv_settle_mode(pn_link_t *link);
00510 
00517 PN_EXTERN void pn_link_set_snd_settle_mode(pn_link_t *link, pn_snd_settle_mode_t mode);
00518 
00525 PN_EXTERN void pn_link_set_rcv_settle_mode(pn_link_t *link, pn_rcv_settle_mode_t mode);
00526 
00533 PN_EXTERN pn_snd_settle_mode_t pn_link_remote_snd_settle_mode(pn_link_t *link);
00534 
00541 PN_EXTERN pn_rcv_settle_mode_t pn_link_remote_rcv_settle_mode(pn_link_t *link);
00542 
00549 PN_EXTERN int pn_link_unsettled(pn_link_t *link);
00550 
00557 PN_EXTERN pn_delivery_t *pn_unsettled_head(pn_link_t *link);
00558 
00565 PN_EXTERN pn_delivery_t *pn_unsettled_next(pn_delivery_t *delivery);
00566 
00574 PN_EXTERN void pn_link_offered(pn_link_t *sender, int credit);
00575 
00584 PN_EXTERN ssize_t pn_link_send(pn_link_t *sender, const char *bytes, size_t n);
00585 
00592 PN_EXTERN void pn_link_flow(pn_link_t *receiver, int credit);
00593 
00603 PN_EXTERN void pn_link_drain(pn_link_t *receiver, int credit);
00604 
00611 PN_EXTERN void pn_link_set_drain(pn_link_t *receiver, bool drain);
00612 
00637 PN_EXTERN ssize_t pn_link_recv(pn_link_t *receiver, char *bytes, size_t n);
00638 
00648 PN_EXTERN bool pn_link_draining(pn_link_t *receiver);
00649 
00658 PN_EXTERN uint64_t pn_link_max_message_size(pn_link_t *link);
00659 
00668 PN_EXTERN void pn_link_set_max_message_size(pn_link_t *link, uint64_t size);
00669 
00678 PN_EXTERN uint64_t pn_link_remote_max_message_size(pn_link_t *link);
00679 
00684 #ifdef __cplusplus
00685 }
00686 #endif
00687 
00688 #endif /* link.h */
00689 

Generated on 17 Jan 2019 for Qpid Proton C by  doxygen 1.6.1