terom@166: #ifndef TRANSPORT_TEST_H terom@166: #define TRANSPORT_TEST_H terom@40: terom@40: /** terom@40: * @file terom@40: * terom@166: * Dummy transport implemention for local testing. terom@40: */ terom@166: #include "transport.h" terom@40: terom@40: /** terom@166: * The opaque transport state terom@40: */ terom@166: struct transport_test; terom@40: terom@40: /** terom@166: * Construct a new, empty, connected transport_test. terom@41: */ terom@166: struct transport_test* transport_test_create (struct transport_info *info); terom@40: terom@40: /** terom@166: * A transport_test is a valid transport, this performs the cast terom@41: */ terom@166: transport_t* transport_test_cast (struct transport_test *tp); terom@41: terom@41: /** terom@166: * Invoke the transport's user callbacks for the given event mask, unless masked out. terom@40: */ terom@166: void transport_test_event (struct transport_test *tp, short what); terom@41: terom@41: /** terom@166: * Adds a data buffer to the recieve buffer. terom@166: * terom@166: * The given data is copied. terom@42: * terom@42: * If events are enabled, they are triggered. terom@41: */ terom@166: void transport_test_push_buf (struct transport_test *tp, const char *buf, size_t len); terom@43: terom@43: /** terom@166: * Add a string to the recieve buffer using transport_test_push_buf() terom@46: */ terom@166: void transport_test_push_str (struct transport_test *tp, const char *str); terom@46: terom@46: /** terom@166: * Maximum length of a formatted string pushed terom@166: */ terom@166: #define TRANSPORT_TEST_FMT_MAX 4096 terom@166: terom@166: /** terom@166: * Add a formatted string to the recieve buffer terom@43: * terom@166: * @see TRANSPORT_TEST_FMT_MAX terom@40: */ terom@166: void transport_test_push_fmt (struct transport_test *tp, const char *fmt, ...); terom@40: terom@166: /** terom@166: * Set EOF on recv. terom@166: */ terom@166: void transport_test_push_eof (struct transport_test *tp); terom@166: terom@166: /** terom@166: * Get the send buffer contents as a single buffer, free() after use. terom@166: * terom@166: * This clears the send buffer, so this doesn't return the same data twice. terom@166: */ terom@166: void transport_test_pull_buf (struct transport_test *tp, char **buf_ptr, size_t *len_ptr); terom@166: terom@166: /** terom@166: * Destroy the transport buffer, releasing any buffers we allocated ourself terom@166: */ terom@166: void transport_test_destroy (struct transport_test *tp); terom@166: terom@166: #endif /* TRANSPORT_TEST_H */