コード例 #1
0
ファイル: IMBclients.cs プロジェクト: TNOCS/csTouch
 // 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;
 }
コード例 #2
0
ファイル: IMBclients.cs プロジェクト: TNOCS/csTouch
 private void HandleTimerCmd(TEventKind aEventKind, TByteBuffer aPayload) {
     if (OnTimerCmd == null) return;
     string TimerName;
     aPayload.Read(out TimerName);
     OnTimerCmd(this, aEventKind, TimerName);
 }
コード例 #3
0
ファイル: IMBclients.cs プロジェクト: TNOCS/csTouch
 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;
     }
 }
コード例 #4
0
ファイル: IMBclients.cs プロジェクト: TNOCS/csTouch
 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);
 }