Ion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ion::remote::ShaderHandler Class Reference

ShaderHandler serves files related to shaders, their dependencies, and the shader editor. More...

#include "shaderhandler.h"

Inheritance diagram for ion::remote::ShaderHandler:
Collaboration diagram for ion::remote::ShaderHandler:

Public Member Functions

 ShaderHandler (const gfxutils::ShaderManagerPtr &shader_manager, const gfx::RendererPtr &renderer)
 A ShaderHandler requires a valid ShaderManager as well as a Renderer to notify of changes made to shaders in the shader manager. More...
 
 ~ShaderHandler () override
 
const gfxutils::ShaderManagerPtrGetShaderManager () const
 Gets the ShaderManager associated with this. More...
 
const std::string HandleRequest (const std::string &path, const HttpServer::QueryMap &args, std::string *content_type) override
 The HandleRequest() function is passed the path (relative to its base path) of the file or directory to serve, and any query arguments associated with the request. More...
 
virtual const WebsocketPtr ConnectWebsocket (const std::string &path, const QueryMap &args)
 By default, RequestHandlers don't support websocket connections. More...
 
const std::string & GetBasePath () const
 Returns the path this handler is registered at. More...
 
const AllocatorPtr & GetAllocator () const
 Returns the Allocator that was used for the instance. More...
 
const AllocatorPtr & GetNonNullAllocator () const
 Return our allocator, or the default allocator if the instance was declared on the stack. More...
 
const AllocatorPtr & GetAllocatorForLifetime (AllocationLifetime lifetime) const
 Convenience function that returns the Allocator to use to allocate an object with a specific lifetime. More...
 
void * operator new (size_t size)
 The standard no-parameter new operator uses the default Allocator. More...
 
void * operator new (size_t size, AllocationLifetime lifetime)
 This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime. More...
 
void * operator new (size_t size, const AllocatorPtr &allocator)
 This overloaded version of the new operator takes the Allocator to use directly as a parameter. More...
 
void * operator new (size_t size, const AllocatorPtr &allocator, void *ptr)
 Special operator new for using placement new with Allocatables. More...
 
void * operator new (size_t size, void *ptr)
 The placement new operator is defined conventionally. More...
 
void operator delete (void *ptr)
 Define the delete operator to use specialized functions dealing with an Allocator. More...
 
void operator delete (void *ptr, AllocationLifetime lifetime)
 Windows requires these (or it issues C4291 warnings). More...
 
void operator delete (void *ptr, const AllocatorPtr &allocator)
 
void operator delete (void *ptr, void *ptr2)
 The placement delete operator does nothing, as usual. More...
 
int GetRefCount () const
 GetRefCount() is part of the interface necessary for SharedPtr. More...
 

Detailed Description

ShaderHandler serves files related to shaders, their dependencies, and the shader editor.

