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 
00096 PN_EXTERN void *pn_link_get_context(pn_link_t *link);
00097 
00109 PN_EXTERN void pn_link_set_context(pn_link_t *link, void *context);
00110 
00117 PN_EXTERN pn_record_t *pn_link_attachments(pn_link_t *link);
00118 
00125 PN_EXTERN const char *pn_link_name(pn_link_t *link);
00126 
00133 PN_EXTERN bool pn_link_is_sender(pn_link_t *link);
00134 
00141 PN_EXTERN bool pn_link_is_receiver(pn_link_t *link);
00142 
00149 PN_EXTERN pn_state_t pn_link_state(pn_link_t *link);
00150 
00167 PN_EXTERN pn_error_t *pn_link_error(pn_link_t *link);
00168 
00185 PN_EXTERN pn_condition_t *pn_link_condition(pn_link_t *link);
00186 
00201 PN_EXTERN pn_condition_t *pn_link_remote_condition(pn_link_t *link);
00202 
00212 PN_EXTERN pn_session_t *pn_link_session(pn_link_t *link);
00213 
00229 PN_EXTERN pn_link_t *pn_link_head(pn_connection_t *connection, pn_state_t state);
00230 
00244 PN_EXTERN pn_link_t *pn_link_next(pn_link_t *link, pn_state_t state);
00245 
00254 PN_EXTERN void pn_link_open(pn_link_t *link);
00255 
00266 PN_EXTERN void pn_link_close(pn_link_t *link);
00267 
00273 PN_EXTERN void pn_link_detach(pn_link_t *link);
00274 
00284 PN_EXTERN pn_terminus_t *pn_link_source(pn_link_t *link);
00285 
00295 PN_EXTERN pn_terminus_t *pn_link_target(pn_link_t *link);
00296 
00308 PN_EXTERN pn_terminus_t *pn_link_remote_source(pn_link_t *link);
00309 
00321 PN_EXTERN pn_terminus_t *pn_link_remote_target(pn_link_t *link);
00322 
00338 PN_EXTERN pn_delivery_t *pn_link_current(pn_link_t *link);
00339 
00364 PN_EXTERN bool pn_link_advance(pn_link_t *link);
00365 
00389 PN_EXTERN int pn_link_credit(pn_link_t *link);
00390 
00403 PN_EXTERN int pn_link_queued(pn_link_t *link);
00404 
00416 PN_EXTERN int pn_link_remote_credit(pn_link_t *link);
00417 
00430 PN_EXTERN bool pn_link_get_drain(pn_link_t *link);
00431 
00451 PN_EXTERN int pn_link_drained(pn_link_t *link);
00452 
00464 PN_EXTERN int pn_link_available(pn_link_t *link);
00465 
00474 typedef enum {
00475   PN_SND_UNSETTLED = 0, 
00477   PN_SND_SETTLED = 1, 
00479   PN_SND_MIXED = 2 
00481 } pn_snd_settle_mode_t;
00482 
00491 typedef enum {
00492   PN_RCV_FIRST = 0,  
00494   PN_RCV_SECOND = 1  
00496 } pn_rcv_settle_mode_t;
00497 
00504 PN_EXTERN pn_snd_settle_mode_t pn_link_snd_settle_mode(pn_link_t *link);
00505 
00512 PN_EXTERN pn_rcv_settle_mode_t pn_link_rcv_settle_mode(pn_link_t *link);
00513 
00520 PN_EXTERN void pn_link_set_snd_settle_mode(pn_link_t *link, pn_snd_settle_mode_t mode);
00521 
00528 PN_EXTERN void pn_link_set_rcv_settle_mode(pn_link_t *link, pn_rcv_settle_mode_t mode);
00529 
00536 PN_EXTERN pn_snd_settle_mode_t pn_link_remote_snd_settle_mode(pn_link_t *link);
00537 
00544 PN_EXTERN pn_rcv_settle_mode_t pn_link_remote_rcv_settle_mode(pn_link_t *link);
00545 
00552 PN_EXTERN int pn_link_unsettled(pn_link_t *link);
00553 
00560 PN_EXTERN pn_delivery_t *pn_unsettled_head(pn_link_t *link);
00561 
00568 PN_EXTERN pn_delivery_t *pn_unsettled_next(pn_delivery_t *delivery);
00569 
00577 PN_EXTERN void pn_link_offered(pn_link_t *sender, int credit);
00578 
00587 PN_EXTERN ssize_t pn_link_send(pn_link_t *sender, const char *bytes, size_t n);
00588 
00595 PN_EXTERN void pn_link_flow(pn_link_t *receiver, int credit);
00596 
00606 PN_EXTERN void pn_link_drain(pn_link_t *receiver, int credit);
00607 
00614 PN_EXTERN void pn_link_set_drain(pn_link_t *receiver, bool drain);
00615 
00640 PN_EXTERN ssize_t pn_link_recv(pn_link_t *receiver, char *bytes, size_t n);
00641 
00651 PN_EXTERN bool pn_link_draining(pn_link_t *receiver);
00652 
00661 PN_EXTERN uint64_t pn_link_max_message_size(pn_link_t *link);
00662 
00671 PN_EXTERN void pn_link_set_max_message_size(pn_link_t *link, uint64_t size);
00672 
00681 PN_EXTERN uint64_t pn_link_remote_max_message_size(pn_link_t *link);
00682 
00687 #ifdef __cplusplus
00688 }
00689 #endif
00690 
00691 #endif /* link.h */
00692 

Generated on 28 Nov 2017 for Qpid Proton C by  doxygen 1.6.1