1 #pragma once 2 3 #include "pages_conserving.h" 4 #include "pipe_opener_interface.h" 5 #include "pipe_paging.h" 6 #include "resource.h" 7 8 /* Support for providing access to pipes. */ 9 10 class PipeOpenerResource : public Resource, public PipeOpener 11 { 12 protected: 13 PagesConserving *_pages; 14 15 long open_endpoint(PipePaging *paging, bool writer, l4_cap_idx_t *endpoint); 16 17 public: 18 explicit PipeOpenerResource(PagesConserving *pages); 19 20 /* Server details. */ 21 22 int expected_items(); 23 24 ipc_server_handler_type handler(); 25 26 void *interface() 27 { return static_cast<PipeOpener *>(this); } 28 29 /* PipeOpener interface methods. */ 30 31 long pipe(l4_cap_idx_t *reader, l4_cap_idx_t *writer); 32 }; 33 34 // vim: tabstop=4 expandtab shiftwidth=4