summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/AVStreams/Simple/ftp.h
blob: a94d935127920f4e7cad56c3b5f0137a44bde9a7 (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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/* -*- C++ -*- */
// $Id$

// ============================================================================
//
// = LIBRARY
//    TAO/orbsvcs/tests/AVStreams/Simple
//
// = FILENAME
//    ftp.h
//
// = DESCRIPTION
//    Ftp client to send data
//
// = AUTHOR
//    Yamuna Krishnamurthy <yamuna@cs.wustl.edu>
//
// ============================================================================


#ifndef TAO_AV_FTP_H
#define TAO_AV_FTP_H

#include "ace/Get_Opt.h"
#include "orbsvcs/Naming/Naming_Utils.h"
#include "orbsvcs/AV/AVStreams_i.h"
#include "orbsvcs/AV/Endpoint_Strategy.h"
#include "orbsvcs/AV/Policy.h"
#include "orbsvcs/AV/Protocol_Factory.h"

class FTP_Client_StreamEndPoint  : public TAO_Client_StreamEndPoint
{
  // = TITLE
  //    Defines the client stream endpoint.
  //
  // = DESCRIPTION
  //    This class overrides the methods of TAO_ClientStreamendpoint
  //    so the application can perform its processing during post and pre
  //    connection set up.

public:
  FTP_Client_StreamEndPoint (void);
  //Contructor

  virtual int get_callback (const char *flowname,
                            TAO_AV_Callback *&callback);
  // Create the application client callback and return its handle to the
  // AVSTreams for further application callbacks

  virtual int set_protocol_object (const char *flowname,
                                   TAO_AV_Protocol_Object *object);
  // Set protocol object corresponding to the transport protocol chosen.

protected:
  TAO_AV_Callback callback_;
  // reference to the cllient application callback.
};

typedef TAO_AV_Endpoint_Reactive_Strategy_A <FTP_Client_StreamEndPoint,TAO_VDev,AV_Null_MediaCtrl> ENDPOINT_STRATEGY;


class Client
{
  // = TITLE
  //    Defines the Client Application
  //
  // = DESCRIPTION
  //    The actual client program that acts as the ftp client that streams data
  //    to the ftp servers that are waiting for data.
public:
  Client (void);
  // Constructor

  int init (int argc,
            char **argv,
            CORBA::Environment&);
  // Method to initialize the various data components.

  void set_protocol_object (TAO_AV_Protocol_Object *protocol_object);
  // Set the protocol object corresponding to the transport protocol chosen.

  int pace_data (CORBA::Environment&);
  // Method to pace and send data from a file.

  FILE *file (void);
  // File handle from which data is read to be sent.

  TAO_StreamCtrl *streamctrl (void);
  // The stream control interface that manages the stream set up

private:
  int parse_args (int argc, char **argv);
  // Method to parse the command line arguments.

  int bind_to_server (CORBA::Environment& ACE_TRY_ENV);
  // Method that binds the ftp client to the server

  ENDPOINT_STRATEGY endpoint_strategy_;
  // The reacfive strategy of the client.

  AVStreams::MMDevice_var server_mmdevice_;
  // The server MMDevice that the ftpo client connects to

  TAO_MMDevice *client_mmdevice_;
  // The ftp client MMDevice.

  TAO_StreamCtrl *streamctrl_;
  // Video stream controller

  int count_;
  // Number of frames sent.

  int argc_;
  char **argv_;

  ACE_CString filename_;
  // File from which data is read.

  ACE_CString address_;
  // Address of the ftp client host machine or a multicast address - Default is
  // UDP multicast addess

  TAO_Naming_Client my_naming_client_;
  // The Naming Service client.

  FILE *fp_;
  // File handle of the file read from.

  ACE_CString protocol_;
  // Selected protocol - default is UDP

  ACE_CString flowname_;

  int use_sfp_;
  // If set to 1 then use sfp as the flow carrier protocol.

  int frame_rate_;

  ACE_Message_Block mb;
  // Message block into which data is read from a file and then sent.

  TAO_AV_Protocol_Object* protocol_object_;
  // Protocol object corresponding to the transport protocol selected.

};

typedef ACE_Singleton<Client,ACE_Null_Mutex> CLIENT;

#endif /* TAO_AV_FTP_H */