<commit_before>#ifndef UNetSender_H_
#define UNetSender_H_
// -----------------------------------------------------------------------------
#include <ostream>
#include <string>
#include <vector>
#include <cc++/socket.h>
#include "UniSetObject_LT.h"
#include "Trigger.h"
#include "Mutex.h"
#include "SMInterface.h"
#include "SharedMemory.h"
#include "ThreadCreator.h"
#include "UDPPacket.h"
#include "UDPNReceiver.h"
// -----------------------------------------------------------------------------
/*
 * Для защиты от потери пакета при переполнении "номера пакета".
 * UNetReceiver при обнаружении "разрыва" в последовательнности, просто игнорирует пакет, обновляет счётчик
 * и начинает обработку пока буфер опять не заполнится..
 */
class UNetSender
{
	public:
		UNetSender( const std::string host, const ost::tpport_t port, SMInterface* smi,
					const std::string s_field="", const std::string s_fvalue="", SharedMemory* ic=0 );

		~UNetSender();

		struct UItem
		{
			UItem():
				val(0)
			{}

			IOController_i::SensorInfo si;
			IOController::AIOStateList::iterator ait;
			IOController::DIOStateList::iterator dit;
			UniSetTypes::uniset_spin_mutex val_lock;
			int pack_ind;
			long val;

			friend std::ostream& operator<<( std::ostream& os, UItem& p );
		};

		void start();

		void send();
		void real_send();
		void update( UniSetTypes::ObjectId id, long value );

		inline void setSendPause( int msec ){ sendpause = msec; }

	protected:

		std::string s_field;
		std::string s_fvalue;

		SMInterface* shm;

		void initIterators();
		bool initItem( UniXML_iterator& it );
		bool readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec );

		void readConfiguration();
		bool check_item( UniXML_iterator& it );

	private:
		UNetSender();

		ost::UDPBroadcast* udp;
		ost::IPV4Address addr;
		ost::tpport_t port;
		std::string s_host;

		std::string myname;
		int sendpause;
		bool activated;

		UniSetUDP::UDPMessage mypack;
		typedef std::vector<UItem> DMap;
		DMap dlist;
		int maxItem;
		unsigned long packetnum;

		ThreadCreator<UNetSender>* s_thr;	// send thread
};
// -----------------------------------------------------------------------------
#endif // UNetSender_H_
// -----------------------------------------------------------------------------
<commit_msg>проверил сборку пакета<commit_after>#ifndef UNetSender_H_
#define UNetSender_H_
// -----------------------------------------------------------------------------
#include <ostream>
#include <string>
#include <vector>
#include <cc++/socket.h>
#include "UniSetObject_LT.h"
#include "Trigger.h"
#include "Mutex.h"
#include "SMInterface.h"
#include "SharedMemory.h"
#include "ThreadCreator.h"
#include "UDPPacket.h"
// -----------------------------------------------------------------------------
/*
 * Для защиты от потери пакета при переполнении "номера пакета".
 * UNetReceiver при обнаружении "разрыва" в последовательнности, просто игнорирует пакет, обновляет счётчик
 * и начинает обработку пока буфер опять не заполнится..
 */
class UNetSender
{
	public:
		UNetSender( const std::string host, const ost::tpport_t port, SMInterface* smi,
					const std::string s_field="", const std::string s_fvalue="", SharedMemory* ic=0 );

		~UNetSender();

		struct UItem
		{
			UItem():
				val(0)
			{}

			IOController_i::SensorInfo si;
			IOController::AIOStateList::iterator ait;
			IOController::DIOStateList::iterator dit;
			UniSetTypes::uniset_spin_mutex val_lock;
			int pack_ind;
			long val;

			friend std::ostream& operator<<( std::ostream& os, UItem& p );
		};

		void start();

		void send();
		void real_send();
		void update( UniSetTypes::ObjectId id, long value );

		inline void setSendPause( int msec ){ sendpause = msec; }

	protected:

		std::string s_field;
		std::string s_fvalue;

		SMInterface* shm;

		void initIterators();
		bool initItem( UniXML_iterator& it );
		bool readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec );

		void readConfiguration();
		bool check_item( UniXML_iterator& it );

	private:
		UNetSender();

		ost::UDPBroadcast* udp;
		ost::IPV4Address addr;
		ost::tpport_t port;
		std::string s_host;

		std::string myname;
		int sendpause;
		bool activated;

		UniSetUDP::UDPMessage mypack;
		typedef std::vector<UItem> DMap;
		DMap dlist;
		int maxItem;
		unsigned long packetnum;

		ThreadCreator<UNetSender>* s_thr;	// send thread
};
// -----------------------------------------------------------------------------
#endif // UNetSender_H_
// -----------------------------------------------------------------------------

{'fraction_non_alphanumeric': 0.24235759841653837, 'fraction_numerical': 0.0013195513525401364, 'mean_word_length': 2.404191616766467, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 4}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5874019', 'n_tokens_mistral': 1607, 'n_tokens_neox': 1489, 'n_words': 360}