//-------------------------------------------------------------------------
    void _broadcastFriendNotify(PlayerFriendNotify friend_notify)
    {
        StreamData sd = new StreamData();

        sd.event_id = StreamEventId.FriendStreamEvent;
        sd.param1   = friend_notify;
        var grain = Entity.getUserData <GrainCellPlayer>();

        grain.AsyncStream.OnNextAsync(sd);
    }
    //-------------------------------------------------------------------------
    void _onFriendNotify(PlayerFriendNotify friend_notify)
    {
        MethodData notify_data = new MethodData();

        notify_data.method_id = MethodType.s2cPlayerFriendNotify;
        notify_data.param1    = EbTool.protobufSerialize <PlayerFriendNotify>(friend_notify);
        var grain        = Entity.getUserData <GrainCellPlayer>();
        var grain_player = grain.GF.GetGrain <ICellPlayer>(new Guid(Entity.Guid));

        grain_player.s2sNotify(notify_data);
    }