netstr.h
上传用户:ig0539
上传日期:2022-05-21
资源大小:181k
文件大小:3k
源码类别:

Ftp客户端

开发平台:

C/C++

  1. #ifndef VSFTP_NETSTR_H
  2. #define VSFTP_NETSTR_H
  3. struct mystr;
  4. struct vsf_session;
  5. typedef int (*str_netfd_read_t)(struct vsf_session*
  6.                                 p_sess, char*,
  7.                                 unsigned int);
  8. /* str_netfd_alloc()
  9.  * PURPOSE
  10.  * Read a string from a network socket into a string buffer object. The string
  11.  * is delimited by a specified string terminator character.
  12.  * If any network related errors occur trying to read the string, this call
  13.  * will exit the program.
  14.  * This method avoids reading one character at a time from the network.
  15.  * PARAMETERS
  16.  * p_sess       - the session object, used for passing into the I/O callbacks
  17.  * p_str        - the destination string object
  18.  * term         - the character which will terminate the string. This character
  19.  *                is included in the returned string.
  20.  * p_readbuf    - pointer to a scratch buffer into which to read from the
  21.  *                network. This buffer must be at least "maxlen" characters!
  22.  * maxlen       - maximum length of string to return. If this limit is passed,
  23.  *                an empty string will be returned.
  24.  * p_peekfunc   - a function called to peek data from the network
  25.  * p_readfunc   - a function called to read data from the network
  26.  * RETURNS
  27.  * -1 upon reaching max buffer length without seeing terminator, or the number
  28.  * of bytes read, _excluding_ the terminator.
  29.  */
  30. int str_netfd_alloc(struct vsf_session* p_sess,
  31.                     struct mystr* p_str,
  32.                     char term,
  33.                     char* p_readbuf,
  34.                     unsigned int maxlen,
  35.                     str_netfd_read_t p_peekfunc,
  36.                     str_netfd_read_t p_readfunc);
  37. /* str_netfd_read()
  38.  * PURPOSE
  39.  * Fills contents of a string buffer object from a (typically network) file
  40.  * descriptor.
  41.  * PARAMETERS
  42.  * p_str        - the string object to be filled
  43.  * fd           - the file descriptor to read from
  44.  * len          - the number of bytes to read
  45.  * RETURNS
  46.  * Number read on success, -1 on failure. The read is considered a failure
  47.  * unless the full requested byte count is read.
  48.  */
  49. int str_netfd_read(struct mystr* p_str, int fd, unsigned int len);
  50. /* str_netfd_write()
  51.  * PURPOSE
  52.  * Write the contents of a string buffer object out to a (typically network)
  53.  * file descriptor.
  54.  * PARAMETERS
  55.  * p_str        - the string object to send
  56.  * fd           - the file descriptor to write to
  57.  * RETURNS
  58.  * Number written on success, -1 on failure. The write is considered a failure
  59.  * unless the full string buffer object is written.
  60.  */
  61. int str_netfd_write(const struct mystr* p_str, int fd);
  62. #endif /* VSFTP_NETSTR_H */