Shader-related pages have a proc-like structure. For example, if there are shaders shader1 and shader2 (with respective dependencies shader1_v_source, shader1_f_source, and shader2_v_source, shader2_f_source), are registered with the ShaderManager, then the following paths are valid (note that the paths are relative to the handler's root): / - List of shaders /shader1 - Lists info log and shader stages /shader1/|info log| - shader1's link info log /shader1/vertex - Lists dependencies and info log /shader1/vertex/|info log| - shader1's vertex shader info log /shader1/vertex/shader1_v_source - Text of shader1_v_source /shader1/fragment/|info log| - shader1's fragment shader info log /shader1/fragment/shader1_f_source - Text of shader1_f_source /shader2 - Lists info log and shader stages /shader2/|info log| - shader2's link info log /shader2/vertex - Lists dependencies and info log /shader2/vertex/|info log| - shader2's vertex shader info log /shader2/vertex/shader2_v_source - Text of shader2_v_source /shader2/fragment/|info log| - shader2's fragment shader info log /shader2/fragment/shader2_f_source - Text of shader2_f_source

/shader_editor serves the shader editor. It allows run-time editing of shaders by modifiying their dependencies directly. See the online help on the served page for more information.

Definition at line 56 of file shaderhandler.h.

Constructor & Destructor Documentation

ion::remote::ShaderHandler::ShaderHandler ( const gfxutils::ShaderManagerPtr shader_manager,
const gfx::RendererPtr renderer 
)

A ShaderHandler requires a valid ShaderManager as well as a Renderer to notify of changes made to shaders in the shader manager.

Definition at line 361 of file shaderhandler.cc.

ion::remote::ShaderHandler::~ShaderHandler ( )
override

Definition at line 370 of file shaderhandler.cc.

Member Function Documentation

virtual const WebsocketPtr ion::remote::HttpServer::RequestHandler::ConnectWebsocket ( const std::string &  path,
const QueryMap args 
)
inlinevirtualinherited

By default, RequestHandlers don't support websocket connections.

Definition at line 86 of file httpserver.h.

const AllocatorPtr& ion::base::Allocatable::GetAllocator ( ) const
inlineinherited

Returns the Allocator that was used for the instance.

This will be NULL if the instance was declared on the stack or created with normal placement new.

Definition at line 68 of file allocatable.h.

References allocator_.

Referenced by ion::base::DataContainer::CreateAndCopy(), ion::text::DynamicFontImage::FindContainingImageDataIndex(), and ion::text::DynamicFontImage::FindImageDataIndex().

const AllocatorPtr& ion::base::Allocatable::GetAllocatorForLifetime ( AllocationLifetime  lifetime) const
inlineinherited
const std::string& ion::remote::HttpServer::RequestHandler::GetBasePath ( ) const
inlineinherited

Returns the path this handler is registered at.

Definition at line 92 of file httpserver.h.

const AllocatorPtr& ion::base::Allocatable::GetNonNullAllocator ( ) const
inlineinherited

Return our allocator, or the default allocator if the instance was declared on the stack.

Definition at line 72 of file allocatable.h.

References allocator_, and ion::base::AllocationManager::GetNonNullAllocator().

int ion::base::Shareable::GetRefCount ( ) const
inlineinherited

GetRefCount() is part of the interface necessary for SharedPtr.

Definition at line 34 of file shareable.h.

Referenced by ion::base::Notifier::RemoveReceiver().

const gfxutils::ShaderManagerPtr& ion::remote::ShaderHandler::GetShaderManager ( ) const
inline

Gets the ShaderManager associated with this.

Definition at line 65 of file shaderhandler.h.

const std::string ion::remote::ShaderHandler::HandleRequest ( const std::string &  path,
const HttpServer::QueryMap args,
std::string *  content_type 
)
overridevirtual

The HandleRequest() function is passed the path (relative to its base path) of the file or directory to serve, and any query arguments associated with the request.

The handler should return an empty string if it cannot handle the request. The handler may optionally set a specific content type to be returned in the response headers. If the handler does not set a content type then a suitable one will be chosen based on the extension of the requested file.

Note
if a handler is registered to serve just a single filename then the path passed to it will be "", since that is the relative path from a file to itself.

Implements ion::remote::HttpServer::RequestHandler.

Definition at line 372 of file shaderhandler.cc.

References ion::base::EndsWith(), ion::base::ZipAssetManager::GetFileData(), ion::base::IsInvalidReference(), and ion::base::StartsWith().

void ion::base::Allocatable::operator delete ( void *  ptr)
inlineinherited

Define the delete operator to use specialized functions dealing with an Allocator.

Definition at line 109 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
AllocationLifetime  lifetime 
)
inlineinherited

Windows requires these (or it issues C4291 warnings).

Definition at line 112 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
const AllocatorPtr allocator 
)
inlineinherited

Definition at line 113 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
void *  ptr2 
)
inlineinherited

The placement delete operator does nothing, as usual.

Definition at line 118 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size)
inlineinherited

The standard no-parameter new operator uses the default Allocator.

Definition at line 84 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
AllocationLifetime  lifetime 
)
inlineinherited

This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime.

Definition at line 88 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator 
)
inlineinherited

This overloaded version of the new operator takes the Allocator to use directly as a parameter.

If the Allocator pointer is NULL, this uses the default Allocator.

Definition at line 95 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator,
void *  ptr 
)
inlineinherited

Special operator new for using placement new with Allocatables.

Definition at line 100 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
void *  ptr 
)
inlineinherited

The placement new operator is defined conventionally.

Definition at line 105 of file allocatable.h.


The documentation for this class was generated from the following files: