source: flair-src/trunk/lib/FlairCore/src/unexported/ui_com.h@ 445

Last change on this file since 445 was 445, checked in by Sanahuja Guillaume, 5 months ago

update buffering

File size: 2.3 KB
RevLine 
[2]1// %flair:license{
[15]2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
[2]4// %flair:license}
5// created: 2011/05/01
6// filename: ui_com.h
7//
8// author: Guillaume Sanahuja
9// Copyright Heudiasyc UMR UTC/CNRS 7253
10//
11// version: $Id: $
12//
13// purpose: classe permettant la lecture et l'ecriture RT sur socket UDT
14//
15//
16/*********************************************************************/
17
18#ifndef UI_COM_H
19#define UI_COM_H
20
21#include "Thread.h"
22#include <udt.h>
23#ifdef __XENO__
24#include <native/pipe.h>
25#endif
26
[15]27namespace flair {
28namespace core {
29class Mutex;
30class Object;
[2]31}
[15]32namespace gui {
33class SendData;
34}
35}
[2]36
[15]37class ui_com : public flair::core::Thread {
38public:
39 ui_com(const flair::core::Object *parent, UDTSOCKET sock);
40 ~ui_com();
[439]41 //Send, public part
42 void Send(char *buf, ssize_t size,int ttl = -1);//ttl in ms, -1 for infinite
[15]43 ssize_t Receive(char *buf, ssize_t buf_size);
44 void AddSendData(const flair::gui::SendData *obj);
[441]45 void UpdateSendData(const flair::gui::SendData *obj);//must be called with mutex locked
[15]46 void RemoveSendData(const flair::gui::SendData *obj);
[442]47 void UpdateDataToSendBufferSize(const flair::gui::SendData *obj);
[15]48 void Block(void);
49 void UnBlock(void);
50 bool ConnectionLost(void);
[234]51 void CheckConnection(void);
[15]52private:
[441]53 std::vector<const flair::gui::SendData *> datasToSend;
54 std::vector<flair::core::Time> resumeTimes;
[15]55 flair::core::Mutex *send_mutex;
56 UDTSOCKET socket_fd;
57 bool connection_lost;
58 void Run(void);
59 void SendDatas(void);
[439]60 //private part, called to effectively send to udt
61 void SendNRT(char *buf, ssize_t size,int ttl);
[441]62 void PushDatasToSend(const flair::gui::SendData *dataToSend);
[440]63 typedef struct {
64 char* buf;
[441]65 size_t actual_size;
66 size_t final_size;
[440]67 uint16_t period;
68 uint16_t nb_buffering;
69 } PushedData_t;
[441]70 std::vector<PushedData_t> pushedDatas;
[439]71
[15]72 static int compressBuffer(char *in, ssize_t in_size, char **out,
73 ssize_t *out_size, int level);
74 static int uncompressBuffer(unsigned char *in, ssize_t in_size,
75 unsigned char **out, ssize_t *out_size);
[2]76#ifdef __XENO__
[15]77 bool is_running;
78 static void *user_thread(void *arg);
79 pthread_t thread;
80 RT_PIPE pipe;
[2]81#endif
82};
83
84#endif // UI_COM_H
Note: See TracBrowser for help on using the repository browser.