Exemple #1
0
    void StartToConnect()
    {
        mrs.Connect.Request connect_request = new mrs.Connect.Request();
        connect_request.ConnectionType = MrsConnectionType.TCP;
        connect_request.Addr           = g_ArgServerAddr;
        connect_request.Port           = ToUInt16(g_ArgServerPort);
        connect_request.TimeoutMsec    = ToUInt32(g_ArgTimeoutMsec);
        g_Connect.AddRequest(connect_request);

        g_Connect.SetFallbackConnectCallback(on_fallback_connect);
        mrs_initialize();
        do
        {
            for (UInt32 i = 0; i < g_Connections; ++i)
            {
                MrsConnection client = g_Connect.FallbackConnect();
                g_nowconnect = client;
                if (MrsConnection.Zero == client)
                {
                    MRS_LOG_ERR("mrs_connect[{0}]: {1}", i, ToString(mrs_get_error_string(mrs_get_last_error())));
                    break;
                }
            }
        } while (false);
    }
Exemple #2
0
    // フォールバック接続時に呼ばれる
    private static void on_fallback_connect(MrsConnection connection, mrs.Connect.Request request)
    {
        MRS_LOG_DEBUG("on_fallback_connect connection_type=" + request.ConnectionType + " addr=" + request.Addr + " port=" + request.Port + " timeout_msec=" + request.TimeoutMsec);
        mrs_set_connect_callback(connection, on_connect);
        mrs_set_disconnect_callback(connection, on_disconnect);
        mrs_set_error_callback(connection, on_error);

        mrs_set_read_record_callback(connection, on_read_record);
        mrs_connection_set_path(connection, g_ArgConnectionPath);
    }
Exemple #3
0
    public void StartEchoClient()
    {
        MRS_LOG_DEBUG("connection_type={0} is_key_exchange={1} is_encrypt_records={2} write_data_len={3} write_count={4} connections={5} server_addr={6} server_port={7} timeout_msec={8} is_valid_record={9} connection_path={10}",
                      g_ArgConnectionType, g_ArgIsKeyExchange, g_ArgIsEncryptRecords, g_ArgWriteDataLen, g_ArgWriteCount, g_ArgConnections,
                      g_ArgServerAddr, g_ArgServerPort, g_ArgTimeoutMsec, g_ArgIsValidRecord, g_ArgConnectionPath);

        g_nowconnect = new MrsConnection();

        g_IsKeyExchange    = (0 != ToUInt32(g_ArgIsKeyExchange));
        g_IsEncryptRecords = (0 != ToUInt32(g_ArgIsEncryptRecords));
        g_RecordOptions    = g_IsEncryptRecords ? (UInt16)MrsRecordOption.ON_CRYPT : (UInt16)MrsRecordOption.NONE;
//        g_RecordOptions |= (UInt16)MrsRecordOption.UDP_UNRELIABLE;
//        g_RecordOptions |= (UInt16)MrsRecordOption.UDP_UNSEQUENCED;
        g_WriteDataLen  = ToUInt32(g_ArgWriteDataLen);
        g_WriteCount    = ToUInt32(g_ArgWriteCount);
        g_Connections   = ToUInt32(g_ArgConnections);
        g_IsValidRecord = (0 != ToUInt32(g_ArgIsValidRecord));

        mrs.Connect.Request connect_request = new mrs.Connect.Request();
        connect_request.ConnectionType = MrsConnectionType.NONE;
        connect_request.Addr           = g_ArgServerAddr;
        connect_request.Port           = ToUInt16(g_ArgServerPort);
        connect_request.TimeoutMsec    = ToUInt32(g_ArgTimeoutMsec);
        Int32 connection_type = ToInt32(g_ArgConnectionType);

        switch (connection_type)
        {
        case (Int32)MrsConnectionType.TCP:
        case (Int32)MrsConnectionType.UDP:
        case (Int32)MrsConnectionType.WS:
        case (Int32)MrsConnectionType.WSS:
        case (Int32)MrsConnectionType.TCP_SSL:
        case (Int32)MrsConnectionType.MRU: {
            connect_request.ConnectionType = (MrsConnectionType)connection_type;
            g_Connect.AddRequest(connect_request);
        } break;

        default: {
#if UNITY_WEBGL
            connect_request.ConnectionType = MrsConnectionType.WSS;
            g_Connect.AddRequest(connect_request);
            connect_request.ConnectionType = MrsConnectionType.WS;
            connect_request.Port          -= 1;
            g_Connect.AddRequest(connect_request);
#else
            connect_request.ConnectionType = MrsConnectionType.TCP;
            g_Connect.AddRequest(connect_request);
            connect_request.ConnectionType = MrsConnectionType.WSS;
            connect_request.Port          += 2;
            g_Connect.AddRequest(connect_request);
            connect_request.ConnectionType = MrsConnectionType.WS;
            connect_request.Port          -= 1;
            g_Connect.AddRequest(connect_request);
#endif
        } break;
        }
        g_Connect.SetFallbackConnectCallback(on_fallback_connect);

        netsettings.addr = connect_request.Addr;
        netsettings.port = connect_request.Port;

        mrs_initialize();
        do
        {
            for (UInt32 i = 0; i < g_Connections; ++i)
            {
                MrsConnection client = g_Connect.FallbackConnect();
                g_nowconnect           = client;
                netsettings.connection = client;
                if (MrsConnection.Zero == client)
                {
                    MRS_LOG_ERR("mrs_connect[{0}]: {1}", i, ToString(mrs_get_error_string(mrs_get_last_error())));
                    break;
                }
            }
        }while (false);
    }