⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fromfile.hh

📁 COPE the first practical network coding scheme which is developped on click
💻 HH
字号:
// -*- c-basic-offset: 4 -*-#ifndef CLICK_FROMFILE_HH#define CLICK_FROMFILE_HH#include <click/string.hh>#include <click/vector.hh>#include <stdio.h>CLICK_DECLSclass ErrorHandler;class Element;class Packet;class WritablePacket;class FromFile { public:    FromFile();    ~FromFile()				{ cleanup(); }        const String &filename() const	{ return _filename; }    String &filename()			{ return _filename; }    void set_landmark_pattern(const String &lp) { _landmark_pattern = lp; }    String landmark(const String &landmark_pattern) const;    String landmark() const		{ return landmark(_landmark_pattern); }    String print_filename() const;    int lineno() const			{ return _lineno; }    void set_lineno(int lineno)		{ _lineno = lineno; }    off_t file_pos() const		{ return _file_offset + _pos; }    int configure_keywords(Vector<String> &conf, int first_keyword, Element *, ErrorHandler *);    int initialize(ErrorHandler *);    void add_handlers(Element *, bool filepos_writable = false) const;    void cleanup();    void take_state(FromFile &, ErrorHandler *);    int seek(off_t want, ErrorHandler *);    int read(void *, uint32_t, ErrorHandler * = 0);    const uint8_t *get_unaligned(size_t, void *, ErrorHandler * = 0);    const uint8_t *get_aligned(size_t, void *, ErrorHandler * = 0);    String get_string(size_t, ErrorHandler * = 0);    Packet *get_packet(size_t, uint32_t sec, uint32_t subsec, ErrorHandler *);    Packet *get_packet_from_data(const void *buf, size_t buf_size, size_t full_size, uint32_t sec, uint32_t subsec, ErrorHandler *);    void shift_pos(int delta)		{ _pos += delta; }    int read_line(String &, ErrorHandler *);    int peek_line(String &, ErrorHandler *);        int error(ErrorHandler *, const char *format, ...) const;    int warning(ErrorHandler *, const char *format, ...) const;      private:    enum { BUFFER_SIZE = 32768 };        int _fd;    const uint8_t *_buffer;    uint32_t _pos;    uint32_t _len;        WritablePacket *_data_packet;#ifdef ALLOW_MMAP    bool _mmap : 1;#endif#ifdef ALLOW_MMAP    enum { WANT_MMAP_UNIT = 4194304 }; // 4 MB    size_t _mmap_unit;    off_t _mmap_off;#endif    String _filename;    FILE *_pipe;    off_t _file_offset;    String _landmark_pattern;    int _lineno;#ifdef ALLOW_MMAP    int read_buffer_mmap(ErrorHandler *);#endif    int read_buffer(ErrorHandler *);    bool read_packet(ErrorHandler *);    int skip_ahead(ErrorHandler *);    static String filename_handler(Element *, void *);    static String filesize_handler(Element *, void *);    static String filepos_handler(Element *, void *);    static int filepos_write_handler(const String&, Element*, void*, ErrorHandler*);    };CLICK_ENDDECLS#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -