1/* 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 12#ifndef _duck_io_h 13#define _duck_io_h 14 15#if defined(__cplusplus) 16extern "C" { 17#endif 18 19#if defined (_WIN32) 20 typedef __int64 int64_t; 21#elif defined(__MWERKS__) 22 typedef long long int64_t; 23#elif defined(__APPLE__) || defined(__POWERPC) 24#include <ppc/types.h> 25#else 26 typedef long long int64_t; 27#endif 28 29 typedef struct 30 { 31 int64_t offset; // offset to start from 32 int blocking; // non-zero for blocking 33 } re_open_t; 34 35 36 typedef enum 37 { 38 SAL_ERR_MAX = -10, 39 SAL_ERROR = -11, // Default error 40 SAL_ERR_WSASTARTUP = -12, 41 SAL_ERR_SOCKET_CREATE = -13, 42 SAL_ERR_RESOLVING_HOSTNAME = -14, 43 SAL_ERR_SERVER_CONNECTION = -15, 44 SAL_ERR_SENDING_DATA = -16, 45 SAL_ERR_RECEIVING_DATA = -17, 46 SAL_ERR_404_FILE_NOT_FOUND = -18, 47 SAL_ERR_PARSING_HTTP_HEADER = -19, 48 SAL_ERR_PARSING_CONTENT_LEN = -20, 49 SAL_ERR_CONNECTION_TIMEOUT = -21, 50 SAL_ERR_FILE_OPEN_FAILED = -22, 51 SAL_ERR_MIN = -23 52 } SAL_ERR; /* EMH 1-15-03 */ 53 54 55 typedef struct sal_err_map_temp 56 { 57 SAL_ERR code; 58 const char *decode; 59 60 } sal_err_map_t; 61 62 63 static char *sal_err_text(SAL_ERR e) 64 { 65 int t; 66 const sal_err_map_t g_sal_err_map[] = 67 { 68 { SAL_ERR_WSASTARTUP, "Error with WSAStartup" }, 69 { SAL_ERR_SOCKET_CREATE, "Error creating socket" }, 70 { SAL_ERR_RESOLVING_HOSTNAME, "Error resolving hostname" }, 71 { SAL_ERR_SERVER_CONNECTION, "Error connecting to server" }, 72 { SAL_ERR_SENDING_DATA, "Error sending data" }, 73 { SAL_ERR_RECEIVING_DATA, "Error receiving data" }, 74 { SAL_ERR_404_FILE_NOT_FOUND, "Error file not found " }, 75 { SAL_ERR_PARSING_HTTP_HEADER, "Error parsing http header" }, 76 { SAL_ERR_PARSING_CONTENT_LEN, "Error parsing content length" }, 77 { SAL_ERR_CONNECTION_TIMEOUT, "Error Connection timed out" }, 78 { SAL_ERR_FILE_OPEN_FAILED, "Error opening file" } 79 }; 80 81 for (t = 0; t < sizeof(g_sal_err_map) / sizeof(sal_err_map_t); t++) 82 { 83 if (e == g_sal_err_map[t].code) 84 return (char *) g_sal_err_map[t].decode; 85 } 86 87 return 0; 88 } 89 90 91 92 93 94 95 96 int duck_open(const char *fname, unsigned long user_data); 97 98 void duck_close(int ghndl); 99 100 int duck_read(int ghndl, unsigned char *buf, int nbytes); 101 102 int64_t duck_seek(int g_hndl, int64_t offs, int origin); 103 104 int duck_read_finished(int han, int flag); /* FWG 7-9-99 */ 105 106 int duck_name(int handle, char name[], size_t max_len); /* EMH 9-23-03 */ 107 108 int duck_read_blocking(int handle, unsigned char *buffer, int bytes); /* EMH 9-23-03 */ 109 110 int64_t duck_available_data(int handle); /* EMH 10-23-03 */ 111 112#if defined(__cplusplus) 113} 114#endif 115 116#endif 117