Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
RedisHashDatabase.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* RedisHashDatabase.cc (C) 2000-2023 */
9/* */
10/* Base de données de hash gérée par le système de fichier. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/TraceAccessor.h"
15#include "arcane/utils/Array.h"
16#include "arcane/utils/FatalErrorException.h"
17
18#include "arcane/std/internal/IHashDatabase.h"
19#include "arcane/std/internal/IRedisContext.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
31: public TraceAccessor
32, public IHashDatabase
33{
34 public:
35
38 , m_context(createRedisContext(tm))
39 {
40 ARCANE_CHECK_POINTER(m_context.get());
41 m_context->open(machine_name, port);
42 }
44 {
45 }
46
47 public:
48
49 void writeValues(const HashDatabaseWriteArgs& args, HashDatabaseWriteResult& xresult) override
50 {
51 // TODO: ne faire le write que si la clé n'est pas présente
52 m_context->sendBuffer(args.hashValue(), args.values());
53 xresult.setHashValueAsString(args.hashValue());
54 }
55
56 void readValues(const HashDatabaseReadArgs& args) override
57 {
59 m_context->getBuffer(args.hashValueAsString(), bytes);
60 if (bytes.size() != args.values().size())
61 ARCANE_FATAL("Bad size expected={0} actual={1}", args.values().size(), bytes.size());
62 args.values().copy(bytes);
63 }
64
65 private:
66
67 Ref<IRedisContext> m_context;
68};
69
70/*---------------------------------------------------------------------------*/
71/*---------------------------------------------------------------------------*/
72
73extern "C++" Ref<IHashDatabase>
74createRedisHashDatabase(ITraceMng* tm, const String& machine_ip, Int32 port)
75{
77}
78
79/*---------------------------------------------------------------------------*/
80/*---------------------------------------------------------------------------*/
81
82} // namespace Arcane
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Interface du gestionnaire de traces.
ARCCORE_HOST_DEVICE void copy(const U &copy_array)
Recopie le tableau copy_array dans l'instance.
Definition Span.h:357
constexpr ARCCORE_HOST_DEVICE SizeType size() const noexcept
Retourne la taille du tableau.
Definition Span.h:209
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-