// signals (send events) public int SignalEvent(TEventKind aEventKind, byte[] aEventPayload) { var payload = new TByteBuffer(); if (!IsPublished && connection.AutoPublish) Publish(); if (IsPublished) { payload.Prepare(ID); payload.Prepare((Int32) 0); // tick payload.Prepare((Int32) aEventKind); payload.Prepare(aEventPayload); payload.PrepareApply(); payload.QWrite(ID); payload.QWrite((Int32) (0)); // tick payload.QWrite((Int32) aEventKind); payload.QWrite(aEventPayload); return connection.WriteCommand(TConnectionPlatform.TCommands.icEvent, payload.Buffer); } else return TConnection.iceNotEventPublished; }
private void HandleTimerCmd(TEventKind aEventKind, TByteBuffer aPayload) { if (OnTimerCmd == null) return; string TimerName; aPayload.Read(out TimerName); OnTimerCmd(this, aEventKind, TimerName); }
private void HandleStreamEvent(TEventKind aEventKind, TByteBuffer aPayload) { Int32 streamID; string streamName; Stream stream; switch (aEventKind) { case TEventKind.ekStreamHeader: if (OnStreamCreate != null) { aPayload.Read(out streamID); aPayload.Read(out streamName); stream = OnStreamCreate(this, streamName); if (stream != null) FStreamCache.Cache(streamID, stream, streamName); } break; case TEventKind.ekStreamBody: aPayload.Read(out streamID); stream = FStreamCache.Find(streamID, out streamName); if (stream != null) stream.Write(aPayload.Buffer, aPayload.ReadCursor, aPayload.ReadAvailable); break; case TEventKind.ekStreamTail: aPayload.Read(out streamID); stream = FStreamCache.Find(streamID, out streamName); if (stream != null) { stream.Write(aPayload.Buffer, aPayload.ReadCursor, aPayload.ReadAvailable); if (OnStreamEnd != null) OnStreamEnd(this, ref stream, streamName); stream.Close(); FStreamCache.Remove(streamID); } break; } }
private int TimerAcknowledgeCmd(TEventKind aEventKind, string aTimerName, string aClientName) { var payload = new TByteBuffer(); payload.Prepare(aTimerName); payload.Prepare(aClientName); payload.PrepareApply(); payload.QWrite(aTimerName); payload.QWrite(aClientName); return SignalEvent(aEventKind, payload.Buffer); }