summaryrefslogtreecommitdiffstats
path: root/mpeglib/lib/input/threadSafeInputStream.h
blob: 0a29637b7b96486785bd79cb1c011369e48c9c44 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
  thread safe wrapper for input Stream
  Copyright (C) 2000  Martin Vogt

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU Library General Public License as published by
  the Free Software Foundation.

  For more information look at the file COPYRIGHT in this package

 */


#ifndef __THREADSAFEINPUTSTREAM_H
#define __THREADSAFEINPUTSTREAM_H

// read INTRO in threadQueue.h
// This class makes the inputStream (given in constructor)
// threadsafe by wrapping each call with a threadqueue.
//
// Important NOTE: the input pointer is the owned by this class !!!
//                 which means: we call delete on it!

#include "../util/abstract/threadQueue.h"
#include "inputStream.h"


class ThreadSafeInputStream : public InputStream {

  ThreadQueue* threadQueue;
  InputStream* input;

 public:
  ThreadSafeInputStream(InputStream* input);
  ~ThreadSafeInputStream();


  int open(const char* dest);
  void close();
  int isOpen();

  int eof();
  int read(char* ptr,int size);
  int seek(long bytePos);
  void clear();

  long getByteLength();
  long getBytePosition();

  void insertTimeStamp(TimeStamp* src,long key,int len);
  TimeStamp* getTimeStamp(long key);
  int bytesUntilNext(long key);
  void print();

};
#endif