send greeting

This commit is contained in:
Kai Jan Kriegel 2020-10-26 14:35:31 +01:00
parent 3961c25ad4
commit ac7acc9f72

View File

@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Capnp;
using FabAccessAPI.Schema;
using S22.Sasl;
namespace FabAccessAPI
{
class Connection
{
public bool Connect(Greeting clientInfo, Stream stream)
{
var message = new Message()
{
Greet = clientInfo,
which = Message.WHICH.Greet,
};
var msg = MessageBuilder.Create();
var root = msg.BuildRoot<Schema.Message.WRITER>();
message.serialize(root);
var pump = new FramePump(stream);
pump.Send(msg.Frame);
var frame = Framing.ReadSegments(stream);
var deserializer = DeserializerState.CreateRoot(frame);
var reader = new Message.READER(deserializer);
switch (reader.which)
{
case Message.WHICH.Greet:
var serverInfo = reader.Greet;
Console.WriteLine($"Server: {serverInfo.Host}");
Console.WriteLine($"Version: {serverInfo.Program}");
Console.WriteLine($"API-Version: {serverInfo.Major}.{serverInfo.Minor}");
break;
case Message.WHICH.Leave:
var leave_inner = reader.Leave;
switch (leave_inner.TheReason)
{
case Leave.Reason.incompatible:
Console.WriteLine($"Connection aborted due to incompatible API: {leave_inner.Message}");
break;
case Leave.Reason.other:
Console.WriteLine($"Connection aborted: {leave_inner.Message}");
break;
default:
Console.WriteLine($"Got invalid This should never happen: {leave_inner.Message}");
break;
}
return false;
default:
Console.WriteLine($"Got unexpected message: {reader.which}");
break;
}
//FIXME: Replace the hardcoded credentials
SaslMechanism m = SaslFactory.Create("PLAIN");
m.Properties.Add("Username", "test");
m.Properties.Add("Password", "secret");
var authRequest = new Request()
{
Mechanism = m.Name,
};
var auth = new AuthMessage()
{
};
return true;
}
}
}