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); } }
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); }
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); }
private void RemoteSendDummyCallback(SSContext context, string method, byte[] param, RPCError error) { // Nothing to do }
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); }