Panda3D
Loading...
Searching...
No Matches
mayaToEgg_client.cxx
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file mayaToEgg_client.cxx
10 * @author cbrunner
11 * @date 2009-11-09
12 */
13
14#include "mayaToEgg_client.h"
15
16/**
17 *
18 */
19MayaToEggClient::
20MayaToEggClient() :
21 SomethingToEgg("Maya", ".mb")
22{
23 qManager = new QueuedConnectionManager();
24 qReader = new QueuedConnectionReader(qManager, 0);
25 cWriter = new ConnectionWriter(qManager, 0);
26 // We assume the server is local and on port 4242
27 server.set_host("localhost", 4242);
28}
29
30int main(int argc, char *argv[]) {
31 MayaToEggClient prog;
32 // Open a connection to the server process
33 PT(Connection) con = prog.qManager->open_TCP_client_connection(prog.server,0);
34 if (con.is_null()) {
35 nout << "Failed to open port to server process.\nMake sure maya2egg_server is running on localhost\n";
36 exit(1);
37 }
38
39 // Add this connection to the readers list
40 prog.qReader->add_connection(con);
41
42 // Get the current working directory and make sure it's a string
44 std::string s_cwd = (std::string)cwd.to_os_specific();
45 NetDatagram datagram;
46
47 // First part of the datagram is the argc
48 datagram.add_uint8(argc);
49
50 // Add the rest of the arguments as strings to the datagram
51 int i;
52 for (i = 0; i < argc; i++) {
53 datagram.add_string(argv[i]);
54 }
55
56 // Lastly, add the current working dir as a string to the datagram
57 datagram.add_string(s_cwd);
58
59 // Send it and close the connection
60 prog.cWriter->send(datagram, con);
61 con->flush();
62 while (true) {
63 prog.qReader->data_available();
64 if (prog.qManager->reset_connection_available()) {
65 PT(Connection) connection;
66 if (prog.qManager->get_reset_connection(connection)) {
67 prog.qManager->close_connection(con);
68 return 0;
69 }
70 }
71 Thread::sleep(0.1);
72 }
73}
PT(Connection) open_TCP_client_connection(const std bool close_connection(const PT(Connection) &connection)
Terminates a UDP or TCP socket previously opened.
bool add_connection(Connection *connection)
Adds a new socket to the list of sockets the ConnectionReader will monitor.
This class handles threaded delivery of datagrams to various TCP or UDP sockets.
bool send(const Datagram &datagram, const PT(Connection) &connection, bool block=false)
Enqueues a datagram for transmittal on the indicated socket.
Represents a single TCP or UDP socket for input or output.
Definition connection.h:29
void add_uint8(uint8_t value)
Adds an unsigned 8-bit integer to the datagram.
Definition datagram.I:50
void add_string(const std::string &str)
Adds a variable-length string to the datagram.
Definition datagram.I:219
get_cwd
Returns the name of the current working directory.
The name of a file, such as a texture file or an Egg file.
Definition filename.h:44
std::string to_os_specific() const
Converts the filename from our generic Unix-like convention (forward slashes starting with the root a...
A specific kind of Datagram, especially for sending across or receiving from a network.
Definition netDatagram.h:40
This flavor of ConnectionManager will queue up all of the reset-connection messages from the Connecti...
bool reset_connection_available() const
Returns true if one of the readers/writers/listeners reported a connection reset recently.
bool get_reset_connection(PT(Connection) &connection)
If a previous call to reset_connection_available() returned true, this function will return informati...
This flavor of ConnectionReader will read from its sockets and queue up all of the datagrams read for...
bool data_available()
Returns true if a datagram is available on the queue; call get_data() to extract the datagram.
This is the general base class for a file-converter program that reads some model file format and gen...
static void sleep(double seconds)
Suspends the current thread for at least the indicated amount of time.
Definition thread.I:192
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.