#include #include #include #include #include #include #include #include #include #include #include uint32_t msg_length_max = 200000; int main(int argc, char* argv[]) try { if (argc != 4) { printf("Usage: %s account-number config-file-path config-file-name \n", argv[0]); exit(10); } int32_t sockfd; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { throw failure("Socket failed with errno ") << errno; } sockaddr_in ambass; ambass.sin_family = AF_INET; ambass.sin_port = htons(55555); ambass.sin_addr.s_addr = inet_addr("127.0.0.1"); if (connect(sockfd, (sockaddr*) &ambass, sizeof(ambass)) < 0) { close(sockfd); throw failure("Connect failed with errno ") << errno; } std::auto_ptr sendbuf(new SendCompressedBuffer(4096)); sendbuf->sock_ = sockfd; #ifdef BIG_ENDIANS uint8_t byteOrder = most_significant_first; std::auto_ptr > buf(new ReceiveCompressedBuffer(4096)); #else uint8_t byteOrder = least_significant_first; std::auto_ptr > buf(new ReceiveCompressedBuffer(4096)); #endif buf->sock_ = sockfd; if (1 != write(sockfd, &byteOrder, 1)) { throw failure("write() failed. errno is ") << errno; } user_info user; user.accountNbr_ = strtol(argv[1], 0, 10); user.directory_ = argv[2]; user.filename_ = argv[3]; msg_shepherd::Send(sendbuf.get(), user); buf->GotPacket(); uint32_t message_length; Receive_Precursor(buf.get(), message_length); bool reqResult; msg_shepherd::Receive(buf.get(), reqResult); if (!reqResult) { flex_string errorMsg; msg_shepherd::Receive(buf.get(), errorMsg); throw failure(errorMsg); } close(sockfd); } catch (std::exception const& ex) { printf("main(): %s\n", ex.what()); #ifdef MAKEFILES return 1; #else return 0; #endif }