Beispiel #1
0
        protected void Timeout(SSContext context, long timeout, TimeoutCallback callback)
        {
            long timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

            if (timeout <= 0)
            {
                callback(context, timestamp);
            }
            else
            {
                if (m_totalServiceSession >= Int32.MaxValue)
                {
                    m_totalServiceSession = 0;
                }

                SSTimerNode timerNode = new SSTimerNode();
                timerNode.Opaque           = m_serviceAddress;
                timerNode.Session          = ++m_totalServiceSession;
                timerNode.TimeoutTimestamp = timestamp + timeout;

                SSTimer.GetInstance().Add(timerNode);

                TimeoutContext timeoutContext = new TimeoutContext();
                timeoutContext.Callback = callback;
                timeoutContext.Context  = context;
                m_timeoutCallbacks.Add(timerNode.Session, timeoutContext);
            }
        }
Beispiel #2
0
        protected void Call(int destination, string method, byte[] param, SSContext context, RPCCallback cb)
        {
            if (m_totalServiceSession >= Int32.MaxValue)
            {
                m_totalServiceSession = 0;
            }

            int session = ++m_totalServiceSession;

            PushToService(destination, method, param, MessageType.ServiceRequest, session);

            RPCResponseContext responseCallback = new RPCResponseContext();

            responseCallback.Context  = context;
            responseCallback.Callback = cb;

            m_responseCallbacks.Add(session, responseCallback);
        }
Beispiel #3
0
        protected void RemoteCall(string remoteNode, string service, string method, byte[] param, SSContext context, RPCCallback cb)
        {
            ClusterClientRequest request = new ClusterClientRequest();

            request.remoteNode    = remoteNode;
            request.remoteService = service;
            request.method        = method;
            request.param         = Convert.ToBase64String(param);

            Call("clusterClient", "Request", request.encode(), context, cb);
        }
Beispiel #4
0
 private void RemoteSendDummyCallback(SSContext context, string method, byte[] param, RPCError error)
 {
     // Nothing to do
 }
Beispiel #5
0
        protected void Call(string destination, string method, byte[] param, SSContext context, RPCCallback cb)
        {
            int serviceId = ServiceSlots.GetInstance().Name2Id(destination);

            Call(serviceId, method, param, context, cb);
        }