#include "xdprof.h"
Include dependency graph for communication.cpp:

Go to the source code of this file.
Functions | |
| int | Send (const char *msg, int len) |
| Sends the msg of length len over the socket. More... | |
| void | Send (const string &s) |
| Sends a string. More... | |
| bool | IsConnected () |
| Determines if the client is connected to the server. More... | |
| int | GetSocketDescriptor (const char *hostname, unsigned short port) |
| Return a socket descriptor connect()ed to a hostname that is accept()ing information data on port. More... | |
| bool | InitializeCommunications (string hostname, int port) |
| This initializes communications with the server. More... | |
| void | RecordPacket (unsigned long packetsize) |
| void | ShutdownCommunications () |
| Shutdown the communications, close the sockets, etc. More... | |
Variables | |
| int | Server |
| Socket connection (or < 0 if not connected). More... | |
| int | BytesSent = 0 |
| Number of bytes sent. More... | |
| int | SendCalls = 0 |
| Number of times Send was called. More... | |
| int | PacketCount = 0 |
| unsigned long int | PacketBytes = 0 |
Definition in file communication.cpp.
|
|
Return a socket descriptor connect()ed to a hostname that is accept()ing information data on port. Return a value <= 0 if such a connection can't be made.
Definition at line 91 of file communication.cpp. Referenced by InitializeCommunications().
00092 {
00093 struct hostent *hentry;
00094 struct sockaddr_in s;
00095 int fd;
00096
00097 if (port <= 0 || port > 65535)
00098 {
00099 fprintf(stderr, "DPROF ERROR: bad port number\n");
00100 return -1;
00101 }
00102
00103 if (hostname == NULL)
00104 {
00105 fprintf(stderr, "DPROF ERROR: hostname is NULL\n");
00106 return -1;
00107 }
00108
00109 /* create a socket */
00110 fd = socket(AF_INET, SOCK_STREAM, 0);
00111
00112 /* find remote host's addr from name */
00113 if ((hentry = gethostbyname(hostname)) == NULL)
00114 {
00115 #ifdef WIN32
00116 debug("Bad gethostbyname value.", WSAGetLastError());
00117 #endif
00118 return -1;
00119 }
00120
00121 memset((char *)&s, 0, sizeof(s));
00122 /* set remote host's addr; its already in network byte order */
00123 memcpy(&s.sin_addr.s_addr, *(hentry->h_addr_list),
00124 sizeof(s.sin_addr.s_addr));
00125 /* set remote host's port */
00126 s.sin_port = htons(port);
00127 s.sin_family = AF_INET;
00128
00129 /* now try connecting */
00130 if (-1 == connect(fd, (struct sockaddr*)&s, sizeof(s)))
00131 {
00132 debug("Unable to connect!");
00133 return -1;
00134 }
00135 else
00136 {
00137 return fd;
00138 }
00139
00140 }
|
|
|
This initializes communications with the server.
Definition at line 148 of file communication.cpp. 00149 {
00150 #ifdef WIN32
00151 WORD wVersionRequested;
00152 WSADATA wsaData;
00153 int err;
00154
00155 wVersionRequested = MAKEWORD( 1, 1 );
00156
00157 err = WSAStartup( wVersionRequested, &wsaData );
00158 if ( err != 0 ) {
00159 debug("WSA error", WSAGetLastError());
00160 Server = -1;
00161 return false;
00162 }
00163 #endif
00164
00165 Server = GetSocketDescriptor(hostname.c_str(), static_cast<unsigned short>(port));
00166 if (IsConnected())
00167 debug("connected!");
00168 else
00169 debug("couldn't connect");
00170 return IsConnected();
00171 }
|
|
|
Determines if the client is connected to the server.
Definition at line 79 of file communication.cpp. Referenced by BackgroundThread(), and InitializeCommunications().
00080 {
00081 return (Server > 0);
00082 }
|
|
|
Definition at line 176 of file communication.cpp. 00177 {
00178 ++PacketCount;
00179 PacketBytes += packetsize;
00180 }
|
|
|
Sends a string.
Definition at line 71 of file communication.cpp. 00072 {
00073 Send(s.c_str(), s.length() );
00074 }
|
|
|
Sends the msg of length len over the socket.
Definition at line 55 of file communication.cpp. 00056 {
00057 if (Server > 0)
00058 {
00059 BytesSent += len;
00060 ++SendCalls;
00061 return send(Server, msg, len, 0);
00062 }
00063 else
00064 return 0;
00065 }
|
|
|
Shutdown the communications, close the sockets, etc.
Definition at line 185 of file communication.cpp. Referenced by BackgroundThread(), and NotifyEvent().
00186 {
00187 Send("/*done*/");
00188 unsafe_debug("Bytes sent:", BytesSent);
00189 unsafe_debug("SendCalls: ", SendCalls);
00190 //fprintf(stderr, "bytes=%d calls=%d\n", BytesSent, SendCalls);
00191 fprintf(stdout, "\npackets\tbytes\trefresh\n");
00192 //fprintf(stderr, "packets\t%d \nbytes\t%d\nrefresh\t%d\n", PacketCount, PacketBytes,RefreshTime);
00193 fprintf(stdout, "%d\t%d\t%d\n", PacketCount, PacketBytes,RefreshTime);
00194
00195 fprintf(stdout, "Methods=%d, Classes=%d, MethodCache=%d,ClassCache=%d\n", Methods.size(), Classes.size(), MethodCache.size(), ClassCache.size());
00196
00197 fflush(stdout);
00198 unsafe_debug("Average: ", BytesSent / static_cast<double>(SendCalls));
00199 if (Server > 0)
00200 closesocket(Server);
00201 Server = -1;
00202 #ifdef WIN32
00203 WSACleanup();
00204 #endif
00205 }
|
|
|
Number of bytes sent.
Definition at line 45 of file communication.cpp. |
|
|
Definition at line 174 of file communication.cpp. |
|
|
Definition at line 173 of file communication.cpp. |
|
|
Number of times Send was called.
Definition at line 48 of file communication.cpp. |
|
|
Socket connection (or < 0 if not connected).
Definition at line 42 of file communication.cpp. |
1.2.8.1 written by Dimitri van Heesch,
© 1997-2001