00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
#ifndef MNSOCKET_QUEUE_H
00026
#define MNSOCKET_QUEUE_H
00027
00028
#include <stdio.h>
00029
#include <MNPCList.h>
00030
#include <sys/uio.h>
00031
#include "MNRTPbase.h"
00032
00044 class MNSocketQueue
00045 {
00046
private:
00047
static const u_int32_t FRONT = 1;
00048
static const u_int32_t BACK = 2;
00049
double queue_size;
00050
00051
protected:
00053 MNPCList<struct iovec*> _rtp_queue;
00054
00055
public:
00056
MNSocketQueue( );
00057
00058
~MNSocketQueue( );
00059
00068
void send_bytes(
MNRTPbase* caller,
struct sockaddr_in* target);
00069
00078
void push_rtp_back(
struct iovec* iov,
int blocks );
00079
00088
void push_rtp_front(
struct iovec* iov,
int blocks );
00089
00103
void push_leftovers_rtp(
struct iovec* iov,
00104
int blocks,
00105
int sent,
00106
int where = MNSocketQueue::BACK );
00107
00108
bool isEmpty( );
00109
00110
double getQueueSize();
00111 };
00112
00113
00114
00115
#endif