DINAMO Networks agora é DINAMO Cyber Security Company !
API .NET
HSM DINAMO
Carregando...
Procurando...
Nenhuma entrada encontrado
pix_handle_cache.cs

Exemplo de uso do handle PIX com cache, o modo padrão, onde cada requisição pega uma conexão do cache de conexões HTTP da biblioteca e a devolve ao terminar.

Veja Nota sobre os exemplos.
using Dinamo.Hsm;
using System;
namespace PIXHandleCache
{
class Program
{
private static String strAddr = "127.0.0.1";
private static String strUsrId = "master";
private static String strPwd = "12345678";
static void Main(string[] args)
{
String strKey = "key";
String strKeyCert = "key_cert";
String strPIXChain = "pix_chain";
String strUrl = "https://127.0.0.1:8000";
String[] pstrHeaderContents = { "Content-Type: application/xml; charset=utf-8" };
try
{
/*
Handle com cache, o modo padrão. O handle é uma referência leve que não
guarda conexão entre chamadas: cada requisição pega uma conexão do cache
de conexões HTTP da biblioteca e a devolve ao terminar. Vários handles
podem existir sem que isso signifique uma conexão para cada um.
*/
using (DinamoPixHttpSession session = new DinamoPixHttpSession(strAddr,
strUsrId,
strPwd,
strKey,
strKeyCert,
strPIXChain))
{
PIXHttpResponse response = session.Get(strUrl, pstrHeaderContents, 30000, 0);
Console.Out.WriteLine("GET inicial: HTTP " + response.HttpCode);
for (int i = 1; i <= 10; i++)
{
response = session.Get(strUrl, pstrHeaderContents, 30000, 0);
Console.Out.WriteLine("GET " + i + ": HTTP " + response.HttpCode +
", " + response.Body.Length + " bytes de corpo.");
}
response = session.Delete(strUrl, pstrHeaderContents, 30000, 0);
Console.Out.WriteLine("DELETE: HTTP " + response.HttpCode);
/*
Os contadores vivem no handle, então precisam ser lidos antes de ele
ser destruído. As 12 requisições reaproveitam a mesma conexão vinda
do cache, então no máximo um handshake TLS atende todas elas - e
nenhum, se a conexão emprestada já estava no cache, aberta por outro
handle ou por uma das funções antigas.
*/
PIXHandleStats stats = session.GetStats();
Console.Out.WriteLine("Conexões TLS novas: " + stats.SslHookCount);
Console.Out.WriteLine("Assinaturas no HSM: " + stats.HsmSignCount);
}
/*
O handle foi destruído, mas a conexão que ele usou continua no cache,
disponível para o próximo chamador até a varredura de ociosidade fechá-la.
*/
PIXCacheStats cacheStats = DinamoPixHttpSession.GetCacheStats();
Console.Out.WriteLine("Conexões no cache: " + cacheStats.HandlesLive);
}
catch (DinamoException e)
{
Console.Out.WriteLine(e.Message);
Console.Out.WriteLine(e.ErrorCode);
}
}
}
}
Classe de Excecao para erros do Dinamo.
Definição DinamoException.cs:10
override string Message
Definição DinamoException.cs:42
int ErrorCode
Definição DinamoException.cs:26
Namespace que denota um conjunto de funções para acesso ao HSM Dinamo e suas respectivas exceptions.
Definição DinamoClient.cs:12