summaryrefslogtreecommitdiff
path: root/storage/ndb/include/transporter/TransporterDefinitions.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/ndb/include/transporter/TransporterDefinitions.hpp')
-rw-r--r--storage/ndb/include/transporter/TransporterDefinitions.hpp126
1 files changed, 126 insertions, 0 deletions
diff --git a/storage/ndb/include/transporter/TransporterDefinitions.hpp b/storage/ndb/include/transporter/TransporterDefinitions.hpp
new file mode 100644
index 00000000000..18d1ec76a3c
--- /dev/null
+++ b/storage/ndb/include/transporter/TransporterDefinitions.hpp
@@ -0,0 +1,126 @@
+/* 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 TransporterDefinitions_H
+#define TransporterDefinitions_H
+
+#include <ndb_global.h>
+#include <kernel_types.h>
+#include <NdbOut.hpp>
+
+/**
+ * The maximum number of transporters allowed
+ * A maximum is needed to be able to allocate the array of transporters
+ */
+const int MAX_NTRANSPORTERS = 128;
+
+/**
+ * The sendbuffer limit after which the contents of the buffer is sent
+ */
+const int TCP_SEND_LIMIT = 64000;
+
+enum SendStatus {
+ SEND_OK = 0,
+ SEND_BLOCKED = 1,
+ SEND_DISCONNECTED = 2,
+ SEND_BUFFER_FULL = 3,
+ SEND_MESSAGE_TOO_BIG = 4,
+ SEND_UNKNOWN_NODE = 5
+};
+
+/**
+ * Protocol6 Header +
+ * (optional signal id) + (optional checksum) + (signal data)
+ */
+//const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25));
+const Uint32 MAX_MESSAGE_SIZE = (12+4+4+(4*25)+(3*4)+4*4096);
+
+/**
+ * TransporterConfiguration
+ *
+ * used for setting up a transporter. the union member specific is for
+ * information specific to a transporter type.
+ */
+struct TransporterConfiguration {
+ Uint32 port;
+ const char *remoteHostName;
+ const char *localHostName;
+ NodeId remoteNodeId;
+ NodeId localNodeId;
+ NodeId serverNodeId;
+ bool checksum;
+ bool signalId;
+ bool isMgmConnection; // is a mgm connection, requires transforming
+
+ union { // Transporter specific configuration information
+
+ struct {
+ Uint32 sendBufferSize; // Size of SendBuffer of priority B
+ Uint32 maxReceiveSize; // Maximum no of bytes to receive
+ } tcp;
+
+ struct {
+ Uint32 shmKey;
+ Uint32 shmSize;
+ int signum;
+ } shm;
+
+ struct {
+ Uint32 prioASignalSize;
+ Uint32 prioBSignalSize;
+ } ose;
+
+ struct {
+ Uint32 sendLimit; // Packet size
+ Uint32 bufferSize; // Buffer size
+
+ Uint32 nLocalAdapters; // 1 or 2, the number of adapters on local host
+
+ Uint32 remoteSciNodeId0; // SCInodeId for adapter 1
+ Uint32 remoteSciNodeId1; // SCInodeId for adapter 2
+ } sci;
+ };
+};
+
+struct SignalHeader {
+ Uint32 theVerId_signalNumber; // 4 bit ver id - 16 bit gsn
+ Uint32 theReceiversBlockNumber; // Only 16 bit blocknum
+ Uint32 theSendersBlockRef;
+ Uint32 theLength;
+ Uint32 theSendersSignalId;
+ Uint32 theSignalId;
+ Uint16 theTrace;
+ Uint8 m_noOfSections;
+ Uint8 m_fragmentInfo;
+}; /** 7x4 = 28 Bytes */
+
+struct LinearSectionPtr {
+ Uint32 sz;
+ Uint32 * p;
+};
+
+struct SegmentedSectionPtr {
+ Uint32 sz;
+ Uint32 i;
+ struct SectionSegment * p;
+
+ void setNull() { p = 0;}
+ bool isNull() const { return p == 0;}
+};
+
+class NdbOut & operator <<(class NdbOut & out, SignalHeader & sh);
+
+#endif // Define of TransporterDefinitions_H