00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _HTTP_SINK_HH
00022 #define _HTTP_SINK_HH
00023
00024 #ifndef _MEDIA_SINK_HH
00025 #include "MediaSink.hh"
00026 #endif
00027 #ifndef _NET_ADDRESS_HH
00028 #include "NetAddress.hh"
00029 #endif
00030
00031 class HTTPSink: public MediaSink {
00032 public:
00033 static HTTPSink* createNew(UsageEnvironment& env, Port ourPort);
00034
00035
00036 protected:
00037 HTTPSink(UsageEnvironment& env, int ourSocket);
00038 virtual ~HTTPSink();
00039
00040 virtual Boolean isUseableFrame(unsigned char* framePtr, unsigned frameSize);
00041
00042
00043
00044 private:
00045 virtual Boolean continuePlaying();
00046
00047 protected:
00048 static int setUpOurSocket(UsageEnvironment& env, Port& ourPort);
00049 static void appendPortNum(UsageEnvironment& env, Port const& port);
00050
00051 private:
00052 static void afterGettingFrame(void* clientData, unsigned frameSize,
00053 unsigned numTruncatedBytes,
00054 struct timeval presentationTime,
00055 unsigned durationInMicroseconds);
00056 void afterGettingFrame1(unsigned frameSize, struct timeval presentationTime);
00057
00058 static void ourOnSourceClosure(void* clientData);
00059
00060 int fSocket;
00061 unsigned char fBuffer[10000];
00062 int fClientSocket;
00063 };
00064
00065 #endif