File indexing completed on 2024-04-06 12:19:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include "DTSpy.h"
0011 #include <cstdlib>
0012 #include <cstring>
0013
0014 #define DTSPY_HEAD_SIZE 36
0015 #define DTSPY_MAX_MSG 512 * 1024
0016
0017 DTSpy::DTSpy() : DTCtcp(0) {
0018 spybuf = (char *)malloc(DTSPY_MAX_MSG);
0019 givenonce = 0;
0020 }
0021
0022 DTSpy::~DTSpy() { free(spybuf); }
0023
0024 DTSpy::DTSpy(char *hostaddr, int port) : DTCtcp(0) {
0025 Connect(hostaddr, port);
0026 givenonce = 0;
0027 }
0028
0029 int DTSpy::getNextBuffer() {
0030 if (!connected)
0031 return -1;
0032 if (givenonce)
0033 if ((lastpointer - spybuf) < getBuffSize())
0034 return (getBuffSize() - (lastpointer - spybuf));
0035 givenonce = 0;
0036
0037 memset(spybuf, 0x0, DTSPY_MAX_MSG);
0038
0039 int howm = Receive(spybuf, DTSPY_HEAD_SIZE);
0040
0041 unsigned short *i2ohea = (unsigned short *)(spybuf + 2);
0042 if (howm == DTSPY_HEAD_SIZE) {
0043 howm = Receive(spybuf + DTSPY_HEAD_SIZE, ((*i2ohea) * 4) - DTSPY_HEAD_SIZE);
0044
0045
0046
0047
0048
0049 return howm + DTSPY_HEAD_SIZE;
0050 ;
0051 } else
0052 return -1;
0053 }
0054
0055 int DTSpy::getBuffSize() {
0056 unsigned short *i2ohea = (unsigned short *)(spybuf + 2);
0057 return *i2ohea;
0058 }
0059
0060 int DTSpy::getRunNo() {
0061 unsigned short *i2ohea = (unsigned short *)(spybuf + 28);
0062 return *i2ohea;
0063 }
0064
0065 const char *DTSpy::getEventPointer() {
0066 if (givenonce)
0067 return lastpointer;
0068 lastpointer = spybuf + DTSPY_HEAD_SIZE;
0069 givenonce = 1;
0070 return lastpointer;
0071 }
0072
0073 void DTSpy::setlastPointer(char *thep) { lastpointer = thep; }