Esempio n. 1
0
        private void SendServerPipeMessage(string text, PipeCommands type)
        {
            Log.Debug("SendServerPipeMessage text="+text+" type="+type.ToString());
            if (PipeServerBusy)
            {
                

                ServerMessage = text;
                if ((type == PipeCommands.Ready) || (type == PipeCommands.Error))
                {
                    ServerMessage = type.ToString() + ServerMessage;
                    Log.Debug("ServerMessage=" + ServerMessage);
                }
                Logdebug("Preparing new epg message=" + text);
                Log.Debug("ServerMessage=" + ServerMessage);
              
                NewServerMessage = true;
            }
        }
        private static void Service(string ServiceName)
        {
            StrRld = CreateDictionary();
            MskRld = CreateDictionary();
            Missed = new List <string>();

            NamedPipeServerStream Server = new NamedPipeServerStream(ServiceName, PipeDirection.InOut, 2, PipeTransmissionMode.Byte);

            Server.WaitForConnection();

            BinaryReader Reader = new BinaryReader(Server);
            BinaryWriter Writer = new BinaryWriter(Server);

            bool OK = true;

            while (Server.IsConnected)
            {
                PipeCommands Command = (PipeCommands)Reader.ReadByte();
                Log("Command Recived: {0}", true, Command.ToString());
                switch (Command)
                {
                case PipeCommands.AddReload:
                    OK = true;
                    string Original = Reader.ReadString();
                    string Reloader = Reader.ReadString();
                    if (!StrRld.ContainsKey(Original) || AllowDuplicates)
                    {
                        StrRld.Add(Original, Reloader);
                    }
                    Log("Command Finished, In: {0}, Out: {1}", true, 2, 0);
                    break;

                case PipeCommands.FindReload:
                    OK = true;
                    bool   Enforce = Reader.ReadByte() == (byte)PipeCommands.True;
                    string Key     = Reader.ReadString();

                    if (StrRld.ContainsKey(Key))
                    {
                        Writer.Write((byte)PipeCommands.True);
                    }
                    else if (Enforce)
                    {
                        Writer.Write((byte)PipeCommands.False);
                    }
                    else if ((from x in Databases where x.ContainsKey(Key) select x).Count() > 0)
                    {
                        Writer.Write((byte)PipeCommands.True);
                    }
                    else
                    {
                        Writer.Write((byte)PipeCommands.False);
                    }

                    Writer.Flush();
                    Log("Command Finished, In: {0}, Out: {1}", true, 2, 1);
                    break;

                case PipeCommands.GetReload:
                    OK = true;
                    string RLD = Reader.ReadString();
                    try {
                        string Rst = null;
                        if (StrRld.ContainsKey(RLD))
                        {
                            Rst = StrRld[RLD];
                        }
                        else
                        {
                            for (DBID = 0; DBID < Databases.Count; DBID++)
                            {
                                if (StrRld.ContainsKey(RLD))
                                {
                                    Rst = StrRld[RLD];
                                    break;
                                }
                            }
                        }
                        Writer.Write(Rst);
                    } catch (Exception ex) {
                        Writer.Write(RLD);
                        Log("Exception Handled\n=================\n{0}\n{1}", true, ex.Message, ex.StackTrace);
                    }
                    Writer.Flush();
                    Log("Command Finished, In: {0}, Out: {1}", true, 1, 1);
                    break;

                case PipeCommands.AddMissed:
                    OK = true;
                    try {
                        Missed.Add(Reader.ReadString());
                    } catch { }
                    Log("Command Finished, In: {0}, Out: {1}", true, 1, 1);
                    break;

                case PipeCommands.FindMissed:
                    OK = true;
                    if (Missed.Contains(Reader.ReadString()))
                    {
                        Writer.Write((byte)PipeCommands.True);
                    }
                    else
                    {
                        Writer.Write((byte)PipeCommands.False);
                    }
                    Writer.Flush();
                    Log("Command Finished, In: {0}, Out: {1}", true, 1, 1);
                    break;

                case PipeCommands.AddPtr:
                    OK = true;
                    try {
                        Ptrs.Add(Reader.ReadInt64());
                    } catch { }
                    Log("Command Finished, In: {0}, Out: {1}", true, 1, 0);
                    break;

                case PipeCommands.GetPtrs:
                    OK = true;
                    uint Replys = 1;
                    Writer.Write(Ptrs.Count);
                    foreach (long Ptr in Ptrs)
                    {
                        Writer.Write(Ptr);
                        Replys++;
                    }
                    Writer.Flush();
                    Log("Command Finished, In: {0}, Out: {1}", true, 1, Replys);
                    break;

                case PipeCommands.EndPipe:
                    OK = true;
                    Log("Exit Command Recived...", true);
                    Environment.Exit(0);
                    break;

                case PipeCommands.AddMask:
                    OK = true;
                    string Input  = Reader.ReadString();
                    string Reload = Reader.ReadString();
                    if (!MskRld.ContainsKey(Input) || AllowDuplicates)
                    {
                        MskRld.Add(Input, Reload);
                    }
                    Log("Command Finished, In {0}, Out: {1}", true, 2, 0);
                    break;

                case PipeCommands.ChkMask:
                    string String = Reader.ReadString();

                    string[] Result = (from x in MskRld.Keys where MaskMatch(x, String) select x).ToArray();

                    Writer.Write((byte)((Result.Length > 0) ? PipeCommands.True : PipeCommands.False));
                    Writer.Flush();
                    Log("Command Finished, In: {0}, Out: {1}", true, 1, 1);
                    break;

                case PipeCommands.RldMask:
                    string Ori  = Reader.ReadString();
                    string Mask = (from x in MskRld.Keys where MaskMatch(x, Ori) select x).FirstOrDefault();
                    string Rld  = MskRld[Mask];

                    Writer.Write(MaskReplace(Mask, Ori, Rld));
                    Writer.Flush();
                    Log("Command Finished, In: {0}, Out: {1}", true, 2, 1);
                    break;

                case PipeCommands.AdvDB:
                    if (DBID >= Databases.Count)
                    {
                        return;
                    }

                    LastDBID++;
                    DBID = LastDBID;
                    Log("Command Finished, In: {0}, Out: {1}", true, 1, 0);
                    break;

                case PipeCommands.GetDBID:
                    Writer.Write(DBID);
                    Writer.Flush();
                    Log("Command Finished, In: {0}, Out: {1}", true, 1, 1);
                    break;

                case PipeCommands.SetDBID:
                    DBID = Reader.ReadInt32();
                    Log("Command Finished, In: {0}, Out: {1}", true, 2, 0);
                    break;

                case PipeCommands.GetDBIndex:
                    Writer.Write(((DuplicableDictionary <string, string>)StrRld).LastKeyIndex);
                    Writer.Flush();
                    Log("Command Finished, In: {0}, Out: {1}", true, 1, 1);
                    break;

                default:
                    if (!OK)
                    {
                        MessageBox.Show("Recived Invalid Command to the pipe service...", "SRL Engine", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    OK = false;
                    break;
                }
            }
            Server.Close();
            Reader.Close();
            Writer.Close();
        }
Esempio n. 3
0
      public void labelmessage(string text, PipeCommands type)
      {
          if (newlabelmessage != null)
          {

              LogDebug("Creating new event message: " + text + " for type=" + type.ToString(), (int)LogSetting.DEBUG);
              newlabelmessage(text, type);            
          }

      }
Esempio n. 4
0
        public void labelmessage(string text, PipeCommands type)
        {
            if (newlabelmessage != null)
            {
                Log.Debug("Creating new event message: " + text + " for type=" + type.ToString());
                newlabelmessage(text, type);
            }
#if (MP11 || MP12 || MP16 || MP2)
            if (myTvWishes != null)
            {
                myTvWishes.StatusLabel(text);
            }
#endif

        }
Esempio n. 5
0
        private void labelupdate(string message, PipeCommands type)
        {
            int number = 50;
            labelstatus2.Text = "";
            labelmainstatus2.Text = "";
            labelstatus2.Update();
            labelmainstatus2.Update();
            message = message.Replace(@"\n","   "); //no line returns here
            
            if (message.Length <= number-1)
            {
                labelstatus.Text = message;
                labelstatus.Update();
                labelmainstatus.Text = message;
                labelmainstatus.Update();
            }
            else
            {
                for (int i = number-1; i >= 1; i--)
                {
                    if (message[i] == ' ')
                    {
                        number = i;
                        break;
                    }
                }
                //LogDebug("number=" + number.ToString(), (int)LogSetting.DEBUG);
                labelstatus.Text = message.Substring(0, number);
                labelstatus2.Text = message.Substring(number + 1, message.Length - number-1);
                labelstatus.Update();
                labelstatus2.Update();

                labelmainstatus.Text = message.Substring(0, number);
                labelmainstatus2.Text = message.Substring(number + 1, message.Length - number - 1);
                labelmainstatus.Update();
                labelmainstatus2.Update();
            }
            
        }