/*----------------------------------------------------------------------
|   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;
}
Beispiel #2
0
/*----------------------------------------------------------------------
|       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;
}