/*---------------------------------------------------------------------- | BLT_TcpNetworkStream_Create +---------------------------------------------------------------------*/ BLT_Result BLT_TcpNetworkStream_Create(const char* name, ATX_InputStream** stream) { ATX_Socket* sock; ATX_String hostname = ATX_String_Create(name); ATX_UInt16 port = BLT_TCP_NETWORK_STREAM_DEFAULT_PORT; int sep; ATX_Result result = ATX_SUCCESS; /* default */ *stream = NULL; /* parse the hostname/port */ sep = ATX_String_FindCharFrom(&hostname, ':', 6); if (sep > 0) { /* we have a port number */ int port_long = 0; result = ATX_ParseInteger(name+sep+1, &port_long, ATX_FALSE); if (ATX_FAILED(result)) { ATX_LOG_WARNING("BLT_TcpNetworkStream_Create - invalid port spec"); goto end; } port = (ATX_UInt16)port_long; ATX_String_SetLength(&hostname, sep); } /* create a socket */ result = ATX_TcpClientSocket_Create(&sock); if (ATX_FAILED(result)) goto end; /* connect */ ATX_LOG_FINE_2("BLT_TcpNetworkStream_Create - connecting to %s:%d", ATX_CSTR(hostname), port); result = ATX_Socket_ConnectToHost(sock, ATX_CSTR(hostname), port, BLT_TCP_NETWORK_STREAM_DEFAULT_TIMEOUT); if (ATX_FAILED(result)) { ATX_LOG_WARNING_1("BLT_TcpNetworkStream_Create - failed to connect (%d)", result); goto end; } ATX_LOG_FINE("BLT_TcpNetworkStream_Create - connected"); /* return the input stream */ result = ATX_Socket_GetInputStream(sock, stream); /* release the socket */ ATX_DESTROY_OBJECT(sock); end: ATX_String_Destruct(&hostname); return result; }
/*---------------------------------------------------------------------- | main +---------------------------------------------------------------------*/ int main(int argc, char** argv) { float f; long i; ATX_COMPILER_UNUSED(argc); ATX_COMPILER_UNUSED(argv); SHOULD_FAIL(ATX_ParseInteger("ssdfsdf", &i, ATX_FALSE), "test a1"); SHOULD_FAIL(ATX_ParseInteger("", &i, ATX_FALSE), "test a2"); SHOULD_FAIL(ATX_ParseInteger(NULL, &i, ATX_FALSE), "test a3"); SHOULD_FAIL(ATX_ParseInteger("123a", &i, ATX_FALSE), "test a4"); SHOULD_FAIL(ATX_ParseInteger("a123", &i, ATX_FALSE), "test a5"); SHOULD_FAIL(ATX_ParseInteger(" 123", &i, ATX_FALSE), "test a6"); SHOULD_FAIL(ATX_ParseInteger("a 123", &i, ATX_TRUE), "test a7"); SHOULD_FAIL(ATX_ParseInteger(" a123", &i, ATX_TRUE), "test a8"); SHOULD_SUCCEED(ATX_ParseInteger("+1", &i, ATX_FALSE), "test b1"); SHOULD_EQUAL_I(i, 1, "test b1"); SHOULD_SUCCEED(ATX_ParseInteger("+123", &i, ATX_FALSE), "test b2"); SHOULD_EQUAL_I(i, 123, "test b2"); SHOULD_SUCCEED(ATX_ParseInteger("-1", &i, ATX_FALSE), "test b3"); SHOULD_EQUAL_I(i, -1, "test b3"); SHOULD_SUCCEED(ATX_ParseInteger("-123", &i, ATX_FALSE), "test b4"); SHOULD_EQUAL_I(i, -123, "test b4"); SHOULD_SUCCEED(ATX_ParseInteger("-123fgs", &i, ATX_TRUE), "test b5"); SHOULD_EQUAL_I(i, -123, "test b5"); SHOULD_SUCCEED(ATX_ParseInteger(" -123fgs", &i, ATX_TRUE), "test b6"); SHOULD_EQUAL_I(i, -123, "b6"); SHOULD_SUCCEED(ATX_ParseInteger("0", &i, ATX_TRUE), "test b7"); SHOULD_EQUAL_I(i, 0, "b7"); SHOULD_SUCCEED(ATX_ParseInteger("7768", &i, ATX_TRUE), "test b8"); SHOULD_EQUAL_I(i, 7768, "b8"); SHOULD_FAIL(ATX_ParseFloat("ssdfsdf", &f, ATX_FALSE), "test c1"); SHOULD_FAIL(ATX_ParseFloat("", &f, ATX_FALSE), "test c2"); SHOULD_FAIL(ATX_ParseFloat(NULL, &f, ATX_FALSE), "test c3"); SHOULD_FAIL(ATX_ParseFloat("123.", &f, ATX_FALSE), "test c4"); SHOULD_FAIL(ATX_ParseFloat("a123", &f, ATX_FALSE), "test c5"); SHOULD_FAIL(ATX_ParseFloat(" 123", &f, ATX_FALSE), "test c6"); SHOULD_FAIL(ATX_ParseFloat(" 127.89E5ff", &f, ATX_FALSE), "test c7"); SHOULD_SUCCEED(ATX_ParseFloat("+1.0", &f, ATX_FALSE), "test d1"); SHOULD_EQUAL_F(f, 1.0f, "test d1"); SHOULD_SUCCEED(ATX_ParseFloat("+123", &f, ATX_FALSE), "test d2"); SHOULD_EQUAL_F(f, 123.0f, "test d2"); SHOULD_SUCCEED(ATX_ParseFloat("-0.1", &f, ATX_FALSE), "test d3"); SHOULD_EQUAL_F(f, -0.1f, "test d3"); SHOULD_SUCCEED(ATX_ParseFloat("0.23e-13", &f, ATX_FALSE), "test d4"); SHOULD_EQUAL_F(f, 0.23e-13f, "test d4"); SHOULD_SUCCEED(ATX_ParseFloat(" 127.89E5ff", &f, ATX_TRUE), "test d5"); SHOULD_EQUAL_F(f, 127.89E5f, "test d5"); SHOULD_SUCCEED(ATX_ParseFloat("+0.3db", &f, ATX_TRUE), "test d6"); SHOULD_EQUAL_F(f, 0.3f, "d6"); SHOULD_SUCCEED(ATX_ParseFloat("+.3db", &f, ATX_TRUE), "test d7"); SHOULD_EQUAL_F(f, 0.3f, "d7"); SHOULD_SUCCEED(ATX_ParseFloat("-.3db", &f, ATX_TRUE), "test d8"); SHOULD_EQUAL_F(f, -0.3f, "d8"); SHOULD_SUCCEED(ATX_ParseFloat(".3db", &f, ATX_TRUE), "test d9"); SHOULD_EQUAL_F(f, .3f, "d9"); return 0; }