WriteString() public method

public WriteString ( string s ) : void
s string
return void
Example #1
0
        private void advertiseId(AnyObjectId id, string refName)
        {
            _tmpLine.Length = 0;
            id.CopyTo(_tmpId, _tmpLine);
            _tmpLine.Append(' ');
            _tmpLine.Append(refName);

            if (_first)
            {
                _first = false;
                if (_capabilities.Count > 0)
                {
                    _tmpLine.Append('\0');
                    foreach (string capName in _capabilities)
                    {
                        _tmpLine.Append(' ');
                        _tmpLine.Append(capName);
                    }
                    _tmpLine.Append(' ');
                }
            }

            _tmpLine.Append('\n');
            _pckOut.WriteString(_tmpLine.ToString());
        }
Example #2
0
        private void Negotiate()
        {
            string lastName = string.Empty;

            while (true)
            {
                string line = _pckIn.ReadString();

                if (line.Length == 0)
                {
                    if (_commonBase.Count == 0 || _multiAck)
                    {
                        _pckOut.WriteString("NAK\n");
                    }
                    _pckOut.Flush();
                }
                else if (line.StartsWith("have ") && line.Length == 45)
                {
                    string   name = line.Substring(5);
                    ObjectId id   = ObjectId.FromString(name);
                    if (MatchHave(id))
                    {
                        if (_multiAck)
                        {
                            lastName = name;
                            _pckOut.WriteString("ACK " + name + " continue\n");
                        }
                        else if (_commonBase.Count == 1)
                        {
                            _pckOut.WriteString("ACK " + name + "\n");
                        }
                    }
                    else
                    {
                        if (_multiAck && OkToGiveUp())
                        {
                            _pckOut.WriteString("ACK " + name + " continue\n");
                        }
                    }
                }
                else if (line.Equals("done"))
                {
                    if (_commonBase.Count == 0)
                    {
                        _pckOut.WriteString("NAK\n");
                    }
                    else if (_multiAck)
                    {
                        _pckOut.WriteString("ACK " + lastName + "\n");
                    }

                    break;
                }
                else
                {
                    throw new PackProtocolException("expected have; got " + line);
                }
            }
        }
        private void Service(string name, PacketLineOut pckOut)
        {
            var cmd = new StringBuilder();

            cmd.Append(name);
            cmd.Append(' ');
            cmd.Append(Uri.Path);
            cmd.Append('\0');
            cmd.Append("host=");
            cmd.Append(Uri.Host);
            if (Uri.Port > 0 && Uri.Port != GIT_PORT)
            {
                cmd.Append(":");
                cmd.Append(Uri.Port);
            }
            cmd.Append('\0');
            pckOut.WriteString(cmd.ToString());
            pckOut.Flush();
        }
 protected override void writeOne(string line)
 {
     pckOut.WriteString(line.ToString());
 }
Example #5
0
 private void Service(string name, PacketLineOut pckOut)
 {
     var cmd = new StringBuilder();
     cmd.Append(name);
     cmd.Append(' ');
     cmd.Append(Uri.Path);
     cmd.Append('\0');
     cmd.Append("host=");
     cmd.Append(Uri.Host);
     if (Uri.Port > 0 && Uri.Port != GIT_PORT)
     {
         cmd.Append(":");
         cmd.Append(Uri.Port);
     }
     cmd.Append('\0');
     pckOut.WriteString(cmd.ToString());
     pckOut.Flush();
 }
Example #6
0
        private bool Negotiate()
        {
            ObjectId last = ObjectId.ZeroId;

            while (true)
            {
                string line = _pckIn.ReadString();

                if (line == PacketLineIn.END)
                {
                    if (_commonBase.Count == 0 || _multiAck != BasePackFetchConnection.MultiAck.OFF)
                    {
                        _pckOut.WriteString("NAK\n");
                    }
                    _pckOut.Flush();

                    if (!biDirectionalPipe)
                    {
                        return(false);
                    }
                }
                else if (line.StartsWith("have ") && line.Length == 45)
                {
                    ObjectId id = ObjectId.FromString(line.Substring(5));
                    if (MatchHave(id))
                    {
                        // Both sides have the same object; let the client know.
                        //
                        last = id;
                        switch (_multiAck)
                        {
                        case BasePackFetchConnection.MultiAck.OFF:
                            if (_commonBase.Count == 1)
                            {
                                _pckOut.WriteString("ACK " + id.Name + "\n");
                            }
                            break;

                        case BasePackFetchConnection.MultiAck.CONTINUE:

                            _pckOut.WriteString("ACK " + id.Name + " continue\n");
                            break;

                        case BasePackFetchConnection.MultiAck.DETAILED:
                            _pckOut.WriteString("ACK " + id.Name + " common\n");
                            break;
                        }
                    }
                    else if (OkToGiveUp())
                    {
                        // They have this object; we don't.
                        //
                        switch (_multiAck)
                        {
                        case BasePackFetchConnection.MultiAck.OFF:
                            break;

                        case BasePackFetchConnection.MultiAck.CONTINUE:
                            _pckOut.WriteString("ACK " + id.Name + " continue\n");
                            break;

                        case BasePackFetchConnection.MultiAck.DETAILED:
                            _pckOut.WriteString("ACK " + id.Name + " ready\n");
                            break;
                        }
                    }
                }
                else if (line.Equals("done"))
                {
                    if (_commonBase.Count == 0)
                    {
                        _pckOut.WriteString("NAK\n");
                    }
                    else if (_multiAck != BasePackFetchConnection.MultiAck.OFF)
                    {
                        _pckOut.WriteString("ACK " + last.Name + "\n");
                    }

                    return(true);
                }
                else
                {
                    throw new PackProtocolException("expected have; got " + line);
                }
            }
        }
Example #7
0
 public override void SendString(string s)
 {
     _pckOut.WriteString(s + "\n");
 }