1 /* 2 * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 3 * Use is subject to license terms. 4 */ 5 6 #ifndef _PAPI_IMPL_H 7 #define _PAPI_IMPL_H 8 9 #pragma ident "$Id: papi_impl.h,v 1.4 2005/11/04 07:29:58 njacobs Exp $" 10 11 #include <papi.h> 12 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 #include <time.h> 18 #include <sys/types.h> 19 #include <stdarg.h> 20 #include <uri.h> 21 22 #include <http.h> 23 #include <ipp.h> 24 25 /* 26 * Implementation specific types/prototypes/definitions follow 27 * 28 * 29 * Ex: 30 */ 31 typedef enum { 32 TRANSFER_ENCODING_CHUNKED, 33 TRANSFER_ENCODING_LENGTH 34 } http_transfer_encoding_t; 35 36 typedef struct { 37 papi_attribute_t **attributes; 38 char *name; 39 char *user; 40 char *password; 41 int (*authCB)(papi_service_t svc); 42 papi_encryption_t encryption; 43 void *app_data; 44 uri_t *uri; 45 char *post; 46 http_t *connection; 47 http_transfer_encoding_t transfer_encoding; 48 } service_t; 49 50 typedef struct job { 51 papi_attribute_t **attributes; 52 } job_t; 53 54 typedef struct { 55 papi_attribute_t **attributes; 56 } printer_t; 57 58 /* IPP glue interfaces */ 59 extern ssize_t ipp_request_read(void *fd, void *buffer, size_t length); 60 extern ssize_t ipp_request_write(void *fd, void *buffer, size_t length); 61 extern papi_status_t ipp_send_request(service_t *svc, 62 papi_attribute_t **request, 63 papi_attribute_t ***response); 64 extern papi_status_t ipp_send_request_with_file(service_t *svc, 65 papi_attribute_t **request, 66 papi_attribute_t ***response, char *file); 67 extern papi_status_t ipp_send_initial_request_block(service_t *svc, 68 papi_attribute_t **request, ssize_t file_size); 69 extern papi_status_t ipp_status_info(service_t *svc, 70 papi_attribute_t **response); 71 extern void ipp_initialize_request(service_t *svc, 72 papi_attribute_t ***request, uint16_t type); 73 extern void ipp_initialize_operational_attributes(service_t *svc, 74 papi_attribute_t ***op, 75 papi_attribute_t **attributes); 76 extern papi_status_t ipp_to_papi_status(uint16_t status); 77 extern papi_status_t http_to_papi_status(http_status_t status); 78 79 extern void ipp_add_printer_uri(service_t *svc, char *name, 80 papi_attribute_t ***op); 81 82 /* service related interfaces */ 83 extern void detailed_error(service_t *svc, char *fmt, ...); 84 extern papi_status_t service_connect(service_t *svc, char *service_name); 85 86 #ifdef __cplusplus 87 } 88 #endif 89 90 #endif /* _PAPI_IMPL_H */ 91