Instrument Neutral Distributed Interface INDI
2.2.5
indiserver
Msg.hpp
Go to the documentation of this file.
1
/* INDI Server for protocol version 1.7.
2
* Copyright (C) 2007 Elwood C. Downey <
[email protected]
>
3
2013 Jasem Mutlaq <
[email protected]
>
4
2022 Ludovic Pollet
5
This library is free software; you can redistribute it and/or
6
modify it under the terms of the GNU Lesser General Public
7
License as published by the Free Software Foundation; either
8
version 2.1 of the License, or (at your option) any later version.
9
10
This library is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
Lesser General Public License for more details.
14
15
You should have received a copy of the GNU Lesser General Public
16
License along with this library; if not, write to the Free Software
17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
*/
19
#pragma once
20
21
#include <vector>
22
#include <list>
23
#include <set>
24
25
#include "
lilxml.h
"
26
27
class
MsgQueue
;
28
class
SerializedMsg
;
29
class
SerializedMsgWithSharedBuffer
;
30
class
SerializedMsgWithoutSharedBuffer
;
31
32
class
Msg
33
{
34
friend
class
SerializedMsg
;
35
friend
class
SerializedMsgWithSharedBuffer
;
36
friend
class
SerializedMsgWithoutSharedBuffer
;
37
private
:
38
// Present for sure until message queueing is doned. Prune asap then
39
XMLEle
* xmlContent;
40
41
// Present until message was queued.
42
MsgQueue
* from;
43
44
int
queueSize;
45
bool
hasInlineBlobs;
46
bool
hasSharedBufferBlobs;
47
48
std::vector<int> sharedBuffers;
/* fds of shared buffer */
49
50
// Convertion task and resultat of the task
51
SerializedMsg
* convertionToSharedBuffer;
52
SerializedMsg
* convertionToInline;
53
54
SerializedMsg
* buildConvertionToSharedBuffer();
55
SerializedMsg
* buildConvertionToInline();
56
57
bool
fetchBlobs(std::list<int> &incomingSharedBuffers);
58
59
void
releaseXmlContent();
60
void
releaseSharedBuffers(
const
std::set<int> &keep);
61
62
// Remove resources that can be removed.
63
// Will be called when queuingDone is true and for every change of status from convertionToXXX
64
void
prune();
65
66
void
releaseSerialization(
SerializedMsg
* form);
67
68
~Msg
();
69
70
public
:
71
/* Message will not be queued anymore. Release all possible resources, incl self */
72
void
queuingDone
();
73
74
Msg
(
MsgQueue
* from,
XMLEle
* root);
75
76
static
Msg
*
fromXml
(
MsgQueue
* from,
XMLEle
* root, std::list<int> &incomingSharedBuffers);
77
96
SerializedMsg
*
serialize
(
MsgQueue
* from);
97
};
MsgQueue
Definition
MsgQueue.hpp:34
Msg
Definition
Msg.hpp:33
Msg::serialize
SerializedMsg * serialize(MsgQueue *from)
Definition
Msg.cpp:211
Msg::fromXml
static Msg * fromXml(MsgQueue *from, XMLEle *root, std::list< int > &incomingSharedBuffers)
Definition
Msg.cpp:175
Msg::queuingDone
void queuingDone()
Definition
Msg.cpp:170
SerializedMsgWithSharedBuffer
Definition
SerializedMsgWithSharedBuffer.hpp:24
SerializedMsgWithoutSharedBuffer
Definition
SerializedMsgWithoutSharedBuffer.hpp:24
SerializedMsg
Definition
SerializedMsg.hpp:36
lilxml.h
A little DOM-style library to handle parsing and processing an XML file.
xml_ele_
Definition
lilxml.cpp:108
Generated on Thu Oct 22 2026 14:46:48 for Instrument Neutral Distributed Interface INDI by
1.9.8