summaryrefslogtreecommitdiff
path: root/ndb/include/kernel/signaldata/UtilDelete.hpp
blob: 67c13b8c2d50f17937aa0ad50edbcbb2fc12961a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/* Copyright (C) 2003 MySQL AB

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

#ifndef UTIL_DELETE_HPP
#define UTIL_DELETE_HPP

#include "SignalData.hpp"
#include <SimpleProperties.hpp>

/**
 * UTIL_DELETE_REQ, UTIL_DELETE_CONF, UTIL_DELETE_REF
 */

/**
 * @class UtilDeleteReq
 * @brief Delete transaction in Util block
 *
 * Data format:
 * - UTIL_DELETE_REQ <prepareId> <ListOfAttributeHeaderValuePairs>
 */

class UtilDeleteReq {
  /** Sender(s) / Receiver(s) */
  friend class DbUtil;

  /** For printing */
  friend bool printUTIL_DELETE_REQ(FILE * output, const Uint32 * theData, 
				   Uint32 len, Uint16 receiverBlockNo);
public:
  STATIC_CONST( DataLength = 22 );
  STATIC_CONST( HeaderLength = 3 );

private:  
  Uint32 senderData;
  Uint32 prepareId;     // Which prepared transaction to execute
  Uint32 totalDataLen;  // Total length of attrData (including AttributeHeaders
                        // and possibly spanning over multiple signals)

  /**
   * Length in this = signal->length() - 3
   * Sender block ref = signal->senderBlockRef()
   */
  
  Uint32 attrData[DataLength];
};



/**
 * @class UtilDeleteConf
 *
 * Data format:
 * - UTIL_PREPARE_CONF <UtilPrepareId> 
 */

class UtilDeleteConf {
  /**
   * Sender(s) / Receiver(s)
   */
  friend class DbUtil;

  /**
   * For printing
   */
  friend bool printUTIL_DELETE_CONF(FILE * output, 
				     const Uint32 * theData, 
				     Uint32 len, 
				     Uint16 receiverBlockNo);

  STATIC_CONST( SignalLength = 1 );

private:
  Uint32 senderData;   ///< The client data provided by the client sending
                       ///< UTIL_DELETE_REQ
};


/**
 * @class UtilDeleteRef
 *
 * Data format:
 * - UTIL_PREPARE_REF 
 */

class UtilDeleteRef {
  /**
   * Sender(s) / Receiver(s)
   */
  friend class DbUtil;

  /**
   * For printing
   */
  friend bool printUTIL_DELETE_REF(FILE * output, 
				    const Uint32 * theData, 
				    Uint32 len, 
				    Uint16 receiverBlockNo);

  STATIC_CONST( SignalLength = 2 );

private:
  Uint32 senderData;
  Uint32 errorCode;   ///< See UtilExecuteRef::errorCode
  Uint32 TCErrorCode;
};


#endif