Old RT Lib for connectivity

RuRu
RuRu Newcomer
edited December 2024 in TREP Infrastructure

I need to create a middleware that can be connected using the old RT library.
At this point it is connecting to trep, using the following config an an example.

*ipcRoute: triarch_sink ap-trep1A ap-trep1B

I tried simply adding my own IP of my application or localhost besides and removing trep hosts.
As I understood form digging the code, triarch_sink is required and is used for port resolution ?

I created a simple app just to act as a server to test connectivity. When starting the application, I get the following error:

ssl_errno = 6 on channel = -1
<src/ipc/sipcsrvr.c:1834>sipc46CBind() sipcHostByName() failed (11001)
sipc_errno = 2 sys_errno = 11001
file = src/ssl/edapi.c, line = 1576, Channel = -5
sslSetProperty: Bad Argument: OptionCode: 15. Channel does not exist.
ssl_errno = 6 on channel = -1
<src/ipc/sipcsrvr.c:1834>sipc46CBind() sipcHostByName() failed (11001)
sipc_errno = 2 sys_errno = 11001
file = src/ssl/edapi.c, line = 1576, Channel = -5
sslSetProperty: Bad Argument: OptionCode: 15. Channel does not exist.

I tried adding self signed cert for the server app, did not help.
Is this possible to do in a first place and how can I go about it?

Answers

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @RuRu

    Thank you for reaching out to us.

    triarch_sink is an alias name for the TCP port listened on TREP servers. The default port is TCP/8101 and it must be defined in the services file (C:\Windows\System32\drivers\etc\services or /etc/services). For example:

    distribution_ssl_sink       8101/tcp  triarch_sink
    

    SSL is this context should be the Source Sink Library (our legacy protocol). It is not Secure Socket Layer so it should not relate to a self signed certifate. Moreover, the Source Sink Library doesn't support Secure Socket Layer.

    According to the description, you are creating a server application (a middleware) that can accept connections from the old SSL client applications. Please correct me if my understanding is wrong.

    1. What API or SDK are you using to create a middleware (server application)?
    2. Is the error log is from the server side or client side?

    Typically, the sys_errno indicates the system error. If you are using a Windows machine, the error 11001 is a Winsock error, also known as a "Host not found" error.

  • RuRu
    RuRu Newcomer

    Hi,

    Thank you for your support.

    I have followed your suggestion and checked the services file, no trairch_sink was mentioned. So I added the line and configured middleware to listen on 81010.
    This has resolved the issue with "Host nof found" error. However their is another:

    ```
    ssl_errno = 43 on channel = 4
    <src/ipc/sipcsrvr.c:1981> sipcConnected() client connect() failed(0)
    sipc_errno = 1 sys_errno = 0
    file = src/ssl/edapi.c, line = 592, Channel = 4
    sslDispatchEvent: Bad Argument: Channel does not exist.
    ```

    How do I specify the channel for this case?

    Regarding you questions:

    1. POC is Go since its faster to test our approached. The final product will be in Java. Will be using Websocket approach for connecting to Trep.

    func startMiddleWare() {    log.Printf("[StartMiddleWare] Starting MiddleWare")    listener, err := net.Listen("tcp", "127.0.0.1:"+middlewarePort)    if err != nil {       log.Printf(err.Error())       log.Fatalf("Error starting middleware: %v\n")    }    defer listener.Close()    log.Printf("Middleware server listening on %s:%s\n", middlewareHost, middlewarePort)    for {       clientConn, err := listener.Accept()       if err != nil {          log.Printf("Error Accepting Connection: %v\n")          continue       }       log.Printf("Accepted Connection from %s\n", clientConn.RemoteAddr())       go handleClient(clientConn)    }}
    

    https://developers.lseg.com/en/api-catalog/real-time-opnsrc/websocket-api
    2. This error log is from the application that uses RT library and ment to connect to middelware.

    To give a perspective, we cant modify existing application that uses legacy RT library. Hence the middleware to intercept the traffic.

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @RuRu

    Do you mean that the existing application that uses legacy RT library will directly connect to your middleware?

    If yes, it is impossible. According to the log, the client uses the Souce Sink Library protocol which is the LSEG proprietary protocol. To support the Souce Sink Library protocol, you need to use our RFA 7.x APIs.

  • RuRu
    RuRu Newcomer

    That was the aim, to have old C++ Application that uses legacy RT Lib connect to middleware instead of trep. I understand if its not possible to do so natively.

    But if I use the RFA 7.x APIs, would it be possible than?

    Otherwise will have to investigate alternative solution.

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @RuRu

    Yes, you need a library that supports the SSL protocol (Source Sink Library). RFA 7.x supports the SSL protocol.

    However, RFA7.x will be end-of-life on 28th Feb 2026. For more details on support, refer to PCN-206364.

  • RuRu
    RuRu Newcomer

    Will there be something after RFA7.x ?

    But this should give enough time for re-designing our system.

    Is it possible to provide an example in Java or C++ example ?

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @RuRu

    For the SSL protocol, we don't provide any SSL libraries after RFA 7.x.

    The current APIs are Real-Time SDKs (EMA and ETA) which support the RSSL protocol.

    The examples are in the RFA 7.x package.

  • RuRu
    RuRu Newcomer

    So after RFA 7.x. the platform will be decommissioned / out of use ?

    Is it possible to pin point exactly what I would need ? Any specific example that I can use for connectivity ?

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @RuRu

    Please check the PCN-206364.

    Effective 28 February 2026, we will remove support for:

    Real-Time Legacy API, RFA 7x (both 32-bit and 64-bit versions) and SFC
    The OMM to Marketfeed (and Marketfeed to OMM) functionality of the Legacy Protocol Converter


    Note: LPC will continue to support session management to provide cloud connectivity to RFA 8.x.



    We will also remove Marketfeed and SSL from:

    All versions of RTDS from Q4 2028 onwards
    RTMDS from Q2 2027 onwards
    Full Tick Edge devices from March 2026 (end of Q1 2026) onwards

    For RFA C++:

    • The exanple for the client side is Legacy\Examples\RFASTTicker
    • The example for the server sie is Legacy\Examples\SessionLayerThreadedExample

    For RFA Java:

    • com.reuters.rfa.example.session.mdsub
      MDSubDemo demonstrates how to subscribe to one or more items using RFA's Market Data Subscription model.
    • com.reuters.rfa.example.framework.prov
      Contains a framework for a publisher application.

    The examples and documents are in the Legacy folder.

    RFA is quite complex so please read the RFA developer guide in the Legacy folder. Therefore, you will know how to use RFA to develop applications.