libflom: FLoM (Free Lock Manager) client library

FlomHandle.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013-2023, Christian Ferrari <tiian@users.sourceforge.net>
3  * All rights reserved.
4  *
5  * This file is part of FLoM, Free Lock Manager
6  *
7  * FLoM is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License version 2.0 as
9  * published by the Free Software Foundation.
10  *
11  * FLoM is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with FLoM. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef FLOMHANDLE_HH
21 # define FLOMHANDLE_HH
22 
23 
24 
25 #include <string>
26 #include <exception>
27 #include <syslog.h>
28 
29 
30 
31 #include "flom_handle.h"
32 
33 
34 
35 using namespace std;
36 
37 namespace flom {
38 
43  class FlomException : public exception {
44  virtual const char* what() const throw()
45  {
46  return flom_strerror(ReturnCode);
47  }
48 
49  private:
53  int ReturnCode;
54 
55  public:
59  FlomException(int ret_cod) {
60  ReturnCode = ret_cod; }
64  int getReturnCode() { return ReturnCode; }
69  string getReturnCodeText() {
70  return (string(flom_strerror(ReturnCode))); }
71  };
72 
73 
74 
78  class FlomHandle {
79  private:
83  flom_handle_t handle;
84 
85  public:
87  int ret_cod = flom_handle_init(&handle);
88  /* in case of error, an exception is thrown */
89  if (FLOM_RC_OK != ret_cod) {
90  syslog(LOG_ERR, "FlomHandle/flom_handle_init: "
91  "ret_cod=%d ('%s')\n", ret_cod, flom_strerror(ret_cod));
92  throw FlomException(ret_cod);
93  }
94  }
96  int ret_cod = flom_handle_clean(&handle);
97  /* exception can NOT be thrown from a destructor, only syslog
98  records the issue */
99  if (FLOM_RC_OK != ret_cod) {
100  syslog(LOG_ERR, "~FlomHandle/flom_handle_clean: "
101  "ret_cod=%d ('%s')\n", ret_cod, flom_strerror(ret_cod));
102  }
103  }
104 
111  int lock() { return flom_handle_lock(&handle); }
112 
118  int unlock() { return flom_handle_unlock(&handle); }
119 
128  int unlockRollback() { return flom_handle_unlock_rollback(&handle); }
129 
142  const char *getLockedElementAsCStr() {
143  return flom_handle_get_locked_element(&handle); }
144 
157  string getLockedElement() {
158  return NULL != flom_handle_get_locked_element(&handle) ?
159  flom_handle_get_locked_element(&handle) : ""; }
160 
170  return flom_handle_get_discovery_attempts(&handle); }
171 
181  int setDiscoveryAttempts(int value) {
182  return flom_handle_set_discovery_attempts(&handle, value); }
183 
194  return flom_handle_get_discovery_timeout(&handle); }
195 
206  int setDiscoveryTimeout(int value) {
207  return flom_handle_set_discovery_timeout(&handle, value); }
208 
217  return flom_handle_get_discovery_ttl(&handle); }
218 
228  int setDiscoveryTtl(int value) {
229  return flom_handle_set_discovery_ttl(&handle, value); }
230 
240  flom_lock_mode_t getLockMode() {
241  return flom_handle_get_lock_mode(&handle); }
242 
253  int setLockMode(flom_lock_mode_t value) {
254  return flom_handle_set_lock_mode(&handle, value); }
255 
266  return flom_handle_get_multicast_address(&handle); }
277  return NULL != flom_handle_get_multicast_address(&handle) ?
278  flom_handle_get_multicast_address(&handle) : ""; }
279 
290  int setMulticastAddress(const char *value) {
291  return flom_handle_set_multicast_address(&handle, value); }
302  int setMulticastAddress(const string &value) {
303  return flom_handle_set_multicast_address(&handle, value.c_str()); }
304 
312  return flom_handle_get_multicast_port(&handle); }
313 
322  int setMulticastPort(int value) {
323  return flom_handle_set_multicast_port(&handle, value); }
324 
333  return flom_handle_get_network_interface(&handle); }
342  return NULL != flom_handle_get_network_interface(&handle) ?
343  flom_handle_get_network_interface(&handle) : ""; }
344 
353  int setNetworkInterface(const char *value) {
354  return flom_handle_set_network_interface(&handle, value); }
363  int setNetworkInterface(const string &value) {
364  return flom_handle_set_network_interface(&handle, value.c_str()); }
365 
375  return flom_handle_get_resource_create(&handle); }
376 
386  int setResourceCreate(int value) {
387  return flom_handle_set_resource_create(&handle, value); }
388 
399  return flom_handle_get_resource_idle_lifespan(&handle); }
400 
411  int setResourceIdleLifespan(int value) {
412  return flom_handle_set_resource_idle_lifespan(&handle, value); }
413 
420  const char *getResourceNameAsCStr() {
421  return flom_handle_get_resource_name(&handle); }
428  string getResourceName() {
429  return NULL != flom_handle_get_resource_name(&handle) ?
430  flom_handle_get_resource_name(&handle) : ""; }
431 
443  int setResourceName(const char *value) {
444  return flom_handle_set_resource_name(&handle, value); }
457  int setResourceName(const string &value) {
458  return flom_handle_set_resource_name(&handle, value.c_str()); }
459 
469  return flom_handle_get_resource_quantity(&handle); }
470 
480  int setResourceQuantity(int value) {
481  return flom_handle_set_resource_quantity(&handle, value); }
482 
495  return flom_handle_get_resource_timeout(&handle); }
496 
509  int setResourceTimeout(int value) {
510  return flom_handle_set_resource_timeout(&handle, value); }
511 
518  const char *getSocketNameAsCStr() {
519  return flom_handle_get_socket_name(&handle); }
526  string getSocketName() {
527  return NULL != flom_handle_get_socket_name(&handle) ?
528  flom_handle_get_socket_name(&handle) : ""; }
529 
537  int setSocketName(const char *value) {
538  return flom_handle_set_socket_name(&handle, value); }
546  int setSocketName(const string &value) {
547  return flom_handle_set_socket_name(&handle, value.c_str()); }
548 
555  const char *getTraceFilenameAsCStr() {
556  return flom_handle_get_trace_filename(&handle); }
563  string getTraceFilename() {
564  return NULL != flom_handle_get_trace_filename(&handle) ?
565  flom_handle_get_trace_filename(&handle) : ""; }
566 
575  int setTraceFilename(const char *value) {
576  return flom_handle_set_trace_filename(&handle, value); }
585  int setTraceFilename(const string &value) {
586  return flom_handle_set_trace_filename(&handle, value.c_str()); }
587 
597  const char *getUnicastAddressAsCStr() {
598  return flom_handle_get_unicast_address(&handle); }
608  string getUnicastAddress() {
609  return NULL != flom_handle_get_unicast_address(&handle) ?
610  flom_handle_get_unicast_address(&handle) : ""; }
611 
622  int setUnicastAddress(const char *value) {
623  return flom_handle_set_unicast_address(&handle, value); }
634  int setUnicastAddress(const string &value) {
635  return flom_handle_set_unicast_address(&handle, value.c_str()); }
636 
644  return flom_handle_get_unicast_port(&handle); }
645 
653  int setUnicastPort(int value) {
654  return flom_handle_set_unicast_port(&handle, value); }
655 
662  const char *getTlsCertificateAsCStr() {
663  return flom_handle_get_tls_certificate(&handle); }
670  string getTlsCertificate() {
671  return NULL != flom_handle_get_tls_certificate(&handle) ?
672  flom_handle_get_tls_certificate(&handle) : ""; }
673 
681  int setTlsCertificate(const char *value) {
682  return flom_handle_set_tls_certificate(&handle, value); }
690  int setTlsCertificate(const string &value) {
691  return flom_handle_set_tls_certificate(&handle, value.c_str()); }
692 
699  const char *getTlsPrivateKeyAsCStr() {
700  return flom_handle_get_tls_private_key(&handle); }
707  string getTlsPrivateKey() {
708  return NULL != flom_handle_get_tls_private_key(&handle) ?
709  flom_handle_get_tls_private_key(&handle) : ""; }
710 
718  int setTlsPrivateKey(const char *value) {
719  return flom_handle_set_tls_private_key(&handle, value); }
727  int setTlsPrivateKey(const string &value) {
728  return flom_handle_set_tls_private_key(&handle, value.c_str()); }
729 
737  return flom_handle_get_tls_ca_certificate(&handle); }
745  return NULL != flom_handle_get_tls_ca_certificate(&handle) ?
746  flom_handle_get_tls_ca_certificate(&handle) : ""; }
747 
755  int setTlsCaCertificate(const char *value) {
756  return flom_handle_set_tls_ca_certificate(&handle, value); }
764  int setTlsCaCertificate(const string &value) {
765  return flom_handle_set_tls_ca_certificate(
766  &handle, value.c_str()); }
767 
775  return flom_handle_get_tls_check_peer_id(&handle); }
776 
784  int setTlsCheckPeerId(int value) {
785  return flom_handle_set_tls_check_peer_id(&handle, value); }
786  }; /* class FlomHandle */
787 
788 } /* namespace flom */
789 
790 
791 
792 #endif /* FLOMHANDLE_HH */
string getNetworkInterface()
Definition: FlomHandle.hh:341
int getDiscoveryAttempts()
Definition: FlomHandle.hh:169
const char * getTlsCaCertificateAsCStr()
Definition: FlomHandle.hh:736
string getLockedElement()
Definition: FlomHandle.hh:157
int setDiscoveryTimeout(int value)
Definition: FlomHandle.hh:206
int setResourceName(const string &value)
Definition: FlomHandle.hh:457
int getResourceIdleLifespan()
Definition: FlomHandle.hh:398
string getTraceFilename()
Definition: FlomHandle.hh:563
int setTlsCaCertificate(const char *value)
Definition: FlomHandle.hh:755
int setResourceIdleLifespan(int value)
Definition: FlomHandle.hh:411
int setNetworkInterface(const string &value)
Definition: FlomHandle.hh:363
int setTlsPrivateKey(const string &value)
Definition: FlomHandle.hh:727
const char * getLockedElementAsCStr()
Definition: FlomHandle.hh:142
int setDiscoveryAttempts(int value)
Definition: FlomHandle.hh:181
int setSocketName(const char *value)
Definition: FlomHandle.hh:537
int setMulticastAddress(const string &value)
Definition: FlomHandle.hh:302
int getTlsCheckPeerId()
Definition: FlomHandle.hh:774
int setTlsPrivateKey(const char *value)
Definition: FlomHandle.hh:718
#define FLOM_RC_OK
Definition: flom_errors.h:137
int setTlsCertificate(const string &value)
Definition: FlomHandle.hh:690
int setNetworkInterface(const char *value)
Definition: FlomHandle.hh:353
string getTlsCertificate()
Definition: FlomHandle.hh:670
const char * getSocketNameAsCStr()
Definition: FlomHandle.hh:518
int setTraceFilename(const string &value)
Definition: FlomHandle.hh:585
string getResourceName()
Definition: FlomHandle.hh:428
int getMulticastPort()
Definition: FlomHandle.hh:311
const char * getTraceFilenameAsCStr()
Definition: FlomHandle.hh:555
int setTlsCheckPeerId(int value)
Definition: FlomHandle.hh:784
FlomException(int ret_cod)
Definition: FlomHandle.hh:59
int setTlsCertificate(const char *value)
Definition: FlomHandle.hh:681
string getTlsPrivateKey()
Definition: FlomHandle.hh:707
string getUnicastAddress()
Definition: FlomHandle.hh:608
int setUnicastPort(int value)
Definition: FlomHandle.hh:653
string getReturnCodeText()
Definition: FlomHandle.hh:69
int setResourceCreate(int value)
Definition: FlomHandle.hh:386
int getResourceTimeout()
Definition: FlomHandle.hh:494
int setTraceFilename(const char *value)
Definition: FlomHandle.hh:575
const char * getNetworkInterfaceAsCStr()
Definition: FlomHandle.hh:332
const char * flom_strerror(int ret_cod)
int setResourceQuantity(int value)
Definition: FlomHandle.hh:480
string getTlsCaCertificate()
Definition: FlomHandle.hh:744
int setTlsCaCertificate(const string &value)
Definition: FlomHandle.hh:764
const char * getUnicastAddressAsCStr()
Definition: FlomHandle.hh:597
flom_lock_mode_t getLockMode()
Definition: FlomHandle.hh:240
int setSocketName(const string &value)
Definition: FlomHandle.hh:546
int setResourceName(const char *value)
Definition: FlomHandle.hh:443
const char * getTlsPrivateKeyAsCStr()
Definition: FlomHandle.hh:699
int getResourceQuantity()
Definition: FlomHandle.hh:468
int setUnicastAddress(const char *value)
Definition: FlomHandle.hh:622
const char * getResourceNameAsCStr()
Definition: FlomHandle.hh:420
string getMulticastAddress()
Definition: FlomHandle.hh:276
const char * getMulticastAddressAsCStr()
Definition: FlomHandle.hh:265
int getDiscoveryTimeout()
Definition: FlomHandle.hh:193
int setMulticastAddress(const char *value)
Definition: FlomHandle.hh:290
int setLockMode(flom_lock_mode_t value)
Definition: FlomHandle.hh:253
int setDiscoveryTtl(int value)
Definition: FlomHandle.hh:228
const char * getTlsCertificateAsCStr()
Definition: FlomHandle.hh:662
string getSocketName()
Definition: FlomHandle.hh:526
int setMulticastPort(int value)
Definition: FlomHandle.hh:322
int setResourceTimeout(int value)
Definition: FlomHandle.hh:509
int setUnicastAddress(const string &value)
Definition: FlomHandle.hh:634
int getResourceCreate()
Definition: FlomHandle.hh:374

Copyright © 2013-2023, Christian Ferrari tiian@users.sourceforge.net