[[TOC(heading=ProtocolHandler)]] [[TOC(heading=Procedures, sectionindex, compact, depth=3, allactive, Documentatie/Ontwikkelaar/Procedures/)]] [[TOC(heading=Ontwikkelaar, sectionindex, compact, depth=2, allactive, Documentatie/Ontwikkelaar/)]] [[TOC(heading=Documentatie, sectionindex, compact, depth=1, allactive, Documentatie/)]] = Protocol handler = == Inleiding == OpenAC gebruikt een eigen protocol handler om te communiceren met software en randapparatuur op het werkstation van de gebruiker. Alle OpenAC URL's die beginnen met protocol {{{openac-protocol:}}} worden door deze protocol handler afgehandeld. Dit functioneert alleen als de OpenAC protocol handler op het werkstation is geïnstalleerd en het protocol in de Windows registry is gekoppeld aan {{{ OpenACProtocolHandler.exe }}}. Hierdoor weet Windows welke applicatie moet worden gestart bij een klik op een link met schema {{{openac-protocol:}}}. De communicatie tussen OpenAC 3 en de protocol handler is gebaseerd op 4 onderdelen. 2 daarvan zijn geïmplementeerd aan de kant van OpenAC en 2 aan de kant van de protocol handler: 1. Sjabloonhandlers (OpenAC) - een sjabloon handler genereert de argumenten die aan de sjabloon handler moeten worden aangeleverd in de url, gebaseerd op het sjabloon; 2. Starters (protocol handler) - een starter weet welke applicatie moet worden gestart en hoe de data hiervoor moet worden opgehaald, gebaseerd op het sjabloon; 3. Print implementaties (protocol handler) - een primt implementatie weet hoe een document van een bepaald type moet worden geprint; 4. Protocol handler controllers (OpenAC) - een protocol handler controller verwerkt dataverzoeken en antwoorden van de protocol handler. == Sjabloonhandlers == Een sjabloon handler genereert de argumenten die aan de sjabloon handler moeten worden aangeleverd in de url, gebaseerd op het sjabloon. == Starters == Een starter weet welke applicatie moet worden gestart en hoe de data hiervoor moet worden opgehaald, gebaseerd op het sjabloon. == Printimplementaties == Een primt implementatie weet hoe een document van een bepaald type moet worden geprint. Print implementaties zijn in het {{{ OpenACProtocolHandler }}} project te vinden in de map {{{ PrintImplementaties }}}. In dezelfde map bevindt zich de klasse {{{ PrintImplementatie }}}. Deze klasse heeft een method {{{ Get }}} die op basis van een {{{ ProtocolArgument }}} een print implementatie teruggeeft. Elke print implementatie implementeert de interface {{{ IPrintImplementatie }}}. {{{#!csharp namespace OpenACProtocolHandler.Interfaces { public interface IPrintImplementatie { Result Print(); } } }}} [[Image(protocolhandler_print_word_document.drawio.png)]] == Protocolhandler controllers == Een protocol handler controller verwerkt dataverzoeken en antwoorden van de protocol handler. == Registry == De protocol handler installer maakt gebruik van de volgende keys in de registry: {{{ Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\OpenACProtocolHandler\EventMessageFile }}} {{{ D:\Program Files (x86)\OpenAC Protocol Handler\runtimes\win\lib\netcoreapp3.1\System.Diagnostics.EventLog.Messages.dll }}} {{{ Computer\HKEY_CLASSES_ROOT\openac-protocol }}} {{{ URL:openac-protocol Protocol }}}